Compare commits

..

408 Commits

Author SHA1 Message Date
Dan Brown
304ade418e
Updated version, assets, and checksums for release v25.02.1
Some checks failed
analyse-php / build (push) Has been cancelled
lint-php / build (push) Has been cancelled
test-migrations / build (8.2) (push) Has been cancelled
test-migrations / build (8.3) (push) Has been cancelled
test-migrations / build (8.4) (push) Has been cancelled
test-php / build (8.2) (push) Has been cancelled
test-php / build (8.3) (push) Has been cancelled
test-php / build (8.4) (push) Has been cancelled
2025-03-16 12:47:19 +00:00
Dan Brown
997931c42f
Merge branch 'development' into release 2025-03-16 12:45:08 +00:00
Dan Brown
268e353431
Updated version and assets for release v25.02
Some checks failed
analyse-php / build (push) Has been cancelled
lint-js / build (push) Has been cancelled
lint-php / build (push) Has been cancelled
test-js / build (push) Has been cancelled
test-migrations / build (8.2) (push) Has been cancelled
test-migrations / build (8.3) (push) Has been cancelled
test-migrations / build (8.4) (push) Has been cancelled
test-php / build (8.2) (push) Has been cancelled
test-php / build (8.3) (push) Has been cancelled
test-php / build (8.4) (push) Has been cancelled
2025-02-26 14:30:52 +00:00
Dan Brown
b491b5fbca
Merge branch 'development' into release 2025-02-26 14:30:17 +00:00
Dan Brown
387c786768
Updated version and assets for release v24.12.1
Some checks failed
analyse-php / build (push) Has been cancelled
lint-js / build (push) Has been cancelled
lint-php / build (push) Has been cancelled
test-js / build (push) Has been cancelled
test-migrations / build (8.1) (push) Has been cancelled
test-migrations / build (8.2) (push) Has been cancelled
test-migrations / build (8.3) (push) Has been cancelled
test-migrations / build (8.4) (push) Has been cancelled
test-php / build (8.1) (push) Has been cancelled
test-php / build (8.2) (push) Has been cancelled
test-php / build (8.3) (push) Has been cancelled
test-php / build (8.4) (push) Has been cancelled
2025-01-04 22:22:17 +00:00
Dan Brown
2641586a6f
Merge branch 'development' into release 2025-01-04 22:22:04 +00:00
Dan Brown
6d2cd20e80
Updated version and assets for release v24.12
Some checks failed
analyse-php / build (push) Has been cancelled
lint-js / build (push) Has been cancelled
lint-php / build (push) Has been cancelled
test-js / build (push) Has been cancelled
test-migrations / build (8.1) (push) Has been cancelled
test-migrations / build (8.2) (push) Has been cancelled
test-migrations / build (8.3) (push) Has been cancelled
test-migrations / build (8.4) (push) Has been cancelled
test-php / build (8.1) (push) Has been cancelled
test-php / build (8.2) (push) Has been cancelled
test-php / build (8.3) (push) Has been cancelled
test-php / build (8.4) (push) Has been cancelled
2024-12-23 11:55:23 +00:00
Dan Brown
b0c574356a
Merge branch 'development' into release 2024-12-23 11:55:02 +00:00
Dan Brown
07e45a20e5
Updated version and assets for release v24.10.3
Some checks failed
test-php / build (8.3) (push) Has been cancelled
analyse-php / build (push) Has been cancelled
lint-php / build (push) Has been cancelled
test-migrations / build (8.1) (push) Has been cancelled
test-migrations / build (8.2) (push) Has been cancelled
test-migrations / build (8.3) (push) Has been cancelled
test-php / build (8.1) (push) Has been cancelled
test-php / build (8.2) (push) Has been cancelled
2024-11-29 13:50:41 +00:00
Dan Brown
14056c69e6
Updated version and assets for release v24.10.2 2024-11-29 13:47:24 +00:00
Dan Brown
fb9c840c46
Merge branch 'development' into release 2024-11-29 13:47:08 +00:00
Dan Brown
5fba4a5399
Updated version and assets for release v24.10.2
Some checks failed
analyse-php / build (push) Has been cancelled
lint-js / build (push) Has been cancelled
lint-php / build (push) Has been cancelled
test-js / build (push) Has been cancelled
test-migrations / build (8.1) (push) Has been cancelled
test-migrations / build (8.2) (push) Has been cancelled
test-migrations / build (8.3) (push) Has been cancelled
test-php / build (8.1) (push) Has been cancelled
test-php / build (8.2) (push) Has been cancelled
test-php / build (8.3) (push) Has been cancelled
2024-11-13 12:03:15 +00:00
Dan Brown
c0b377050e
Merge branch 'development' into release 2024-11-13 12:02:30 +00:00
Dan Brown
f3efb6441d
Updated version and assets for release v24.10.1 2024-11-08 13:53:06 +00:00
Dan Brown
0cf313a21e
Merge branch 'development' into release 2024-11-08 13:52:37 +00:00
Dan Brown
26aadffb20
Updated version and assets for release v24.10
Some checks failed
test-js / build (push) Has been cancelled
test-migrations / build (8.1) (push) Has been cancelled
analyse-php / build (push) Has been cancelled
lint-js / build (push) Has been cancelled
lint-php / build (push) Has been cancelled
test-migrations / build (8.2) (push) Has been cancelled
test-migrations / build (8.3) (push) Has been cancelled
test-php / build (8.1) (push) Has been cancelled
test-php / build (8.2) (push) Has been cancelled
test-php / build (8.3) (push) Has been cancelled
2024-10-09 10:48:34 +01:00
Dan Brown
a5f48e3202
Merge branch 'development' into release 2024-10-09 10:46:07 +01:00
Dan Brown
b0dda6e6a7
Updated version and assets for release v24.05.4 2024-08-29 16:04:51 +01:00
Dan Brown
d4025d95e7
Merge branch 'development' into release 2024-08-29 16:04:37 +01:00
Dan Brown
d6021f4d22
Updated version and assets for release v24.05.3 2024-07-14 17:14:21 +01:00
Dan Brown
b9a3290731
Merge branch 'development' into release 2024-07-14 17:13:10 +01:00
Dan Brown
48f235ea5a
Updated version and assets for release v24.05.2 2024-06-10 11:44:06 +01:00
Dan Brown
047771b9f4
Merge branch 'development' into release 2024-06-10 11:43:05 +01:00
Dan Brown
b5375114d3
Updated version and assets for release v24.05.1 2024-05-21 11:07:36 +01:00
Dan Brown
fc13e56cea
Merge branch 'development' into release 2024-05-21 11:07:10 +01:00
Dan Brown
77fc37ac25
Updated version and assets for release v24.05 2024-05-11 15:49:29 +01:00
Dan Brown
3424351e84
Merge branch 'development' into release 2024-05-11 15:48:49 +01:00
Dan Brown
606f9d92d0
Updated version and assets for release v24.02.3 2024-04-05 15:20:08 +01:00
Dan Brown
a5e25abb9c
Merge branch 'v24-02' into release 2024-04-05 15:19:34 +01:00
Dan Brown
b310e87e4c
Updated version and assets for release v24.02.2 2024-03-11 14:30:48 +00:00
Dan Brown
425baf9d6e
Merge branch 'development' into release 2024-03-10 18:46:05 +00:00
Dan Brown
825c369ad9
Updated version and assets for release v24.02 2024-02-28 13:35:36 +00:00
Dan Brown
10bab70438
Merge branch 'development' into release 2024-02-28 13:35:23 +00:00
Dan Brown
350e0b281b
Updated version and assets for release v23.12.3 2024-02-26 12:05:02 +00:00
Dan Brown
08805ea3c8
Merge branch 'v23-12' into release 2024-02-26 12:04:25 +00:00
Dan Brown
9441e32c69
Updated version and assets for release v23.12.2 2024-01-24 10:37:20 +00:00
Dan Brown
530fc37067
Merge branch 'v23-12' into release 2024-01-24 10:36:52 +00:00
Dan Brown
369e499dce
Updated version and assets for release v23.12.1 2024-01-16 12:16:06 +00:00
Dan Brown
655815de6d
Merge branch 'development' into release 2024-01-16 12:15:50 +00:00
Dan Brown
457adc1fee
Updated version and assets for release v23.12 2023-12-29 12:16:07 +00:00
Dan Brown
e86a90967e
Merge branch 'development' into release 2023-12-29 12:15:34 +00:00
Dan Brown
5d08f7cf14
Updated version and assets for release v23.10.4 2023-11-20 14:19:46 +00:00
Dan Brown
8744eb2d62
Merge branch 'v23-10' into release 2023-11-20 14:02:23 +00:00
Dan Brown
d8383cfa80
Updated version and assets for release v23.10.2 2023-11-07 15:22:34 +00:00
Dan Brown
4626278447
Merge branch 'development' into release 2023-11-07 15:22:11 +00:00
Dan Brown
c61af9c22b
Updated version and assets for release v23.10.1 2023-11-02 14:44:53 +00:00
Dan Brown
72521d0906
Merge branch 'development' into release 2023-11-02 14:35:49 +00:00
Dan Brown
7e44b195c5
Updated version and assets for release v23.10 2023-10-30 12:15:59 +00:00
Dan Brown
5b45eac5e1
Merge branch 'development' into release 2023-10-30 12:14:23 +00:00
Dan Brown
c1d30341e7
Updated version and assets for release v23.08.3 2023-09-15 13:49:40 +01:00
Dan Brown
80d2b4913b
Merge branch 'v23-08' into release 2023-09-15 13:49:12 +01:00
Dan Brown
3f473528b1
Updated version and assets for release v23.08.2 2023-09-04 12:06:50 +01:00
Dan Brown
d0dcd4f61b
Merge branch 'development' into release 2023-09-04 12:06:15 +01:00
Dan Brown
bde66a1396
Updated version and assets for release v23.08.1 2023-09-03 17:40:19 +01:00
Dan Brown
4de5a2d9bf
Merge branch 'development' into release 2023-09-03 17:39:56 +01:00
Dan Brown
27bf4299cf
Updated version and assets for release v23.08 2023-08-30 12:38:48 +01:00
Dan Brown
164f01bb25
Merge branch 'development' into release 2023-08-30 12:38:22 +01:00
Dan Brown
f563a005f5
Updated version and assets for release v23.06.2 2023-07-12 22:34:25 +01:00
Dan Brown
a14d8e30cc
Merge branch 'development' into release 2023-07-12 22:34:15 +01:00
Dan Brown
a9194ffb63
Updated version and assets for release v23.06.1 2023-07-05 13:04:51 +01:00
Dan Brown
2f9c1b7127
Merge branch 'development' into release 2023-07-05 13:04:30 +01:00
Dan Brown
bbea76668b
Updated version and assets for release v23.06 2023-06-30 11:06:19 +01:00
Dan Brown
becc630acf
Merge branch 'development' into release 2023-06-30 11:05:57 +01:00
Dan Brown
4ac8ecad6b
Updated version and assets for release v23.05.2 2023-05-23 12:36:46 +01:00
Dan Brown
903e88c700
Merge branch 'development' into release 2023-05-23 12:36:29 +01:00
Dan Brown
ed96aa820e
Updated version and assets for release v23.05.1 2023-05-08 16:05:50 +01:00
Dan Brown
63ec079b7b
Merge branch 'development' into release 2023-05-08 16:04:51 +01:00
Dan Brown
d485fcb3db
Updated version and assets for release v23.05 2023-05-03 11:05:33 +01:00
Dan Brown
0f895668a4
Merge branch 'development' into release 2023-05-03 11:03:29 +01:00
Dan Brown
6c577ac3bf
Updated version and assets for release v23.02.3 2023-04-07 18:07:32 +01:00
Dan Brown
31cc2423d2
Merge branch 'v23.02-branch' into release 2023-04-07 18:07:09 +01:00
Dan Brown
c9ed32e518
Updated version and assets for release v23.02.2 2023-03-25 12:27:32 +00:00
Dan Brown
6b4c3a0969
Merge branch 'v23.02-branch' into release 2023-03-25 12:27:05 +00:00
Dan Brown
2dad92d1bd
Updated version and assets for release v23.02.1 2023-02-27 19:26:13 +00:00
Dan Brown
c1fb7ab7dc
Merge branch 'development' into release 2023-02-27 19:23:33 +00:00
Dan Brown
98315f3899
Updated version and assets for release v23.02 2023-02-26 11:03:49 +00:00
Dan Brown
8c82aaabd6
Merge branch 'development' into release 2023-02-26 11:02:56 +00:00
Dan Brown
ce9b536b78
Updated version and assets for release v23.01.1 2023-02-02 12:29:26 +00:00
Dan Brown
d9c50e5bc1
Merge branch 'development' into release 2023-02-02 12:29:07 +00:00
Dan Brown
bf075f7dd8
Updated version and assets for release v23.01 2023-01-31 11:59:51 +00:00
Dan Brown
a4fd673285
Merge branch 'development' into release 2023-01-31 11:59:28 +00:00
Dan Brown
e794c977bc
Updated version and assets for release v22.11.1 2022-12-16 23:49:14 +00:00
Dan Brown
0b088ef1d3
Merge branch 'development' into release 2022-12-16 23:48:35 +00:00
Dan Brown
bf6a6af683
Updated version and assets for release v22.11 2022-11-30 12:30:21 +00:00
Dan Brown
914790fd99
Merge branch 'development' into release 2022-11-30 12:29:52 +00:00
Dan Brown
edb0c6a9e8
Updated version and assets for release v22.10.2 2022-11-02 15:22:13 +00:00
Dan Brown
84049de696
Merge branch 'v22-10' into release 2022-11-02 15:19:33 +00:00
Dan Brown
da0531e63b
Updated version and assets for release v22.10.1 2022-10-21 21:52:32 +01:00
Dan Brown
421dc75f4e
Merge branch 'development' into release 2022-10-21 21:52:16 +01:00
Dan Brown
8ae91df038
Updated version and assets for release v22.10 2022-10-21 11:16:45 +01:00
Dan Brown
64b41dd626
Merge branch 'development' into release 2022-10-21 11:16:25 +01:00
Dan Brown
ebd6e4d3a2
Updated version and assets for release v22.09.1 2022-09-20 13:19:34 +01:00
Dan Brown
80374aea5c
Merge branch 'development' into release 2022-09-20 13:19:03 +01:00
Dan Brown
2ac9efae7d
Updated version and assets for release v22.09 2022-09-08 12:41:09 +01:00
Dan Brown
a11d565ba4
Merge branch 'development' into release 2022-09-08 12:40:57 +01:00
Dan Brown
1fdf854ea7
Updated version and assets for release v22.07.3 2022-08-11 15:17:06 +01:00
Dan Brown
e9c9792cb9
Merge branch 'development' into release 2022-08-11 15:16:34 +01:00
Dan Brown
5ae524c25a
Updated version and assets for release v22.07.2 2022-08-09 13:55:52 +01:00
Dan Brown
0d7287fc8b
Merge branch 'development' into release 2022-08-09 13:55:40 +01:00
Dan Brown
e77c96f6b7
Updated version and assets for release v22.07.1 2022-08-02 11:47:25 +01:00
Dan Brown
9b8a10dd3a
Merge branch 'development' into release 2022-08-02 11:47:08 +01:00
Dan Brown
49200ca5ce
Updated version and assets for release v22.07 2022-07-28 14:53:15 +01:00
Dan Brown
34aa4dbf10
Merge branch 'development' into release 2022-07-28 14:53:01 +01:00
Dan Brown
5ee79d16c9
Updated version and assets for release v22.06.2 2022-06-28 11:57:37 +01:00
Dan Brown
a1ea4006e0
Merge branch 'development' into release 2022-06-28 11:57:24 +01:00
Dan Brown
9078188939
Updated version and assets for release v22.06.1 2022-06-25 14:33:07 +01:00
Dan Brown
ed0aad1a7a
Merge branch 'development' into release 2022-06-25 14:32:49 +01:00
Dan Brown
5c59cfb020
Updated version and assets for release v22.06 2022-06-24 11:50:56 +01:00
Dan Brown
3ca15ad68a
Merge branch 'development' into release 2022-06-24 11:45:29 +01:00
Dan Brown
60014989f5
Updated version and assets for release v22.04.2 2022-05-09 16:10:16 +01:00
Dan Brown
57b10f195e
Merge branch 'development' into release 2022-05-09 16:09:54 +01:00
Dan Brown
b1e95eb39f
Updated version and assets for release v22.04.1 2022-05-04 21:26:58 +01:00
Dan Brown
b3da77b8f9
Merge branch 'development' into release 2022-05-04 21:26:31 +01:00
Dan Brown
1a345b74bb
Updated version and assets for release v22.04 2022-04-29 15:55:32 +01:00
Dan Brown
8ffc3a4abf
Merge branch 'development' into release 2022-04-29 15:55:05 +01:00
Dan Brown
7233c1c7b2
Updated version and assets for release v22.03.1 2022-03-30 19:37:07 +01:00
Dan Brown
1309a01131
Merge branch 'development' into release 2022-03-30 19:36:45 +01:00
Dan Brown
0333185b6d
Updated version and assets for release v22.03 2022-03-30 13:49:17 +01:00
Dan Brown
83f89f64e8
Merge branch 'development' into release 2022-03-30 13:49:05 +01:00
Dan Brown
11a1a6fb16
Updated version and assets for release v22.02.3 2022-03-07 15:12:22 +00:00
Dan Brown
882c609296
Merge branch 'development' into release 2022-03-07 15:12:09 +00:00
Dan Brown
176a0dcd59
Updated version and assets for release v22.02.2 2022-03-01 22:45:41 +00:00
Dan Brown
94b0f70bfa
Merge branch 'development' into release 2022-03-01 22:45:12 +00:00
Dan Brown
08b2a77d41
Updated version and assets for release v22.02.1 2022-02-27 17:46:06 +00:00
Dan Brown
3e8e9a23cf
Merge branch 'development' into release 2022-02-27 17:45:49 +00:00
Dan Brown
58b83b64c8
Updated version and assets for release v22.02 2022-02-26 12:01:44 +00:00
Dan Brown
dfe4cde6ee
Merge branch 'development' into release 2022-02-26 12:00:46 +00:00
Dan Brown
d11144d9e2
Updated version and assets for release v21.12.5 2022-02-06 15:49:23 +00:00
Dan Brown
f96b0ea5f3
Merge branch 'development' into release 2022-02-06 15:48:55 +00:00
Dan Brown
815f8d79ed
Updated version and assets for release v21.12.4 2022-02-01 11:52:24 +00:00
Dan Brown
b62dab32e0
Merge branch 'development' into release 2022-02-01 11:51:48 +00:00
Dan Brown
262f863981
Updated version and assets for release v21.12.3 2022-01-24 22:49:42 +00:00
Dan Brown
a4c94390a1
Merge branch 'master' into release 2022-01-24 22:49:31 +00:00
Dan Brown
53f3cca85d
Updated version and assets for release v21.12.2 2022-01-10 18:23:44 +00:00
Dan Brown
ed08bbcecc
Merge branch 'master' into release 2022-01-10 18:23:19 +00:00
Dan Brown
de97ebf9b7
Updated version and assets for release v21.12.1 2022-01-06 12:20:37 +00:00
Dan Brown
f492a660a8
Merge branch 'master' into release 2022-01-06 12:20:26 +00:00
Dan Brown
09436836a5
Updated version and assets for release v21.12 2021-12-22 17:04:18 +00:00
Dan Brown
bb455d7788
Merge branch 'master' into release 2021-12-22 17:03:50 +00:00
Dan Brown
009212ab80
Updated version and assets for release v21.11.3 2021-12-15 14:08:37 +00:00
Dan Brown
ba9cb591c8
Merge branch 'master' into release 2021-12-15 14:08:17 +00:00
Dan Brown
d00ac2f34e
Updated version and assets for release v21.11.2 2021-11-30 14:30:19 +00:00
Dan Brown
bd4dc6d463
Merge branch 'master' into release 2021-11-30 14:29:53 +00:00
Dan Brown
d91180a909
Updated version and assets for release v21.11.1 2021-11-23 20:44:36 +00:00
Dan Brown
bc2913a5cb
Merge branch 'master' into release 2021-11-23 20:44:12 +00:00
Dan Brown
4802394562
Updated version and assets for release v21.11 2021-11-16 13:22:24 +00:00
Dan Brown
1755556468
Merge branch 'master' into release 2021-11-16 13:21:44 +00:00
Dan Brown
01cdbdb7ae
Updated version and assets for release v21.10.3 2021-11-01 13:31:10 +00:00
Dan Brown
fc8bbf3eab
Merge branch 'master' into release 2021-11-01 13:30:36 +00:00
Dan Brown
3cdab19319
Updated version and assets for release v21.10.2 2021-10-28 15:57:04 +01:00
Dan Brown
5661d20e87
Merge branch 'master' into release 2021-10-28 15:56:49 +01:00
Dan Brown
91f80123e8
Merge branch 'master' into release 2021-10-27 12:35:00 +01:00
Dan Brown
7a0636d0f8
Updated version and assets for release v21.10.1 2021-10-27 12:31:40 +01:00
Dan Brown
0fe5bdfbac
Updated version and assets for release v21.10 2021-10-25 15:59:23 +01:00
Dan Brown
f88687e977
Merge branch 'master' into release 2021-10-25 15:58:59 +01:00
Dan Brown
68d437d05b
Updated version and assets for release v21.08.6 2021-10-15 14:34:44 +01:00
Dan Brown
1e56aaea04
Merge branch 'master' into release 2021-10-15 14:34:23 +01:00
Dan Brown
dab170a6fe
Updated version and assets for release v21.08.5 2021-10-08 22:25:36 +01:00
Dan Brown
a8de717d9b
Merge branch 'master' into release 2021-10-08 22:25:05 +01:00
Dan Brown
78fe95b6fc
Updated version and assets for release v21.08.4 2021-10-04 16:25:24 +01:00
Dan Brown
e0c24e41aa
Merge branch 'master' into release 2021-10-04 16:24:54 +01:00
Dan Brown
fa8553839b
Updated version and assets for release v21.08.3 2021-09-12 16:31:02 +01:00
Dan Brown
b8fcefc794
Merge branch 'master' into release 2021-09-12 16:30:35 +01:00
Dan Brown
88bcb68fcb
Updated version and assets for release v21.08.2 2021-09-04 15:07:20 +01:00
Dan Brown
7c000553ae
Merge branch 'master' into release 2021-09-04 15:06:33 +01:00
Dan Brown
391fa35c80
Updated version and assets for release v21.08.1 2021-09-02 21:13:09 +01:00
Dan Brown
c6773a8c9f
Merge branch 'master' into release 2021-09-02 21:12:06 +01:00
Dan Brown
9b226e7d39
Updated version and assets for release v21.08 2021-08-31 22:07:53 +01:00
Dan Brown
9865446267
Merge branch 'master' into release 2021-08-31 22:07:23 +01:00
Dan Brown
926abbe776
Updated version and assets for release v21.05.4 2021-08-04 21:29:10 +01:00
Dan Brown
4fabef3a57
Merge branch 'v21.05.x' into release 2021-08-04 21:28:45 +01:00
Dan Brown
5ef4cd80c3
Updated version and assets for release v21.05.3 2021-07-03 11:59:52 +01:00
Dan Brown
e01f23583f
Merge branch 'v21.05.x' into release 2021-07-03 11:59:21 +01:00
Dan Brown
7792cb3915
Updated version and assets for release v21.05.2 2021-06-13 14:26:34 +01:00
Dan Brown
be26253a18
Merge branch 'master' into release 2021-06-13 14:25:39 +01:00
Dan Brown
1bdd1f8189
Updated version for release v21.05.1 2021-06-04 23:09:42 +01:00
Dan Brown
fa62c79b17
Merge branch 'master' into release 2021-06-04 23:08:59 +01:00
Dan Brown
d7d8fa1e5b
Updated version and assets for release v21.05 2021-05-30 16:17:56 +01:00
Dan Brown
18562f1e10
Merge branch 'master' into release 2021-05-30 16:17:44 +01:00
Dan Brown
86090a694f
Updated version and assets for release v21.04.6 2021-05-24 13:06:03 +01:00
Dan Brown
1ee8287c73
Merge branch 'v21.04.x' into release 2021-05-24 13:05:34 +01:00
Dan Brown
8eb98cd591
Updated version and assets for release v21.04.5 2021-05-15 17:56:29 +01:00
Dan Brown
0f9ba21b05
Merge branch 'v21.04.x' into release 2021-05-15 17:56:03 +01:00
Dan Brown
834f8e7046
Updated version and assets for release v21.04.4 2021-05-09 14:46:05 +01:00
Dan Brown
32e3399334
Merge branch 'master' into release 2021-05-09 14:45:36 +01:00
Dan Brown
2d8698a218
Updated version and assets for release v21.04.3 2021-04-27 22:01:37 +01:00
Dan Brown
454fb883a2
Merge branch 'master' into release 2021-04-27 22:01:15 +01:00
Dan Brown
6f4a6ab8ea
Updated version for release v21.04.2 2021-04-20 22:37:05 +01:00
Dan Brown
9c4b6f36f1
Merge branch 'master' into release 2021-04-20 22:36:35 +01:00
Dan Brown
78886b1e67
Updated version and assets for release v21.04.1 2021-04-19 22:26:19 +01:00
Dan Brown
d9debaf032
Merge branch 'master' into release 2021-04-19 22:25:29 +01:00
Dan Brown
d4360d6347
Updated version and assets for release v21.04 2021-04-09 21:18:32 +01:00
Dan Brown
175b1785c0
Merge branch 'master' into release 2021-04-09 21:18:09 +01:00
Dan Brown
c8740c0171
Updated version for release v0.31.8 2021-03-13 15:32:54 +00:00
Dan Brown
91ee895a74
Merge branch 'v0.31.x' into release 2021-03-13 15:32:06 +00:00
Dan Brown
a045e46571
Updated version for release v0.31.7 2021-03-02 21:19:17 +00:00
Dan Brown
44eaa65c3b
Merge branch 'v0.31.x' into release 2021-03-02 21:18:31 +00:00
Dan Brown
0a22af7b14
Updated version for release v0.31.6 2021-02-06 14:41:19 +00:00
Dan Brown
b54702ab08
Merge branch 'v0.31.x' into release 2021-02-06 14:40:47 +00:00
Dan Brown
c4fdcfc5d1
Updated version for release v0.31.5 2021-02-02 20:58:06 +00:00
Dan Brown
cb8117e8df
Merge branch 'v0.31.x' into release 2021-02-02 20:57:41 +00:00
Dan Brown
5a218d5056
Updated version and assets for release v0.31.4 2021-01-16 17:50:45 +00:00
Dan Brown
8dbc5cf9c6
Merge branch 'master' into release 2021-01-16 17:50:11 +00:00
Dan Brown
71e81615a3
Updated version for release v0.31.3 2021-01-10 23:29:58 +00:00
Dan Brown
611d37da04
Merge branch 'master' into release 2021-01-10 23:29:11 +00:00
Dan Brown
0e799a3857
Updated version and assets for release v0.31.2 2021-01-10 14:05:16 +00:00
Dan Brown
b91d6e2bfa
Merge branch 'master' into release 2021-01-10 14:04:59 +00:00
Dan Brown
ea16ad7e94
Updated version and assets for release v0.31.1 2021-01-04 18:41:55 +00:00
Dan Brown
ba6eb54552
Merge branch 'master' into release 2021-01-04 18:41:26 +00:00
Dan Brown
f705e7683b
Updated assets for release v0.31.0 again 2021-01-03 22:33:36 +00:00
Dan Brown
dc996adb20
Merge branch 'master' into release 2021-01-03 22:32:40 +00:00
Dan Brown
a64c638ccc
Updated version and assets for release v0.31.0 2021-01-03 21:52:37 +00:00
Dan Brown
359c067279
Merge branch 'master' into release 2021-01-03 21:52:00 +00:00
Dan Brown
66a746e297
Updated version for release v0.30.7 2020-12-18 14:13:40 +00:00
Dan Brown
a4d43ee24b
Merge branch 'v0.30.x' into release 2020-12-18 14:13:19 +00:00
Dan Brown
f7793a70a9
Updated version for release v0.30.6 2020-12-17 21:07:06 +00:00
Dan Brown
ceba3d31fb
Merge branch 'v0.30.x' into release 2020-12-17 21:03:20 +00:00
Dan Brown
eecc08edde
Updated version for release v0.30.5 2020-12-06 21:05:43 +00:00
Dan Brown
eb19aadc75
Merge branch 'v0.30.x' into release 2020-12-06 21:05:11 +00:00
Dan Brown
06c81e69b9
Updated version and assets for release v0.30.4 2020-10-31 16:52:33 +00:00
Dan Brown
3dc3d4a639
Merge branch 'master' into release 2020-10-31 16:51:54 +00:00
Dan Brown
94c59c1e3d
Updated version and assets for release v0.30.3 2020-10-13 22:50:52 +01:00
Dan Brown
4d2205853a
Merge branch 'master' into release 2020-10-13 22:50:30 +01:00
Dan Brown
751772b87a
Updated version and assets for release v0.30.2 2020-09-30 22:44:58 +01:00
Dan Brown
76e30869e1
Merge branch 'master' into release 2020-09-30 22:44:17 +01:00
Dan Brown
3edc9fe9eb
Updated version and assets for release v0.30.1 2020-09-26 17:51:37 +01:00
Dan Brown
616c62703e
Merge branch 'master' into release 2020-09-26 17:50:25 +01:00
Dan Brown
ecd56917e7
Updated version and assets for release v0.30.0 2020-09-20 10:33:18 +01:00
Dan Brown
e22c9cae91
Merge branch 'master' into release 2020-09-20 10:30:10 +01:00
Dan Brown
29ddb6e1b9
Updated version and assets for release v0.29.3 2020-05-12 22:34:01 +01:00
Dan Brown
2ff90e2ff0
Merge branch 'master' into release 2020-05-12 22:33:27 +01:00
Dan Brown
04ecc128a2
Updated version and assets for release v0.29.2 2020-05-02 11:49:21 +01:00
Dan Brown
87d1d3423b
Merge branch 'master' into release 2020-05-02 11:48:48 +01:00
Dan Brown
4818192a2a
Updated version and assets for release v0.29.1 2020-04-28 12:30:31 +01:00
Dan Brown
965dd97f54
Merge branch 'master' into release 2020-04-28 12:30:09 +01:00
Dan Brown
195b74926c
Updated version and assets for release v0.29.0 2020-04-13 16:10:23 +01:00
Dan Brown
2120db12b2
Merge branch 'master' into release 2020-04-13 16:10:11 +01:00
Dan Brown
ed563fef28
Updated version and assets for release v0.28.3 2020-03-14 22:31:42 +00:00
Dan Brown
0d31a8e3f1
Merge branch 'master' into release 2020-03-14 22:31:11 +00:00
Dan Brown
b8354b974b
Updated version and assets for release v0.28.2 2020-02-15 22:36:08 +00:00
Dan Brown
034c1e289d
Merge branch 'master' into release 2020-02-15 22:35:46 +00:00
Dan Brown
f31605a3de
Updated version and assets for release v0.28.1 2020-02-15 22:08:06 +00:00
Dan Brown
e7cc75c74d
Merge branch 'master' into release 2020-02-15 22:07:17 +00:00
Dan Brown
4b79d5e4e8
Updated version and assets for release v0.28.0 2020-02-03 22:44:45 +00:00
Dan Brown
34854915b3
Merge branch 'master' into release 2020-02-03 22:43:58 +00:00
Dan Brown
af6f34b529
Updated version and assets for release v0.27.5 2019-10-16 16:35:50 +01:00
Dan Brown
fb82a2b896
Merge branch 'patching-v0.27' into release 2019-10-16 16:35:10 +01:00
Dan Brown
5b464938b6
Updated version and assets for release v0.27.4 2019-09-07 13:30:08 +01:00
Dan Brown
81f954890d
Merge branch 'patching-v0.27' into release 2019-09-07 13:29:53 +01:00
Dan Brown
0e2bbcec62
Updated version and assets for release v0.27.3 2019-09-03 21:50:12 +01:00
Dan Brown
fdd339f525
Merge branch 'master' into release 2019-09-03 21:49:46 +01:00
Dan Brown
8cf7d6a83d
Updated version and assets for release v0.27.2 2019-09-01 12:12:23 +01:00
Dan Brown
58a5008718
Merge branch 'master' into release 2019-09-01 12:12:10 +01:00
Dan Brown
c44a8df55d
Updated version and assets for release v0.27.1 2019-09-01 11:13:50 +01:00
Dan Brown
ff1494c519
Merge branch 'master' into release 2019-09-01 11:13:18 +01:00
Dan Brown
b8ce8fd852
Updated assets for release v0.27 2019-08-31 14:16:14 +01:00
Dan Brown
75e7454a5f
Merge branch 'master' into release and set version 2019-08-31 14:15:18 +01:00
Dan Brown
2558ea8931
Updated version for release v0.26.4 2019-08-06 21:42:09 +01:00
Dan Brown
ac0f47a4b2
Merge branch 'v0.26' into release 2019-08-06 21:41:06 +01:00
Dan Brown
4f16129869
Updated version for release v0.26.3 2019-07-10 20:21:22 +01:00
Dan Brown
64a8037fdd
Merge branch 'v0.26' into release 2019-07-10 20:19:54 +01:00
Dan Brown
7502ba1bc8
Updated version and assets for release v0.26.2 2019-05-27 13:48:20 +01:00
Dan Brown
33a04697ef
Merge branch 'master' into release 2019-05-27 13:47:47 +01:00
Dan Brown
b70a5c0cdb
Updated version and assets for release v0.26.1 2019-05-07 23:05:47 +01:00
Dan Brown
9443ae9f40
Merge branch 'master' into release 2019-05-07 23:05:10 +01:00
Dan Brown
220c2a4102
Updated version and assets for release v0.26.0 2019-05-06 18:58:56 +01:00
Dan Brown
e9914eb301
Merge branch 'master' into release 2019-05-06 18:57:58 +01:00
Dan Brown
934512d09c
Updated version and assets for release v0.25.5 2019-03-24 19:45:17 +00:00
Dan Brown
9102c90986
Merge branch 'master' into release 2019-03-24 19:45:00 +00:00
Dan Brown
c3e74219c4
Updated version and assets for release v0.25.4 2019-03-21 19:46:19 +00:00
Dan Brown
13c9d7bc2d
Merge branch 'master' into release 2019-03-21 19:43:48 +00:00
Dan Brown
119b539586
Updated version and assets for release v0.25.3 2019-03-21 00:03:26 +00:00
Dan Brown
29a5c180f0
Merge branch 'master' into release 2019-03-21 00:02:33 +00:00
Dan Brown
7906602291
Updated version and assets for release v0.25.2 2019-03-10 13:45:21 +00:00
Dan Brown
6dafe773ff
Merge branch 'master' into release 2019-03-10 13:44:29 +00:00
Dan Brown
25bc28a1be
Updated version and assets for release v0.25.1 2019-01-20 15:42:32 +00:00
Dan Brown
4c561c7fa0
Merge branch 'master' into release 2019-01-20 15:41:24 +00:00
Dan Brown
95b3e78573
Updated version and assets for release v0.25.0 2019-01-12 22:48:53 +00:00
Dan Brown
63a345bc93
Merge branch 'master' into release 2019-01-12 22:47:07 +00:00
Dan Brown
e093a172cb
Updated assets and version for release v0.24.3 2018-11-27 21:52:20 +00:00
Dan Brown
4b01f8934b
Merge branch 'master' into release 2018-11-27 21:51:32 +00:00
Dan Brown
bc116b45b5
Re-updated assets for release v0.24.2 2018-11-10 16:10:22 +00:00
Dan Brown
a059960b9e
Merge branch 'master' into release 2018-11-10 16:09:14 +00:00
Dan Brown
7770966fed
Updated assets for release v0.24.2 2018-11-10 16:01:55 +00:00
Dan Brown
d7adcf6c69
Merge branch 'master' into release 2018-11-10 16:01:01 +00:00
Dan Brown
04a364dcc3
Incremented version for v0.24.1 2018-09-24 16:34:16 +01:00
Dan Brown
db83ac7eaa
Merge branch 'master' into release 2018-09-24 16:32:30 +01:00
Dan Brown
3ca9dddf61
Merge branch 'master' into release 2018-09-24 15:59:39 +01:00
Dan Brown
bf74f53ca7
Updated assets for release and incremented version 2018-09-24 12:18:27 +01:00
Dan Brown
9d67efb4a4
Merge branch 'master' into release 2018-09-24 12:08:21 +01:00
Dan Brown
3a39b9f440
Merge pull request #1022 from BookStackApp/revert-983-master
Revert "Update german translation"
2018-09-22 18:33:29 +01:00
Dan Brown
27f7aab375
Revert "Update german translation" 2018-09-22 18:33:15 +01:00
Dan Brown
337da0c467
Merge pull request #983 from vriic/master
Update german translation
2018-09-22 18:27:04 +01:00
Nikolai Nikolajevic
f56b3560c4 Update german translation 2018-08-23 16:17:46 +02:00
Dan Brown
02dfe11ce6
Increment version for release v0.23.2 2018-08-19 15:33:23 +01:00
Dan Brown
83d06beb70
Merge branch 'master' into release 2018-08-19 15:33:10 +01:00
Dan Brown
a8cfc059c8
Updated version for release v0.23.1 2018-08-12 14:22:53 +01:00
Dan Brown
1614b2bab0
Merge branch 'master' into release 2018-08-12 14:22:17 +01:00
Dan Brown
4bdec0d214
Updated version and assets for release v0.23 2018-07-29 20:28:49 +01:00
Dan Brown
6a7d7e7c2b
Merge branch 'master' into release 2018-07-29 20:26:00 +01:00
Dan Brown
30d4674657
Updated assets for release v0.22 2018-05-28 14:19:14 +01:00
Dan Brown
9f961f95f8
Merge branch 'master' into release 2018-05-28 14:19:04 +01:00
Dan Brown
bab99a26ec
Updated assets and version for v0.21 release 2018-04-22 20:21:22 +01:00
Dan Brown
9a7fecd269
Merge branch 'master' into release 2018-04-22 20:19:02 +01:00
Dan Brown
a8dc0d449b
Updated the version because i'm such a plonker
And forgot to do this last release.
I wonder if there's a simple commit hook that could prevent the same two
versions twice in a row?
2018-03-30 15:41:46 +01:00
Dan Brown
a0381f76bf
Merge branch 'v0.20' into release 2018-03-30 15:33:23 +01:00
Dan Brown
6102f66daa
Updated assets for release v0.20.1 2018-03-25 16:58:14 +01:00
Dan Brown
c6134d162d
Merge branch 'master' into release 2018-03-25 16:54:48 +01:00
Dan Brown
2046f9b9de
Updated assets for release v0.20.0 2018-02-11 18:20:17 +00:00
Dan Brown
ac3ba594a4
Merge branch 'master' into release and updated version 2018-02-11 18:19:38 +00:00
Dan Brown
22df25a480
Updated assets and version for v0.19.0 2017-12-10 18:21:07 +00:00
Dan Brown
8b30c7f02e
Merge branch 'master' into release 2017-12-10 18:19:20 +00:00
Dan Brown
757cdddc7c
Updated version and JS for release v0.18.5 2017-11-11 18:33:04 +00:00
Dan Brown
df95e99680
Updated assets and version for release v0.18.4 2017-10-15 19:28:29 +01:00
Dan Brown
5a6d544db7
Merge branch 'master' into release 2017-10-15 19:27:50 +01:00
Dan Brown
16117d329c
Merge branch 'master' into release, Updated version 2017-10-06 21:05:45 +01:00
Dan Brown
e90da18ada
Updated assets and version for v0.18.2 release 2017-10-01 18:12:59 +01:00
Dan Brown
a08d80e1cc
Merge branch 'master' into release 2017-10-01 18:12:07 +01:00
Dan Brown
6258175922
Updated assets and version for v0.18.1 release 2017-09-20 21:36:17 +01:00
Dan Brown
15736777a0
Merge branch 'master' into release 2017-09-20 21:35:33 +01:00
Dan Brown
75915e8a94
Updated assets for release v0.18 2017-09-10 17:07:57 +01:00
Dan Brown
9bde0ae4ea
Merge branch 'master' into release 2017-09-10 17:05:05 +01:00
Dan Brown
0c802d1f86
Updated assets and version for release v0.17.4 2017-07-28 13:04:21 +01:00
Dan Brown
b7a96c6466
Merge branch 'master' into release 2017-07-28 13:03:36 +01:00
Dan Brown
4b645a82c7
Updated version for release 2017-07-22 17:27:01 +01:00
Dan Brown
d599b77b6f
Merge branch 'master' into release 2017-07-22 17:26:44 +01:00
Dan Brown
26e93dc8c1
Updated assets and version for release v0.17.2 2017-07-22 16:49:07 +01:00
Dan Brown
a4c9a8491b
Merge branch 'master' into release 2017-07-22 16:46:57 +01:00
Dan Brown
70ee636d87
Updated css and version for release 2017-07-10 20:52:32 +01:00
Dan Brown
b35f6dbb03
Merge branch 'master' into release 2017-07-10 20:51:25 +01:00
Dan Brown
67d9e24d8f
Merge branch 'master' into release
Also updated assets, Version number
2017-07-02 22:52:26 +01:00
Dan Brown
3903fda6ca
Incremented version 2017-06-04 15:38:49 +01:00
Dan Brown
441e46ebaa
Merge branch 'v0.16' into release 2017-06-04 15:38:29 +01:00
Dan Brown
1f4260f359
Updated version for release v0.16.2 2017-05-07 19:35:51 +01:00
Dan Brown
dc0bf8ad4e
Merge branch 'master' into release 2017-05-07 19:35:34 +01:00
Dan Brown
102e326e6a
Updated JS and version for release v0.16.1 2017-04-30 19:51:23 +01:00
Dan Brown
2b25bf6f3b
Merge branch 'master' into release 2017-04-30 19:50:29 +01:00
Dan Brown
f93280696d
Updated assets for release v0.16 2017-04-23 20:42:28 +01:00
Dan Brown
1787391b07
Merge branch 'master' into release 2017-04-23 20:41:45 +01:00
Dan Brown
a74a8ee483
Updated version for v0.15.3 2017-03-23 22:22:16 +00:00
Dan Brown
7fa5405cb7
Merge branch 'master' into release 2017-03-23 22:21:04 +00:00
Dan Brown
6725ddcc41
Updated version for release v0.15.2 2017-03-05 15:50:52 +00:00
Dan Brown
bce941db3f
Merge branch 'master' into release 2017-03-05 15:49:47 +00:00
Dan Brown
6d926048ec
Updated to version v0.15.1 2017-02-27 16:59:10 +00:00
Dan Brown
5335c973b4
Merge branch 'master' into release 2017-02-27 16:58:20 +00:00
Dan Brown
15c3e5c96e
Updated assets for release v0.15 2017-02-27 14:58:02 +00:00
Dan Brown
a5d5904969
Merge branch 'master' into release 2017-02-27 14:57:38 +00:00
Dan Brown
598758b991
Updated version for v0.14.3 2017-02-05 21:23:27 +00:00
Dan Brown
9926e23bc8
Merge branch 'v0.14' into release 2017-02-05 21:21:54 +00:00
Dan Brown
5d3264bc63
Updated assets for release v0.14.2 2017-02-01 22:27:04 +00:00
Dan Brown
d71f819f95
Merge branch 'v0.14' into release 2017-02-01 22:22:38 +00:00
Dan Brown
ee13509760
Updated version number 2017-01-23 22:28:31 +00:00
Dan Brown
82d7bb1f32
Merge branch 'master' into release 2017-01-23 22:28:02 +00:00
Dan Brown
cdfda508d8
Updated assets for release v0.14 2017-01-22 12:36:10 +00:00
Dan Brown
da941e584f
Merge branch 'master' into release ready for v0.14 2017-01-22 12:31:27 +00:00
Dan Brown
65874d7b96
Updated assets for release v0.13.1 2016-11-27 19:42:33 +00:00
Dan Brown
ac9b8f405c
Merge fixes from master for release v0.13.1 2016-11-27 19:41:12 +00:00
Dan Brown
8d1419a12e
Update assets and version for release v0.13 2016-11-13 12:29:52 +00:00
Dan Brown
04f7a7d301
Merge branch 'master' into release 2016-11-13 12:26:56 +00:00
Dan Brown
c10d2a1493
Updated assets for release v0.12.2 2016-10-30 13:19:19 +00:00
Dan Brown
97bbf79ffd
Merge branch 'v0.12' into release 2016-10-30 13:18:23 +00:00
Dan Brown
f7b01ae53d
Updated assets for release v0.12.1 2016-09-06 20:50:15 +01:00
Dan Brown
d704e1dbba
Merge branch 'master' into release 2016-09-06 20:49:15 +01:00
Dan Brown
ef2ff5e093
Updated assets for release v0.12 2016-09-05 19:49:42 +01:00
Dan Brown
7caed3b0db
Merge branch 'master' into release 2016-09-05 19:35:21 +01:00
Dan Brown
45641d0754
Updated assets for release v0.11.2 2016-08-21 14:56:29 +01:00
Dan Brown
4b1d08ba99
Merge branch 'v0.11' into release 2016-08-21 14:55:11 +01:00
Dan Brown
160fa99ba4 Updated assets for release v0.11.1 2016-08-14 12:40:55 +01:00
Dan Brown
d2a5ab49ed Merge branch 'v0.11' into release 2016-08-14 12:37:48 +01:00
Dan Brown
c6404d8917 Updated assets for release v0.11 2016-07-03 10:56:16 +01:00
Dan Brown
7113807f12 Merge branch 'master' into release 2016-07-03 10:52:04 +01:00
Dan Brown
be711215e8 Updated assets for release v0.10 2016-05-22 15:12:47 +01:00
Dan Brown
7e3b404240 Merge branch 'master' into release for version v0.10 2016-05-22 15:11:50 +01:00
Dan Brown
e86901ca20 Updated assets for release v0.9.3 2016-05-03 21:13:02 +01:00
Dan Brown
bdfa61c8b2 Merge branch 'v0.9' into release 2016-05-03 21:11:01 +01:00
Dan Brown
2cc36787f5 Updated assets for release 0.9.2 2016-04-15 19:57:02 +01:00
Dan Brown
448ac61b48 Merge branch 'master' into release 2016-04-15 19:52:59 +01:00
Dan Brown
753f6394f7 Merge branch 'master' into release 2016-04-12 20:09:14 +01:00
Dan Brown
b1faf65934 Updated assets for release 0.9.0 2016-04-09 15:49:02 +01:00
Dan Brown
09f478bd74 Merge branch 'master' into release 2016-04-09 15:47:14 +01:00
Dan Brown
a0497feddd Updated assets for release 0.8.2 2016-03-30 21:44:30 +01:00
Dan Brown
789693bde9 Merge branch 'v0.8' into release 2016-03-30 21:32:46 +01:00
Dan Brown
1fe933e4ea Merge branch 'master' into release 2016-03-13 15:38:06 +00:00
Dan Brown
724b4b5a70 Updated assets for release 0.8.0 2016-03-13 15:15:14 +00:00
Dan Brown
1778a56146 Merge branch 'master' into release 2016-03-13 15:13:23 +00:00
Dan Brown
744865fcb2 Updated assets for release 0.7.6 2016-03-06 13:28:44 +00:00
Dan Brown
7f8c8b448d Merged branch master into release 2016-03-06 13:26:29 +00:00
Dan Brown
a67c53826d Updated assets for release 0.7.5 2016-02-25 21:24:09 +00:00
Dan Brown
14b131e850 Merge branch 'master' into release 2016-02-25 21:23:06 +00:00
Dan Brown
9b55a52b85 Updated assets for release 0.7.4 2016-02-11 22:35:01 +00:00
Dan Brown
db1d10e80f Merge branch 'master' into release 2016-02-11 22:29:29 +00:00
Dan Brown
1be576966f Updated assets for release 0.7.3 2016-02-08 20:47:33 +00:00
Dan Brown
b97e792c5f Merge branch 'master' into release 2016-02-08 20:45:48 +00:00
Dan Brown
8dec674cc3 Merge branch 'master' into release 2016-02-02 07:35:20 +00:00
Dan Brown
f784c03746 Merge branch 'master' into release 2016-02-01 18:31:04 +00:00
Dan Brown
148e172fe8 Updated assets for release 0.7 2016-01-31 18:03:55 +00:00
Dan Brown
56ae86646f Merge branch 'master' into release 2016-01-31 18:01:25 +00:00
Dan Brown
1d2b6fdfa2 Add updated assets 2016-01-02 14:50:59 +00:00
Dan Brown
4fc75beed4 Merge branch 'master' into release 2016-01-02 14:49:05 +00:00
Dan Brown
3b3bc0c4bf Updated compiled assets 2015-12-31 17:26:22 +00:00
Dan Brown
910faab88e Merge branch 'master' into release 2015-12-31 17:22:03 +00:00
Dan Brown
f184d763ad Added build folder to release 2015-12-16 17:53:53 +00:00
Dan Brown
a91d42634d Merge branch 'master' into release 2015-12-16 17:29:34 +00:00
Dan Brown
f517ef3616 Added new asset structure 2015-12-16 17:27:53 +00:00
Dan Brown
e99507ddcf Merge branch 'master' into release 2015-12-16 17:21:21 +00:00
Dan Brown
d2cacf1945 Release update 2015-12-01 21:30:21 +00:00
Dan Brown
448ac1405b Merge branch 'master' into release 2015-12-01 21:15:08 +00:00
Dan Brown
6ad21ce885 Added built assets for release 2015-11-30 21:59:34 +00:00
69 changed files with 985 additions and 1038 deletions

View File

@ -478,9 +478,3 @@ Alexandar Cavdarovski (ace.200112) :: Swedish
Onur Oskay (o.oskay) :: Turkish
Sébastien Merveille (SebastienMerv) :: French
Maxim Kouznetsov (masya.work) :: Hebrew
neodvisnost :: Slovenian
Soubi Agatsuma (bisouya) :: Hebrew
Ilya Shaulov (ishaulov) :: Russian
Konstantin Bobkov (b.konstantv) :: Russian
Ruben Sutter (rubensutter) :: German
jellium :: French

6
.gitignore vendored
View File

@ -8,10 +8,10 @@ Homestead.yaml
.idea
npm-debug.log
yarn-error.log
/public/dist
/public/dist/*.map
/public/plugins
/public/css
/public/js
/public/css/*.map
/public/js/*.map
/public/bower
/public/build/
/public/favicon.ico

View File

@ -2,7 +2,6 @@
namespace BookStack\Sorting;
use voku\helper\ASCII;
use BookStack\Entities\Models\Chapter;
use BookStack\Entities\Models\Entity;
@ -14,12 +13,12 @@ class SortSetOperationComparisons
{
public static function nameAsc(Entity $a, Entity $b): int
{
return strtolower(ASCII::to_transliterate($a->name, null)) <=> strtolower(ASCII::to_transliterate($b->name, null));
return strtolower($a->name) <=> strtolower($b->name);
}
public static function nameDesc(Entity $a, Entity $b): int
{
return strtolower(ASCII::to_transliterate($b->name, null)) <=> strtolower(ASCII::to_transliterate($a->name, null));
return strtolower($b->name) <=> strtolower($a->name);
}
public static function nameNumericAsc(Entity $a, Entity $b): int

278
composer.lock generated
View File

@ -62,16 +62,16 @@
},
{
"name": "aws/aws-sdk-php",
"version": "3.342.18",
"version": "3.342.6",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
"reference": "e6c81bf323b082f8fe2b76d8d41e2614806d5892"
"reference": "2ad93ef447289da27892707efa683c1ae7ced85f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/e6c81bf323b082f8fe2b76d8d41e2614806d5892",
"reference": "e6c81bf323b082f8fe2b76d8d41e2614806d5892",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/2ad93ef447289da27892707efa683c1ae7ced85f",
"reference": "2ad93ef447289da27892707efa683c1ae7ced85f",
"shasum": ""
},
"require": {
@ -153,9 +153,9 @@
"support": {
"forum": "https://github.com/aws/aws-sdk-php/discussions",
"issues": "https://github.com/aws/aws-sdk-php/issues",
"source": "https://github.com/aws/aws-sdk-php/tree/3.342.18"
"source": "https://github.com/aws/aws-sdk-php/tree/3.342.6"
},
"time": "2025-04-01T18:15:02+00:00"
"time": "2025-03-14T18:01:18+00:00"
},
{
"name": "bacon/bacon-qr-code",
@ -855,16 +855,16 @@
},
{
"name": "egulias/email-validator",
"version": "4.0.4",
"version": "4.0.3",
"source": {
"type": "git",
"url": "https://github.com/egulias/EmailValidator.git",
"reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa"
"reference": "b115554301161fa21467629f1e1391c1936de517"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/egulias/EmailValidator/zipball/d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa",
"reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa",
"url": "https://api.github.com/repos/egulias/EmailValidator/zipball/b115554301161fa21467629f1e1391c1936de517",
"reference": "b115554301161fa21467629f1e1391c1936de517",
"shasum": ""
},
"require": {
@ -910,7 +910,7 @@
],
"support": {
"issues": "https://github.com/egulias/EmailValidator/issues",
"source": "https://github.com/egulias/EmailValidator/tree/4.0.4"
"source": "https://github.com/egulias/EmailValidator/tree/4.0.3"
},
"funding": [
{
@ -918,7 +918,7 @@
"type": "github"
}
],
"time": "2025-03-06T22:45:56+00:00"
"time": "2024-12-27T00:36:43+00:00"
},
{
"name": "firebase/php-jwt",
@ -1118,16 +1118,16 @@
},
{
"name": "guzzlehttp/guzzle",
"version": "7.9.3",
"version": "7.9.2",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77"
"reference": "d281ed313b989f213357e3be1a179f02196ac99b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/7b2f29fe81dc4da0ca0ea7d42107a0845946ea77",
"reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b",
"reference": "d281ed313b989f213357e3be1a179f02196ac99b",
"shasum": ""
},
"require": {
@ -1224,7 +1224,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/7.9.3"
"source": "https://github.com/guzzle/guzzle/tree/7.9.2"
},
"funding": [
{
@ -1240,20 +1240,20 @@
"type": "tidelift"
}
],
"time": "2025-03-27T13:37:11+00:00"
"time": "2024-07-24T11:22:20+00:00"
},
{
"name": "guzzlehttp/promises",
"version": "2.2.0",
"version": "2.0.4",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c"
"reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/7c69f28996b0a6920945dd20b3857e499d9ca96c",
"reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c",
"url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455",
"reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455",
"shasum": ""
},
"require": {
@ -1307,7 +1307,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
"source": "https://github.com/guzzle/promises/tree/2.2.0"
"source": "https://github.com/guzzle/promises/tree/2.0.4"
},
"funding": [
{
@ -1323,20 +1323,20 @@
"type": "tidelift"
}
],
"time": "2025-03-27T13:27:01+00:00"
"time": "2024-10-17T10:06:22+00:00"
},
{
"name": "guzzlehttp/psr7",
"version": "2.7.1",
"version": "2.7.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16"
"reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/c2270caaabe631b3b44c85f99e5a04bbb8060d16",
"reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201",
"reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201",
"shasum": ""
},
"require": {
@ -1423,7 +1423,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/2.7.1"
"source": "https://github.com/guzzle/psr7/tree/2.7.0"
},
"funding": [
{
@ -1439,7 +1439,7 @@
"type": "tidelift"
}
],
"time": "2025-03-27T12:30:47+00:00"
"time": "2024-07-18T11:15:46+00:00"
},
{
"name": "guzzlehttp/uri-template",
@ -1529,16 +1529,16 @@
},
{
"name": "intervention/gif",
"version": "4.2.2",
"version": "4.2.1",
"source": {
"type": "git",
"url": "https://github.com/Intervention/gif.git",
"reference": "5999eac6a39aa760fb803bc809e8909ee67b451a"
"reference": "6addac2c68b4bc0e37d0d3ccedda57eb84729c49"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Intervention/gif/zipball/5999eac6a39aa760fb803bc809e8909ee67b451a",
"reference": "5999eac6a39aa760fb803bc809e8909ee67b451a",
"url": "https://api.github.com/repos/Intervention/gif/zipball/6addac2c68b4bc0e37d0d3ccedda57eb84729c49",
"reference": "6addac2c68b4bc0e37d0d3ccedda57eb84729c49",
"shasum": ""
},
"require": {
@ -1546,7 +1546,7 @@
},
"require-dev": {
"phpstan/phpstan": "^2.1",
"phpunit/phpunit": "^10.0 || ^11.0 || ^12.0",
"phpunit/phpunit": "^10.0 || ^11.0",
"slevomat/coding-standard": "~8.0",
"squizlabs/php_codesniffer": "^3.8"
},
@ -1577,7 +1577,7 @@
],
"support": {
"issues": "https://github.com/Intervention/gif/issues",
"source": "https://github.com/Intervention/gif/tree/4.2.2"
"source": "https://github.com/Intervention/gif/tree/4.2.1"
},
"funding": [
{
@ -1593,7 +1593,7 @@
"type": "ko_fi"
}
],
"time": "2025-03-29T07:46:21+00:00"
"time": "2025-01-05T10:52:39+00:00"
},
{
"name": "intervention/image",
@ -2014,16 +2014,16 @@
},
{
"name": "laravel/serializable-closure",
"version": "v2.0.4",
"version": "v2.0.3",
"source": {
"type": "git",
"url": "https://github.com/laravel/serializable-closure.git",
"reference": "b352cf0534aa1ae6b4d825d1e762e35d43f8a841"
"reference": "f379c13663245f7aa4512a7869f62eb14095f23f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/b352cf0534aa1ae6b4d825d1e762e35d43f8a841",
"reference": "b352cf0534aa1ae6b4d825d1e762e35d43f8a841",
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f379c13663245f7aa4512a7869f62eb14095f23f",
"reference": "f379c13663245f7aa4512a7869f62eb14095f23f",
"shasum": ""
},
"require": {
@ -2071,20 +2071,20 @@
"issues": "https://github.com/laravel/serializable-closure/issues",
"source": "https://github.com/laravel/serializable-closure"
},
"time": "2025-03-19T13:51:03+00:00"
"time": "2025-02-11T15:03:05+00:00"
},
{
"name": "laravel/socialite",
"version": "v5.19.0",
"version": "v5.18.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/socialite.git",
"reference": "c40f843c5643fb6b089e46ce9794b8408bf08319"
"reference": "7809dc71250e074cd42970f0f803f2cddc04c5de"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/socialite/zipball/c40f843c5643fb6b089e46ce9794b8408bf08319",
"reference": "c40f843c5643fb6b089e46ce9794b8408bf08319",
"url": "https://api.github.com/repos/laravel/socialite/zipball/7809dc71250e074cd42970f0f803f2cddc04c5de",
"reference": "7809dc71250e074cd42970f0f803f2cddc04c5de",
"shasum": ""
},
"require": {
@ -2101,7 +2101,7 @@
"require-dev": {
"mockery/mockery": "^1.0",
"orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0|^9.0|^10.0",
"phpstan/phpstan": "^1.12.23",
"phpstan/phpstan": "^1.10",
"phpunit/phpunit": "^8.0|^9.3|^10.4|^11.5"
},
"type": "library",
@ -2143,7 +2143,7 @@
"issues": "https://github.com/laravel/socialite/issues",
"source": "https://github.com/laravel/socialite"
},
"time": "2025-03-27T17:26:42+00:00"
"time": "2025-02-11T13:38:19+00:00"
},
{
"name": "laravel/tinker",
@ -3116,16 +3116,16 @@
},
{
"name": "monolog/monolog",
"version": "3.9.0",
"version": "3.8.1",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6"
"reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6",
"reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/aef6ee73a77a66e404dd6540934a9ef1b3c855b4",
"reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4",
"shasum": ""
},
"require": {
@ -3203,7 +3203,7 @@
],
"support": {
"issues": "https://github.com/Seldaek/monolog/issues",
"source": "https://github.com/Seldaek/monolog/tree/3.9.0"
"source": "https://github.com/Seldaek/monolog/tree/3.8.1"
},
"funding": [
{
@ -3215,7 +3215,7 @@
"type": "tidelift"
}
],
"time": "2025-03-24T10:02:05+00:00"
"time": "2024-12-05T17:15:07+00:00"
},
{
"name": "mtdowling/jmespath.php",
@ -3285,16 +3285,16 @@
},
{
"name": "nesbot/carbon",
"version": "3.9.0",
"version": "3.8.6",
"source": {
"type": "git",
"url": "https://github.com/CarbonPHP/carbon.git",
"reference": "6d16a8a015166fe54e22c042e0805c5363aef50d"
"reference": "ff2f20cf83bd4d503720632ce8a426dc747bf7fd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/6d16a8a015166fe54e22c042e0805c5363aef50d",
"reference": "6d16a8a015166fe54e22c042e0805c5363aef50d",
"url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/ff2f20cf83bd4d503720632ce8a426dc747bf7fd",
"reference": "ff2f20cf83bd4d503720632ce8a426dc747bf7fd",
"shasum": ""
},
"require": {
@ -3387,7 +3387,7 @@
"type": "tidelift"
}
],
"time": "2025-03-27T12:57:33+00:00"
"time": "2025-02-20T17:33:38+00:00"
},
{
"name": "nette/schema",
@ -3453,16 +3453,16 @@
},
{
"name": "nette/utils",
"version": "v4.0.6",
"version": "v4.0.5",
"source": {
"type": "git",
"url": "https://github.com/nette/utils.git",
"reference": "ce708655043c7050eb050df361c5e313cf708309"
"reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nette/utils/zipball/ce708655043c7050eb050df361c5e313cf708309",
"reference": "ce708655043c7050eb050df361c5e313cf708309",
"url": "https://api.github.com/repos/nette/utils/zipball/736c567e257dbe0fcf6ce81b4d6dbe05c6899f96",
"reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96",
"shasum": ""
},
"require": {
@ -3533,9 +3533,9 @@
],
"support": {
"issues": "https://github.com/nette/utils/issues",
"source": "https://github.com/nette/utils/tree/v4.0.6"
"source": "https://github.com/nette/utils/tree/v4.0.5"
},
"time": "2025-03-30T21:06:30+00:00"
"time": "2024-08-07T15:39:19+00:00"
},
{
"name": "nikic/php-parser",
@ -4698,16 +4698,16 @@
},
{
"name": "ramsey/collection",
"version": "2.1.1",
"version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/ramsey/collection.git",
"reference": "344572933ad0181accbf4ba763e85a0306a8c5e2"
"reference": "3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2",
"reference": "344572933ad0181accbf4ba763e85a0306a8c5e2",
"url": "https://api.github.com/repos/ramsey/collection/zipball/3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109",
"reference": "3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109",
"shasum": ""
},
"require": {
@ -4768,9 +4768,9 @@
],
"support": {
"issues": "https://github.com/ramsey/collection/issues",
"source": "https://github.com/ramsey/collection/tree/2.1.1"
"source": "https://github.com/ramsey/collection/tree/2.1.0"
},
"time": "2025-03-22T05:38:12+00:00"
"time": "2025-03-02T04:48:29+00:00"
},
{
"name": "ramsey/uuid",
@ -4908,16 +4908,16 @@
},
{
"name": "sabberworm/php-css-parser",
"version": "v8.8.0",
"version": "v8.7.0",
"source": {
"type": "git",
"url": "https://github.com/MyIntervals/PHP-CSS-Parser.git",
"reference": "3de493bdddfd1f051249af725c7e0d2c38fed740"
"reference": "f414ff953002a9b18e3a116f5e462c56f21237cf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/3de493bdddfd1f051249af725c7e0d2c38fed740",
"reference": "3de493bdddfd1f051249af725c7e0d2c38fed740",
"url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/f414ff953002a9b18e3a116f5e462c56f21237cf",
"reference": "f414ff953002a9b18e3a116f5e462c56f21237cf",
"shasum": ""
},
"require": {
@ -4925,7 +4925,7 @@
"php": "^5.6.20 || ^7.0.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0"
},
"require-dev": {
"phpunit/phpunit": "5.7.27 || 6.5.14 || 7.5.20 || 8.5.41"
"phpunit/phpunit": "5.7.27 || 6.5.14 || 7.5.20 || 8.5.40"
},
"suggest": {
"ext-mbstring": "for parsing UTF-8 CSS"
@ -4967,9 +4967,9 @@
],
"support": {
"issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues",
"source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.8.0"
"source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.7.0"
},
"time": "2025-03-23T17:59:05+00:00"
"time": "2024-10-27T17:38:32+00:00"
},
{
"name": "socialiteproviders/discord",
@ -5488,16 +5488,16 @@
},
{
"name": "symfony/console",
"version": "v7.2.5",
"version": "v7.2.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "e51498ea18570c062e7df29d05a7003585b19b88"
"reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/e51498ea18570c062e7df29d05a7003585b19b88",
"reference": "e51498ea18570c062e7df29d05a7003585b19b88",
"url": "https://api.github.com/repos/symfony/console/zipball/fefcc18c0f5d0efe3ab3152f15857298868dc2c3",
"reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3",
"shasum": ""
},
"require": {
@ -5561,7 +5561,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v7.2.5"
"source": "https://github.com/symfony/console/tree/v7.2.1"
},
"funding": [
{
@ -5577,7 +5577,7 @@
"type": "tidelift"
}
],
"time": "2025-03-12T08:11:12+00:00"
"time": "2024-12-11T03:49:26+00:00"
},
{
"name": "symfony/css-selector",
@ -5713,16 +5713,16 @@
},
{
"name": "symfony/error-handler",
"version": "v7.2.5",
"version": "v7.2.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
"reference": "102be5e6a8e4f4f3eb3149bcbfa33a80d1ee374b"
"reference": "aabf79938aa795350c07ce6464dd1985607d95d5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/error-handler/zipball/102be5e6a8e4f4f3eb3149bcbfa33a80d1ee374b",
"reference": "102be5e6a8e4f4f3eb3149bcbfa33a80d1ee374b",
"url": "https://api.github.com/repos/symfony/error-handler/zipball/aabf79938aa795350c07ce6464dd1985607d95d5",
"reference": "aabf79938aa795350c07ce6464dd1985607d95d5",
"shasum": ""
},
"require": {
@ -5768,7 +5768,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/error-handler/tree/v7.2.5"
"source": "https://github.com/symfony/error-handler/tree/v7.2.4"
},
"funding": [
{
@ -5784,7 +5784,7 @@
"type": "tidelift"
}
],
"time": "2025-03-03T07:12:39+00:00"
"time": "2025-02-02T20:27:07+00:00"
},
{
"name": "symfony/event-dispatcher",
@ -6008,16 +6008,16 @@
},
{
"name": "symfony/http-foundation",
"version": "v7.2.5",
"version": "v7.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
"reference": "371272aeb6286f8135e028ca535f8e4d6f114126"
"reference": "ee1b504b8926198be89d05e5b6fc4c3810c090f0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/371272aeb6286f8135e028ca535f8e4d6f114126",
"reference": "371272aeb6286f8135e028ca535f8e4d6f114126",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/ee1b504b8926198be89d05e5b6fc4c3810c090f0",
"reference": "ee1b504b8926198be89d05e5b6fc4c3810c090f0",
"shasum": ""
},
"require": {
@ -6066,7 +6066,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/http-foundation/tree/v7.2.5"
"source": "https://github.com/symfony/http-foundation/tree/v7.2.3"
},
"funding": [
{
@ -6082,20 +6082,20 @@
"type": "tidelift"
}
],
"time": "2025-03-25T15:54:33+00:00"
"time": "2025-01-17T10:56:55+00:00"
},
{
"name": "symfony/http-kernel",
"version": "v7.2.5",
"version": "v7.2.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
"reference": "b1fe91bc1fa454a806d3f98db4ba826eb9941a54"
"reference": "9f1103734c5789798fefb90e91de4586039003ed"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/b1fe91bc1fa454a806d3f98db4ba826eb9941a54",
"reference": "b1fe91bc1fa454a806d3f98db4ba826eb9941a54",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/9f1103734c5789798fefb90e91de4586039003ed",
"reference": "9f1103734c5789798fefb90e91de4586039003ed",
"shasum": ""
},
"require": {
@ -6180,7 +6180,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/http-kernel/tree/v7.2.5"
"source": "https://github.com/symfony/http-kernel/tree/v7.2.4"
},
"funding": [
{
@ -6196,7 +6196,7 @@
"type": "tidelift"
}
],
"time": "2025-03-28T13:32:50+00:00"
"time": "2025-02-26T11:01:22+00:00"
},
{
"name": "symfony/mime",
@ -6920,16 +6920,16 @@
},
{
"name": "symfony/process",
"version": "v7.2.5",
"version": "v7.2.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "87b7c93e57df9d8e39a093d32587702380ff045d"
"reference": "d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/87b7c93e57df9d8e39a093d32587702380ff045d",
"reference": "87b7c93e57df9d8e39a093d32587702380ff045d",
"url": "https://api.github.com/repos/symfony/process/zipball/d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf",
"reference": "d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf",
"shasum": ""
},
"require": {
@ -6961,7 +6961,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/process/tree/v7.2.5"
"source": "https://github.com/symfony/process/tree/v7.2.4"
},
"funding": [
{
@ -6977,7 +6977,7 @@
"type": "tidelift"
}
],
"time": "2025-03-13T12:21:46+00:00"
"time": "2025-02-05T08:33:46+00:00"
},
{
"name": "symfony/routing",
@ -8589,16 +8589,16 @@
},
{
"name": "phpstan/phpstan",
"version": "2.1.11",
"version": "2.1.8",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
"reference": "8ca5f79a8f63c49b2359065832a654e1ec70ac30"
"reference": "f9adff3b87c03b12cc7e46a30a524648e497758f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/8ca5f79a8f63c49b2359065832a654e1ec70ac30",
"reference": "8ca5f79a8f63c49b2359065832a654e1ec70ac30",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/f9adff3b87c03b12cc7e46a30a524648e497758f",
"reference": "f9adff3b87c03b12cc7e46a30a524648e497758f",
"shasum": ""
},
"require": {
@ -8643,7 +8643,7 @@
"type": "github"
}
],
"time": "2025-03-24T13:45:00+00:00"
"time": "2025-03-09T09:30:48+00:00"
},
{
"name": "phpunit/php-code-coverage",
@ -8970,16 +8970,16 @@
},
{
"name": "phpunit/phpunit",
"version": "11.5.15",
"version": "11.5.12",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c"
"reference": "d42785840519401ed2113292263795eb4c0f95da"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c",
"reference": "4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d42785840519401ed2113292263795eb4c0f95da",
"reference": "d42785840519401ed2113292263795eb4c0f95da",
"shasum": ""
},
"require": {
@ -8999,14 +8999,14 @@
"phpunit/php-text-template": "^4.0.1",
"phpunit/php-timer": "^7.0.1",
"sebastian/cli-parser": "^3.0.2",
"sebastian/code-unit": "^3.0.3",
"sebastian/code-unit": "^3.0.2",
"sebastian/comparator": "^6.3.1",
"sebastian/diff": "^6.0.2",
"sebastian/environment": "^7.2.0",
"sebastian/exporter": "^6.3.0",
"sebastian/global-state": "^7.0.2",
"sebastian/object-enumerator": "^6.0.1",
"sebastian/type": "^5.1.2",
"sebastian/type": "^5.1.0",
"sebastian/version": "^5.0.2",
"staabm/side-effects-detector": "^1.0.5"
},
@ -9051,7 +9051,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
"source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.15"
"source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.12"
},
"funding": [
{
@ -9067,7 +9067,7 @@
"type": "tidelift"
}
],
"time": "2025-03-23T16:02:11+00:00"
"time": "2025-03-07T07:31:03+00:00"
},
{
"name": "sebastian/cli-parser",
@ -9128,16 +9128,16 @@
},
{
"name": "sebastian/code-unit",
"version": "3.0.3",
"version": "3.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/code-unit.git",
"reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64"
"reference": "ee88b0cdbe74cf8dd3b54940ff17643c0d6543ca"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/54391c61e4af8078e5b276ab082b6d3c54c9ad64",
"reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64",
"url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/ee88b0cdbe74cf8dd3b54940ff17643c0d6543ca",
"reference": "ee88b0cdbe74cf8dd3b54940ff17643c0d6543ca",
"shasum": ""
},
"require": {
@ -9173,7 +9173,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/code-unit/issues",
"security": "https://github.com/sebastianbergmann/code-unit/security/policy",
"source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.3"
"source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.2"
},
"funding": [
{
@ -9181,7 +9181,7 @@
"type": "github"
}
],
"time": "2025-03-19T07:56:08+00:00"
"time": "2024-12-12T09:59:06+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",
@ -9886,16 +9886,16 @@
},
{
"name": "sebastian/type",
"version": "5.1.2",
"version": "5.1.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/type.git",
"reference": "a8a7e30534b0eb0c77cd9d07e82de1a114389f5e"
"reference": "461b9c5da241511a2a0e8f240814fb23ce5c0aac"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/type/zipball/a8a7e30534b0eb0c77cd9d07e82de1a114389f5e",
"reference": "a8a7e30534b0eb0c77cd9d07e82de1a114389f5e",
"url": "https://api.github.com/repos/sebastianbergmann/type/zipball/461b9c5da241511a2a0e8f240814fb23ce5c0aac",
"reference": "461b9c5da241511a2a0e8f240814fb23ce5c0aac",
"shasum": ""
},
"require": {
@ -9931,7 +9931,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/type/issues",
"security": "https://github.com/sebastianbergmann/type/security/policy",
"source": "https://github.com/sebastianbergmann/type/tree/5.1.2"
"source": "https://github.com/sebastianbergmann/type/tree/5.1.0"
},
"funding": [
{
@ -9939,7 +9939,7 @@
"type": "github"
}
],
"time": "2025-03-18T13:35:50+00:00"
"time": "2024-09-17T13:12:04+00:00"
},
{
"name": "sebastian/version",
@ -9997,16 +9997,16 @@
},
{
"name": "squizlabs/php_codesniffer",
"version": "3.12.0",
"version": "3.11.3",
"source": {
"type": "git",
"url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
"reference": "2d1b63db139c3c6ea0c927698e5160f8b3b8d630"
"reference": "ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/2d1b63db139c3c6ea0c927698e5160f8b3b8d630",
"reference": "2d1b63db139c3c6ea0c927698e5160f8b3b8d630",
"url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10",
"reference": "ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10",
"shasum": ""
},
"require": {
@ -10073,11 +10073,11 @@
"type": "open_collective"
},
{
"url": "https://thanks.dev/u/gh/phpcsstandards",
"url": "https://thanks.dev/phpcsstandards",
"type": "thanks_dev"
}
],
"time": "2025-03-18T05:04:51+00:00"
"time": "2025-01-23T17:04:15+00:00"
},
{
"name": "ssddanbrown/asserthtml",

View File

@ -1 +1 @@
22e02ee72d21ff719c1073abbec8302f8e2096ba6d072e133051064ed24b45b1
8a38475da650a17612f885d8c650c835416ee53249ed83cfd79e6607f86e4ffa

View File

@ -66,10 +66,10 @@ return [
'auth_register' => 'سجل كمستخدم جديد',
'auth_password_reset_request' => 'طلب رابط جديد لإعادة تعيين كلمة المرور',
'auth_password_reset_update' => 'إعادة تعيين كلمة مرور المستخدم',
'mfa_setup_method' => 'طريقة المصادقة متعددة العوامل المُهيأة',
'mfa_setup_method_notification' => 'تم إعداد المصادقة متعددة العوامل بنجاح',
'mfa_remove_method' => 'إزالة طريقة المصادقة متعددة العوامل',
'mfa_remove_method_notification' => 'تمت إزالة المصادقة متعددة العوامل بنجاح',
'mfa_setup_method' => 'طريقة MFA المكونة',
'mfa_setup_method_notification' => 'تم تكوين طريقة متعددة العوامل بنجاح',
'mfa_remove_method' => 'إزالة طريقة MFA',
'mfa_remove_method_notification' => 'تمت إزالة طريقة متعددة العوامل بنجاح',
// Settings
'settings_update' => 'تحديث الإعدادات',
@ -77,12 +77,12 @@ return [
'maintenance_action_run' => 'إجراء الصيانة',
// Webhooks
'webhook_create' => 'تم إنشاء خطاف ويب',
'webhook_create_notification' => 'تم إنشاء خطاف ويب بنجاح',
'webhook_update' => 'تم تحديث خطاف الويب',
'webhook_update_notification' => 'تم تحديث خطاف الويب بنجاح',
'webhook_delete' => 'حذف خطاف ويب',
'webhook_delete_notification' => 'تم حذف خطاف الويب بنجاح',
'webhook_create' => 'تم إنشاء webhook',
'webhook_create_notification' => 'تم إنشاء Webhook بنجاح',
'webhook_update' => 'تم تحديث webhook',
'webhook_update_notification' => 'تم تحديث Webhook بنجاح',
'webhook_delete' => 'حذف webhook',
'webhook_delete_notification' => 'تم حذف Webhook بنجاح',
// Imports
'import_create' => 'تم إنشاء الاستيراد',
@ -94,7 +94,7 @@ return [
// Users
'user_create' => 'إنشاء مستخدم',
'user_create_notification' => 'تم إنشاء الحساب',
'user_create_notification' => 'تم انشاء الحساب',
'user_update' => 'المستخدم المحدث',
'user_update_notification' => 'تم تحديث المستخدم بنجاح',
'user_delete' => 'المستخدم المحذوف',
@ -102,11 +102,11 @@ return [
// API Tokens
'api_token_create' => 'تم إنشاء رمز واجهة برمجة التطبيقات -API-',
'api_token_create_notification' => 'تم إنشاء واجهة برمجة التطبيقات -API- بنجاح',
'api_token_create_notification' => 'تم إنشاء رمز الـ API بنجاح',
'api_token_update' => 'رمز واجهة برمجة التطبيقات المحدث',
'api_token_update_notification' => 'تم تحديث رمز واجهة برمجة التطبيقات -API- بنجاح',
'api_token_update_notification' => 'تم تحديث رمز الـ API بنجاح',
'api_token_delete' => 'رمز واجهة برمجة التطبيقات المحذوف',
'api_token_delete_notification' => 'تم حذف رمز واجهة برمجة التطبيقات -API- بنجاح',
'api_token_delete_notification' => 'تم حذف رمز الـ API بنجاح',
// Roles
'role_create' => 'إنشاء صَلاحِيَة',
@ -136,5 +136,5 @@ return [
'sort_rule_delete_notification' => 'تم حذف قاعدة الفرز بنجاح',
// Other
'permissions_update' => 'تحديث الصلاحيات',
'permissions_update' => 'تحديث الأذونات',
];

View File

@ -7,22 +7,22 @@
return [
'failed' => 'البيانات المعطاة لا توافق سجلاتنا.',
'throttle' => 'تجاوزت الحد الأقصى من المحاولات. الرجاء المحاولة مرة أخرى بعد :seconds ثانية/ثواني.',
'throttle' => 'تجاوزت الحد الأقصى من المحاولات. الرجاء المحاولة مرة أخرى بعد :seconds seconds.',
// Login & Register
'sign_up' => 'إنشاء حساب',
'log_in' => 'تسجيل الدخول',
'log_in_with' => 'تسجيل الدخول باستخدام :socialDriver',
'sign_up_with' => 'إنشاء حساب باستخدام :socialDriver',
'logout' => 'الخروج',
'logout' => 'تسجيل الخروج',
'name' => 'الاسم',
'username' => 'اسم المستخدم',
'email' => 'البريد الإلكتروني',
'password' => 'كلمة السر',
'password_confirm' => 'تأكيد كلمة السر',
'password_hint' => 'يجب أن تحتوي كلمة السر على 8 خانات على الأقل',
'forgot_password' => 'نسيت كلمة السر؟',
'password' => 'كلمة المرور',
'password_confirm' => 'تأكيد كلمة المرور',
'password_hint' => 'يجب أن تحتوي كلمة المرور على 8 خانات على الأقل',
'forgot_password' => 'نسيت كلمة المرور؟',
'remember_me' => 'تذكرني',
'ldap_email_hint' => 'الرجاء إدخال عنوان بريد إلكتروني لاستخدامه مع الحساب.',
'create_account' => 'إنشاء حساب',
@ -44,14 +44,14 @@ return [
'auto_init_start_link' => 'المتابعة مع المصادقة',
// Password Reset
'reset_password' => 'استعادة كلمة السر',
'reset_password' => 'استعادة كلمة المرور',
'reset_password_send_instructions' => 'أدخل بريدك الإلكتروني بالأسفل وسيتم إرسال رسالة برابط لاستعادة كلمة المرور.',
'reset_password_send_button' => 'أرسل رابط الاستعادة',
'reset_password_sent' => 'سيتم إرسال رابط إعادة تعيين كلمة السر إلى عنوان البريد الإلكتروني هذا إذا كان موجودًا في النظام.',
'reset_password_success' => 'تمت استعادة كلمة السر بنجاح.',
'email_reset_subject' => 'استعد كلمة السر الخاصة بتطبيق :appName',
'email_reset_text' => 'تم إرسال هذه الرسالة بسبب تلقينا لطلب استعادة كلمة السر الخاصة بحسابكم.',
'email_reset_not_requested' => 'إذا لم يتم طلب استعادة كلمة السر من قبلكم، فلا حاجة لاتخاذ أية خطوات.',
'reset_password_sent' => 'سيتم إرسال رابط إعادة تعيين كلمة المرور إلى عنوان البريد الإلكتروني هذا إذا كان موجودًا في النظام.',
'reset_password_success' => 'تمت استعادة كلمة المرور بنجاح.',
'email_reset_subject' => 'استعد كلمة المرور الخاصة بتطبيق :appName',
'email_reset_text' => 'تم إرسال هذه الرسالة بسبب تلقينا لطلب استعادة كلمة المرور الخاصة بحسابكم.',
'email_reset_not_requested' => 'إذا لم يتم طلب استعادة كلمة المرور من قبلكم، فلا حاجة لاتخاذ أية خطوات.',
// Email Confirmation
'email_confirm_subject' => 'تأكيد بريدكم الإلكتروني لتطبيق :appName',
@ -76,20 +76,20 @@ return [
'user_invite_email_text' => 'انقر على الزر أدناه لتعيين كلمة مرور الحساب والحصول على الوصول:',
'user_invite_email_action' => 'كلمة سر المستخدم',
'user_invite_page_welcome' => 'مرحبا بكم في :appName!',
'user_invite_page_text' => 'لإكمال حسابك والحصول على حق الوصول تحتاج إلى تعيين كلمة السر سيتم استخدامها لتسجيل الدخول إلى :appName في الزيارات المستقبلية.',
'user_invite_page_confirm_button' => 'تأكيد كلمة السر',
'user_invite_success_login' => 'تم تأكيد كلمة السر. يمكنك الآن تسجيل الدخول باستخدام كلمة المرور المحددة للوصول إلى :appName!',
'user_invite_page_text' => 'لإكمال حسابك والحصول على حق الوصول تحتاج إلى تعيين كلمة مرور سيتم استخدامها لتسجيل الدخول إلى :appName في الزيارات المستقبلية.',
'user_invite_page_confirm_button' => 'تأكيد كلمة المرور',
'user_invite_success_login' => 'تم تأكيد كلمة المرور. يمكنك الآن تسجيل الدخول باستخدام كلمة المرور المحددة للوصول إلى :appName!',
// Multi-factor Authentication
'mfa_setup' => 'إعداد المصادقة متعددة العوامل',
'mfa_setup_desc' => 'إعداد المصادقة متعددة العوامل كطبقة إضافية من الأمان لحساب المستخدم الخاص بك.',
'mfa_setup_configured' => 'تم إعداده مسبقاً',
'mfa_setup_reconfigure' => 'إعادة التكوين',
'mfa_setup_remove_confirmation' => 'هل أنت متأكد من أنك تريد إزالة طريقة المصادقة متعددة العوامل هذه؟',
'mfa_setup_remove_confirmation' => 'هل أنت متأكد من أنك تريد إزالة طريقة المصادقة متعددة العناصر هذه؟',
'mfa_setup_action' => 'إعداد (تنصيب)',
'mfa_backup_codes_usage_limit_warning' => 'لديك أقل من 5 رموز احتياطية متبقية، الرجاء إنشاء وتخزين مجموعة جديدة قبل نفاد الرموز لتجنب إغلاق حسابك.',
'mfa_option_totp_title' => 'تطبيق الجوال',
'mfa_option_totp_desc' => 'لاستخدام المصادقة المتعددة العوامل، ستحتاج إلى تطبيق جوال يدعم كلمة المرور المؤقته -TOTP- مثل جوجل أوثنتيكاتور -Google Authenticator- أو أوثي -Authy- أو مايكروسوفت أوثنتيكاتور -Microsoft Authenticator-.',
'mfa_option_totp_desc' => 'لاستخدام المصادقة المتعددة العوامل، ستحتاج إلى تطبيق محمول يدعم TOTP مثل Google Authenticator أو Authy أو Microsoft Authenticer.',
'mfa_option_backup_codes_title' => 'رموز النسخ الاحتياطي',
'mfa_option_backup_codes_desc' => 'إنشاء مجموعة من رموز النسخ الاحتياطية للاستخدام مرة واحدة و التي سَتُدِخلها عند تسجيل الدخول للتحقق من هويتك. احرص أن تخزينها في مكان آمن.',
'mfa_gen_confirm_and_enable' => 'تأكيد وتمكين',
@ -98,7 +98,7 @@ return [
'mfa_gen_backup_codes_download' => 'تنزيل الرموز',
'mfa_gen_backup_codes_usage_warning' => 'يمكن استخدام كل رمز مرة واحدة فقط',
'mfa_gen_totp_title' => 'إعداد تطبيق الجوال',
'mfa_gen_totp_desc' => 'لاستخدام المصادقة المتعددة ، ستحتاج إلى تطبيق جوال كلمة المرور المؤقته -TOTP- مثل جوجل أوثنتيكاتور -Google Authenticator- أو أوثي -Authy- أو مايكروسوفت أوثنتيكاتور -Microsoft Authenticator-.',
'mfa_gen_totp_desc' => 'لاستخدام المصادقة المتعددة ، ستحتاج إلى تطبيق جوال كلمة المرور المؤقته -TOTP- مثل جوجل أوثنتيكاتور -Google Authenticator- أو أوثي -Authy- أو مايكروسوفت أوثنتيكاتور -Microsoft Authenticator.-',
'mfa_gen_totp_scan' => 'امسح رمز الاستجابة السريعة -QR- أدناه باستخدام تطبيق المصادقة المفضل لديك للبدء.',
'mfa_gen_totp_verify_setup' => 'التحقق من الإعداد',
'mfa_gen_totp_verify_setup_desc' => 'تحقق أن كل شيء يعمل عن طريق إدخال رمز تم إنشاؤه داخل تطبيق المصادقة الخاص بك في مربع الإدخال أدناه:',

View File

@ -13,7 +13,7 @@ return [
'cancel' => 'إلغاء',
'save' => 'حفظ',
'close' => 'إغلاق',
'apply' => 'تطبيق',
'apply' => 'Apply',
'undo' => 'تراجع',
'redo' => 'إعادة التنفيذ',
'left' => 'يسار',
@ -25,7 +25,7 @@ return [
'width' => 'العرض',
'height' => 'الارتفاع',
'More' => 'المزيد',
'select' => 'إختار...',
'select' => 'Select...',
// Toolbar
'formats' => 'التنسيقات',
@ -54,73 +54,73 @@ return [
'align_left' => 'محاذاة لليسار',
'align_center' => 'محاذاة بالمنتصف',
'align_right' => 'مُحاذاة لليمين',
'align_justify' => 'المحاذاة',
'align_justify' => 'Justify',
'list_bullet' => 'قائمة نقاط',
'list_numbered' => 'قائمة مرقمة',
'list_task' => 'قائمة المهام',
'list_task' => 'Task list',
'indent_increase' => 'زيادة البادئة',
'indent_decrease' => 'إنقاص البادئة',
'table' => 'جدول',
'insert_image' => 'ادراج صورة',
'insert_image_title' => 'إضافة/تحرير الصورة',
'insert_link' => 'إضافة/تعديل الرابط',
'insert_link_title' => 'إضافة/تحرير الرابط',
'insert_horizontal_line' => 'إضافة خط أفقي',
'insert_code_block' => 'إضافة مربع رموز برمجية',
'edit_code_block' => 'تعديل مربع الرموز البرمجية',
'insert_drawing' => 'إضافة/تعديل الرسم',
'drawing_manager' => 'إدارة الرسم',
'insert_media' => 'إضافة/تحرير الوسائط',
'insert_media_title' => 'إضافة/تحرير الوسائط',
'clear_formatting' => 'مسح التنسيق',
'source_code' => 'الرمز البرمجي',
'source_code_title' => 'الرمز البرمجي',
'fullscreen' => 'شاشة كاملة',
'image_options' => 'خيارات الصورة',
'insert_image_title' => 'Insert/Edit Image',
'insert_link' => 'Insert/edit link',
'insert_link_title' => 'Insert/Edit Link',
'insert_horizontal_line' => 'Insert horizontal line',
'insert_code_block' => 'Insert code block',
'edit_code_block' => 'Edit code block',
'insert_drawing' => 'Insert/edit drawing',
'drawing_manager' => 'Drawing manager',
'insert_media' => 'Insert/edit media',
'insert_media_title' => 'Insert/Edit Media',
'clear_formatting' => 'Clear formatting',
'source_code' => 'Source code',
'source_code_title' => 'Source Code',
'fullscreen' => 'Fullscreen',
'image_options' => 'Image options',
// Tables
'table_properties' => 'خصائص الجدول',
'table_properties_title' => 'خصائص الجدول',
'delete_table' => 'حذف الجدول',
'table_clear_formatting' => 'مسح تنسيق الجدول',
'resize_to_contents' => 'تغيير الحجم إلى المحتوى',
'row_header' => 'رأس الصف',
'insert_row_before' => 'إضافة صف قبل',
'insert_row_after' => 'إضافة صف بعد',
'delete_row' => 'حذف الصف',
'insert_column_before' => 'إدراج عمود قبل',
'insert_column_after' => 'إدراج عمود بعد',
'delete_column' => 'حذف عمود',
'table_cell' => 'خلية',
'table_row' => 'صف',
'table_column' => 'عمود',
'cell_properties' => 'خصائص الخلية',
'cell_properties_title' => 'خصائص الخلية',
'cell_type' => 'نوع الخلية',
'cell_type_cell' => 'الخلية',
'cell_scope' => 'النِطَاق',
'cell_type_header' => 'عنوان الخلية',
'merge_cells' => 'دمج الخلايا',
'split_cell' => 'خلية منقسمة',
'table_row_group' => 'مجموعة الصفوف',
'table_column_group' => 'مجموعة الأعمدة',
'horizontal_align' => 'محاذاة أفقية',
'vertical_align' => 'محاذاة عمودية',
'border_width' => 'عرض الحدود',
'border_style' => 'نمط الحدود',
'border_color' => 'لون الحدود',
'row_properties' => 'خصائص الصف',
'row_properties_title' => 'خصائص الصف',
'cut_row' => 'فص الصف',
'copy_row' => 'نسخ الصف',
'paste_row_before' => 'لصق الصف قبل',
'paste_row_after' => 'لصق الصف بعد',
'row_type' => 'نوع الصف',
'row_type_header' => 'العنوان',
'row_type_body' => 'المحتوى ',
'row_type_footer' => 'تذييل',
'alignment' => 'المحاذاة',
'cut_column' => 'قص العمود',
'table_properties' => 'Table properties',
'table_properties_title' => 'Table Properties',
'delete_table' => 'Delete table',
'table_clear_formatting' => 'Clear table formatting',
'resize_to_contents' => 'Resize to contents',
'row_header' => 'Row header',
'insert_row_before' => 'Insert row before',
'insert_row_after' => 'Insert row after',
'delete_row' => 'Delete row',
'insert_column_before' => 'Insert column before',
'insert_column_after' => 'Insert column after',
'delete_column' => 'Delete column',
'table_cell' => 'Cell',
'table_row' => 'Row',
'table_column' => 'Column',
'cell_properties' => 'Cell properties',
'cell_properties_title' => 'Cell Properties',
'cell_type' => 'Cell type',
'cell_type_cell' => 'Cell',
'cell_scope' => 'Scope',
'cell_type_header' => 'Header cell',
'merge_cells' => 'Merge cells',
'split_cell' => 'Split cell',
'table_row_group' => 'Row Group',
'table_column_group' => 'Column Group',
'horizontal_align' => 'Horizontal align',
'vertical_align' => 'Vertical align',
'border_width' => 'Border width',
'border_style' => 'Border style',
'border_color' => 'Border color',
'row_properties' => 'Row properties',
'row_properties_title' => 'Row Properties',
'cut_row' => 'Cut row',
'copy_row' => 'Copy row',
'paste_row_before' => 'Paste row before',
'paste_row_after' => 'Paste row after',
'row_type' => 'Row type',
'row_type_header' => 'Header',
'row_type_body' => 'Body',
'row_type_footer' => 'Footer',
'alignment' => 'Alignment',
'cut_column' => 'Cut column',
'copy_column' => 'نسخ العمود',
'paste_column_before' => 'لصق عمود قبل',
'paste_column_after' => 'لصق عمود بعد',
@ -128,54 +128,54 @@ return [
'cell_spacing' => 'تباعد الخلايا',
'caption' => 'الوصف',
'show_caption' => 'إظهار الوصف',
'constrain' => 'تقييد النسب',
'cell_border_solid' => 'لون كامل',
'cell_border_dotted' => 'مُنَقط',
'cell_border_dashed' => 'متقطع',
'cell_border_double' => 'مزدوج',
'cell_border_groove' => 'أخدود',
'cell_border_ridge' => 'الحافَة',
'cell_border_inset' => 'الداخلية',
'cell_border_outset' => 'الخارجية',
'cell_border_none' => 'لا شَيْء',
'cell_border_hidden' => 'مخفي',
'constrain' => 'Constrain proportions',
'cell_border_solid' => 'Solid',
'cell_border_dotted' => 'Dotted',
'cell_border_dashed' => 'Dashed',
'cell_border_double' => 'Double',
'cell_border_groove' => 'Groove',
'cell_border_ridge' => 'Ridge',
'cell_border_inset' => 'Inset',
'cell_border_outset' => 'Outset',
'cell_border_none' => 'None',
'cell_border_hidden' => 'Hidden',
// Images, links, details/summary & embed
'source' => 'المصدر',
'alt_desc' => 'وصف بديل',
'embed' => 'تضمين',
'paste_embed' => 'قم بلصق الرموز المصدرية المضمنة الخاص بك أدناه:',
'url' => 'الرابط',
'text_to_display' => 'النص المراد عرضه',
'title' => 'العنوان',
'browse_links' => 'تصفح الروابط',
'open_link' => 'افتح الرابط',
'open_link_in' => 'افتح الرابط في...',
'open_link_current' => 'النافذة الحالية',
'open_link_new' => 'نافذة جديدة',
'remove_link' => 'إزالة الرابط',
'insert_collapsible' => 'أدخل كتلة قابلة للطي',
'collapsible_unwrap' => 'بسط',
'edit_label' => 'عدل الوصف',
'toggle_open_closed' => 'التبديل بين الفتح والإغلاق',
'collapsible_edit' => 'تحرير الكتلة القابلة للطي',
'toggle_label' => 'تبديل التسمية',
'source' => 'Source',
'alt_desc' => 'Alternative description',
'embed' => 'Embed',
'paste_embed' => 'Paste your embed code below:',
'url' => 'URL',
'text_to_display' => 'Text to display',
'title' => 'Title',
'browse_links' => 'Browse links',
'open_link' => 'Open link',
'open_link_in' => 'Open link in...',
'open_link_current' => 'Current window',
'open_link_new' => 'New window',
'remove_link' => 'Remove link',
'insert_collapsible' => 'Insert collapsible block',
'collapsible_unwrap' => 'Unwrap',
'edit_label' => 'Edit label',
'toggle_open_closed' => 'Toggle open/closed',
'collapsible_edit' => 'Edit collapsible block',
'toggle_label' => 'Toggle label',
// About view
'about' => 'عن المحرر',
'about_title' => 'حول محرر ما تراه هو ما تحصل عليه -WYSIWYG-',
'editor_license' => 'رخصة المحرر وحقوق التأليف والنشر',
'editor_lexical_license' => 'تم إنشاء هذا المحرر باعتباره فرعًا لـ :lexicalLink الذي يتم توزيعه بموجب ترخيص معهد ماساتشوستس للتقانة -MIT-.',
'editor_lexical_license_link' => 'يمكنك العثور على تفاصيل الترخيص الكاملة هنا.',
'editor_tiny_license' => 'تم إنشاء هذا المحرر باستخدام :tinyLink والذي يتم توفيره بموجب ترخيص معهد ماساتشوستس للتقانة -MIT-.',
'editor_tiny_license_link' => 'يمكن الاطلاع هنا على تفاصيل حقوق التأليف والنشر والترخيص الخاصة بتاینی‌ام‌سی‌ای -TinyMCE-.',
'save_continue' => 'حفظ الصفحة ومتابعة',
'callouts_cycle' => '(استمر في الضغط للتبديل بين الأنواع)',
'link_selector' => 'رابط للمحتوى',
'shortcuts' => 'الاختصارات',
'shortcut' => 'الاختصار',
'shortcuts_intro' => 'الاختصارات التالية متاحة في المحرر:',
'windows_linux' => '(ويندوز/لينكس)',
'mac' => '(ماك)',
'description' => 'الوصف',
'about' => 'About the editor',
'about_title' => 'About the WYSIWYG Editor',
'editor_license' => 'Editor License & Copyright',
'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
'editor_lexical_license_link' => 'Full license details can be found here.',
'editor_tiny_license' => 'This editor is built using :tinyLink which is provided under the MIT license.',
'editor_tiny_license_link' => 'The copyright and license details of TinyMCE can be found here.',
'save_continue' => 'Save Page & Continue',
'callouts_cycle' => '(Keep pressing to toggle through types)',
'link_selector' => 'Link to content',
'shortcuts' => 'Shortcuts',
'shortcut' => 'Shortcut',
'shortcuts_intro' => 'The following shortcuts are available in the editor:',
'windows_linux' => '(Windows/Linux)',
'mac' => '(Mac)',
'description' => 'Description',
];

View File

@ -455,8 +455,8 @@ return [
'watch_detail_new' => 'ترقب الصفحات الجديدة',
'watch_detail_updates' => 'مشاهدة الصفحات الجديدة والتحديثات',
'watch_detail_comments' => 'مشاهدة الصفحات الجديدة والتحديثات والتعليقات',
'watch_detail_parent_book' => 'المشاهدة عبر الكتاب الرئيس',
'watch_detail_parent_book_ignore' => 'التجاهل عبر الكتاب الرئيس',
'watch_detail_parent_chapter' => 'المشاهدة عبر الفصل الرئيس',
'watch_detail_parent_chapter_ignore' => 'التجاهل عبر الفصل الرئيس',
'watch_detail_parent_book' => 'Watching via parent book',
'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
'watch_detail_parent_chapter' => 'Watching via parent chapter',
'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
];

View File

@ -10,7 +10,7 @@ return [
// Auth
'error_user_exists_different_creds' => 'يوجد مستخدم ببيانات مختلفة مسجل بالنظام للبريد الإلكتروني :email.',
'auth_pre_register_theme_prevention' => 'لم يتمكن حساب المستخدم من التسجيل للحصول على التفاصيل المقدمة',
'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
'email_already_confirmed' => 'تم تأكيد البريد الإلكتروني من قبل, الرجاء محاولة تسجيل الدخول.',
'email_confirmation_invalid' => 'رابط التأكيد غير صحيح أو قد تم استخدامه من قبل, الرجاء محاولة التسجيل من جديد.',
'email_confirmation_expired' => 'صلاحية رابط التأكيد انتهت, تم إرسال رسالة تأكيد جديدة لعنوان البريد الإلكتروني.',
@ -37,7 +37,7 @@ return [
'social_driver_not_found' => 'لم يتم العثور على السوشيال درايفر "Social driver"',
'social_driver_not_configured' => 'لم يتم تهيئة إعدادات حسابك الاجتماعي بشكل صحيح.',
'invite_token_expired' => 'انتهت صلاحية رابط هذه الدعوة. يمكنك بدلاً من ذلك محاولة إعادة تعيين كلمة مرور حسابك.',
'login_user_not_found' => 'لم يتم العثور على مستخدم لهذا الإجراء.',
'login_user_not_found' => 'A user for this action could not be found.',
// System
'path_not_writable' => 'لا يمكن الرفع إلى مسار :filePath. الرجاء التأكد من قابلية الكتابة إلى الخادم.',
@ -78,7 +78,7 @@ return [
// Users
'users_cannot_delete_only_admin' => 'لا يمكن حذف المشرف الوحيد',
'users_cannot_delete_guest' => 'لا يمكن حذف المستخدم الضيف',
'users_could_not_send_invite' => 'لم يتم إنشاء المستخدم بسبب فشل إرسال بريد الدعوة',
'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
// Roles
'role_cannot_be_edited' => 'لا يمكن تعديل هذا الدور',
@ -106,16 +106,16 @@ return [
'back_soon' => 'سيعود للعمل قريباً.',
// Import
'import_zip_cant_read' => 'لم أتمكن من قراءة المِلَفّ المضغوط -ZIP-.',
'import_zip_cant_decode_data' => 'لم نتمكن من العثور على محتوى المِلَفّ المضغوط data.json وفك تشفيره.',
'import_zip_no_data' => 'لا تتضمن بيانات المِلَفّ المضغوط أي محتوى متوقع للكتاب أو الفصل أو الصفحة.',
'import_validation_failed' => 'فشل التحقق من صحة استيراد المِلَفّ المضغوط بسبب الأخطاء التالية:',
'import_zip_failed_notification' => 'فشل استيراد المِلَفّ المضغوط.',
'import_perms_books' => 'أنت تفتقر إلى الصلاحيات المطلوبة لإنشاء الكتب.',
'import_perms_chapters' => 'أنت تفتقر إلى الصلاحيات المطلوبة لإنشاء الفصول.',
'import_perms_pages' => 'أنت تفتقر إلى الصلاحيات المطلوبة لإنشاء الصفحات.',
'import_perms_images' => 'أنت تفتقر إلى الصلاحيات المطلوبة لإنشاء الصور.',
'import_perms_attachments' => 'أنت تفتقر إلى الصَّلاحِيَة المطلوب لإنشاء المرفقات.',
'import_zip_cant_read' => 'Could not read ZIP file.',
'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
'import_validation_failed' => 'Import ZIP failed to validate with errors:',
'import_zip_failed_notification' => 'Failed to import ZIP file.',
'import_perms_books' => 'You are lacking the required permissions to create books.',
'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
'import_perms_pages' => 'You are lacking the required permissions to create pages.',
'import_perms_images' => 'You are lacking the required permissions to create images.',
'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
// API errors
'api_no_authorization_found' => 'لم يتم العثور على رمز ترخيص مميز في الطلب',

View File

@ -4,24 +4,24 @@
*/
return [
'new_comment_subject' => 'تعليق جديد على الصفحة: :pageName',
'new_comment_intro' => 'قام أحد المستخدمين بالتعليق على صفحة في :appName:',
'new_page_subject' => 'صفحة جديدة: :pageName',
'new_page_intro' => 'تم إنشاء صفحة جديدة في :appName:',
'updated_page_subject' => 'تم تحديث الصفحة: :pageName',
'updated_page_intro' => 'تم تحديث الصفحة في :appName:',
'updated_page_debounce' => 'لمنع تلقي عدد كبير من الإشعارات، لن يتم إرسال إشعارات إليك لفترة من الوقت لإجراء المزيد من التعديلات على هذه الصفحة بواسطة نفس المحرر.',
'new_comment_subject' => 'New comment on page: :pageName',
'new_comment_intro' => 'A user has commented on a page in :appName:',
'new_page_subject' => 'New page: :pageName',
'new_page_intro' => 'A new page has been created in :appName:',
'updated_page_subject' => 'Updated page: :pageName',
'updated_page_intro' => 'A page has been updated in :appName:',
'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.',
'detail_page_name' => 'اسم الصفحة:',
'detail_page_path' => 'مسار الصفحة:',
'detail_commenter' => 'المُعَلِق:',
'detail_comment' => 'التعليق:',
'detail_created_by' => 'أنشئ من طرف:',
'detail_updated_by' => 'تم التحديث بواسطة:',
'detail_page_name' => 'Page Name:',
'detail_page_path' => 'Page Path:',
'detail_commenter' => 'Commenter:',
'detail_comment' => 'Comment:',
'detail_created_by' => 'Created By:',
'detail_updated_by' => 'Updated By:',
'action_view_comment' => 'عرض التعليق',
'action_view_page' => 'عرض الصفحة',
'action_view_comment' => 'View Comment',
'action_view_page' => 'View Page',
'footer_reason' => 'لقد تم إرسال هذا الإشعار إليك لأن :link يغطي هذا النوع من النشاط لهذا العنصر.',
'footer_reason_link' => 'إعدادات الإشعارات الخاصة بك',
'footer_reason' => 'This notification was sent to you because :link cover this type of activity for this item.',
'footer_reason_link' => 'your notification preferences',
];

View File

@ -5,47 +5,47 @@
*/
return [
'my_account' => 'حسابي',
'my_account' => 'My Account',
'shortcuts' => 'الاختصارات',
'shortcuts_interface' => 'خيارات اختصار واجهة المستخدم',
'shortcuts_toggle_desc' => 'هنا يمكنك تمكين أو تعطيل اختصارات واجهة نظام لوحة المفاتيح، المستخدمة للتنقل والإجراءات.',
'shortcuts_customize_desc' => 'يمكنك تخصيص كل اختصار من الاختصارات أدناه. ما عليك سوى الضغط على تركيبة المفاتيح المطلوبة بعد تحديد مدخل الاختصار.',
'shortcuts_toggle_label' => 'تم تمكين اختصارات لوحة المفاتيح',
'shortcuts_section_navigation' => 'التنقل',
'shortcuts_section_actions' => 'الإجراءات المشتركة',
'shortcuts_save' => 'حفظ الاختصارات',
'shortcuts_overlay_desc' => 'ملاحظة: عندما يتم تمكين الاختصارات، تتوفر تراكب المساعد عن طريق الضغط على "؟" الذي سيسلط الضوء على الاختصارات المتاحة للإجراءات المرئية حاليا على الشاشة.',
'shortcuts_update_success' => 'تم تحديث خيارات الاختصار!',
'shortcuts_overview_desc' => 'إدارة اختصارات لوحة المفاتيح التي يمكنك استخدامها للتنقل في واجهة مستخدم النظام.',
'shortcuts' => 'Shortcuts',
'shortcuts_interface' => 'UI Shortcut Preferences',
'shortcuts_toggle_desc' => 'Here you can enable or disable keyboard system interface shortcuts, used for navigation and actions.',
'shortcuts_customize_desc' => 'You can customize each of the shortcuts below. Just press your desired key combination after selecting the input for a shortcut.',
'shortcuts_toggle_label' => 'Keyboard shortcuts enabled',
'shortcuts_section_navigation' => 'Navigation',
'shortcuts_section_actions' => 'Common Actions',
'shortcuts_save' => 'Save Shortcuts',
'shortcuts_overlay_desc' => 'Note: When shortcuts are enabled a helper overlay is available via pressing "?" which will highlight the available shortcuts for actions currently visible on the screen.',
'shortcuts_update_success' => 'Shortcut preferences have been updated!',
'shortcuts_overview_desc' => 'Manage keyboard shortcuts you can use to navigate the system user interface.',
'notifications' => 'إعدادات الإشعارات',
'notifications_desc' => 'التحكم في إشعارات البريد الإلكتروني الذي تتلقاها عند إجراء نشاط معين داخل النظام.',
'notifications_opt_own_page_changes' => 'إشعاري عند حدوث تغييرات في الصفحات التي أملكها',
'notifications_opt_own_page_comments' => 'إشعاري بشأن التعليقات على الصفحات التي أملكها',
'notifications_opt_comment_replies' => 'إشعاري عند الردود على تعليقاتي',
'notifications_save' => 'حفظ اﻹعدادات',
'notifications_update_success' => 'تم تحديث إعدادات الإشعارات!',
'notifications_watched' => 'العناصر التي تمت مشاهدتها وتجاهلها',
'notifications_watched_desc' => 'فيما يلي العناصر التي طُبِّقت عليها إعدادات ساعة مخصصة. لتحديث إعداداتك، استعرض العنصر ثم ابحث عن خيارات الساعة في الشريط الجانبي.',
'notifications' => 'Notification Preferences',
'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.',
'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own',
'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own',
'notifications_opt_comment_replies' => 'Notify upon replies to my comments',
'notifications_save' => 'Save Preferences',
'notifications_update_success' => 'Notification preferences have been updated!',
'notifications_watched' => 'Watched & Ignored Items',
'notifications_watched_desc' => 'Below are the items that have custom watch preferences applied. To update your preferences for these, view the item then find the watch options in the sidebar.',
'auth' => 'الوصول و الأمان',
'auth_change_password' => 'تغيير كلمة السر',
'auth_change_password_desc' => 'غيّر كلمة السر التي تستخدمها لتسجيل الدخول إلى التطبيق. يجب ألا تقل عن 8 أحرف.',
'auth_change_password_success' => 'تم تحديث كلمة السر!',
'auth' => 'Access & Security',
'auth_change_password' => 'Change Password',
'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
'auth_change_password_success' => 'Password has been updated!',
'profile' => 'تفاصيل المِلَفّ الشخصي',
'profile_desc' => 'إدارة تفاصيل حسابك الذي يمثلك أمام المستخدمين الآخرين، بالإضافة إلى التفاصيل المستخدمة للتواصل وتخصيص النظام.',
'profile_view_public' => 'عرض المِلَفّ الشخصي العام',
'profile_name_desc' => 'إعداد اسم العرض الخاص بك الذي سيكون مرئيًا للمستخدمين الآخرين في النظام من خلال النشاط الذي تقوم به والمحتوى الذي تملكه.',
'profile_email_desc' => 'سيتم استخدام هذا البريد الإلكتروني للإشعارات، وبناءً على مصادقة النظام النشط، سيتم استخدام الوصول إلى النظام.',
'profile_email_no_permission' => 'للأسف، ليس لديك إذن لتغيير عنوان بريدك الإلكتروني. إذا كنت ترغب في تغييره، فعليك طلب ذلك من أحد المسؤولين.',
'profile_avatar_desc' => 'اختر صورةً تُمثّلك أمام الآخرين في النظام. يُفضّل أن تكون الصورة مربعةً، وعرضها وارتفاعها حوالي ٢٥٦ بكسل.',
'profile_admin_options' => 'خيارات المسؤول',
'profile_admin_options_desc' => 'يمكنك العثور على خيارات إضافية على مستوى المسؤول، مثل تلك الخاصة بإدارة تعيينات الأدوار، لحساب المستخدم الخاص بك في منطقة "الإعدادات > المستخدمون" في التطبيق.',
'profile' => 'Profile Details',
'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
'profile_view_public' => 'View Public Profile',
'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
'profile_admin_options' => 'Administrator Options',
'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
'delete_account' => 'حذف الحساب',
'delete_my_account' => 'حذف حسابي',
'delete_my_account_desc' => 'سيؤدي هذا إلى حذف حساب المستخدم الخاص بك بالكامل من النظام. لن تتمكن من استعادة هذا الحساب أو التراجع عن هذا الإجراء. سيبقى المحتوى الذي أنشأته، مثل الصفحات التي أنشأتها والصور التي رفعتها، كما هي.',
'delete_my_account_warning' => 'هل أنت متأكد أنك تريد حذف حسابك؟',
'delete_account' => 'Delete Account',
'delete_my_account' => 'Delete My Account',
'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
'delete_my_account_warning' => 'Are you sure you want to delete your account?',
];

View File

@ -48,12 +48,12 @@ return [
'app_disable_comments_desc' => 'تعطيل التعليقات على جميع الصفحات داخل التطبيق. التعليقات الموجودة من الأصل لن تكون ظاهرة.',
// Color settings
'color_scheme' => 'مخطط ألوان التطبيق',
'color_scheme_desc' => 'حدّد الألوان المستخدمة في واجهة مستخدم التطبيق. يمكن ضبط الألوان بشكل منفصل للوضعين الداكن والفاتح لتناسب المظهر بشكل أفضل ولضمان وضوح النص.',
'ui_colors_desc' => 'عيّن اللون الأساسي للتطبيق ولون الرابط الافتراضي. يُستخدم اللون الأساسي بشكل رئيس في شعار الصفحة الرئيسة والأزرار وزخارف الواجهة. أما اللون الافتراضي للرابط، فيُستخدم للروابط والإجراءات النصية، سواءً داخل المحتوى المكتوب أو في واجهة التطبيق.',
'app_color' => 'اللون الأساسي',
'link_color' => 'لون الرابط الافتراضي',
'content_colors_desc' => 'حدّد ألوان جميع عناصر هيكل تنظيم الصفحة. يُنصح باختيار ألوان بنفس سطوع الألوان الافتراضية لسهولة القراءة.',
'color_scheme' => 'Application Color Scheme',
'color_scheme_desc' => 'Set the colors to use in the application user interface. Colors can be configured separately for dark and light modes to best fit the theme and ensure legibility.',
'ui_colors_desc' => 'Set the application primary color and default link color. The primary color is mainly used for the header banner, buttons and interface decorations. The default link color is used for text-based links and actions, both within written content and in the application interface.',
'app_color' => 'Primary Color',
'link_color' => 'Default Link Color',
'content_colors_desc' => 'Set colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
'bookshelf_color' => 'لون الرف',
'book_color' => 'لون الكتاب',
'chapter_color' => 'لون الفصل',
@ -75,40 +75,40 @@ return [
'reg_confirm_restrict_domain_placeholder' => 'لم يتم اختيار أي قيود',
// Sorting Settings
'sorting' => 'طريقة الترتيب',
'sorting_book_default' => 'ترتيب الكتاب الافتراضي',
'sorting_book_default_desc' => 'حدد قاعدة الترتيب الافتراضية لتطبيقها على الكتب الجديدة. لن يؤثر هذا على الكتب الحالية، ويمكن تجاوزه لكل كتاب على حدة.',
'sorting_rules' => 'قواعد الترتيب',
'sorting_rules_desc' => 'هذه هي عمليات الترتيب المحددة مسبقًا الذي يمكن تطبيقها على المحتوى الموجود في النظام.',
'sort_rule_assigned_to_x_books' => 'مُعيَّن إلى :count كتاب|مُعيَّن إلى :count كتاب',
'sort_rule_create' => 'إنشاء قاعدة الترتيب',
'sort_rule_edit' => 'تعديل قاعدة الترتيب',
'sort_rule_delete' => 'حذف قاعدة الترتيب',
'sort_rule_delete_desc' => 'أزل قاعدة الترتيب هذه من النظام. الكتب التي تستخدم هذا الفرز ستعود إلى الفرز اليدوي.',
'sort_rule_delete_warn_books' => 'تُستخدم قاعدة الترتيب هذه حاليًا على :count كتاب/كتب. متيقن من رغبتك في حذف هذا؟',
'sort_rule_delete_warn_default' => 'تُستخدم قاعدة الترتيب هذه حاليًا كإعداد افتراضي للكتب. متيقن من رغبتك في حذفها؟',
'sort_rule_details' => 'تفاصيل قاعدة الترتيب',
'sort_rule_details_desc' => 'تعيين اسم لقاعدة الترتيب هذه، التي ستظهر في القوائم عندما يقوم المستخدمون باختيار نوع ما.',
'sort_rule_operations' => 'عمليات الترتيب',
'sort_rule_operations_desc' => 'جهّز إجراءات الترتيب المطلوب تنفيذها بنقلها من قائمة العمليات المتاحة. عند الاستخدام، سيتم تطبيق العمليات بالترتيب من الأعلى إلى الأسفل. أي تغييرات تُجرى هنا ستُطبّق على جميع الكتب المُخصّصة عند الحفظ.',
'sort_rule_available_operations' => 'العمليات المتاحة',
'sort_rule_available_operations_empty' => 'لا توجد عمليات متبقية',
'sort_rule_configured_operations' => 'العمليات المُهيأة',
'sort_rule_configured_operations_empty' => 'اسحب/أضف العمليات من قائمة "العمليات المتاحة"',
'sort_rule_op_asc' => '(تصاعدي)',
'sort_rule_op_desc' => '(تنازلي)',
'sort_rule_op_name' => 'الاسم - أبجديًا',
'sort_rule_op_name_numeric' => 'الاسم - رقمي',
'sort_rule_op_created_date' => 'تاريخ الإنشاء',
'sort_rule_op_updated_date' => 'تاريخ التحديث',
'sort_rule_op_chapters_first' => 'الفصول الأولى',
'sort_rule_op_chapters_last' => 'الفصول الأخيرة',
'sorting' => 'Sorting',
'sorting_book_default' => 'Default Book Sort',
'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
'sorting_rules' => 'Sort Rules',
'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
'sort_rule_create' => 'Create Sort Rule',
'sort_rule_edit' => 'Edit Sort Rule',
'sort_rule_delete' => 'Delete Sort Rule',
'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
'sort_rule_details' => 'Sort Rule Details',
'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
'sort_rule_operations' => 'Sort Operations',
'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
'sort_rule_available_operations' => 'Available Operations',
'sort_rule_available_operations_empty' => 'No operations remaining',
'sort_rule_configured_operations' => 'Configured Operations',
'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
'sort_rule_op_asc' => '(Asc)',
'sort_rule_op_desc' => '(Desc)',
'sort_rule_op_name' => 'Name - Alphabetical',
'sort_rule_op_name_numeric' => 'Name - Numeric',
'sort_rule_op_created_date' => 'Created Date',
'sort_rule_op_updated_date' => 'Updated Date',
'sort_rule_op_chapters_first' => 'Chapters First',
'sort_rule_op_chapters_last' => 'Chapters Last',
// Maintenance settings
'maint' => 'الصيانة',
'maint_image_cleanup' => 'تنظيف الصور',
'maint_image_cleanup_desc' => 'مسح الصفحة ومراجعة المحتوى للتحقق من أي الصور والرسوم المستخدمة حاليًا وأي الصور زائدة عن الحاجة. تأكد من إنشاء قاعدة بيانات كاملة و نسخة احتياطية للصور قبل تشغيل هذا.',
'maint_delete_images_only_in_revisions' => 'قم أيضًا بحذف الصور الموجودة فقط في مراجعات الصفحة القديمة',
'maint_delete_images_only_in_revisions' => 'Also delete images that only exist in old page revisions',
'maint_image_cleanup_run' => 'بدء التنظيف',
'maint_image_cleanup_warning' => 'يوجد عدد :count من الصور المحتمل عدم استخدامها. تأكيد حذف الصور؟',
'maint_image_cleanup_success' => 'تم إيجاد وحذف عدد :count من الصور المحتمل عدم استخدامها!',
@ -122,16 +122,16 @@ return [
'maint_send_test_email_mail_text' => 'تهانينا! كما تلقيت إشعار هذا البريد الإلكتروني، يبدو أن إعدادات البريد الإلكتروني الخاص بك قد تم تكوينها بشكل صحيح.',
'maint_recycle_bin_desc' => 'تُرسل الأرفف والكتب والفصول والصفحات المحذوفة إلى سلة المحذوفات حتى يمكن استعادتها أو حذفها نهائيًا. قد يتم إزالة العناصر الأقدم في سلة المحذوفات تلقائيًا بعد فترة اعتمادًا على تكوين النظام.',
'maint_recycle_bin_open' => 'افتح سلة المحذوفات',
'maint_regen_references' => 'إعادة إنشاء المراجع',
'maint_regen_references_desc' => 'سيعيد هذا الإجراء بناء فِهْرِس المراجع بين العناصر داخل قاعدة البيانات. عادةً ما يتم ذلك تلقائيًا، ولكنه قد يكون مفيدًا لفهرسة المحتوى القديم أو المحتوى المُضاف بطرق غير رسمية.',
'maint_regen_references_success' => 'لقد تم تجديد فِهْرِس المرجع!',
'maint_timeout_command_note' => 'ملاحظة: قد يستغرق تنفيذ هذا الإجراء بعض الوقت، مما قد يؤدي إلى مشاكل في مهلة التنفيذ في بعض بيئات الويب. كبديل، يمكن تنفيذ هذا الإجراء باستخدام سطر الأوامر.',
'maint_regen_references' => 'Regenerate References',
'maint_regen_references_desc' => 'This action will rebuild the cross-item reference index within the database. This is usually handled automatically but this action can be useful to index old content or content added via unofficial methods.',
'maint_regen_references_success' => 'Reference index has been regenerated!',
'maint_timeout_command_note' => 'Note: This action can take time to run, which can lead to timeout issues in some web environments. As an alternative, this action be performed using a terminal command.',
// Recycle Bin
'recycle_bin' => 'سلة المحذوفات',
'recycle_bin_desc' => 'هنا يمكنك استعادة العناصر التي تم حذفها أو اختيار إزالتها نهائيا من النظام. هذه القائمة غير مصفاة خلافاً لقوائم الأنشطة المماثلة في النظام حيث يتم تطبيق عوامل تصفية الأذونات.',
'recycle_bin_deleted_item' => 'عنصر محذوف',
'recycle_bin_deleted_parent' => 'اﻷب',
'recycle_bin_deleted_parent' => 'Parent',
'recycle_bin_deleted_by' => 'حُذف بواسطة',
'recycle_bin_deleted_at' => 'وقت الحذف',
'recycle_bin_permanently_delete' => 'حُذف نهائيًا',
@ -139,12 +139,12 @@ return [
'recycle_bin_contents_empty' => 'سلة المحذوفات فارغة حاليًا',
'recycle_bin_empty' => 'إفراغ سلة المحذوفات',
'recycle_bin_empty_confirm' => 'سيؤدي هذا إلى إتلاف جميع العناصر الموجودة في سلة المحذوفات بشكل دائم بما في ذلك المحتوى الموجود داخل كل عنصر. هل أنت متأكد من أنك تريد إفراغ سلة المحذوفات؟',
'recycle_bin_destroy_confirm' => 'سيؤدي هذا الإجراء إلى حذف هذا العنصر نهائيًا من النظام، بالإضافة إلى أي عناصر فرعية مدرجة أدناه، ولن تتمكن من استعادة هذا المحتوى. هل أنت متيقِّن من رغبتك في حذف هذا العنصر نهائيًا؟',
'recycle_bin_destroy_confirm' => 'This action will permanently delete this item from the system, along with any child elements listed below, and you will not be able to restore this content. Are you sure you want to permanently delete this item?',
'recycle_bin_destroy_list' => 'العناصر المراد تدميرها',
'recycle_bin_restore_list' => 'العناصر المراد استرجاعها',
'recycle_bin_restore_confirm' => 'سيعيد هذا الإجراء العنصر المحذوف ، بما في ذلك أي عناصر فرعية ، إلى موقعه الأصلي. إذا تم حذف الموقع الأصلي منذ ذلك الحين ، وهو الآن في سلة المحذوفات ، فسيلزم أيضًا استعادة العنصر الأصلي.',
'recycle_bin_restore_deleted_parent' => 'تم حذف أصل هذا العنصر أيضًا. سيبقى حذفه حتى يتم استعادة ذلك الأصل أيضًا.',
'recycle_bin_restore_parent' => 'استعادة اﻷب',
'recycle_bin_restore_parent' => 'Restore Parent',
'recycle_bin_destroy_notification' => 'المحذوف: قُم بعد إجمالي العناصر من سلة المحذوفات.',
'recycle_bin_restore_notification' => 'المرتجع: قُم بعد إجمالي العناصر من سلة المحذوفات.',
@ -158,7 +158,7 @@ return [
'audit_table_user' => 'المستخدم',
'audit_table_event' => 'الحدث',
'audit_table_related' => 'العنصر أو التفاصيل ذات الصلة',
'audit_table_ip' => 'عنوان عُرف اﻹنترنت -IP-',
'audit_table_ip' => 'IP Address',
'audit_table_date' => 'تاريخ النشاط',
'audit_date_from' => 'نطاق التاريخ من',
'audit_date_to' => 'نطاق التاريخ إلى',
@ -166,11 +166,11 @@ return [
// Role Settings
'roles' => 'الأدوار',
'role_user_roles' => 'أدوار المستخدمين',
'roles_index_desc' => 'تُستخدم الأدوار لتجميع المستخدمين ومنح أذونات النظام لأعضائها. عندما يكون المستخدم عضوًا في أدوار متعددة، تتراكم الصلاحيات الممنوحة، ويرث المستخدم جميع القدرات.',
'roles_x_users_assigned' => ':count مستخدم معين|:count مستخدمين معينين',
'roles_x_permissions_provided' => ':count إذن |:count إذونات',
'roles_assigned_users' => 'المستخدمون المعينون',
'roles_permissions_provided' => 'الصلاحيات المقدمة',
'roles_index_desc' => 'Roles are used to group users & provide system permission to their members. When a user is a member of multiple roles the privileges granted will stack and the user will inherit all abilities.',
'roles_x_users_assigned' => ':count user assigned|:count users assigned',
'roles_x_permissions_provided' => ':count permission|:count permissions',
'roles_assigned_users' => 'Assigned Users',
'roles_permissions_provided' => 'Provided Permissions',
'role_create' => 'إنشاء دور جديد',
'role_delete' => 'حذف الدور',
'role_delete_confirm' => 'سيتم حذف الدور المسمى \':roleName\'.',
@ -181,7 +181,7 @@ return [
'role_details' => 'تفاصيل الدور',
'role_name' => 'اسم الدور',
'role_desc' => 'وصف مختصر للدور',
'role_mfa_enforced' => 'يتطلب مصادقة متعددة العوامل',
'role_mfa_enforced' => 'Requires Multi-Factor Authentication',
'role_external_auth_id' => 'ربط الحساب بمواقع التواصل',
'role_system' => 'أذونات النظام',
'role_manage_users' => 'إدارة المستخدمين',
@ -191,15 +191,15 @@ return [
'role_manage_page_templates' => 'إدارة قوالب الصفحة',
'role_access_api' => 'الوصول إلى واجهة برمجة تطبيقات النظام API',
'role_manage_settings' => 'إدارة إعدادات التطبيق',
'role_export_content' => 'تصدير المحتوى',
'role_import_content' => 'استيراد المحتوى',
'role_editor_change' => 'تغيير محرر الصفحة',
'role_notifications' => 'تلقي الإشعارات وإدارتها',
'role_export_content' => 'Export content',
'role_import_content' => 'Import content',
'role_editor_change' => 'Change page editor',
'role_notifications' => 'Receive & manage notifications',
'role_asset' => 'أذونات الأصول',
'roles_system_warning' => 'اعلم أن الوصول إلى أي من الأذونات الثلاثة المذكورة أعلاه يمكن أن يسمح للمستخدم بتغيير امتيازاته الخاصة أو امتيازات الآخرين في النظام. قم بتعيين الأدوار مع هذه الأذونات فقط للمستخدمين الموثوق بهم.',
'role_asset_desc' => 'تتحكم هذه الأذونات في الوصول الافتراضي إلى الأصول داخل النظام. ستتجاوز الأذونات الخاصة بالكتب والفصول والصفحات هذه الأذونات.',
'role_asset_admins' => 'يُمنح المسؤولين حق الوصول تلقائيًا إلى جميع المحتويات ولكن هذه الخيارات قد تعرض خيارات واجهة المستخدم أو تخفيها.',
'role_asset_image_view_note' => 'يتعلق هذا بالرؤية داخل مدير الصور. يعتمد الوصول الفعلي لملفات الصور المُحمّلة على خِيار تخزين الصور في النظام.',
'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.',
'role_all' => 'الكل',
'role_own' => 'ما يخص',
'role_controlled_by_asset' => 'يتحكم فيها الأصول التي يتم رفعها إلى',
@ -209,7 +209,7 @@ return [
// Users
'users' => 'المستخدمون',
'users_index_desc' => 'إنشاء وإدارة حسابات المستخدمين الفردية داخل النظام. يتم استخدام حسابات المستخدم لتسجيل الدخول وإسناد المحتوى والنشاط. صلاحيات الوصول هي أساسا قائمة على الأدوار ولكن ملكية محتوى المستخدم، من بين عوامل أخرى، قد تؤثر أيضا على صلاحيات والوصول إليها.',
'users_index_desc' => 'Create & manage individual user accounts within the system. User accounts are used for login and attribution of content & activity. Access permissions are primarily role-based but user content ownership, among other factors, may also affect permissions & access.',
'user_profile' => 'ملف المستخدم',
'users_add_new' => 'إضافة مستخدم جديد',
'users_search' => 'بحث عن مستخدم',
@ -220,20 +220,20 @@ return [
'users_role' => 'أدوار المستخدمين',
'users_role_desc' => 'حدد الأدوار التي سيتم تعيين هذا المستخدم لها. إذا تم تعيين مستخدم لأدوار متعددة ، فسيتم تكديس الأذونات من هذه الأدوار وسيتلقى كل قدرات الأدوار المعينة.',
'users_password' => 'كلمة مرور المستخدم',
'users_password_desc' => 'عيّن كلمة مرور لتسجيل الدخول إلى التطبيق. يجب ألا تقل عن 8 أحرف.',
'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 8 characters long.',
'users_send_invite_text' => 'يمكنك اختيار إرسال دعوة بالبريد الإلكتروني إلى هذا المستخدم مما يسمح له بتعيين كلمة المرور الخاصة به أو يمكنك تعيين كلمة المرور الخاصة به بنفسك.',
'users_send_invite_option' => 'أرسل بريدًا إلكترونيًا لدعوة المستخدم',
'users_external_auth_id' => 'ربط الحساب بمواقع التواصل',
'users_external_auth_id_desc' => 'عند استخدام نظام مصادقة خارجي (مثل SAML2 أو OIDC أو LDAP)، يكون هذا هو المعرف الذي يربط مستخدم بوكستاك -BookStack- بحساب نظام المصادقة. يمكنك تجاهل هذا الحقل عند استخدام المصادقة الافتراضية عبر البريد الإلكتروني.',
'users_password_warning' => 'قم بملء الحقل أدناه فقط إذا كنت ترغب في تغيير كلمة المرور لهذا المستخدم.',
'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
'users_system_public' => 'هذا المستخدم يمثل أي ضيف يقوم بزيارة شيء يخصك. لا يمكن استخدامه لتسجيل الدخول ولكن يتم تعيينه تلقائياً.',
'users_delete' => 'حذف المستخدم',
'users_delete_named' => 'حذف المستخدم :userName',
'users_delete_warning' => 'سيتم حذف المستخدم \':userName\' بشكل تام من النظام.',
'users_delete_confirm' => 'تأكيد حذف المستخدم؟',
'users_migrate_ownership' => 'نقل الملكية',
'users_migrate_ownership_desc' => 'حدد مستخدم هنا إذا كنت تريد أن يصبح مستخدم آخر مالك جميع العناصر التي يمتلكها هذا المستخدم حاليا.',
'users_none_selected' => 'لم يتم تحديد مستخدم',
'users_migrate_ownership' => 'Migrate Ownership',
'users_migrate_ownership_desc' => 'Select a user here if you want another user to become the owner of all items currently owned by this user.',
'users_none_selected' => 'No user selected',
'users_edit' => 'تعديل المستخدم',
'users_edit_profile' => 'تعديل الملف',
'users_avatar' => 'صورة المستخدم',
@ -241,24 +241,24 @@ return [
'users_preferred_language' => 'اللغة المفضلة',
'users_preferred_language_desc' => 'سيؤدي هذا الخيار إلى تغيير اللغة المستخدمة لواجهة المستخدم الخاصة بالتطبيق. لن يؤثر هذا على أي محتوى قد أنشائه المستخدم.',
'users_social_accounts' => 'الحسابات الاجتماعية',
'users_social_accounts_desc' => 'عرض حالة الحسابات الاجتماعية المرتبطة لهذا المستخدم. ويمكن استخدام الحسابات الاجتماعية بالإضافة إلى نظام التوثيق الرئيس للوصول إلى النظام.',
'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not previously authorized access. Revoke access from your profile settings on the connected social account.',
'users_social_connect' => 'ربط الحساب',
'users_social_disconnect' => 'فصل الحساب',
'users_social_status_connected' => 'متصل',
'users_social_status_disconnected' => 'غير متصل',
'users_social_status_connected' => 'Connected',
'users_social_status_disconnected' => 'Disconnected',
'users_social_connected' => 'تم ربط حساب :socialAccount بملفك بنجاح.',
'users_social_disconnected' => 'تم فصل حساب :socialAccount من ملفك بنجاح.',
'users_api_tokens' => 'رموز الـ API',
'users_api_tokens_desc' => 'أنشئ وأدر رموز الوصول المستخدمة للمصادقة باستخدام واجهة برمجة تطبيقات بوكستاك رِست -BookStack REST API-. تتم إدارة صلاحيات واجهة برمجة التطبيقات بواسطة المستخدم الذي ينتمي إليه الرمز.',
'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
'users_api_tokens_none' => 'لم يتم إنشاء رموز API لهذا المستخدم',
'users_api_tokens_create' => 'قم بإنشاء رمز مميز',
'users_api_tokens_expires' => 'انتهاء مدة الصلاحية',
'users_api_tokens_docs' => 'وثائق API',
'users_mfa' => 'المصادقة متعددة العوامل',
'users_mfa_desc' => 'إعداد المصادقة متعددة العوامل كطبقة إضافية من الأمان لحساب المستخدم الخاص بك.',
'users_mfa_x_methods' => ':count طريقة مُهيأة | :count طرق مُهيأة',
'users_mfa_configure' => 'إعداد الطرق',
'users_mfa' => 'Multi-Factor Authentication',
'users_mfa_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
'users_mfa_x_methods' => ':count method configured|:count methods configured',
'users_mfa_configure' => 'Configure Methods',
// API Tokens
'user_api_token_create' => 'قم بإنشاء رمز API',
@ -279,42 +279,42 @@ return [
'user_api_token_delete_confirm' => 'هل أنت متأكد من أنك تريد حذف رمز API؟',
// Webhooks
'webhooks' => 'خطافات الويب -Webhooks-',
'webhooks_index_desc' => 'خطافات الويب هي طريقة لإرسال البيانات إلى الروابط الخارجية عندما تحدث بعض الإجراءات والأحداث داخل النظام الذي يسمح بالتكامل القائم على الأحداث مع المنصات الخارجية مثل نظم المراسلة أو الإشعار.',
'webhooks_x_trigger_events' => ':count حدث تشغيل |:count أحداث تشغيل',
'webhooks_create' => 'إنشاء خطاف ويب جديد',
'webhooks_none_created' => 'لم يتم إنشاء أي خطافات ويب حتى الآن.',
'webhooks_edit' => 'تحرير خطاف ويب',
'webhooks_save' => 'حفظ خطاف ويب',
'webhooks_details' => 'تفاصيل خطاف الويب',
'webhooks_details_desc' => 'قم بتوفير اسم سهل الاستخدام ونقطة نهاية POST كموقع لإرسال بيانات خطافات الويب إليه.',
'webhooks_events' => 'أحداث خطفات الويب',
'webhooks_events_desc' => 'حدد جميع الأحداث التي يجب أن تشغل هذا الرابط ليتم استدعاؤها.',
'webhooks_events_warning' => 'ضع في اعتبارك أن هذه الأحداث سيتم تشغيلها لجميع الأحداث المحددة، حتى إذا تم تطبيق صلاحيات مخصصة. تحقق أن استخدام خطاف الويب هذا لن يكشف عن محتوى سري.',
'webhooks_events_all' => 'جميع أحداث النظام',
'webhooks_name' => 'اسم خطاف الويب',
'webhooks_timeout' => 'مهلة طلب خطاف الويب (بالثواني)',
'webhooks_endpoint' => 'نقطة نهاية خطاف الويب',
'webhooks_active' => 'خطاف الويب فعال',
'webhook_events_table_header' => 'الأحداث',
'webhooks_delete' => 'حذف خطاف الويب',
'webhooks_delete_warning' => 'سيؤدي هذا إلى حذف خطاف الويب بالكامل، الذي يحمل اسم \':webhookName\'، من النظام.',
'webhooks_delete_confirm' => 'هل أنت متيقِّن أنك تريد حذف هذا الخطاف؟',
'webhooks_format_example' => 'مثال على تنسيق خطاف الويب',
'webhooks_format_example_desc' => 'يتم إرسال بيانات خطاف الويب كطلب بوست -POST- إلى نقطة النهاية المكونة كجيسون -JSON- باتباع التنسيق أدناه. خصائص "ذات صلة" و "روابط" اختيارية و ستعتمد على نوع الحدث الذي تم تشغيله.',
'webhooks_status' => 'حالة خطاف الويب',
'webhooks_last_called' => 'آخر اتصال:',
'webhooks_last_errored' => 'أخر خطأ:',
'webhooks_last_error_message' => 'رسالة الخطأ الأخيرة:',
'webhooks' => 'Webhooks',
'webhooks_index_desc' => 'Webhooks are a way to send data to external URLs when certain actions and events occur within the system which allows event-based integration with external platforms such as messaging or notification systems.',
'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
'webhooks_create' => 'Create New Webhook',
'webhooks_none_created' => 'No webhooks have yet been created.',
'webhooks_edit' => 'Edit Webhook',
'webhooks_save' => 'Save Webhook',
'webhooks_details' => 'Webhook Details',
'webhooks_details_desc' => 'Provide a user friendly name and a POST endpoint as a location for the webhook data to be sent to.',
'webhooks_events' => 'Webhook Events',
'webhooks_events_desc' => 'Select all the events that should trigger this webhook to be called.',
'webhooks_events_warning' => 'Keep in mind that these events will be triggered for all selected events, even if custom permissions are applied. Ensure that use of this webhook won\'t expose confidential content.',
'webhooks_events_all' => 'All system events',
'webhooks_name' => 'Webhook Name',
'webhooks_timeout' => 'Webhook Request Timeout (Seconds)',
'webhooks_endpoint' => 'Webhook Endpoint',
'webhooks_active' => 'Webhook Active',
'webhook_events_table_header' => 'Events',
'webhooks_delete' => 'Delete Webhook',
'webhooks_delete_warning' => 'This will fully delete this webhook, with the name \':webhookName\', from the system.',
'webhooks_delete_confirm' => 'Are you sure you want to delete this webhook?',
'webhooks_format_example' => 'Webhook Format Example',
'webhooks_format_example_desc' => 'Webhook data is sent as a POST request to the configured endpoint as JSON following the format below. The "related_item" and "url" properties are optional and will depend on the type of event triggered.',
'webhooks_status' => 'Webhook Status',
'webhooks_last_called' => 'Last Called:',
'webhooks_last_errored' => 'Last Errored:',
'webhooks_last_error_message' => 'Last Error Message:',
// Licensing
'licenses' => 'الرخص',
'licenses_desc' => 'هذه الصفحة تفصل معلومات الرخص لبوكستاك -BookStack- بالإضافة إلى المشاريع والمكتبات المستخدمة في بوكستاك. ولا يمكن استخدام العديد من المشاريع المدرجة إلا في سياق إنمائي.',
'licenses_bookstack' => 'رخص بوكستاك',
'licenses_php' => 'رخص مكتبات بي إتش بي -PHP-',
'licenses_js' => 'رخص مكتبة جافا سكريبت -JavaScript-',
'licenses_other' => 'رخص أخرى',
'license_details' => 'تفاصيل الرخصة',
'licenses' => 'Licenses',
'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
'licenses_bookstack' => 'BookStack License',
'licenses_php' => 'PHP Library Licenses',
'licenses_js' => 'JavaScript Library Licenses',
'licenses_other' => 'Other Licenses',
'license_details' => 'License Details',
//! If editing translations files directly please ignore this in all
//! languages apart from en. Content will be auto-copied from en.

View File

@ -105,10 +105,10 @@ return [
'url' => 'صيغة :attribute غير صالحة.',
'uploaded' => 'تعذر تحميل الملف. قد لا يقبل الخادم ملفات بهذا الحجم.',
'zip_file' => ':attribute بحاجة إلى الرجوع إلى مِلَفّ داخل المِلَفّ المضغوط.',
'zip_file_mime' => ':attribute بحاجة إلى الإشارة إلى مِلَفّ من نوع :validTypes، وجدت :foundType.',
'zip_model_expected' => 'عنصر البيانات المتوقع ولكن ":type" تم العثور عليه.',
'zip_unique' => 'يجب أن يكون :attribute فريداً لنوع الكائن داخل المِلَفّ المضغوط.',
'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
'zip_model_expected' => 'Data object expected but ":type" found.',
'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
// Custom validation lines
'custom' => [

View File

@ -128,7 +128,7 @@ return [
'comment_delete' => 'Kommentar gelöscht',
// Sort Rules
'sort_rule_create' => 'Sortierregel erstellt',
'sort_rule_create' => 'created sort rule',
'sort_rule_create_notification' => 'Sort rule successfully created',
'sort_rule_update' => 'updated sort rule',
'sort_rule_update_notification' => 'Sort rule successfully updated',

View File

@ -128,7 +128,7 @@ return [
'comment_delete' => 'Kommentar gelöscht',
// Sort Rules
'sort_rule_create' => 'Sortierregel erstellt',
'sort_rule_create' => 'created sort rule',
'sort_rule_create_notification' => 'Sort rule successfully created',
'sort_rule_update' => 'updated sort rule',
'sort_rule_update_notification' => 'Sort rule successfully updated',

View File

@ -13,7 +13,7 @@ return [
'cancel' => 'Annuler',
'save' => 'Sauvegarder',
'close' => 'Fermer',
'apply' => 'Appliquer',
'apply' => 'Apply',
'undo' => 'Annuler',
'redo' => 'Rétablir',
'left' => 'Gauche',
@ -148,7 +148,7 @@ return [
'url' => 'URL',
'text_to_display' => 'Texte à afficher',
'title' => 'Titre',
'browse_links' => 'Parcourir les liens',
'browse_links' => 'Browse links',
'open_link' => 'Ouvrir le lien',
'open_link_in' => 'Ouvrir le lien dans...',
'open_link_current' => 'Fenêtre actuelle',

View File

@ -11,7 +11,7 @@ return [
'recently_updated_pages' => 'Pages mises à jour récemment',
'recently_created_chapters' => 'Chapitres créés récemment',
'recently_created_books' => 'Livres créés récemment',
'recently_created_shelves' => 'Étagères créées récemment',
'recently_created_shelves' => 'Étagères créés récemment',
'recently_update' => 'Mis à jour récemment',
'recently_viewed' => 'Vus récemment',
'recent_activity' => 'Activité récente',
@ -166,9 +166,9 @@ return [
'books_search_this' => 'Rechercher dans ce livre',
'books_navigation' => 'Navigation dans le livre',
'books_sort' => 'Trier les contenus du livre',
'books_sort_desc' => 'Déplacer les pages et chapitres au sein d’un livre pour en réorganiser le contenu. D’autres livres peuvent être ajoutés pour faciliter le déplacement des pages et chapitres entre les livres. Facultativement, une règle de tri automatique peut être mise en place afin de trier le livre lorsqu’il est édité.',
'books_sort_auto_sort' => 'Option de tri automatique',
'books_sort_auto_sort_active' => 'Tri automatique actif : :sortName',
'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
'books_sort_auto_sort' => 'Auto Sort Option',
'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
'books_sort_named' => 'Trier le livre :bookName',
'books_sort_name' => 'Trier par le nom',
'books_sort_created' => 'Trier par la date de création',

View File

@ -75,34 +75,34 @@ return [
'reg_confirm_restrict_domain_placeholder' => 'Aucune restriction en place',
// Sorting Settings
'sorting' => 'Tri',
'sorting_book_default' => 'Tri des livres par défaut',
'sorting_book_default_desc' => 'Sélectionnez le tri par défaut à mettre en place sur les nouveaux livres. Cela n’affectera pas les livres existants, et peut être redéfini dans les livres.',
'sorting_rules' => 'Règles de tri',
'sorting_rules_desc' => 'Ce sont les opérations de tri qui peuvent être appliquées au contenu du système.',
'sort_rule_assigned_to_x_books' => 'Assignée à :count livre|Assignée à :count livres',
'sort_rule_create' => 'Créer une règle de tri',
'sort_rule_edit' => 'Modifier une règle de tri',
'sort_rule_delete' => 'Supprimer une règle de tri',
'sort_rule_delete_desc' => 'Supprimer cette règle du système. Les livres l’utilisant précédemment reviendront au tri manuel.',
'sort_rule_delete_warn_books' => 'Cette règle est actuellement utilisée par :count livre(s). Êtes-vous sûr·e de vouloir la supprimer ?',
'sort_rule_delete_warn_default' => 'Cette règle est actuellement utilisée par défaut pour les livres. Êtes-vous sûr·e de vouloir la supprimer ?',
'sort_rule_details' => 'Détails de la Règle de Tri',
'sort_rule_details_desc' => 'Assignez un nom à cette règle, qui apparaîtra dans les listes servant à sélectionner une règle de tri.',
'sort_rule_operations' => 'Opérations de tri',
'sort_rule_operations_desc' => 'Configurez les actions de tri à appliquer en les déplaçant depuis la liste d’opérations. Lors de l’usage de cette règle, les opérations seront appliquées dans l’ordre, de haut en bas. Les changements effectués ici seront appliqués à tous les livres utilisant cette règle lors de la sauvegarde.',
'sort_rule_available_operations' => 'Opérations disponibles',
'sort_rule_available_operations_empty' => 'Aucune opération restante',
'sort_rule_configured_operations' => 'Opérations sélectionnées',
'sort_rule_configured_operations_empty' => 'Déplacez/ajoutez des opérations depuis la liste "Opérations disponibles"',
'sorting' => 'Sorting',
'sorting_book_default' => 'Default Book Sort',
'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
'sorting_rules' => 'Sort Rules',
'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
'sort_rule_create' => 'Create Sort Rule',
'sort_rule_edit' => 'Edit Sort Rule',
'sort_rule_delete' => 'Delete Sort Rule',
'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
'sort_rule_details' => 'Sort Rule Details',
'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
'sort_rule_operations' => 'Sort Operations',
'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
'sort_rule_available_operations' => 'Available Operations',
'sort_rule_available_operations_empty' => 'No operations remaining',
'sort_rule_configured_operations' => 'Configured Operations',
'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
'sort_rule_op_asc' => '(Asc)',
'sort_rule_op_desc' => '(Desc)',
'sort_rule_op_name' => 'Nom - Alphabétique',
'sort_rule_op_name_numeric' => 'Nom - Numérique',
'sort_rule_op_created_date' => 'Date de création',
'sort_rule_op_updated_date' => 'Date de mise à jour',
'sort_rule_op_chapters_first' => 'Chapitres en premier',
'sort_rule_op_chapters_last' => 'Chapitres en dernier',
'sort_rule_op_name' => 'Name - Alphabetical',
'sort_rule_op_name_numeric' => 'Name - Numeric',
'sort_rule_op_created_date' => 'Created Date',
'sort_rule_op_updated_date' => 'Updated Date',
'sort_rule_op_chapters_first' => 'Chapters First',
'sort_rule_op_chapters_last' => 'Chapters Last',
// Maintenance settings
'maint' => 'Maintenance',

View File

@ -85,12 +85,12 @@ return [
'webhook_delete_notification' => 'Webook נמחק בהצלחה',
// Imports
'import_create' => 'יבוא נוצר',
'import_create_notification' => 'יבוא עודכן בהצלחה',
'import_run' => 'יבוא עודכן',
'import_run_notification' => 'תוכן יובא בהצלחה',
'import_delete' => 'יבוא נמחק',
'import_delete_notification' => 'יבוא נמחק בהצלחה',
'import_create' => 'created import',
'import_create_notification' => 'Import successfully uploaded',
'import_run' => 'updated import',
'import_run_notification' => 'Content successfully imported',
'import_delete' => 'deleted import',
'import_delete_notification' => 'Import successfully deleted',
// Users
'user_create' => 'משתמש חדש נוצר',

View File

@ -107,11 +107,11 @@ return [
'mfa_verify_access_desc' => 'חשבון המשתמש שלך דורש ממך לאת את הזהות שלך בשכבת הגנה נוספת על מנת לאפשר לך גישה. יש לאשר גישה דרך אחד האמצעים הקיימים על מנת להמשיך.',
'mfa_verify_no_methods' => 'אין אפשרויות אימות דו-שלבי מוגדרות',
'mfa_verify_no_methods_desc' => 'No multi-factor authentication methods could be found for your account. You\'ll need to set up at least one method before you gain access.',
'mfa_verify_use_totp' => 'אמת באמצעות אפליקציה',
'mfa_verify_use_backup_codes' => 'אמת באמצעות קוד גיבוי',
'mfa_verify_backup_code' => 'קוד גיבוי',
'mfa_verify_backup_code_desc' => 'הזן מטה אחד מקודי הגיבוי הנותרים לך:',
'mfa_verify_backup_code_enter_here' => 'הזן קוד גיבוי כאן',
'mfa_verify_totp_desc' => 'הזן את הקוד, שהונפק דרך האפליקציה שלך, מטה:',
'mfa_verify_use_totp' => 'Verify using a mobile app',
'mfa_verify_use_backup_codes' => 'Verify using a backup code',
'mfa_verify_backup_code' => 'Backup Code',
'mfa_verify_backup_code_desc' => 'Enter one of your remaining backup codes below:',
'mfa_verify_backup_code_enter_here' => 'Enter backup code here',
'mfa_verify_totp_desc' => 'Enter the code, generated using your mobile app, below:',
'mfa_setup_login_notification' => 'Multi-factor method configured, Please now login again using the configured method.',
];

View File

@ -25,11 +25,11 @@ return [
'meta_owned_name' => 'Owned by :user',
'meta_reference_count' => 'Referenced by :count item|Referenced by :count items',
'entity_select' => 'בחר יישות',
'entity_select_lack_permission' => 'אין לך אישורים דרושים לבחירת פריט זה',
'entity_select_lack_permission' => 'You don\'t have the required permissions to select this item',
'images' => 'תמונות',
'my_recent_drafts' => 'הטיוטות האחרונות שלי',
'my_recently_viewed' => 'הנצפים לאחרונה שלי',
'my_most_viewed_favourites' => 'האהובים הנצפים ביותר שלי',
'my_most_viewed_favourites' => 'My Most Viewed Favourites',
'my_favourites' => 'המועדפים שלי',
'no_pages_viewed' => 'לא צפית בדפים כלשהם',
'no_pages_recently_created' => 'לא נוצרו דפים לאחרונה',
@ -40,28 +40,28 @@ return [
'export_text' => 'טקסט רגיל',
'export_md' => 'קובץ Markdown',
'export_zip' => 'Portable ZIP',
'default_template' => 'תבנית דף ברירת מחדל',
'default_template' => 'Default Page Template',
'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
'default_template_select' => 'בחר דף תבנית',
'import' => 'יבוא',
'import_validate' => 'תקף יבוא',
'default_template_select' => 'Select a template page',
'import' => 'Import',
'import_validate' => 'Validate Import',
'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
'import_zip_select' => 'בחר קובץ ZIP להעלאה',
'import_zip_select' => 'Select ZIP file to upload',
'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
'import_pending' => 'Pending Imports',
'import_pending_none' => 'No imports have been started.',
'import_continue' => 'המשך יבוא',
'import_continue' => 'Continue Import',
'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
'import_details' => 'פרטי יבוא',
'import_run' => 'להריץ יבוא',
'import_details' => 'Import Details',
'import_run' => 'Run Import',
'import_size' => ':size Import ZIP Size',
'import_uploaded_at' => 'Uploaded :relativeTime',
'import_uploaded_by' => 'הועלה על ידי',
'import_location' => 'מיקום יבוא',
'import_uploaded_by' => 'Uploaded by',
'import_location' => 'Import Location',
'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
'import_delete_confirm' => 'Are you sure you want to delete this import?',
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'תקלות יבוא',
'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:',
// Permissions and restrictions

View File

@ -128,12 +128,12 @@ return [
'comment_delete' => 'Comentário deletado',
// Sort Rules
'sort_rule_create' => 'criou regra de ordenação',
'sort_rule_create_notification' => 'Regra de ordenação criada com sucesso',
'sort_rule_update' => 'atualizou regra de ordenação',
'sort_rule_update_notification' => 'Regra de ordenação atualizada com sucesso',
'sort_rule_delete' => 'excluiu regra de ordenação',
'sort_rule_delete_notification' => 'Regra de ordenação excluída com sucesso',
'sort_rule_create' => 'regra de classificação criada',
'sort_rule_create_notification' => 'Regra de classificação criada com sucesso',
'sort_rule_update' => 'regra de classificação atualizada',
'sort_rule_update_notification' => 'Sort rule successfully updated',
'sort_rule_delete' => 'regra de classificação excluída',
'sort_rule_delete_notification' => 'Regra de classificação excluída com sucesso',
// Other
'permissions_update' => 'atualizou permissões',

View File

@ -13,7 +13,7 @@ return [
'cancel' => 'Cancelar',
'save' => 'Salvar',
'close' => 'Fechar',
'apply' => 'Aplicar',
'apply' => 'Apply',
'undo' => 'Desfazer',
'redo' => 'Refazer',
'left' => 'Esquerda',
@ -60,7 +60,7 @@ return [
'list_task' => 'Lista de tarefas',
'indent_increase' => 'Aumentar recuo',
'indent_decrease' => 'Diminuir recuo',
'table' => 'Tabela',
'table' => 'Mesa',
'insert_image' => 'Inserir Imagem',
'insert_image_title' => 'Inserir/Editar imagem',
'insert_link' => 'Inserir/editar link',
@ -91,7 +91,7 @@ return [
'insert_column_before' => 'Inserir coluna antes',
'insert_column_after' => 'Inserir coluna depois',
'delete_column' => 'Excluir coluna',
'table_cell' => 'Célula',
'table_cell' => 'Celular',
'table_row' => 'Linha',
'table_column' => 'Coluna',
'cell_properties' => 'Propriedades da célula',
@ -148,7 +148,7 @@ return [
'url' => 'URL',
'text_to_display' => 'Texto de exibição',
'title' => 'Título',
'browse_links' => 'Procurar links',
'browse_links' => 'Browse links',
'open_link' => 'Link aberto',
'open_link_in' => 'Abrir link em...',
'open_link_current' => 'Janelas atuais',

View File

@ -166,9 +166,9 @@ return [
'books_search_this' => 'Pesquisar neste livro',
'books_navigation' => 'Navegação do Livro',
'books_sort' => 'Ordenar Conteúdos do Livro',
'books_sort_desc' => 'Mova capítulos e páginas de um livro para reorganizar seu conteúdo. É possível acrescentar outros livros, o que permite uma movimentação fácil de capítulos e páginas entre livros. Opcionalmente, uma regra de ordenação automática pode ser definida para ordenar automaticamente o conteúdo deste livro após alterações.',
'books_sort_auto_sort' => 'Opção de ordenação automática',
'books_sort_auto_sort_active' => 'Ordenação automática ativa: :sortName',
'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
'books_sort_auto_sort' => 'Auto Sort Option',
'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
'books_sort_named' => 'Ordenar Livro :bookName',
'books_sort_name' => 'Ordernar por Nome',
'books_sort_created' => 'Ordenar por Data de Criação',

View File

@ -75,34 +75,34 @@ return [
'reg_confirm_restrict_domain_placeholder' => 'Nenhuma restrição definida',
// Sorting Settings
'sorting' => 'Ordenação',
'sorting_book_default' => 'Ordenação padrão de livros',
'sorting_book_default_desc' => 'Selecione a regra de ordenação padrão a ser aplicada a novos livros. Isso não afetará os livros existentes e pode ser substituído para cada livro individualmente.',
'sorting_rules' => 'Regras de ordenação',
'sorting_rules_desc' => 'Estas são operações de ordenação pré-definidas que podem ser aplicadas a conteúdos no sistema.',
'sort_rule_assigned_to_x_books' => 'Atribuído a :count Livros|Atribuído a :count Livros',
'sort_rule_create' => 'Criar Regra de Ordenação',
'sort_rule_edit' => 'Editar Regra de Ordenação',
'sort_rule_delete' => 'Excluir Regra de Ordenação',
'sort_rule_delete_desc' => 'Remover esta regra de ordenação do sistema. Os livros usando este tipo serão revertidos para a ordenação manual.',
'sort_rule_delete_warn_books' => 'Esta regra de ordenação está sendo usada atualmente em :count livro(s). Tem certeza de que deseja excluí-la?',
'sort_rule_delete_warn_default' => 'Esta regra de ordenação é atualmente usada como padrão para livros. Tem certeza de que deseja excluí-la?',
'sort_rule_details' => 'Detalhes das Regras de Ordenação',
'sort_rule_details_desc' => 'Defina um nome para esta regra de ordenação, que aparecerá nas listas quando os usuários selecionarem uma ordenação.',
'sort_rule_operations' => 'Operações de Ordenação',
'sort_rule_operations_desc' => 'Configure as ações de ordenação a serem executadas movendo-as da lista de operações disponíveis. Ao usar, as operações serão aplicadas em ordem, de cima para baixo. Quaisquer alterações feitas aqui serão aplicadas a todos os livros atribuídos após salvar.',
'sort_rule_available_operations' => 'Operações Disponíveis',
'sort_rule_available_operations_empty' => 'Não há operações restantes',
'sort_rule_configured_operations' => 'Operações configuradas',
'sort_rule_configured_operations_empty' => 'Arrastar/adicionar operações da lista "Operações Disponíveis"',
'sorting' => 'Classificação',
'sorting_book_default' => 'Classificação padrão de livros',
'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
'sorting_rules' => 'Regras de classificação',
'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
'sort_rule_create' => 'Create Sort Rule',
'sort_rule_edit' => 'Edit Sort Rule',
'sort_rule_delete' => 'Delete Sort Rule',
'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
'sort_rule_details' => 'Sort Rule Details',
'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
'sort_rule_operations' => 'Sort Operations',
'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
'sort_rule_available_operations' => 'Available Operations',
'sort_rule_available_operations_empty' => 'No operations remaining',
'sort_rule_configured_operations' => 'Configured Operations',
'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
'sort_rule_op_asc' => '(Asc)',
'sort_rule_op_desc' => '(Desc)',
'sort_rule_op_name' => 'Nome - Alfabético',
'sort_rule_op_name_numeric' => 'Nome - Numérico',
'sort_rule_op_created_date' => 'Data de Criação',
'sort_rule_op_updated_date' => 'Data de Atualização',
'sort_rule_op_chapters_first' => 'Capítulos Primeiro',
'sort_rule_op_chapters_last' => 'Capítulos por Último',
'sort_rule_op_name' => 'Name - Alphabetical',
'sort_rule_op_name_numeric' => 'Name - Numeric',
'sort_rule_op_created_date' => 'Created Date',
'sort_rule_op_updated_date' => 'Updated Date',
'sort_rule_op_chapters_first' => 'Chapters First',
'sort_rule_op_chapters_last' => 'Chapters Last',
// Maintenance settings
'maint' => 'Manutenção',

View File

@ -128,12 +128,12 @@ return [
'comment_delete' => 'удалил комментарий',
// Sort Rules
'sort_rule_create' => 'создал правило сортировки',
'sort_rule_create_notification' => 'Правило сортировки успешно создано',
'sort_rule_update' => 'обновил правило сортировки',
'sort_rule_update_notification' => 'Правило сортировки успешно обновлено',
'sort_rule_delete' => 'удалил правило сортировки',
'sort_rule_delete_notification' => 'Правило сортировки успешно удалено',
'sort_rule_create' => 'created sort rule',
'sort_rule_create_notification' => 'Sort rule successfully created',
'sort_rule_update' => 'updated sort rule',
'sort_rule_update_notification' => 'Sort rule successfully updated',
'sort_rule_delete' => 'deleted sort rule',
'sort_rule_delete_notification' => 'Sort rule successfully deleted',
// Other
'permissions_update' => 'обновил разрешения',

View File

@ -109,5 +109,5 @@ return [
'terms_of_service' => 'Условия использования',
// OpenSearch
'opensearch_description' => 'Поиск :appName',
'opensearch_description' => 'Search :appName',
];

View File

@ -13,7 +13,7 @@ return [
'cancel' => 'Отмена',
'save' => 'Сохранить',
'close' => 'Закрыть',
'apply' => 'Применить',
'apply' => 'Apply',
'undo' => 'Отменить',
'redo' => 'Повторить',
'left' => 'Слева',

View File

@ -43,9 +43,9 @@ return [
'default_template' => 'Шаблон страницы по умолчанию',
'default_template_explain' => 'Назначить шаблон страницы, который будет использоваться в качестве содержимого по умолчанию для всех страниц, созданных в этом элементе. Имейте в виду, что это будет работать, только если создатель страницы имеет доступ к выбранной странице шаблона.',
'default_template_select' => 'Выберите страницу шаблона',
'import' => 'Импорт',
'import' => 'Import',
'import_validate' => 'Validate Import',
'import_desc' => 'Импортировать книги, главы и страницы с помощью ZIP-файла, экспортированного из этого или другого источника. Выберите ZIP-файл, чтобы продолжить. После загрузки и проверки файла вы сможете настроить и подтвердить импорт в следующем окне.',
'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
'import_zip_select' => 'Select ZIP file to upload',
'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
'import_pending' => 'Pending Imports',
@ -248,7 +248,7 @@ return [
'pages_edit_switch_to_markdown_stable' => 'Полное сохранение форматирования (HTML)',
'pages_edit_switch_to_wysiwyg' => 'Переключиться в WYSIWYG',
'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
'pages_edit_switch_to_new_wysiwyg_desc' => '(В Альфа-тестировании)',
'pages_edit_switch_to_new_wysiwyg_desc' => '(In Alpha Testing)',
'pages_edit_set_changelog' => 'Задать список изменений',
'pages_edit_enter_changelog_desc' => 'Введите краткое описание внесенных изменений',
'pages_edit_enter_changelog' => 'Введите список изменений',

View File

@ -111,11 +111,11 @@ return [
'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
'import_validation_failed' => 'Import ZIP failed to validate with errors:',
'import_zip_failed_notification' => 'Failed to import ZIP file.',
'import_perms_books' => 'У вас недостаточно прав для создания книг.',
'import_perms_chapters' => 'У вас недостаточно прав для создания глав.',
'import_perms_pages' => 'У вас недостаточно прав для создания страниц.',
'import_perms_images' => 'У вас недостаточно прав для создания изображений.',
'import_perms_attachments' => 'У вас недостаточно прав для создания вложений.',
'import_perms_books' => 'You are lacking the required permissions to create books.',
'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
'import_perms_pages' => 'You are lacking the required permissions to create pages.',
'import_perms_images' => 'You are lacking the required permissions to create images.',
'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
// API errors
'api_no_authorization_found' => 'Отсутствует токен авторизации в запросе',

View File

@ -75,34 +75,34 @@ return [
'reg_confirm_restrict_domain_placeholder' => 'Без ограничений',
// Sorting Settings
'sorting' => 'Сортировка',
'sorting_book_default' => 'Сортировка книг по умолчанию',
'sorting_book_default_desc' => 'Выберите правило сортировки по умолчанию для новых книг. Это не повлияет на существующие книги, и может быть изменено для каждой книги отдельно.',
'sorting_rules' => 'Правила сортировки',
'sorting_rules_desc' => 'Выберите правило сортировки по умолчанию для новых книг. Это не повлияет на существующие книги и может быть изменено для каждой книги отдельно.',
'sort_rule_assigned_to_x_books' => 'Используется в :count книгах',
'sort_rule_create' => 'Создать правило сортировки',
'sorting' => 'Sorting',
'sorting_book_default' => 'Default Book Sort',
'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
'sorting_rules' => 'Sort Rules',
'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
'sort_rule_create' => 'Create Sort Rule',
'sort_rule_edit' => 'Edit Sort Rule',
'sort_rule_delete' => 'Удалить правило сортировки',
'sort_rule_delete_desc' => 'Удалить это правило сортировки из системы. Книги, использующие эту сортировку, вернутся к ручной сортировке.',
'sort_rule_delete' => 'Delete Sort Rule',
'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
'sort_rule_delete_warn_default' => 'Это правило сортировки используется по умолчанию для книг. Вы уверены, что хотите удалить его?',
'sort_rule_details' => 'Детали правила сортировки',
'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
'sort_rule_details' => 'Sort Rule Details',
'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
'sort_rule_operations' => 'Sort Operations',
'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
'sort_rule_available_operations' => 'Доступные операции',
'sort_rule_available_operations' => 'Available Operations',
'sort_rule_available_operations_empty' => 'No operations remaining',
'sort_rule_configured_operations' => 'Configured Operations',
'sort_rule_configured_operations_empty' => 'Перетащите/добавьте операции из списка "Доступные операции"',
'sort_rule_op_asc' => '(Возрастание)',
'sort_rule_op_desc' => '(Убывание)',
'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
'sort_rule_op_asc' => '(Asc)',
'sort_rule_op_desc' => '(Desc)',
'sort_rule_op_name' => 'Name - Alphabetical',
'sort_rule_op_name_numeric' => 'По нумерации',
'sort_rule_op_name_numeric' => 'Name - Numeric',
'sort_rule_op_created_date' => 'Created Date',
'sort_rule_op_updated_date' => 'Updated Date',
'sort_rule_op_chapters_first' => 'Chapters First',
'sort_rule_op_chapters_last' => 'Главы в конце',
'sort_rule_op_chapters_last' => 'Chapters Last',
// Maintenance settings
'maint' => 'Обслуживание',

View File

@ -59,7 +59,7 @@ return [
'favourite_remove_notification' => '":name" odstranjen iz priljubljenih',
// Watching
'watch_update_level_notification' => 'Nastavitve spremljanja uspešno posodobljene',
'watch_update_level_notification' => 'Nastavitve opazovanja uspešno posodobljene',
// Auth
'auth_login' => 'prijavljen',

View File

@ -27,10 +27,10 @@ return [
'ldap_email_hint' => 'Prosimo vpišite e-poštni naslov za ta račun.',
'create_account' => 'Ustvari račun',
'already_have_account' => 'Že imate račun?',
'dont_have_account' => 'Nimaš računa?',
'dont_have_account' => 'Nimate računa?',
'social_login' => 'Prijava z računi družbenih omrežij',
'social_registration' => 'Registracija z družbenim omrežjem',
'social_registration_text' => 'Registriraj in prijavi se z uporabo drugih možnosti.',
'social_registration_text' => 'Registrirajte in prijavite se za uporabo drugih možnosti.',
'register_thanks' => 'Hvala za registracijo!',
'register_confirm' => 'Prosimo preverite vaš e-poštni predal in kliknite na potrditveni gumb za dostop :appName.',
@ -40,7 +40,7 @@ return [
// Login auto-initiation
'auto_init_starting' => 'Attempting Login',
'auto_init_starting_desc' => 'Kontaktiram tvoj sistem za preverjanje pristnosti za pričetek procesa prijave. V primeru, da se nič ne zgodi v naslednjih 5 sekundah, klikni spodnjo povezavo.',
'auto_init_starting_desc' => 'We\'re contacting your authentication system to start the login process. If there\'s no progress after 5 seconds you can try clicking the link below.',
'auto_init_start_link' => 'Proceed with authentication',
// Password Reset

View File

@ -44,12 +44,12 @@ return [
'configure' => 'Configure',
'manage' => 'Manage',
'fullscreen' => 'Celozaslonski način',
'favourite' => 'Priljubljeno',
'unfavourite' => 'Ni priljubljeno',
'next' => 'Naprej',
'previous' => 'Nazaj',
'favourite' => 'Favourite',
'unfavourite' => 'Unfavourite',
'next' => 'Next',
'previous' => 'Previous',
'filter_active' => 'Active Filter:',
'filter_clear' => 'Počisti filter',
'filter_clear' => 'Clear Filter',
'download' => 'Download',
'open_in_tab' => 'Open in Tab',
'open' => 'Open',
@ -91,7 +91,7 @@ return [
'edit_profile' => 'Uredi profil',
'dark_mode' => 'Način temnega zaslona',
'light_mode' => 'Način svetlega zaslona',
'global_search' => 'Globalno iskanje',
'global_search' => 'Global Search',
// Layout tabs
'tab_info' => 'Informacije',

View File

@ -29,8 +29,8 @@ return [
'images' => 'Slike',
'my_recent_drafts' => 'Moji nedavni osnutki',
'my_recently_viewed' => 'Nedavno prikazano',
'my_most_viewed_favourites' => 'Največkrat gledane priljubljene strani',
'my_favourites' => 'Priljubljene',
'my_most_viewed_favourites' => 'My Most Viewed Favourites',
'my_favourites' => 'My Favourites',
'no_pages_viewed' => 'Niste si ogledali še nobene strani',
'no_pages_recently_created' => 'Nedavno ni bila ustvarjena nobena stran',
'no_pages_recently_updated' => 'Nedavno ni bila posodobljena nobena stran',
@ -66,7 +66,7 @@ return [
// Permissions and restrictions
'permissions' => 'Dovoljenja',
'permissions_desc' => 'Nastavi dovoljenja bolj podrobno, kot to določajo uporabniške vloge.',
'permissions_desc' => 'Set permissions here to override the default permissions provided by user roles.',
'permissions_book_cascade' => 'Permissions set on books will automatically cascade to child chapters and pages, unless they have their own permissions defined.',
'permissions_chapter_cascade' => 'Permissions set on chapters will automatically cascade to child pages, unless they have their own permissions defined.',
'permissions_save' => 'Shrani dovoljenja',
@ -78,7 +78,7 @@ return [
// Search
'search_results' => 'Rezultati iskanja',
'search_total_results_found' => ':count najdenih rezultatov|:count skupno najdenih rezultatov',
'search_total_results_found' => ':count najdenih rezultatov|:count skupaj najdenih rezultatov',
'search_clear' => 'Počisti iskanje',
'search_no_pages' => 'Nobena stran se ne ujema z vašim iskanjem',
'search_for_term' => 'Išči :term',
@ -101,7 +101,7 @@ return [
'search_created_before' => 'Ustvarjeno pred',
'search_created_after' => 'Ustvarjeno po',
'search_set_date' => 'Nastavi datum',
'search_update' => 'Išči ponovno',
'search_update' => 'Posodobi iskanje',
// Shelves
'shelf' => 'Polica',
@ -141,7 +141,7 @@ return [
'books' => 'Knjige',
'x_books' => ':count Knjiga|:count Knjig',
'books_empty' => 'Ustvarjena ni bila nobena knjiga',
'books_popular' => 'Priljubljene knjige',
'books_popular' => 'Priljubjene knjige',
'books_recent' => 'Zadnje knjige',
'books_new' => 'Nove knjige',
'books_new_action' => 'Nova knjiga',
@ -220,7 +220,7 @@ return [
'page' => 'Stran',
'pages' => 'Strani',
'x_pages' => ':count Stran|:count Strani',
'pages_popular' => 'Priljubljene knjige',
'pages_popular' => 'Priljubjene strani',
'pages_new' => 'Nova stran',
'pages_attachments' => 'Priponke',
'pages_navigation' => 'Navigacija po strani',
@ -442,7 +442,7 @@ return [
'watch_desc_default' => 'Revert watching to just your default notification preferences.',
'watch_title_ignore' => 'Ignore',
'watch_desc_ignore' => 'Ignore all notifications, including those from user-level preferences.',
'watch_title_new' => 'Nove strani',
'watch_title_new' => 'New Pages',
'watch_desc_new' => 'Notify when any new page is created within this item.',
'watch_title_updates' => 'All Page Updates',
'watch_desc_updates' => 'Notify upon all new pages and page changes.',

View File

@ -96,7 +96,7 @@ return [
// Error pages
'404_page_not_found' => 'Strani ni mogoče najti',
'sorry_page_not_found' => 'Oprostite, strani ki jo iščete, ni mogoče najti.',
'sorry_page_not_found_permission_warning' => 'Stran ne obstaja ali pa za ogled nimaš ustreznih pravic.',
'sorry_page_not_found_permission_warning' => 'Če pričakujete, da ta stran obstaja, mogoče nimate pravic ogleda zanjo.',
'image_not_found' => 'Image Not Found',
'image_not_found_subtitle' => 'Sorry, The image file you were looking for could not be found.',
'image_not_found_details' => 'If you expected this image to exist it might have been deleted.',

View File

@ -6,7 +6,7 @@
*/
return [
'previous' => '&laquo; Nazaj',
'next' => 'Naprej &raquo;',
'previous' => '&laquo; Predhodno',
'next' => 'Naslednje &raquo;',
];

View File

@ -64,9 +64,9 @@ return [
'reg_settings' => 'registracija',
'reg_enable' => 'onemogočena registracija',
'reg_enable_toggle' => 'omogočena registracija',
'reg_enable_desc' => 'Ko je registracija omogočena, se bo uporabnik lahko prijavil sam kot uporabnik aplikacije. Po registraciji je uporabniku dodeljena privzeta vloga.',
'reg_enable_desc' => 'Ko je registracija omogočena, se bo uporabnik lahko prijavil sam kot uporabnik aplikacije. Po registraciji je uporabniku dodeljena ena prevzeta vloga.',
'reg_default_role' => 'prevzeta uporabniška vloga po registraciji',
'reg_enable_external_warning' => 'Ta možnosti je prezrta, ko je aktivno zunanja LDAP ali SAML preverjanje pristnosti. Uporabniški računi za neobstoječe uporabnike bodo avtomatično ustvarjeni po uspešnem zunanjem preverjanju pristnosti.',
'reg_enable_external_warning' => 'Ta možnosti je ignorirana ko zunanja LDAP ali SAML avtentikacija je akitivna. Uporabniški računi za ne obstoječe uporabnike bodo avtomatsko izdelani, če avtentikacija zunanjih uporabljenih sistemov je uspešna.',
'reg_email_confirmation' => 'potrditev e-pošte',
'reg_email_confirmation_toggle' => 'potrebna potrditev e-pošte',
'reg_confirm_email_desc' => 'Če uporabite omejitev domene, bo potrebna potrditev e-pošte in ta možnost bo prezrta.',
@ -167,7 +167,7 @@ return [
'roles' => 'Vloge',
'role_user_roles' => 'Vloge uporabnika',
'roles_index_desc' => 'Roles are used to group users & provide system permission to their members. When a user is a member of multiple roles the privileges granted will stack and the user will inherit all abilities.',
'roles_x_users_assigned' => ':count uporabnik v tej vlogi|:count uporabnikov v tej vlogi',
'roles_x_users_assigned' => ':count user assigned|:count users assigned',
'roles_x_permissions_provided' => ':count permission|:count permissions',
'roles_assigned_users' => 'Assigned Users',
'roles_permissions_provided' => 'Provided Permissions',
@ -223,7 +223,7 @@ return [
'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 8 characters long.',
'users_send_invite_text' => 'Uporabniku lahko pošljete e-poštno sporočilo s povabilom, ki mu omogoča, da nastavi svoje geslo, ali pa ga nastavite kar sami.',
'users_send_invite_option' => 'Pošlji uporabniku e-poštno povabilo',
'users_external_auth_id' => 'Zunanji ID za preverjanje pristnosti (Authentication ID)',
'users_external_auth_id' => 'Zunanje dokazilo ID',
'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
'users_system_public' => 'Ta uporabnik predstavlja vse gostujoče uporabnike, ki obiščejo vašo wiki stran. Za prijavo je ni mogoče uporabiti, ampak je dodeljena samodejno.',

View File

@ -128,12 +128,12 @@ return [
'comment_delete' => '评论已删除',
// Sort Rules
'sort_rule_create' => '创建排序规则',
'sort_rule_create_notification' => '排序规则创建成功',
'sort_rule_update' => '更新排序规则',
'sort_rule_update_notification' => '排序规则更新成功',
'sort_rule_delete' => '删除排序规则',
'sort_rule_delete_notification' => '排序规则删除成功',
'sort_rule_create' => 'created sort rule',
'sort_rule_create_notification' => 'Sort rule successfully created',
'sort_rule_update' => 'updated sort rule',
'sort_rule_update_notification' => 'Sort rule successfully updated',
'sort_rule_delete' => 'deleted sort rule',
'sort_rule_delete_notification' => 'Sort rule successfully deleted',
// Other
'permissions_update' => '权限已更新',

View File

@ -13,7 +13,7 @@ return [
'cancel' => '取消',
'save' => '保存',
'close' => '关闭',
'apply' => '应用',
'apply' => 'Apply',
'undo' => '撤销',
'redo' => '重做',
'left' => '左对齐',
@ -148,7 +148,7 @@ return [
'url' => '网址',
'text_to_display' => '要显示的文本',
'title' => '标题',
'browse_links' => '浏览链接',
'browse_links' => 'Browse links',
'open_link' => '打开链接',
'open_link_in' => '打开链接于……',
'open_link_current' => '覆盖当前窗口',

View File

@ -167,7 +167,7 @@ return [
'books_navigation' => '图书导航',
'books_sort' => '排序图书内容',
'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
'books_sort_auto_sort' => '自动排序选项',
'books_sort_auto_sort' => 'Auto Sort Option',
'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
'books_sort_named' => '排序图书「:bookName」',
'books_sort_name' => '按名称排序',

View File

@ -75,7 +75,7 @@ return [
'reg_confirm_restrict_domain_placeholder' => '尚未设置限制',
// Sorting Settings
'sorting' => '排序',
'sorting' => 'Sorting',
'sorting_book_default' => 'Default Book Sort',
'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
'sorting_rules' => 'Sort Rules',

View File

@ -128,12 +128,12 @@ return [
'comment_delete' => '已刪除之評論',
// Sort Rules
'sort_rule_create' => '已建立的排序規則',
'sort_rule_create_notification' => '排序規則已成功建立',
'sort_rule_update' => '已更新排序規則',
'sort_rule_update_notification' => '排序規則已成功更新',
'sort_rule_delete' => '已刪除排序規則',
'sort_rule_delete_notification' => '排序規則已成功刪除',
'sort_rule_create' => 'created sort rule',
'sort_rule_create_notification' => 'Sort rule successfully created',
'sort_rule_update' => 'updated sort rule',
'sort_rule_update_notification' => 'Sort rule successfully updated',
'sort_rule_delete' => 'deleted sort rule',
'sort_rule_delete_notification' => 'Sort rule successfully deleted',
// Other
'permissions_update' => '更新權限',

View File

@ -13,7 +13,7 @@ return [
'cancel' => '取消',
'save' => '保存',
'close' => '關閉',
'apply' => '套用',
'apply' => 'Apply',
'undo' => '復原',
'redo' => '重做',
'left' => '左側',
@ -148,7 +148,7 @@ return [
'url' => '網址',
'text_to_display' => '要顯示的文字',
'title' => '標題',
'browse_links' => '瀏覽連結',
'browse_links' => 'Browse links',
'open_link' => '開啟連結',
'open_link_in' => '打開連結於……',
'open_link_current' => '當前視窗',
@ -165,8 +165,8 @@ return [
'about' => '關於編輯器',
'about_title' => '關於所見即所得(WYSIWYG)編輯器',
'editor_license' => '編輯器許可證與版權信息',
'editor_lexical_license' => '這個編輯器是從 :lexicalLink 分支出來的,而 :lexicalLink 是以 MIT 授權條款散佈。',
'editor_lexical_license_link' => '完整的授權條款詳細資訊可在這裡找到。',
'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
'editor_lexical_license_link' => 'Full license details can be found here.',
'editor_tiny_license' => '此編輯器是用 :tinyLink 構建的,基於 MIT 許可證。',
'editor_tiny_license_link' => 'TinyMCE 的版權和許可證詳細信息可以在這裡找到。',
'save_continue' => '保存頁面並繼續',

View File

@ -166,9 +166,9 @@ return [
'books_search_this' => '搜尋此書本',
'books_navigation' => '書本導覽',
'books_sort' => '排序書本內容',
'books_sort_desc' => '在書籍中移動章節和頁面,重新安排其內容。可加入其他書籍,方便在書籍之間移動章節與頁面。可選擇設定自動排序規則,以便在變更時自動排序此書籍的內容。',
'books_sort_auto_sort' => '自動排序選項',
'books_sort_auto_sort_active' => '自動排序啟動::sortName',
'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
'books_sort_auto_sort' => 'Auto Sort Option',
'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
'books_sort_named' => '排序書本 :bookName',
'books_sort_name' => '按名稱排序',
'books_sort_created' => '按建立時間排序',

View File

@ -75,34 +75,34 @@ return [
'reg_confirm_restrict_domain_placeholder' => '尚未設定限制',
// Sorting Settings
'sorting' => '排序',
'sorting_book_default' => '預設書籍排序',
'sorting_book_default_desc' => '選取要套用至新書籍的預設排序規則。這不會影響現有書籍,並可按書籍覆寫。',
'sorting_rules' => '排序規則',
'sorting_rules_desc' => '這些是預先定義的排序作業,可套用於系統中的內容。',
'sort_rule_assigned_to_x_books' => '指定給 :count 本書',
'sort_rule_create' => '建立排序規則',
'sort_rule_edit' => '編輯排序規則',
'sort_rule_delete' => '刪除排序規則',
'sort_rule_delete_desc' => '從系統移除此排序規則。使用此排序的書籍將會還原為手動排序。',
'sort_rule_delete_warn_books' => '此排序規則目前用於 :count 本書。您確定您想要刪除嗎?',
'sort_rule_delete_warn_default' => '此排序規則目前為書籍的預設值。您確定您想要刪除嗎?',
'sort_rule_details' => '排序規則詳細資訊',
'sort_rule_details_desc' => '設定此排序規則的名稱,當使用者選取排序時,該名稱將會出現在清單中。',
'sort_rule_operations' => '排序選項',
'sort_rule_operations_desc' => '設定要執行的排序動作,方法是從可用的操作清單中移動它們。使用時,操作將依從上到下的順序套用。儲存時,在此處所做的任何變更都會套用至所有指定的書籍。',
'sort_rule_available_operations' => '可用操作',
'sort_rule_available_operations_empty' => '無剩餘操作',
'sort_rule_configured_operations' => '已設定的操作',
'sort_rule_configured_operations_empty' => '從「可用操作」清單中拖曳/新增操作',
'sort_rule_op_asc' => '(遞增)',
'sort_rule_op_desc' => '(遞減)',
'sort_rule_op_name' => '名稱 - 按字母順序排列',
'sort_rule_op_name_numeric' => '名稱 - 數字',
'sort_rule_op_created_date' => '建立日期',
'sort_rule_op_updated_date' => '更新日期',
'sort_rule_op_chapters_first' => '第一章',
'sort_rule_op_chapters_last' => '最後一章',
'sorting' => 'Sorting',
'sorting_book_default' => 'Default Book Sort',
'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
'sorting_rules' => 'Sort Rules',
'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
'sort_rule_create' => 'Create Sort Rule',
'sort_rule_edit' => 'Edit Sort Rule',
'sort_rule_delete' => 'Delete Sort Rule',
'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
'sort_rule_details' => 'Sort Rule Details',
'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
'sort_rule_operations' => 'Sort Operations',
'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
'sort_rule_available_operations' => 'Available Operations',
'sort_rule_available_operations_empty' => 'No operations remaining',
'sort_rule_configured_operations' => 'Configured Operations',
'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
'sort_rule_op_asc' => '(Asc)',
'sort_rule_op_desc' => '(Desc)',
'sort_rule_op_name' => 'Name - Alphabetical',
'sort_rule_op_name_numeric' => 'Name - Numeric',
'sort_rule_op_created_date' => 'Created Date',
'sort_rule_op_updated_date' => 'Updated Date',
'sort_rule_op_chapters_first' => 'Chapters First',
'sort_rule_op_chapters_last' => 'Chapters Last',
// Maintenance settings
'maint' => '維護',

33
public/dist/app.js vendored Normal file

File diff suppressed because one or more lines are too long

32
public/dist/code.js vendored Normal file

File diff suppressed because one or more lines are too long

1
public/dist/export-styles.css vendored Normal file

File diff suppressed because one or more lines are too long

3
public/dist/legacy-modes.js vendored Normal file

File diff suppressed because one or more lines are too long

23
public/dist/markdown.js vendored Normal file

File diff suppressed because one or more lines are too long

1
public/dist/styles.css vendored Normal file

File diff suppressed because one or more lines are too long

31
public/dist/wysiwyg.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -112,7 +112,7 @@ export class PageEditor extends Component {
}
savePage() {
this.container.closest('form').requestSubmit();
this.container.closest('form').submit();
}
async saveDraft() {

View File

@ -25,7 +25,6 @@ export class WysiwygEditor extends Component {
textDirection: this.$opts.textDirection,
translations,
});
window.wysiwyg = this.editor;
});
let handlingFormSubmit = false;
@ -39,9 +38,7 @@ export class WysiwygEditor extends Component {
handlingFormSubmit = true;
this.editor.getContentAsHtml().then(html => {
this.input.value = html;
setTimeout(() => {
this.input.form.requestSubmit();
}, 5);
this.input.form.submit();
});
} else {
handlingFormSubmit = false;

View File

@ -37,7 +37,6 @@ import {QuoteNode} from "@lexical/rich-text/LexicalQuoteNode";
import {DetailsNode} from "@lexical/rich-text/LexicalDetailsNode";
import {EditorUiContext} from "../../../../ui/framework/core";
import {EditorUIManager} from "../../../../ui/framework/manager";
import {ImageNode} from "@lexical/rich-text/LexicalImageNode";
type TestEnv = {
readonly container: HTMLDivElement;
@ -485,9 +484,6 @@ export function createTestContext(): EditorUiContext {
const editor = createTestEditor({
namespace: 'testing',
theme: {},
nodes: [
ImageNode,
]
});
editor.setRootElement(editorDOM);

View File

@ -332,19 +332,7 @@ function isDomChecklist(domNode: HTMLElement) {
}
// if children are checklist items, the node is a checklist ul. Applicable for googledoc checklist pasting.
for (const child of domNode.childNodes) {
if (!isHTMLElement(child)) {
continue;
}
if (child.hasAttribute('aria-checked')) {
return true;
}
if (child.classList.contains('task-list-item')) {
return true;
}
if (child.firstElementChild && child.firstElementChild.matches('input[type="checkbox"]')) {
if (isHTMLElement(child) && child.hasAttribute('aria-checked')) {
return true;
}
}

View File

@ -6,7 +6,7 @@
*
*/
import {ParagraphNode, TextNode} from 'lexical';
import {createTestContext} from 'lexical/__tests__/utils';
import {initializeUnitTest} from 'lexical/__tests__/utils';
import {
$createListItemNode,
@ -16,7 +16,6 @@ import {
ListItemNode,
ListNode,
} from '../..';
import {$htmlToBlockNodes} from "../../../../utils/nodes";
const editorConfig = Object.freeze({
namespace: '',
@ -47,122 +46,123 @@ const editorConfig = Object.freeze({
});
describe('LexicalListNode tests', () => {
test('ListNode.constructor', async () => {
const {editor} = createTestContext();
initializeUnitTest((testEnv) => {
test('ListNode.constructor', async () => {
const {editor} = testEnv;
await editor.update(() => {
const listNode = $createListNode('bullet', 1);
expect(listNode.getType()).toBe('list');
expect(listNode.getTag()).toBe('ul');
expect(listNode.getTextContent()).toBe('');
await editor.update(() => {
const listNode = $createListNode('bullet', 1);
expect(listNode.getType()).toBe('list');
expect(listNode.getTag()).toBe('ul');
expect(listNode.getTextContent()).toBe('');
});
// @ts-expect-error
expect(() => $createListNode()).toThrow();
});
// @ts-expect-error
expect(() => $createListNode()).toThrow();
});
test('ListNode.getTag()', async () => {
const {editor} = testEnv;
test('ListNode.getTag()', async () => {
const {editor} = createTestContext();
await editor.update(() => {
const ulListNode = $createListNode('bullet', 1);
expect(ulListNode.getTag()).toBe('ul');
const olListNode = $createListNode('number', 1);
expect(olListNode.getTag()).toBe('ol');
const checkListNode = $createListNode('check', 1);
expect(checkListNode.getTag()).toBe('ul');
await editor.update(() => {
const ulListNode = $createListNode('bullet', 1);
expect(ulListNode.getTag()).toBe('ul');
const olListNode = $createListNode('number', 1);
expect(olListNode.getTag()).toBe('ol');
const checkListNode = $createListNode('check', 1);
expect(checkListNode.getTag()).toBe('ul');
});
});
});
test('ListNode.createDOM()', async () => {
const {editor} = createTestContext();
test('ListNode.createDOM()', async () => {
const {editor} = testEnv;
await editor.update(() => {
const listNode = $createListNode('bullet', 1);
expect(listNode.createDOM(editorConfig).outerHTML).toBe(
await editor.update(() => {
const listNode = $createListNode('bullet', 1);
expect(listNode.createDOM(editorConfig).outerHTML).toBe(
'<ul class="my-ul-list-class my-ul-list-class-1"></ul>',
);
expect(
);
expect(
listNode.createDOM({
namespace: '',
theme: {
list: {},
},
}).outerHTML,
).toBe('<ul></ul>');
expect(
).toBe('<ul></ul>');
expect(
listNode.createDOM({
namespace: '',
theme: {},
}).outerHTML,
).toBe('<ul></ul>');
).toBe('<ul></ul>');
});
});
});
test('ListNode.createDOM() correctly applies classes to a nested ListNode', async () => {
const {editor} = createTestContext();
test('ListNode.createDOM() correctly applies classes to a nested ListNode', async () => {
const {editor} = testEnv;
await editor.update(() => {
const listNode1 = $createListNode('bullet');
const listNode2 = $createListNode('bullet');
const listNode3 = $createListNode('bullet');
const listNode4 = $createListNode('bullet');
const listNode5 = $createListNode('bullet');
const listNode6 = $createListNode('bullet');
const listNode7 = $createListNode('bullet');
await editor.update(() => {
const listNode1 = $createListNode('bullet');
const listNode2 = $createListNode('bullet');
const listNode3 = $createListNode('bullet');
const listNode4 = $createListNode('bullet');
const listNode5 = $createListNode('bullet');
const listNode6 = $createListNode('bullet');
const listNode7 = $createListNode('bullet');
const listItem1 = $createListItemNode();
const listItem2 = $createListItemNode();
const listItem3 = $createListItemNode();
const listItem4 = $createListItemNode();
const listItem1 = $createListItemNode();
const listItem2 = $createListItemNode();
const listItem3 = $createListItemNode();
const listItem4 = $createListItemNode();
listNode1.append(listItem1);
listItem1.append(listNode2);
listNode2.append(listItem2);
listItem2.append(listNode3);
listNode3.append(listItem3);
listItem3.append(listNode4);
listNode4.append(listItem4);
listNode4.append(listNode5);
listNode5.append(listNode6);
listNode6.append(listNode7);
listNode1.append(listItem1);
listItem1.append(listNode2);
listNode2.append(listItem2);
listItem2.append(listNode3);
listNode3.append(listItem3);
listItem3.append(listNode4);
listNode4.append(listItem4);
listNode4.append(listNode5);
listNode5.append(listNode6);
listNode6.append(listNode7);
expect(listNode1.createDOM(editorConfig).outerHTML).toBe(
expect(listNode1.createDOM(editorConfig).outerHTML).toBe(
'<ul class="my-ul-list-class my-ul-list-class-1"></ul>',
);
expect(
);
expect(
listNode1.createDOM({
namespace: '',
theme: {
list: {},
},
}).outerHTML,
).toBe('<ul></ul>');
expect(
).toBe('<ul></ul>');
expect(
listNode1.createDOM({
namespace: '',
theme: {},
}).outerHTML,
).toBe('<ul></ul>');
expect(listNode2.createDOM(editorConfig).outerHTML).toBe(
).toBe('<ul></ul>');
expect(listNode2.createDOM(editorConfig).outerHTML).toBe(
'<ul class="my-ul-list-class my-ul-list-class-2"></ul>',
);
expect(listNode3.createDOM(editorConfig).outerHTML).toBe(
);
expect(listNode3.createDOM(editorConfig).outerHTML).toBe(
'<ul class="my-ul-list-class my-ul-list-class-3"></ul>',
);
expect(listNode4.createDOM(editorConfig).outerHTML).toBe(
);
expect(listNode4.createDOM(editorConfig).outerHTML).toBe(
'<ul class="my-ul-list-class my-ul-list-class-4"></ul>',
);
expect(listNode5.createDOM(editorConfig).outerHTML).toBe(
);
expect(listNode5.createDOM(editorConfig).outerHTML).toBe(
'<ul class="my-ul-list-class my-ul-list-class-5"></ul>',
);
expect(listNode6.createDOM(editorConfig).outerHTML).toBe(
);
expect(listNode6.createDOM(editorConfig).outerHTML).toBe(
'<ul class="my-ul-list-class my-ul-list-class-6"></ul>',
);
expect(listNode7.createDOM(editorConfig).outerHTML).toBe(
);
expect(listNode7.createDOM(editorConfig).outerHTML).toBe(
'<ul class="my-ul-list-class my-ul-list-class-7"></ul>',
);
expect(
);
expect(
listNode5.createDOM({
namespace: '',
theme: {
@ -176,135 +176,123 @@ describe('LexicalListNode tests', () => {
},
},
}).outerHTML,
).toBe('<ul class="my-ul-list-class my-ul-list-class-2"></ul>');
).toBe('<ul class="my-ul-list-class my-ul-list-class-2"></ul>');
});
});
});
test('ListNode.updateDOM()', async () => {
const {editor} = createTestContext();
test('ListNode.updateDOM()', async () => {
const {editor} = testEnv;
await editor.update(() => {
const listNode = $createListNode('bullet', 1);
const domElement = listNode.createDOM(editorConfig);
await editor.update(() => {
const listNode = $createListNode('bullet', 1);
const domElement = listNode.createDOM(editorConfig);
expect(domElement.outerHTML).toBe(
expect(domElement.outerHTML).toBe(
'<ul class="my-ul-list-class my-ul-list-class-1"></ul>',
);
);
const newListNode = $createListNode('number', 1);
const result = newListNode.updateDOM(
const newListNode = $createListNode('number', 1);
const result = newListNode.updateDOM(
listNode,
domElement,
editorConfig,
);
);
expect(result).toBe(true);
expect(domElement.outerHTML).toBe(
expect(result).toBe(true);
expect(domElement.outerHTML).toBe(
'<ul class="my-ul-list-class my-ul-list-class-1"></ul>',
);
);
});
});
});
test('ListNode.append() should properly transform a ListItemNode', async () => {
const {editor} = createTestContext();
test('ListNode.append() should properly transform a ListItemNode', async () => {
const {editor} = testEnv;
await editor.update(() => {
const listNode = new ListNode('bullet', 1);
const listItemNode = new ListItemNode();
const textNode = new TextNode('Hello');
await editor.update(() => {
const listNode = new ListNode('bullet', 1);
const listItemNode = new ListItemNode();
const textNode = new TextNode('Hello');
listItemNode.append(textNode);
const nodesToAppend = [listItemNode];
listItemNode.append(textNode);
const nodesToAppend = [listItemNode];
expect(listNode.append(...nodesToAppend)).toBe(listNode);
expect(listNode.getFirstChild()).toBe(listItemNode);
expect(listNode.getFirstChild()?.getTextContent()).toBe('Hello');
expect(listNode.append(...nodesToAppend)).toBe(listNode);
expect(listNode.getFirstChild()).toBe(listItemNode);
expect(listNode.getFirstChild()?.getTextContent()).toBe('Hello');
});
});
});
test('ListNode.append() should properly transform a ListNode', async () => {
const {editor} = createTestContext();
test('ListNode.append() should properly transform a ListNode', async () => {
const {editor} = testEnv;
await editor.update(() => {
const listNode = new ListNode('bullet', 1);
const nestedListNode = new ListNode('bullet', 1);
const listItemNode = new ListItemNode();
const textNode = new TextNode('Hello');
await editor.update(() => {
const listNode = new ListNode('bullet', 1);
const nestedListNode = new ListNode('bullet', 1);
const listItemNode = new ListItemNode();
const textNode = new TextNode('Hello');
listItemNode.append(textNode);
nestedListNode.append(listItemNode);
listItemNode.append(textNode);
nestedListNode.append(listItemNode);
const nodesToAppend = [nestedListNode];
const nodesToAppend = [nestedListNode];
expect(listNode.append(...nodesToAppend)).toBe(listNode);
expect($isListItemNode(listNode.getFirstChild())).toBe(true);
expect(listNode.getFirstChild<ListItemNode>()!.getFirstChild()).toBe(
expect(listNode.append(...nodesToAppend)).toBe(listNode);
expect($isListItemNode(listNode.getFirstChild())).toBe(true);
expect(listNode.getFirstChild<ListItemNode>()!.getFirstChild()).toBe(
nestedListNode,
);
});
});
test('ListNode.append() should properly transform a ParagraphNode', async () => {
const {editor} = createTestContext();
await editor.update(() => {
const listNode = new ListNode('bullet', 1);
const paragraph = new ParagraphNode();
const textNode = new TextNode('Hello');
paragraph.append(textNode);
const nodesToAppend = [paragraph];
expect(listNode.append(...nodesToAppend)).toBe(listNode);
expect($isListItemNode(listNode.getFirstChild())).toBe(true);
expect(listNode.getFirstChild()?.getTextContent()).toBe('Hello');
});
});
test('$createListNode()', async () => {
const {editor} = createTestContext();
await editor.update(() => {
const listNode = $createListNode('bullet', 1);
const createdListNode = $createListNode('bullet');
expect(listNode.__type).toEqual(createdListNode.__type);
expect(listNode.__parent).toEqual(createdListNode.__parent);
expect(listNode.__tag).toEqual(createdListNode.__tag);
expect(listNode.__key).not.toEqual(createdListNode.__key);
});
});
test('$isListNode()', async () => {
const {editor} = createTestContext();
await editor.update(() => {
const listNode = $createListNode('bullet', 1);
expect($isListNode(listNode)).toBe(true);
});
});
test('$createListNode() with tag name (backward compatibility)', async () => {
const {editor} = createTestContext();
await editor.update(() => {
const numberList = $createListNode('number', 1);
const bulletList = $createListNode('bullet', 1);
expect(numberList.__listType).toBe('number');
expect(bulletList.__listType).toBe('bullet');
});
});
test('importDOM handles old editor expected task list format', async () => {
const {editor} = createTestContext();
let list!: ListNode;
editor.update(() => {
const nodes = $htmlToBlockNodes(editor, `<ul><li class="task-list-item"><input checked="" disabled="" type="checkbox"> A</li></ul>`);
list = nodes[0] as ListNode;
);
});
});
expect(list).toBeInstanceOf(ListNode);
expect(list.getListType()).toBe('check');
test('ListNode.append() should properly transform a ParagraphNode', async () => {
const {editor} = testEnv;
await editor.update(() => {
const listNode = new ListNode('bullet', 1);
const paragraph = new ParagraphNode();
const textNode = new TextNode('Hello');
paragraph.append(textNode);
const nodesToAppend = [paragraph];
expect(listNode.append(...nodesToAppend)).toBe(listNode);
expect($isListItemNode(listNode.getFirstChild())).toBe(true);
expect(listNode.getFirstChild()?.getTextContent()).toBe('Hello');
});
});
test('$createListNode()', async () => {
const {editor} = testEnv;
await editor.update(() => {
const listNode = $createListNode('bullet', 1);
const createdListNode = $createListNode('bullet');
expect(listNode.__type).toEqual(createdListNode.__type);
expect(listNode.__parent).toEqual(createdListNode.__parent);
expect(listNode.__tag).toEqual(createdListNode.__tag);
expect(listNode.__key).not.toEqual(createdListNode.__key);
});
});
test('$isListNode()', async () => {
const {editor} = testEnv;
await editor.update(() => {
const listNode = $createListNode('bullet', 1);
expect($isListNode(listNode)).toBe(true);
});
});
test('$createListNode() with tag name (backward compatibility)', async () => {
const {editor} = testEnv;
await editor.update(() => {
const numberList = $createListNode('number', 1);
const bulletList = $createListNode('bullet', 1);
expect(numberList.__listType).toBe('number');
expect(bulletList.__listType).toBe('bullet');
});
});
});
});

View File

@ -133,7 +133,7 @@ export class ImageNode extends ElementNode {
element.addEventListener('click', e => {
_editor.update(() => {
this.select();
$selectSingleNode(this);
});
});

View File

@ -1,7 +1,7 @@
import {
createTestContext, destroyFromContext,
dispatchKeydownEventForNode,
dispatchKeydownEventForSelectedNode, expectNodeShapeToMatch,
dispatchKeydownEventForSelectedNode,
} from "lexical/__tests__/utils";
import {
$createParagraphNode, $createTextNode,
@ -13,7 +13,6 @@ import {registerKeyboardHandling} from "../keyboard-handling";
import {registerRichText} from "@lexical/rich-text";
import {EditorUiContext} from "../../ui/framework/core";
import {$createListItemNode, $createListNode, ListItemNode, ListNode} from "@lexical/list";
import {$createImageNode, ImageNode} from "@lexical/rich-text/LexicalImageNode";
describe('Keyboard-handling service tests', () => {
@ -128,34 +127,4 @@ describe('Keyboard-handling service tests', () => {
expect(selectedNode?.getKey()).toBe(innerList.getChildren()[0].getKey());
});
});
test('Images: up on selected image creates new paragraph if none above', () => {
let image!: ImageNode;
editor.updateAndCommit(() => {
const root = $getRoot();
const imageWrap = $createParagraphNode();
image = $createImageNode('https://example.com/cat.png');
imageWrap.append(image);
root.append(imageWrap);
image.select();
});
expectNodeShapeToMatch(editor, [{
type: 'paragraph',
children: [
{type: 'image'}
],
}]);
dispatchKeydownEventForNode(image, editor, 'ArrowUp');
expectNodeShapeToMatch(editor, [{
type: 'paragraph',
}, {
type: 'paragraph',
children: [
{type: 'image'}
],
}]);
});
});

View File

@ -3,7 +3,7 @@ import {
$createParagraphNode,
$getSelection,
$isDecoratorNode,
COMMAND_PRIORITY_LOW, KEY_ARROW_DOWN_COMMAND, KEY_ARROW_UP_COMMAND,
COMMAND_PRIORITY_LOW, KEY_ARROW_DOWN_COMMAND,
KEY_BACKSPACE_COMMAND,
KEY_DELETE_COMMAND,
KEY_ENTER_COMMAND, KEY_TAB_COMMAND,
@ -43,7 +43,7 @@ function deleteSingleSelectedNode(editor: LexicalEditor) {
}
/**
* Insert a new empty node before/after the selection if the selection contains a single
* Insert a new empty node after the selection if the selection contains a single
* selected node (like image, media etc...).
*/
function insertAfterSingleSelectedNode(editor: LexicalEditor, event: KeyboardEvent|null): boolean {
@ -67,34 +67,6 @@ function insertAfterSingleSelectedNode(editor: LexicalEditor, event: KeyboardEve
return false;
}
function focusAdjacentOrInsertForSingleSelectNode(editor: LexicalEditor, event: KeyboardEvent|null, after: boolean = true): boolean {
const selectionNodes = getLastSelection(editor)?.getNodes() || [];
if (!isSingleSelectedNode(selectionNodes)) {
return false;
}
event?.preventDefault();
const node = selectionNodes[0];
const nearestBlock = $getNearestNodeBlockParent(node) || node;
let target = after ? nearestBlock.getNextSibling() : nearestBlock.getPreviousSibling();
editor.update(() => {
if (!target) {
target = $createParagraphNode();
if (after) {
nearestBlock.insertAfter(target)
} else {
nearestBlock.insertBefore(target);
}
}
target.selectStart();
});
return true;
}
/**
* Insert a new node after a details node, if inside a details node that's
* the last element, and if the cursor is at the last block within the details node.
@ -227,13 +199,8 @@ export function registerKeyboardHandling(context: EditorUiContext): () => void {
return handleInsetOnTab(context.editor, event);
}, COMMAND_PRIORITY_LOW);
const unregisterUp = context.editor.registerCommand(KEY_ARROW_UP_COMMAND, (event): boolean => {
return focusAdjacentOrInsertForSingleSelectNode(context.editor, event, false);
}, COMMAND_PRIORITY_LOW);
const unregisterDown = context.editor.registerCommand(KEY_ARROW_DOWN_COMMAND, (event): boolean => {
return insertAfterDetails(context.editor, event)
|| focusAdjacentOrInsertForSingleSelectNode(context.editor, event, true)
return insertAfterDetails(context.editor, event);
}, COMMAND_PRIORITY_LOW);
return () => {
@ -241,7 +208,6 @@ export function registerKeyboardHandling(context: EditorUiContext): () => void {
unregisterDelete();
unregisterEnter();
unregisterTab();
unregisterUp();
unregisterDown();
};
}

View File

@ -1,6 +1,6 @@
import {$createTextNode, $getSelection, BaseSelection, LexicalEditor, TextNode} from "lexical";
import {$getBlockElementNodesInSelection, $selectNodes, $toggleSelection} from "./selection";
import {$sortNodes, nodeHasInset} from "./nodes";
import {nodeHasInset} from "./nodes";
import {$createListItemNode, $createListNode, $isListItemNode, $isListNode, ListItemNode} from "@lexical/list";
@ -49,11 +49,16 @@ export function $unnestListItem(node: ListItemNode): ListItemNode {
}
const laterSiblings = node.getNextSiblings();
parentListItem.insertAfter(node);
if (list.getChildren().length === 0) {
list.remove();
}
if (parentListItem.getChildren().length === 0) {
parentListItem.remove();
}
if (laterSiblings.length > 0) {
const childList = $createListNode(list.getListType());
childList.append(...laterSiblings);
@ -64,54 +69,23 @@ export function $unnestListItem(node: ListItemNode): ListItemNode {
list.remove();
}
if (parentListItem.getChildren().length === 0) {
parentListItem.remove();
}
return node;
}
function getListItemsForSelection(selection: BaseSelection|null): (ListItemNode|null)[] {
const nodes = selection?.getNodes() || [];
let [start, end] = selection?.getStartEndPoints() || [null, null];
// Ensure we ignore parent list items of the top-most list item since,
// although technically part of the selection, from a user point of
// view the selection does not spread to encompass this outer element.
const itemsToIgnore: Set<string> = new Set();
if (selection && start) {
if (selection.isBackward() && end) {
[end, start] = [start, end];
}
const startParents = start.getNode().getParents();
let foundList = false;
for (const parent of startParents) {
if ($isListItemNode(parent)) {
if (foundList) {
itemsToIgnore.add(parent.getKey());
} else {
foundList = true;
}
}
}
}
const listItemNodes = [];
outer: for (const node of nodes) {
if ($isListItemNode(node)) {
if (!itemsToIgnore.has(node.getKey())) {
listItemNodes.push(node);
}
listItemNodes.push(node);
continue;
}
const parents = node.getParents();
for (const parent of parents) {
if ($isListItemNode(parent)) {
if (!itemsToIgnore.has(parent.getKey())) {
listItemNodes.push(parent);
}
listItemNodes.push(parent);
continue outer;
}
}
@ -136,8 +110,7 @@ function $reduceDedupeListItems(listItems: (ListItemNode|null)[]): ListItemNode[
}
}
const items = Object.values(listItemMap);
return $sortNodes(items) as ListItemNode[];
return Object.values(listItemMap);
}
export function $setInsetForSelection(editor: LexicalEditor, change: number): void {

View File

@ -94,30 +94,6 @@ export function $getNearestNodeBlockParent(node: LexicalNode): LexicalNode|null
return $findMatchingParent(node, isBlockNode);
}
export function $sortNodes(nodes: LexicalNode[]): LexicalNode[] {
const idChain: string[] = [];
const addIds = (n: ElementNode) => {
for (const child of n.getChildren()) {
idChain.push(child.getKey())
if ($isElementNode(child)) {
addIds(child)
}
}
};
const root = $getRoot();
addIds(root);
const sorted = Array.from(nodes);
sorted.sort((a, b) => {
const aIndex = idChain.indexOf(a.getKey());
const bIndex = idChain.indexOf(b.getKey());
return aIndex - bIndex;
});
return sorted;
}
export function nodeHasAlignment(node: object): node is NodeHasAlignment {
return '__alignment' in node;
}

View File

@ -370,10 +370,8 @@ body.editor-is-fullscreen {
display: inline-block;
outline: 2px dashed var(--editor-color-primary);
direction: ltr;
pointer-events: none;
}
.editor-node-resizer-handle {
pointer-events: auto;
position: absolute;
display: block;
width: 10px;

View File

@ -24,7 +24,7 @@
@else
{{ trans('common.deleted_user') }}
@endif
<span title="{{ $comment->created_at }}">&nbsp;{{ trans('entities.comment_created', ['createDiff' => $comment->created_at->diffForHumans() ]) }}</span>
<span title="{{ $comment->created_at }}">&nbsp;{{ trans('entities.comment_created', ['createDiff' => $comment->created]) }}</span>
@if($comment->isUpdated())
<span class="mx-xs">&bull;</span>
<span title="{{ trans('entities.comment_updated', ['updateDiff' => $comment->updated_at, 'username' => $comment->updatedBy->name ?? trans('common.deleted_user')]) }}">

View File

@ -214,21 +214,4 @@ class CommentTest extends TestCase
$resp->assertSee('window.editor_translations', false);
$resp->assertSee('component="entity-selector"', false);
}
public function test_comment_displays_relative_times()
{
$page = $this->entities->page();
$comment = Comment::factory()->create(['entity_id' => $page->id, 'entity_type' => $page->getMorphClass()]);
$comment->created_at = now()->subWeek();
$comment->updated_at = now()->subDay();
$comment->save();
$pageResp = $this->asAdmin()->get($page->getUrl());
$html = $this->withHtml($pageResp);
// Create date shows relative time as text to user
$html->assertElementContains('.comment-box', 'commented 1 week ago');
// Updated indicator has full time as title
$html->assertElementContains('.comment-box span[title^="Updated ' . $comment->updated_at->format('Y-m-d') . '"]', 'Updated');
}
}

View File

@ -198,10 +198,6 @@ class SortRuleTest extends TestCase
$namesToAdd = [
"Beans",
"bread",
"Éclaire",
"egg",
"É😀ire",
"É🫠ire",
"Milk",
"pizza",
"Tomato",

View File

@ -1 +1 @@
v25.02-dev
v25.02.1