mirror of
https://github.com/BookStackApp/BookStack.git
synced 2026-07-18 05:33:49 +03:00
Compare commits
479 Commits
developmen
...
v26.05
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4aa629a354 | ||
|
|
b2941d7024 | ||
|
|
cfeb035548 | ||
|
|
66dcd1f7a8 | ||
|
|
d1bde2fc78 | ||
|
|
16562816c5 | ||
|
|
82ef7356f3 | ||
|
|
cb6c5d71a0 | ||
|
|
508cf0ade6 | ||
|
|
851aba228a | ||
|
|
7111e080c1 | ||
|
|
ee4786f83a | ||
|
|
33d2eee4b2 | ||
|
|
89caab1108 | ||
|
|
446b4a7d3d | ||
|
|
d335b49be0 | ||
|
|
d9b9303a42 | ||
|
|
50a7183b32 | ||
|
|
1db1083064 | ||
|
|
664eb6d980 | ||
|
|
7528bc19b7 | ||
|
|
6854687d7c | ||
|
|
ad540a015f | ||
|
|
f54f507854 | ||
|
|
f484fbc110 | ||
|
|
299d3b3149 | ||
|
|
7abc269316 | ||
|
|
f0cf4bd0f8 | ||
|
|
ed4baed28c | ||
|
|
90d011fc15 | ||
|
|
805fd98c0f | ||
|
|
fcbae16730 | ||
|
|
7c3a4c7e85 | ||
|
|
114fa802c0 | ||
|
|
8fcd3b24b3 | ||
|
|
ce703403c2 | ||
|
|
16110273ff | ||
|
|
93bcbd168e | ||
|
|
46001d61d0 | ||
|
|
8dd238ceae | ||
|
|
bb7fd59de9 | ||
|
|
ad8fc95521 | ||
|
|
cca066a258 | ||
|
|
bbda5fd468 | ||
|
|
8429cc93eb | ||
|
|
fef61f054a | ||
|
|
8082c95ec3 | ||
|
|
fcabf478de | ||
|
|
8de2c28497 | ||
|
|
0838d5ea16 | ||
|
|
449ac40114 | ||
|
|
3131050acd | ||
|
|
c0d2874892 | ||
|
|
5940a91809 | ||
|
|
9a4651badb | ||
|
|
92d15d9cf2 | ||
|
|
b06147fef7 | ||
|
|
841350a937 | ||
|
|
12183bac07 | ||
|
|
e65b4b63a2 | ||
|
|
7cac3f4780 | ||
|
|
92cd11d105 | ||
|
|
13115ace84 | ||
|
|
73f9834e6f | ||
|
|
3afe855156 | ||
|
|
bfde896f0b | ||
|
|
1cdc0a7a3d | ||
|
|
d19b86640b | ||
|
|
2936ba609b | ||
|
|
573a2dd22a | ||
|
|
b55cc803d3 | ||
|
|
304ade418e | ||
|
|
997931c42f | ||
|
|
268e353431 | ||
|
|
b491b5fbca | ||
|
|
387c786768 | ||
|
|
2641586a6f | ||
|
|
6d2cd20e80 | ||
|
|
b0c574356a | ||
|
|
07e45a20e5 | ||
|
|
14056c69e6 | ||
|
|
fb9c840c46 | ||
|
|
5fba4a5399 | ||
|
|
c0b377050e | ||
|
|
f3efb6441d | ||
|
|
0cf313a21e | ||
|
|
26aadffb20 | ||
|
|
a5f48e3202 | ||
|
|
b0dda6e6a7 | ||
|
|
d4025d95e7 | ||
|
|
d6021f4d22 | ||
|
|
b9a3290731 | ||
|
|
48f235ea5a | ||
|
|
047771b9f4 | ||
|
|
b5375114d3 | ||
|
|
fc13e56cea | ||
|
|
77fc37ac25 | ||
|
|
3424351e84 | ||
|
|
606f9d92d0 | ||
|
|
a5e25abb9c | ||
|
|
b310e87e4c | ||
|
|
425baf9d6e | ||
|
|
825c369ad9 | ||
|
|
10bab70438 | ||
|
|
350e0b281b | ||
|
|
08805ea3c8 | ||
|
|
9441e32c69 | ||
|
|
530fc37067 | ||
|
|
369e499dce | ||
|
|
655815de6d | ||
|
|
457adc1fee | ||
|
|
e86a90967e | ||
|
|
5d08f7cf14 | ||
|
|
8744eb2d62 | ||
|
|
d8383cfa80 | ||
|
|
4626278447 | ||
|
|
c61af9c22b | ||
|
|
72521d0906 | ||
|
|
7e44b195c5 | ||
|
|
5b45eac5e1 | ||
|
|
c1d30341e7 | ||
|
|
80d2b4913b | ||
|
|
3f473528b1 | ||
|
|
d0dcd4f61b | ||
|
|
bde66a1396 | ||
|
|
4de5a2d9bf | ||
|
|
27bf4299cf | ||
|
|
164f01bb25 | ||
|
|
f563a005f5 | ||
|
|
a14d8e30cc | ||
|
|
a9194ffb63 | ||
|
|
2f9c1b7127 | ||
|
|
bbea76668b | ||
|
|
becc630acf | ||
|
|
4ac8ecad6b | ||
|
|
903e88c700 | ||
|
|
ed96aa820e | ||
|
|
63ec079b7b | ||
|
|
d485fcb3db | ||
|
|
0f895668a4 | ||
|
|
6c577ac3bf | ||
|
|
31cc2423d2 | ||
|
|
c9ed32e518 | ||
|
|
6b4c3a0969 | ||
|
|
2dad92d1bd | ||
|
|
c1fb7ab7dc | ||
|
|
98315f3899 | ||
|
|
8c82aaabd6 | ||
|
|
ce9b536b78 | ||
|
|
d9c50e5bc1 | ||
|
|
bf075f7dd8 | ||
|
|
a4fd673285 | ||
|
|
e794c977bc | ||
|
|
0b088ef1d3 | ||
|
|
bf6a6af683 | ||
|
|
914790fd99 | ||
|
|
edb0c6a9e8 | ||
|
|
84049de696 | ||
|
|
da0531e63b | ||
|
|
421dc75f4e | ||
|
|
8ae91df038 | ||
|
|
64b41dd626 | ||
|
|
ebd6e4d3a2 | ||
|
|
80374aea5c | ||
|
|
2ac9efae7d | ||
|
|
a11d565ba4 | ||
|
|
1fdf854ea7 | ||
|
|
e9c9792cb9 | ||
|
|
5ae524c25a | ||
|
|
0d7287fc8b | ||
|
|
e77c96f6b7 | ||
|
|
9b8a10dd3a | ||
|
|
49200ca5ce | ||
|
|
34aa4dbf10 | ||
|
|
5ee79d16c9 | ||
|
|
a1ea4006e0 | ||
|
|
9078188939 | ||
|
|
ed0aad1a7a | ||
|
|
5c59cfb020 | ||
|
|
3ca15ad68a | ||
|
|
60014989f5 | ||
|
|
57b10f195e | ||
|
|
b1e95eb39f | ||
|
|
b3da77b8f9 | ||
|
|
1a345b74bb | ||
|
|
8ffc3a4abf | ||
|
|
7233c1c7b2 | ||
|
|
1309a01131 | ||
|
|
0333185b6d | ||
|
|
83f89f64e8 | ||
|
|
11a1a6fb16 | ||
|
|
882c609296 | ||
|
|
176a0dcd59 | ||
|
|
94b0f70bfa | ||
|
|
08b2a77d41 | ||
|
|
3e8e9a23cf | ||
|
|
58b83b64c8 | ||
|
|
dfe4cde6ee | ||
|
|
d11144d9e2 | ||
|
|
f96b0ea5f3 | ||
|
|
815f8d79ed | ||
|
|
b62dab32e0 | ||
|
|
262f863981 | ||
|
|
a4c94390a1 | ||
|
|
53f3cca85d | ||
|
|
ed08bbcecc | ||
|
|
de97ebf9b7 | ||
|
|
f492a660a8 | ||
|
|
09436836a5 | ||
|
|
bb455d7788 | ||
|
|
009212ab80 | ||
|
|
ba9cb591c8 | ||
|
|
d00ac2f34e | ||
|
|
bd4dc6d463 | ||
|
|
d91180a909 | ||
|
|
bc2913a5cb | ||
|
|
4802394562 | ||
|
|
1755556468 | ||
|
|
01cdbdb7ae | ||
|
|
fc8bbf3eab | ||
|
|
3cdab19319 | ||
|
|
5661d20e87 | ||
|
|
91f80123e8 | ||
|
|
7a0636d0f8 | ||
|
|
0fe5bdfbac | ||
|
|
f88687e977 | ||
|
|
68d437d05b | ||
|
|
1e56aaea04 | ||
|
|
dab170a6fe | ||
|
|
a8de717d9b | ||
|
|
78fe95b6fc | ||
|
|
e0c24e41aa | ||
|
|
fa8553839b | ||
|
|
b8fcefc794 | ||
|
|
88bcb68fcb | ||
|
|
7c000553ae | ||
|
|
391fa35c80 | ||
|
|
c6773a8c9f | ||
|
|
9b226e7d39 | ||
|
|
9865446267 | ||
|
|
926abbe776 | ||
|
|
4fabef3a57 | ||
|
|
5ef4cd80c3 | ||
|
|
e01f23583f | ||
|
|
7792cb3915 | ||
|
|
be26253a18 | ||
|
|
1bdd1f8189 | ||
|
|
fa62c79b17 | ||
|
|
d7d8fa1e5b | ||
|
|
18562f1e10 | ||
|
|
86090a694f | ||
|
|
1ee8287c73 | ||
|
|
8eb98cd591 | ||
|
|
0f9ba21b05 | ||
|
|
834f8e7046 | ||
|
|
32e3399334 | ||
|
|
2d8698a218 | ||
|
|
454fb883a2 | ||
|
|
6f4a6ab8ea | ||
|
|
9c4b6f36f1 | ||
|
|
78886b1e67 | ||
|
|
d9debaf032 | ||
|
|
d4360d6347 | ||
|
|
175b1785c0 | ||
|
|
c8740c0171 | ||
|
|
91ee895a74 | ||
|
|
a045e46571 | ||
|
|
44eaa65c3b | ||
|
|
0a22af7b14 | ||
|
|
b54702ab08 | ||
|
|
c4fdcfc5d1 | ||
|
|
cb8117e8df | ||
|
|
5a218d5056 | ||
|
|
8dbc5cf9c6 | ||
|
|
71e81615a3 | ||
|
|
611d37da04 | ||
|
|
0e799a3857 | ||
|
|
b91d6e2bfa | ||
|
|
ea16ad7e94 | ||
|
|
ba6eb54552 | ||
|
|
f705e7683b | ||
|
|
dc996adb20 | ||
|
|
a64c638ccc | ||
|
|
359c067279 | ||
|
|
66a746e297 | ||
|
|
a4d43ee24b | ||
|
|
f7793a70a9 | ||
|
|
ceba3d31fb | ||
|
|
eecc08edde | ||
|
|
eb19aadc75 | ||
|
|
06c81e69b9 | ||
|
|
3dc3d4a639 | ||
|
|
94c59c1e3d | ||
|
|
4d2205853a | ||
|
|
751772b87a | ||
|
|
76e30869e1 | ||
|
|
3edc9fe9eb | ||
|
|
616c62703e | ||
|
|
ecd56917e7 | ||
|
|
e22c9cae91 | ||
|
|
29ddb6e1b9 | ||
|
|
2ff90e2ff0 | ||
|
|
04ecc128a2 | ||
|
|
87d1d3423b | ||
|
|
4818192a2a | ||
|
|
965dd97f54 | ||
|
|
195b74926c | ||
|
|
2120db12b2 | ||
|
|
ed563fef28 | ||
|
|
0d31a8e3f1 | ||
|
|
b8354b974b | ||
|
|
034c1e289d | ||
|
|
f31605a3de | ||
|
|
e7cc75c74d | ||
|
|
4b79d5e4e8 | ||
|
|
34854915b3 | ||
|
|
af6f34b529 | ||
|
|
fb82a2b896 | ||
|
|
5b464938b6 | ||
|
|
81f954890d | ||
|
|
0e2bbcec62 | ||
|
|
fdd339f525 | ||
|
|
8cf7d6a83d | ||
|
|
58a5008718 | ||
|
|
c44a8df55d | ||
|
|
ff1494c519 | ||
|
|
b8ce8fd852 | ||
|
|
75e7454a5f | ||
|
|
2558ea8931 | ||
|
|
ac0f47a4b2 | ||
|
|
4f16129869 | ||
|
|
64a8037fdd | ||
|
|
7502ba1bc8 | ||
|
|
33a04697ef | ||
|
|
b70a5c0cdb | ||
|
|
9443ae9f40 | ||
|
|
220c2a4102 | ||
|
|
e9914eb301 | ||
|
|
934512d09c | ||
|
|
9102c90986 | ||
|
|
c3e74219c4 | ||
|
|
13c9d7bc2d | ||
|
|
119b539586 | ||
|
|
29a5c180f0 | ||
|
|
7906602291 | ||
|
|
6dafe773ff | ||
|
|
25bc28a1be | ||
|
|
4c561c7fa0 | ||
|
|
95b3e78573 | ||
|
|
63a345bc93 | ||
|
|
e093a172cb | ||
|
|
4b01f8934b | ||
|
|
bc116b45b5 | ||
|
|
a059960b9e | ||
|
|
7770966fed | ||
|
|
d7adcf6c69 | ||
|
|
04a364dcc3 | ||
|
|
db83ac7eaa | ||
|
|
3ca9dddf61 | ||
|
|
bf74f53ca7 | ||
|
|
9d67efb4a4 | ||
|
|
3a39b9f440 | ||
|
|
27f7aab375 | ||
|
|
337da0c467 | ||
|
|
f56b3560c4 | ||
|
|
02dfe11ce6 | ||
|
|
83d06beb70 | ||
|
|
a8cfc059c8 | ||
|
|
1614b2bab0 | ||
|
|
4bdec0d214 | ||
|
|
6a7d7e7c2b | ||
|
|
30d4674657 | ||
|
|
9f961f95f8 | ||
|
|
bab99a26ec | ||
|
|
9a7fecd269 | ||
|
|
a8dc0d449b | ||
|
|
a0381f76bf | ||
|
|
6102f66daa | ||
|
|
c6134d162d | ||
|
|
2046f9b9de | ||
|
|
ac3ba594a4 | ||
|
|
22df25a480 | ||
|
|
8b30c7f02e | ||
|
|
757cdddc7c | ||
|
|
df95e99680 | ||
|
|
5a6d544db7 | ||
|
|
16117d329c | ||
|
|
e90da18ada | ||
|
|
a08d80e1cc | ||
|
|
6258175922 | ||
|
|
15736777a0 | ||
|
|
75915e8a94 | ||
|
|
9bde0ae4ea | ||
|
|
0c802d1f86 | ||
|
|
b7a96c6466 | ||
|
|
4b645a82c7 | ||
|
|
d599b77b6f | ||
|
|
26e93dc8c1 | ||
|
|
a4c9a8491b | ||
|
|
70ee636d87 | ||
|
|
b35f6dbb03 | ||
|
|
67d9e24d8f | ||
|
|
3903fda6ca | ||
|
|
441e46ebaa | ||
|
|
1f4260f359 | ||
|
|
dc0bf8ad4e | ||
|
|
102e326e6a | ||
|
|
2b25bf6f3b | ||
|
|
f93280696d | ||
|
|
1787391b07 | ||
|
|
a74a8ee483 | ||
|
|
7fa5405cb7 | ||
|
|
6725ddcc41 | ||
|
|
bce941db3f | ||
|
|
6d926048ec | ||
|
|
5335c973b4 | ||
|
|
15c3e5c96e | ||
|
|
a5d5904969 | ||
|
|
598758b991 | ||
|
|
9926e23bc8 | ||
|
|
5d3264bc63 | ||
|
|
d71f819f95 | ||
|
|
ee13509760 | ||
|
|
82d7bb1f32 | ||
|
|
cdfda508d8 | ||
|
|
da941e584f | ||
|
|
65874d7b96 | ||
|
|
ac9b8f405c | ||
|
|
8d1419a12e | ||
|
|
04f7a7d301 | ||
|
|
c10d2a1493 | ||
|
|
97bbf79ffd | ||
|
|
f7b01ae53d | ||
|
|
d704e1dbba | ||
|
|
ef2ff5e093 | ||
|
|
7caed3b0db | ||
|
|
45641d0754 | ||
|
|
4b1d08ba99 | ||
|
|
160fa99ba4 | ||
|
|
d2a5ab49ed | ||
|
|
c6404d8917 | ||
|
|
7113807f12 | ||
|
|
be711215e8 | ||
|
|
7e3b404240 | ||
|
|
e86901ca20 | ||
|
|
bdfa61c8b2 | ||
|
|
2cc36787f5 | ||
|
|
448ac61b48 | ||
|
|
753f6394f7 | ||
|
|
b1faf65934 | ||
|
|
09f478bd74 | ||
|
|
a0497feddd | ||
|
|
789693bde9 | ||
|
|
1fe933e4ea | ||
|
|
724b4b5a70 | ||
|
|
1778a56146 | ||
|
|
744865fcb2 | ||
|
|
7f8c8b448d | ||
|
|
a67c53826d | ||
|
|
14b131e850 | ||
|
|
9b55a52b85 | ||
|
|
db1d10e80f | ||
|
|
1be576966f | ||
|
|
b97e792c5f | ||
|
|
8dec674cc3 | ||
|
|
f784c03746 | ||
|
|
148e172fe8 | ||
|
|
56ae86646f | ||
|
|
1d2b6fdfa2 | ||
|
|
4fc75beed4 | ||
|
|
3b3bc0c4bf | ||
|
|
910faab88e | ||
|
|
f184d763ad | ||
|
|
a91d42634d | ||
|
|
f517ef3616 | ||
|
|
e99507ddcf | ||
|
|
d2cacf1945 | ||
|
|
448ac1405b | ||
|
|
6ad21ce885 |
@@ -22,7 +22,7 @@ jobs:
|
|||||||
uses: https://github.com/shivammathur/setup-php@v2
|
uses: https://github.com/shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: 8.5
|
php-version: 8.5
|
||||||
extensions: gd, mbstring, json, curl, xml, dom, mysql, ldap
|
extensions: gd, mbstring, json, curl, xml, mysql, ldap
|
||||||
|
|
||||||
- name: Get Composer Cache Directory
|
- name: Get Composer Cache Directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ jobs:
|
|||||||
- name: crowdin action
|
- name: crowdin action
|
||||||
uses: https://github.com/crowdin/github-action@v2
|
uses: https://github.com/crowdin/github-action@v2
|
||||||
with:
|
with:
|
||||||
crowdin_branch_name: development
|
|
||||||
upload_sources: true
|
upload_sources: true
|
||||||
upload_translations: false
|
upload_translations: false
|
||||||
download_translations: true
|
download_translations: true
|
||||||
|
|||||||
@@ -23,14 +23,6 @@ jobs:
|
|||||||
services:
|
services:
|
||||||
mysql:
|
mysql:
|
||||||
image: docker.io/library/mariadb:12.2.2-noble
|
image: docker.io/library/mariadb:12.2.2-noble
|
||||||
options: --tmpfs /var/lib/mysql:rw
|
|
||||||
cmd:
|
|
||||||
- --innodb-flush-log-at-trx-commit=0
|
|
||||||
- --innodb-flush-method=O_DIRECT
|
|
||||||
- --innodb-doublewrite=0
|
|
||||||
- --innodb-buffer-pool-size=256M
|
|
||||||
- --skip-log-bin
|
|
||||||
- --sync-binlog=0
|
|
||||||
env:
|
env:
|
||||||
MARIADB_USER: bookstack-test
|
MARIADB_USER: bookstack-test
|
||||||
MARIADB_PASSWORD: bookstack-test
|
MARIADB_PASSWORD: bookstack-test
|
||||||
@@ -43,7 +35,7 @@ jobs:
|
|||||||
uses: https://github.com/shivammathur/setup-php@v2
|
uses: https://github.com/shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php }}
|
php-version: ${{ matrix.php }}
|
||||||
extensions: gd, mbstring, json, curl, xml, dom, mysql, ldap
|
extensions: gd, mbstring, json, curl, xml, mysql, ldap
|
||||||
|
|
||||||
- name: Get Composer Cache Directory
|
- name: Get Composer Cache Directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
php: ['8.2', '8.3', '8.4', '8.5']
|
php: ['8.2', '8.3', '8.4', '8.5']
|
||||||
env:
|
env:
|
||||||
phpextensions: gd, mbstring, json, curl, xml, dom, mysql, ldap, gmp
|
phpextensions: gd, mbstring, json, curl, xml, mysql, ldap, gmp
|
||||||
phpextensioncachekey: cache-v1
|
phpextensioncachekey: cache-v1
|
||||||
steps:
|
steps:
|
||||||
- uses: https://code.forgejo.org/actions/checkout@v6
|
- uses: https://code.forgejo.org/actions/checkout@v6
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
name: update-snyk
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
push:
|
|
||||||
paths:
|
|
||||||
- 'composer*'
|
|
||||||
- 'package*'
|
|
||||||
branches:
|
|
||||||
- 'development'
|
|
||||||
- 'release'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
update:
|
|
||||||
runs-on: docker
|
|
||||||
container:
|
|
||||||
image: docker.io/library/node:24-trixie
|
|
||||||
steps:
|
|
||||||
- uses: https://code.forgejo.org/actions/checkout@v6
|
|
||||||
|
|
||||||
- name: Update Snyk for monitoring - Composer
|
|
||||||
uses: https://github.com/snyk/actions/node@master
|
|
||||||
env:
|
|
||||||
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
|
|
||||||
with:
|
|
||||||
args: snyk monitor --file=composer.lock --project-name=bookstack-${{forgejo.ref_name}}-composer
|
|
||||||
|
|
||||||
- name: Update Snyk for monitoring - NPM
|
|
||||||
uses: https://github.com/snyk/actions/node@master
|
|
||||||
env:
|
|
||||||
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
|
|
||||||
with:
|
|
||||||
args: snyk monitor --file=package-lock.json --project-name=bookstack-${{forgejo.ref_name}}-npm
|
|
||||||
4
.github/translators.txt
vendored
4
.github/translators.txt
vendored
@@ -544,7 +544,3 @@ FelixFrizzy :: German
|
|||||||
Pedro de Mattia (pdmtt) :: Portuguese, Brazilian
|
Pedro de Mattia (pdmtt) :: Portuguese, Brazilian
|
||||||
lonestan :: Russian
|
lonestan :: Russian
|
||||||
Paul Kernstock (kernstock) :: German
|
Paul Kernstock (kernstock) :: German
|
||||||
brtbr :: German; German Informal
|
|
||||||
Ricardo Covelo (covelo12) :: Portuguese
|
|
||||||
Bojan Maksimovic (PolarniMeda) :: Serbian (Cyrillic)
|
|
||||||
Dian Prawira (wiradian84) :: Indonesian
|
|
||||||
|
|||||||
6
.gitignore
vendored
6
.gitignore
vendored
@@ -9,10 +9,10 @@ Homestead.yaml
|
|||||||
.idea
|
.idea
|
||||||
npm-debug.log
|
npm-debug.log
|
||||||
yarn-error.log
|
yarn-error.log
|
||||||
/public/dist
|
/public/dist/*.map
|
||||||
/public/plugins
|
/public/plugins
|
||||||
/public/css
|
/public/css/*.map
|
||||||
/public/js
|
/public/js/*.map
|
||||||
/public/bower
|
/public/bower
|
||||||
/public/build/
|
/public/build/
|
||||||
/public/favicon.ico
|
/public/favicon.ico
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ use BookStack\Exceptions\LoginAttemptEmailNeededException;
|
|||||||
use BookStack\Exceptions\LoginAttemptException;
|
use BookStack\Exceptions\LoginAttemptException;
|
||||||
use BookStack\Facades\Activity;
|
use BookStack\Facades\Activity;
|
||||||
use BookStack\Http\Controller;
|
use BookStack\Http\Controller;
|
||||||
use BookStack\Util\UrlComparison;
|
|
||||||
use Illuminate\Http\RedirectResponse;
|
use Illuminate\Http\RedirectResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Validation\ValidationException;
|
use Illuminate\Validation\ValidationException;
|
||||||
@@ -187,8 +186,7 @@ class LoginController extends Controller
|
|||||||
{
|
{
|
||||||
// Store the previous location for redirect after login
|
// Store the previous location for redirect after login
|
||||||
$previous = url()->previous('');
|
$previous = url()->previous('');
|
||||||
$comparison = new UrlComparison($previous, url('/'));
|
$isPreviousFromInstance = str_starts_with($previous, url('/'));
|
||||||
$isPreviousFromInstance = $comparison->originsMatch() && $comparison->pathsOverlap();
|
|
||||||
if (!$previous || !setting('app-public') || !$isPreviousFromInstance) {
|
if (!$previous || !setting('app-public') || !$isPreviousFromInstance) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,7 +59,8 @@ class CommentController extends Controller
|
|||||||
'html' => ['required', 'string'],
|
'html' => ['required', 'string'],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$comment = $this->commentRepo->getVisibleById($commentId);
|
$comment = $this->commentRepo->getById($commentId);
|
||||||
|
$this->checkOwnablePermission(Permission::PageView, $comment->entity);
|
||||||
$this->checkOwnablePermission(Permission::CommentUpdate, $comment);
|
$this->checkOwnablePermission(Permission::CommentUpdate, $comment);
|
||||||
|
|
||||||
$comment = $this->commentRepo->update($comment, $input['html']);
|
$comment = $this->commentRepo->update($comment, $input['html']);
|
||||||
@@ -75,7 +76,8 @@ class CommentController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function archive(int $id)
|
public function archive(int $id)
|
||||||
{
|
{
|
||||||
$comment = $this->commentRepo->getVisibleById($id);
|
$comment = $this->commentRepo->getById($id);
|
||||||
|
$this->checkOwnablePermission(Permission::PageView, $comment->entity);
|
||||||
if (!userCan(Permission::CommentUpdate, $comment) && !userCan(Permission::CommentDelete, $comment)) {
|
if (!userCan(Permission::CommentUpdate, $comment) && !userCan(Permission::CommentDelete, $comment)) {
|
||||||
$this->showPermissionError();
|
$this->showPermissionError();
|
||||||
}
|
}
|
||||||
@@ -94,7 +96,8 @@ class CommentController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function unarchive(int $id)
|
public function unarchive(int $id)
|
||||||
{
|
{
|
||||||
$comment = $this->commentRepo->getVisibleById($id);
|
$comment = $this->commentRepo->getById($id);
|
||||||
|
$this->checkOwnablePermission(Permission::PageView, $comment->entity);
|
||||||
if (!userCan(Permission::CommentUpdate, $comment) && !userCan(Permission::CommentDelete, $comment)) {
|
if (!userCan(Permission::CommentUpdate, $comment) && !userCan(Permission::CommentDelete, $comment)) {
|
||||||
$this->showPermissionError();
|
$this->showPermissionError();
|
||||||
}
|
}
|
||||||
@@ -113,7 +116,7 @@ class CommentController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function destroy(int $id)
|
public function destroy(int $id)
|
||||||
{
|
{
|
||||||
$comment = $this->commentRepo->getVisibleById($id);
|
$comment = $this->commentRepo->getById($id);
|
||||||
$this->checkOwnablePermission(Permission::CommentDelete, $comment);
|
$this->checkOwnablePermission(Permission::CommentDelete, $comment);
|
||||||
|
|
||||||
$this->commentRepo->delete($comment);
|
$this->commentRepo->delete($comment);
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
namespace BookStack\App\Providers;
|
namespace BookStack\App\Providers;
|
||||||
|
|
||||||
use BookStack\Uploads\ImageService;
|
use BookStack\Uploads\ImageService;
|
||||||
use BookStack\Util\UrlFilter;
|
|
||||||
use Illuminate\Support\Facades\Validator;
|
use Illuminate\Support\Facades\Validator;
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
|
||||||
@@ -22,8 +21,10 @@ class ValidationRuleServiceProvider extends ServiceProvider
|
|||||||
|
|
||||||
Validator::extend('safe_url', function ($attribute, $value, $parameters, $validator) {
|
Validator::extend('safe_url', function ($attribute, $value, $parameters, $validator) {
|
||||||
$cleanLinkName = strtolower(trim($value));
|
$cleanLinkName = strtolower(trim($value));
|
||||||
$filter = new UrlFilter($cleanLinkName);
|
$isJs = str_starts_with($cleanLinkName, 'javascript:');
|
||||||
return $filter->isAllowed();
|
$isData = str_starts_with($cleanLinkName, 'data:');
|
||||||
|
|
||||||
|
return !$isJs && !$isData;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ use BookStack\Theming\ThemeModule;
|
|||||||
use BookStack\Theming\ThemeModuleException;
|
use BookStack\Theming\ThemeModuleException;
|
||||||
use BookStack\Theming\ThemeModuleManager;
|
use BookStack\Theming\ThemeModuleManager;
|
||||||
use BookStack\Theming\ThemeModuleZip;
|
use BookStack\Theming\ThemeModuleZip;
|
||||||
use BookStack\Util\UrlComparison;
|
|
||||||
use GuzzleHttp\Psr7\Request;
|
use GuzzleHttp\Psr7\Request;
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
@@ -200,6 +199,7 @@ class InstallModuleCommand extends Command
|
|||||||
{
|
{
|
||||||
$httpRequests = app()->make(HttpRequestService::class);
|
$httpRequests = app()->make(HttpRequestService::class);
|
||||||
$client = $httpRequests->buildClient(30, ['stream' => true]);
|
$client = $httpRequests->buildClient(30, ['stream' => true]);
|
||||||
|
$originalUrl = parse_url($location);
|
||||||
$currentLocation = $location;
|
$currentLocation = $location;
|
||||||
$maxRedirects = 3;
|
$maxRedirects = 3;
|
||||||
$redirectCount = 0;
|
$redirectCount = 0;
|
||||||
@@ -212,11 +212,12 @@ class InstallModuleCommand extends Command
|
|||||||
if ($statusCode >= 300 && $statusCode < 400 && $redirectCount < $maxRedirects) {
|
if ($statusCode >= 300 && $statusCode < 400 && $redirectCount < $maxRedirects) {
|
||||||
$redirectLocation = $resp->getHeaderLine('Location');
|
$redirectLocation = $resp->getHeaderLine('Location');
|
||||||
if ($redirectLocation) {
|
if ($redirectLocation) {
|
||||||
$comparison = new UrlComparison($location, $redirectLocation);
|
$redirectUrl = parse_url($redirectLocation);
|
||||||
$redirectOriginMatches = $comparison->originsMatch();
|
$redirectOriginMatches = ($originalUrl['host'] ?? '') === ($redirectUrl['host'] ?? '')
|
||||||
|
&& ($originalUrl['scheme'] ?? '') === ($redirectUrl['scheme'] ?? '')
|
||||||
|
&& ($originalUrl['port'] ?? '') === ($redirectUrl['port'] ?? '');
|
||||||
|
|
||||||
if (!$redirectOriginMatches) {
|
if (!$redirectOriginMatches) {
|
||||||
$redirectUrl = parse_url($redirectLocation);
|
|
||||||
$redirectOrigin = ($redirectUrl['scheme'] ?? '') . '://' . ($redirectUrl['host'] ?? '') . (isset($redirectUrl['port']) ? ':' . $redirectUrl['port'] : '');
|
$redirectOrigin = ($redirectUrl['scheme'] ?? '') . '://' . ($redirectUrl['host'] ?? '') . (isset($redirectUrl['port']) ? ':' . $redirectUrl['port'] : '');
|
||||||
$this->info("The download URL is redirecting to a different site: {$redirectOrigin}");
|
$this->info("The download URL is redirecting to a different site: {$redirectOrigin}");
|
||||||
$shouldContinue = $this->confirm("Do you trust downloading the module from this site?");
|
$shouldContinue = $this->confirm("Do you trust downloading the module from this site?");
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ class Handler extends ExceptionHandler
|
|||||||
protected $dontReport = [
|
protected $dontReport = [
|
||||||
NotFoundException::class,
|
NotFoundException::class,
|
||||||
StoppedAuthenticationException::class,
|
StoppedAuthenticationException::class,
|
||||||
NotifyException::class,
|
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -6,22 +6,18 @@ use Exception;
|
|||||||
use Illuminate\Contracts\Support\Responsable;
|
use Illuminate\Contracts\Support\Responsable;
|
||||||
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
|
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
|
||||||
|
|
||||||
/**
|
|
||||||
* An exception that is thrown to notify the user of something which went wrong.
|
|
||||||
* Typically these should be translated messages since they will be shown to the end user
|
|
||||||
* via a pop up notification error message in the UI.
|
|
||||||
*
|
|
||||||
* This exception is not intended to be used for internal system/application errors,
|
|
||||||
* and therefore will not be logged by the exception handler.
|
|
||||||
*/
|
|
||||||
class NotifyException extends Exception implements Responsable, HttpExceptionInterface
|
class NotifyException extends Exception implements Responsable, HttpExceptionInterface
|
||||||
{
|
{
|
||||||
public function __construct(
|
public $message;
|
||||||
string $message,
|
public string $redirectLocation;
|
||||||
public string $redirectLocation = '/',
|
protected int $status;
|
||||||
protected int $status = 500
|
|
||||||
) {
|
public function __construct(string $message, string $redirectLocation = '/', int $status = 500)
|
||||||
|
{
|
||||||
$this->message = $message;
|
$this->message = $message;
|
||||||
|
$this->redirectLocation = $redirectLocation;
|
||||||
|
$this->status = $status;
|
||||||
|
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -290,7 +290,7 @@ class SearchRunner
|
|||||||
$query->where('name', '=', $tagParts['name']);
|
$query->where('name', '=', $tagParts['name']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_numeric($tagParts['value']) && is_finite($tagParts['value']) && $tagParts['operator'] !== 'like') {
|
if (is_numeric($tagParts['value']) && $tagParts['operator'] !== 'like') {
|
||||||
// We have to do a raw sql query for this since otherwise PDO will quote the value and MySQL will
|
// We have to do a raw sql query for this since otherwise PDO will quote the value and MySQL will
|
||||||
// search the value as a string which prevents being able to do number-based operations
|
// search the value as a string which prevents being able to do number-based operations
|
||||||
// on the tag values. We ensure it has a numeric value and then cast it just to be sure.
|
// on the tag values. We ensure it has a numeric value and then cast it just to be sure.
|
||||||
|
|||||||
@@ -4,12 +4,37 @@ namespace BookStack\Sorting;
|
|||||||
|
|
||||||
class BookSortMapItem
|
class BookSortMapItem
|
||||||
{
|
{
|
||||||
public function __construct(
|
/**
|
||||||
public int $id,
|
* @var int
|
||||||
public int $sort,
|
*/
|
||||||
public int|null $parentChapterId,
|
public $id;
|
||||||
public string $type,
|
|
||||||
public int $parentBookId,
|
/**
|
||||||
) {
|
* @var int
|
||||||
|
*/
|
||||||
|
public $sort;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var ?int
|
||||||
|
*/
|
||||||
|
public $parentChapterId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var int
|
||||||
|
*/
|
||||||
|
public $parentBookId;
|
||||||
|
|
||||||
|
public function __construct(int $id, int $sort, ?int $parentChapterId, string $type, int $parentBookId)
|
||||||
|
{
|
||||||
|
$this->id = $id;
|
||||||
|
$this->sort = $sort;
|
||||||
|
$this->parentChapterId = $parentChapterId;
|
||||||
|
$this->type = $type;
|
||||||
|
$this->parentBookId = $parentBookId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ class BookSorter
|
|||||||
$model->priority = $sortMapItem->sort;
|
$model->priority = $sortMapItem->sort;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($priorityChanged || $chapterChanged) {
|
if ($chapterChanged || $priorityChanged) {
|
||||||
$model::withoutTimestamps(fn () => $model->save());
|
$model::withoutTimestamps(fn () => $model->save());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ use BookStack\Permissions\PermissionApplicator;
|
|||||||
use BookStack\Users\Models\HasCreatorAndUpdater;
|
use BookStack\Users\Models\HasCreatorAndUpdater;
|
||||||
use BookStack\Users\Models\OwnableInterface;
|
use BookStack\Users\Models\OwnableInterface;
|
||||||
use BookStack\Users\Models\User;
|
use BookStack\Users\Models\User;
|
||||||
use BookStack\Util\UrlFilter;
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
@@ -72,7 +71,7 @@ class Attachment extends Model implements OwnableInterface
|
|||||||
public function getUrl($openInline = false): string
|
public function getUrl($openInline = false): string
|
||||||
{
|
{
|
||||||
if ($this->external && !str_starts_with($this->path, 'http')) {
|
if ($this->external && !str_starts_with($this->path, 'http')) {
|
||||||
return (new UrlFilter($this->path))->clean();
|
return $this->path;
|
||||||
}
|
}
|
||||||
|
|
||||||
return url('/attachments/' . $this->id . ($openInline ? '?open=true' : ''));
|
return url('/attachments/' . $this->id . ($openInline ? '?open=true' : ''));
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ use BookStack\Http\Controller;
|
|||||||
use BookStack\Permissions\Permission;
|
use BookStack\Permissions\Permission;
|
||||||
use BookStack\Uploads\Attachment;
|
use BookStack\Uploads\Attachment;
|
||||||
use BookStack\Uploads\AttachmentService;
|
use BookStack\Uploads\AttachmentService;
|
||||||
use BookStack\Util\UrlFilter;
|
|
||||||
use Exception;
|
use Exception;
|
||||||
use Illuminate\Contracts\Filesystem\FileNotFoundException;
|
use Illuminate\Contracts\Filesystem\FileNotFoundException;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
@@ -108,9 +107,6 @@ class AttachmentController extends Controller
|
|||||||
{
|
{
|
||||||
/** @var Attachment $attachment */
|
/** @var Attachment $attachment */
|
||||||
$attachment = Attachment::query()->findOrFail($attachmentId);
|
$attachment = Attachment::query()->findOrFail($attachmentId);
|
||||||
$this->checkOwnablePermission(Permission::PageView, $attachment->page);
|
|
||||||
$this->checkOwnablePermission(Permission::PageUpdate, $attachment->page);
|
|
||||||
$this->checkOwnablePermission(Permission::AttachmentUpdate, $attachment);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$this->validate($request, [
|
$this->validate($request, [
|
||||||
@@ -124,6 +120,10 @@ class AttachmentController extends Controller
|
|||||||
]), 422);
|
]), 422);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->checkOwnablePermission(Permission::PageView, $attachment->page);
|
||||||
|
$this->checkOwnablePermission(Permission::PageUpdate, $attachment->page);
|
||||||
|
$this->checkOwnablePermission(Permission::AttachmentUpdate, $attachment);
|
||||||
|
|
||||||
$attachment = $this->attachmentService->updateFile($attachment, [
|
$attachment = $this->attachmentService->updateFile($attachment, [
|
||||||
'name' => $request->input('attachment_edit_name'),
|
'name' => $request->input('attachment_edit_name'),
|
||||||
'link' => $request->input('attachment_edit_url'),
|
'link' => $request->input('attachment_edit_url'),
|
||||||
@@ -142,10 +142,6 @@ class AttachmentController extends Controller
|
|||||||
public function attachLink(Request $request)
|
public function attachLink(Request $request)
|
||||||
{
|
{
|
||||||
$pageId = $request->input('attachment_link_uploaded_to');
|
$pageId = $request->input('attachment_link_uploaded_to');
|
||||||
$page = $this->pageQueries->findVisibleByIdOrFail($pageId);
|
|
||||||
|
|
||||||
$this->checkPermission(Permission::AttachmentCreateAll);
|
|
||||||
$this->checkOwnablePermission(Permission::PageUpdate, $page);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$this->validate($request, [
|
$this->validate($request, [
|
||||||
@@ -160,6 +156,11 @@ class AttachmentController extends Controller
|
|||||||
]), 422);
|
]), 422);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$page = $this->pageQueries->findVisibleByIdOrFail($pageId);
|
||||||
|
|
||||||
|
$this->checkPermission(Permission::AttachmentCreateAll);
|
||||||
|
$this->checkOwnablePermission(Permission::PageUpdate, $page);
|
||||||
|
|
||||||
$attachmentName = $request->input('attachment_link_name');
|
$attachmentName = $request->input('attachment_link_name');
|
||||||
$link = $request->input('attachment_link_url');
|
$link = $request->input('attachment_link_url');
|
||||||
$this->attachmentService->saveNewFromLink($attachmentName, $link, intval($pageId));
|
$this->attachmentService->saveNewFromLink($attachmentName, $link, intval($pageId));
|
||||||
@@ -222,8 +223,7 @@ class AttachmentController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($attachment->external) {
|
if ($attachment->external) {
|
||||||
$url = (new UrlFilter($attachment->path))->clean();
|
return redirect($attachment->path);
|
||||||
return redirect($url);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$fileName = $attachment->getFileName();
|
$fileName = $attachment->getFileName();
|
||||||
|
|||||||
@@ -1,16 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace BookStack\Util\HtmlPurifier;
|
namespace BookStack\Util;
|
||||||
|
|
||||||
use BookStack\App\AppVersion;
|
use BookStack\App\AppVersion;
|
||||||
use BookStack\Util\HtmlPurifier\Filters\UriLimitFileProtocolToAnchors;
|
|
||||||
use BookStack\Util\UrlFilter;
|
|
||||||
use HTMLPurifier;
|
use HTMLPurifier;
|
||||||
use HTMLPurifier_Config;
|
use HTMLPurifier_Config;
|
||||||
use HTMLPurifier_DefinitionCache_Serializer;
|
use HTMLPurifier_DefinitionCache_Serializer;
|
||||||
use HTMLPurifier_HTML5Config;
|
use HTMLPurifier_HTML5Config;
|
||||||
use HTMLPurifier_HTMLDefinition;
|
use HTMLPurifier_HTMLDefinition;
|
||||||
use HTMLPurifier_URIDefinition;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides a configured HTML Purifier instance.
|
* Provides a configured HTML Purifier instance.
|
||||||
@@ -36,12 +33,7 @@ class ConfiguredHtmlPurifier
|
|||||||
|
|
||||||
$htmlDef = $config->getDefinition('HTML', true, true);
|
$htmlDef = $config->getDefinition('HTML', true, true);
|
||||||
if ($htmlDef instanceof HTMLPurifier_HTMLDefinition) {
|
if ($htmlDef instanceof HTMLPurifier_HTMLDefinition) {
|
||||||
$this->configureHtmlDefinition($htmlDef);
|
$this->configureDefinition($htmlDef);
|
||||||
}
|
|
||||||
|
|
||||||
$uriDef = $config->getDefinition('URI', true, true);
|
|
||||||
if ($uriDef instanceof HTMLPurifier_URIDefinition) {
|
|
||||||
$this->configureUriDefinition($uriDef);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->purifier = new HTMLPurifier($config);
|
$this->purifier = new HTMLPurifier($config);
|
||||||
@@ -85,18 +77,21 @@ class ConfiguredHtmlPurifier
|
|||||||
$config->set('Attr.ID.HTML5', true);
|
$config->set('Attr.ID.HTML5', true);
|
||||||
$config->set('Output.FixInnerHTML', false);
|
$config->set('Output.FixInnerHTML', false);
|
||||||
$config->set('URI.SafeIframeRegexp', '%^(http://|https://|//)%');
|
$config->set('URI.SafeIframeRegexp', '%^(http://|https://|//)%');
|
||||||
|
$config->set('URI.AllowedSchemes', [
|
||||||
$allowedSchemes = UrlFilter::getAllowedSchemes();
|
'http' => true,
|
||||||
$allowedSchemesSetting = [];
|
'https' => true,
|
||||||
foreach ($allowedSchemes as $scheme) {
|
'mailto' => true,
|
||||||
$allowedSchemesSetting[$scheme] = true;
|
'ftp' => true,
|
||||||
}
|
'nntp' => true,
|
||||||
$config->set('URI.AllowedSchemes', $allowedSchemesSetting);
|
'news' => true,
|
||||||
|
'tel' => true,
|
||||||
|
'file' => true,
|
||||||
|
]);
|
||||||
|
|
||||||
// $config->set('Cache.DefinitionImpl', null); // Disable cache during testing
|
// $config->set('Cache.DefinitionImpl', null); // Disable cache during testing
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function configureHtmlDefinition(HTMLPurifier_HTMLDefinition $definition): void
|
public function configureDefinition(HTMLPurifier_HTMLDefinition $definition): void
|
||||||
{
|
{
|
||||||
// Allow the object element
|
// Allow the object element
|
||||||
$definition->addElement(
|
$definition->addElement(
|
||||||
@@ -154,15 +149,6 @@ class ConfiguredHtmlPurifier
|
|||||||
|
|
||||||
// Allow mention-ids on links
|
// Allow mention-ids on links
|
||||||
$definition->addAttribute('a', 'data-mention-user-id', 'Number');
|
$definition->addAttribute('a', 'data-mention-user-id', 'Number');
|
||||||
|
|
||||||
// Set up custom handler for srcset to limit accepted types
|
|
||||||
$definition->addAttribute('img', 'srcset', new SrcsetAttrDef());
|
|
||||||
$definition->addAttribute('source', 'srcset', new SrcsetAttrDef());
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function configureUriDefinition(HTMLPurifier_URIDefinition $definition): void
|
|
||||||
{
|
|
||||||
$definition->registerFilter(new UriLimitFileProtocolToAnchors());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function purify(string $html): string
|
public function purify(string $html): string
|
||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
namespace BookStack\Util;
|
namespace BookStack\Util;
|
||||||
|
|
||||||
use BookStack\Util\HtmlPurifier\ConfiguredHtmlPurifier;
|
|
||||||
use DOMAttr;
|
use DOMAttr;
|
||||||
use DOMElement;
|
use DOMElement;
|
||||||
use DOMNodeList;
|
use DOMNodeList;
|
||||||
|
|||||||
@@ -1,53 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace BookStack\Util\HtmlPurifier\Filters;
|
|
||||||
|
|
||||||
use HTMLPurifier_Config;
|
|
||||||
use HTMLPurifier_Context;
|
|
||||||
use HTMLPurifier_URI;
|
|
||||||
use HTMLPurifier_URIFilter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Limits file:// URIs to only be used on anchor tags href attributes.
|
|
||||||
* This prevents use on iframes/embeds/images where they can be used to load external
|
|
||||||
* content on the network, triggering calls which may include NTLM auth hashes when in
|
|
||||||
* certain windows based environments.
|
|
||||||
*/
|
|
||||||
class UriLimitFileProtocolToAnchors extends HTMLPurifier_URIFilter
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @type string
|
|
||||||
*/
|
|
||||||
public $name = 'LimitFileProtocolToAnchors';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @type bool
|
|
||||||
*/
|
|
||||||
public $always_load = true;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param HTMLPurifier_URI $uri
|
|
||||||
* @param HTMLPurifier_Config $config
|
|
||||||
* @param HTMLPurifier_Context $context
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function filter(&$uri, $config, $context)
|
|
||||||
{
|
|
||||||
// Ensure we're only filtering file:// URIs'
|
|
||||||
if ($uri->scheme !== 'file') {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
$token = $context->get('CurrentToken', true);
|
|
||||||
$attr = $context->get('CurrentAttr', true);
|
|
||||||
|
|
||||||
// Only allow if used on hrefs on anchor tags
|
|
||||||
$isAnchor = $token && $token->name === 'a';
|
|
||||||
$isHref = $attr === 'href';
|
|
||||||
if ($isAnchor && $isHref) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace BookStack\Util\HtmlPurifier;
|
|
||||||
|
|
||||||
use HTMLPurifier_AttrDef;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Custom attribute definition to filter out potentially dangerous
|
|
||||||
* values from the srcset attribute.
|
|
||||||
*/
|
|
||||||
class SrcsetAttrDef extends HTMLPurifier_AttrDef
|
|
||||||
{
|
|
||||||
public function validate($string, $config, $context)
|
|
||||||
{
|
|
||||||
$lower = strtolower($string);
|
|
||||||
$nonAllowed = ['javascript:', 'vbscript:', 'data:', 'file:'];
|
|
||||||
|
|
||||||
foreach ($nonAllowed as $nonAllowedString) {
|
|
||||||
if (str_contains($lower, $nonAllowedString)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $string;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace BookStack\Util;
|
|
||||||
|
|
||||||
class UrlComparison
|
|
||||||
{
|
|
||||||
public function __construct(
|
|
||||||
protected readonly string $a,
|
|
||||||
protected readonly string $b,
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if the two URLs have the same origin.
|
|
||||||
*/
|
|
||||||
public function originsMatch(): bool
|
|
||||||
{
|
|
||||||
$aParts = parse_url($this->a);
|
|
||||||
$bParts = parse_url($this->b);
|
|
||||||
|
|
||||||
return ($aParts['host'] ?? '') === ($bParts['host'] ?? '')
|
|
||||||
&& ($aParts['scheme'] ?? '') === ($bParts['scheme'] ?? '')
|
|
||||||
&& ($aParts['port'] ?? '') === ($bParts['port'] ?? '');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if there's some overlap between the two URLs' paths.
|
|
||||||
*/
|
|
||||||
public function pathsOverlap(): bool
|
|
||||||
{
|
|
||||||
$aPath = parse_url($this->a, PHP_URL_PATH) ?? '';
|
|
||||||
$bPath = parse_url($this->b, PHP_URL_PATH) ?? '';
|
|
||||||
|
|
||||||
return str_starts_with($aPath, $bPath) || str_starts_with($bPath, $aPath);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace BookStack\Util;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Helps filter URLs to prevent use of undesired schemes.
|
|
||||||
* Also parses and rebuilds the URL to ensure it's valid.
|
|
||||||
*/
|
|
||||||
class UrlFilter
|
|
||||||
{
|
|
||||||
protected static array $allowedSchemes = ['http', 'https', 'mailto', 'tel', 'file', 'ftp', 'nntp', 'news'];
|
|
||||||
protected string $url;
|
|
||||||
|
|
||||||
public function __construct(string $url)
|
|
||||||
{
|
|
||||||
$this->url = trim($url);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if the URL is allowed to be generally used as a link
|
|
||||||
* in the application. This does not assure the original URL string
|
|
||||||
* provided is safe as-is. Ensure you use the clean method to produce
|
|
||||||
* a URL that is considered safe to use.
|
|
||||||
*/
|
|
||||||
public function isAllowed(): bool
|
|
||||||
{
|
|
||||||
$urlParts = parse_url($this->url);
|
|
||||||
if (!$urlParts) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Extra check to help avoid scenarios where non-standard characters are used in the scheme
|
|
||||||
// to work around parse_url handling with URLs which may be interpreted by the browser differently.
|
|
||||||
if (str_contains($this->url, ':') && !preg_match('/^[a-z]+:/i', $this->url)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($urlParts['scheme'])) {
|
|
||||||
return in_array(strtolower($urlParts['scheme']), self::$allowedSchemes);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Clean the URL to ensure it's valid and only uses the allowed schemes.
|
|
||||||
* If the URL is not allowed, return a placeholder.
|
|
||||||
*/
|
|
||||||
public function clean(): string
|
|
||||||
{
|
|
||||||
if (!$this->isAllowed()) {
|
|
||||||
return '#badlink';
|
|
||||||
}
|
|
||||||
|
|
||||||
$urlParts = parse_url($this->url);
|
|
||||||
if (!$urlParts) {
|
|
||||||
return '#badlink';
|
|
||||||
}
|
|
||||||
|
|
||||||
$url = '';
|
|
||||||
|
|
||||||
if (isset($urlParts['scheme']) || isset($urlParts['host'])) {
|
|
||||||
$scheme = strtolower($urlParts['scheme'] ?? 'https');
|
|
||||||
$url = $scheme . ':' . (isset($urlParts['host']) ? '//' : '');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($urlParts['user']) || isset($urlParts['pass'])) {
|
|
||||||
$url .= $urlParts['user'] ?? '';
|
|
||||||
if (isset($urlParts['pass'])) {
|
|
||||||
$url .= ':' . $urlParts['pass'];
|
|
||||||
}
|
|
||||||
$url .= '@';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($urlParts['host'])) {
|
|
||||||
$url .= $urlParts['host'];
|
|
||||||
}
|
|
||||||
if (isset($urlParts['port'])) {
|
|
||||||
$url .= ':' . $urlParts['port'];
|
|
||||||
}
|
|
||||||
if (isset($urlParts['path'])) {
|
|
||||||
$url .= $urlParts['path'];
|
|
||||||
}
|
|
||||||
if (isset($urlParts['query'])) {
|
|
||||||
$url .= '?' . $urlParts['query'];
|
|
||||||
}
|
|
||||||
if (isset($urlParts['fragment'])) {
|
|
||||||
$url .= '#' . $urlParts['fragment'];
|
|
||||||
}
|
|
||||||
|
|
||||||
return $url;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get schemes that are allowed to be used in content links.
|
|
||||||
*/
|
|
||||||
public static function getAllowedSchemes(): array
|
|
||||||
{
|
|
||||||
return self::$allowedSchemes;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
458
composer.lock
generated
458
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -1 +1 @@
|
|||||||
22e02ee72d21ff719c1073abbec8302f8e2096ba6d072e133051064ed24b45b1
|
fc31a87fca03999de11755ea0aa41c1bcd376a271a5ee30277ebe9f68b9c9fab
|
||||||
@@ -482,8 +482,8 @@ electron-to-chromium
|
|||||||
License: ISC
|
License: ISC
|
||||||
License File: node_modules/electron-to-chromium/LICENSE
|
License File: node_modules/electron-to-chromium/LICENSE
|
||||||
Copyright: Copyright 2018 Kilian Valkhof
|
Copyright: Copyright 2018 Kilian Valkhof
|
||||||
Source: git+https://github.com/Kilian/electron-to-chromium.git
|
Source: git+https://github.com/kilian/electron-to-chromium.git
|
||||||
Link: git+https://github.com/Kilian/electron-to-chromium.git
|
Link: git+https://github.com/kilian/electron-to-chromium.git
|
||||||
-----------
|
-----------
|
||||||
emittery
|
emittery
|
||||||
License: MIT
|
License: MIT
|
||||||
@@ -860,7 +860,7 @@ License: MIT
|
|||||||
License File: node_modules/handlebars/LICENSE
|
License File: node_modules/handlebars/LICENSE
|
||||||
Copyright: Copyright (C) 2011-2019 by Yehuda Katz
|
Copyright: Copyright (C) 2011-2019 by Yehuda Katz
|
||||||
Source: https://github.com/handlebars-lang/handlebars.js.git
|
Source: https://github.com/handlebars-lang/handlebars.js.git
|
||||||
Link: https://handlebarsjs.com/
|
Link: https://www.handlebarsjs.com/
|
||||||
-----------
|
-----------
|
||||||
has-bigints
|
has-bigints
|
||||||
License: MIT
|
License: MIT
|
||||||
@@ -1663,6 +1663,13 @@ Copyright: Copyright (c) Stephen Sugden <**@*************.***> (stephensugden.co
|
|||||||
Source: grncdr/merge-stream
|
Source: grncdr/merge-stream
|
||||||
Link: grncdr/merge-stream
|
Link: grncdr/merge-stream
|
||||||
-----------
|
-----------
|
||||||
|
micromatch
|
||||||
|
License: MIT
|
||||||
|
License File: node_modules/micromatch/LICENSE
|
||||||
|
Copyright: Copyright (c) 2014-present, Jon Schlinkert.
|
||||||
|
Source: micromatch/micromatch
|
||||||
|
Link: https://github.com/micromatch/micromatch
|
||||||
|
-----------
|
||||||
mimic-fn
|
mimic-fn
|
||||||
License: MIT
|
License: MIT
|
||||||
License File: node_modules/mimic-fn/license
|
License File: node_modules/mimic-fn/license
|
||||||
@@ -3567,6 +3574,13 @@ Copyright: Copyright (c) 2017-present Devon Govett
|
|||||||
Source: https://github.com/parcel-bundler/watcher.git
|
Source: https://github.com/parcel-bundler/watcher.git
|
||||||
Link: https://github.com/parcel-bundler/watcher.git
|
Link: https://github.com/parcel-bundler/watcher.git
|
||||||
-----------
|
-----------
|
||||||
|
@parcel/watcher-linux-x64-musl
|
||||||
|
License: MIT
|
||||||
|
License File: node_modules/@parcel/watcher-linux-x64-musl/LICENSE
|
||||||
|
Copyright: Copyright (c) 2017-present Devon Govett
|
||||||
|
Source: https://github.com/parcel-bundler/watcher.git
|
||||||
|
Link: https://github.com/parcel-bundler/watcher.git
|
||||||
|
-----------
|
||||||
@parcel/watcher
|
@parcel/watcher
|
||||||
License: MIT
|
License: MIT
|
||||||
License File: node_modules/@parcel/watcher/LICENSE
|
License File: node_modules/@parcel/watcher/LICENSE
|
||||||
@@ -3589,8 +3603,8 @@ Link: https://github.com/un-ts/pkgr/blob/master/packages/core
|
|||||||
License: MIT
|
License: MIT
|
||||||
License File: node_modules/@sinclair/typebox/license
|
License File: node_modules/@sinclair/typebox/license
|
||||||
Copyright: Copyright (c) 2017-2026 Haydn Paterson
|
Copyright: Copyright (c) 2017-2026 Haydn Paterson
|
||||||
Source: https://github.com/sinclairzx81/sinclair-typebox
|
Source: https://github.com/sinclairzx81/typebox-legacy
|
||||||
Link: https://github.com/sinclairzx81/sinclair-typebox
|
Link: https://github.com/sinclairzx81/typebox-legacy
|
||||||
-----------
|
-----------
|
||||||
@sinonjs/commons
|
@sinonjs/commons
|
||||||
License: BSD-3-Clause
|
License: BSD-3-Clause
|
||||||
@@ -3803,3 +3817,8 @@ Link: https://github.com/ungap/structured-clone#readme
|
|||||||
License: MIT
|
License: MIT
|
||||||
Source: git+https://github.com/unrs/unrs-resolver.git
|
Source: git+https://github.com/unrs/unrs-resolver.git
|
||||||
Link: https://github.com/unrs/unrs-resolver#readme
|
Link: https://github.com/unrs/unrs-resolver#readme
|
||||||
|
-----------
|
||||||
|
@unrs/resolver-binding-linux-x64-musl
|
||||||
|
License: MIT
|
||||||
|
Source: git+https://github.com/unrs/unrs-resolver.git
|
||||||
|
Link: https://github.com/unrs/unrs-resolver#readme
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ License: BSD-3-Clause
|
|||||||
License File: vendor/firebase/php-jwt/LICENSE
|
License File: vendor/firebase/php-jwt/LICENSE
|
||||||
Copyright: Copyright (c) 2011, Neuman Vong
|
Copyright: Copyright (c) 2011, Neuman Vong
|
||||||
Source: https://github.com/googleapis/php-jwt.git
|
Source: https://github.com/googleapis/php-jwt.git
|
||||||
Link: https://github.com/googleapis/php-jwt
|
Link: https://github.com/firebase/php-jwt
|
||||||
-----------
|
-----------
|
||||||
fruitcake/php-cors
|
fruitcake/php-cors
|
||||||
License: MIT
|
License: MIT
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -99,8 +99,8 @@ return [
|
|||||||
'user_update_notification' => 'Uživatel byl úspěšně aktualizován',
|
'user_update_notification' => 'Uživatel byl úspěšně aktualizován',
|
||||||
'user_delete' => 'odstranil uživatele',
|
'user_delete' => 'odstranil uživatele',
|
||||||
'user_delete_notification' => 'Uživatel byl úspěšně odstraněn',
|
'user_delete_notification' => 'Uživatel byl úspěšně odstraněn',
|
||||||
'user_mfa_reset' => 'obnovit vícefaktorové ověření pro uživatele',
|
'user_mfa_reset' => 'reset MFA for user',
|
||||||
'user_mfa_reset_notification' => 'Obnovení metod vícefaktorového ověřování',
|
'user_mfa_reset_notification' => 'Multi-factor authentication methods reset',
|
||||||
|
|
||||||
// API Tokens
|
// API Tokens
|
||||||
'api_token_create' => 'API token byl vytvořen',
|
'api_token_create' => 'API token byl vytvořen',
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ return [
|
|||||||
|
|
||||||
'failed' => 'Neplatné přihlašovací údaje.',
|
'failed' => 'Neplatné přihlašovací údaje.',
|
||||||
'throttle' => 'Příliš mnoho pokusů o přihlášení. Zkuste to prosím znovu za :seconds sekund.',
|
'throttle' => 'Příliš mnoho pokusů o přihlášení. Zkuste to prosím znovu za :seconds sekund.',
|
||||||
'mfa_throttle' => '{0}Příliš mnoho pokusů o vícefázové ověření. Zkuste to prosím znovu za :seconds sekund.|{1}Příliš mnoho pokusů o vícefázové ověření. Zkuste to prosím znovu za :seconds sekundu.|[2,4]Příliš mnoho pokusů o vícefázové ověření. Zkuste to prosím znovu za :seconds sekundy.|[5,*]Příliš mnoho pokusů o vícefázové ověření. Zkuste to prosím znovu za :seconds sekund.',
|
'mfa_throttle' => 'Too many multi-factor verification attempts. Please try again in :seconds seconds.',
|
||||||
|
|
||||||
// Login & Register
|
// Login & Register
|
||||||
'sign_up' => 'Registrace',
|
'sign_up' => 'Registrace',
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ return [
|
|||||||
'books_sort_desc' => 'Pro přeuspořádání obsahu přesuňte kapitoly a stránky v knize. Mohou být přidány další knihy, které umožní snadný přesun kapitol a stránek mezi knihami. Volitelně lze nastavit pravidlo automatického řazení, aby se při změnách automaticky seřadil obsah této knihy.',
|
'books_sort_desc' => 'Pro přeuspořádání obsahu přesuňte kapitoly a stránky v knize. Mohou být přidány další knihy, které umožní snadný přesun kapitol a stránek mezi knihami. Volitelně lze nastavit pravidlo automatického řazení, aby se při změnách automaticky seřadil obsah této knihy.',
|
||||||
'books_sort_auto_sort' => 'Možnost automatického řazení',
|
'books_sort_auto_sort' => 'Možnost automatického řazení',
|
||||||
'books_sort_auto_sort_active' => 'Aktivní automatické řazení: :sortName',
|
'books_sort_auto_sort_active' => 'Aktivní automatické řazení: :sortName',
|
||||||
'books_sort_auto_sort_creation_hint' => 'Pravidla řazení mohou být vytvořena v nastavení "Seznamy a řazení" uživatelem s příslušnými oprávněními.',
|
'books_sort_auto_sort_creation_hint' => 'Auto sort option rules can be created in the "Lists & Sorting" settings area by a user with the relevant permissions.',
|
||||||
'books_sort_named' => 'Seřadit knihu :bookName',
|
'books_sort_named' => 'Seřadit knihu :bookName',
|
||||||
'books_sort_name' => 'Seřadit podle názvu',
|
'books_sort_name' => 'Seřadit podle názvu',
|
||||||
'books_sort_created' => 'Seřadit podle data vytvoření',
|
'books_sort_created' => 'Seřadit podle data vytvoření',
|
||||||
@@ -331,9 +331,9 @@ return [
|
|||||||
|
|
||||||
// Editor Sidebar
|
// Editor Sidebar
|
||||||
'toggle_sidebar' => 'Skrýt/Zobrazit postranní panel',
|
'toggle_sidebar' => 'Skrýt/Zobrazit postranní panel',
|
||||||
'page_contents' => 'Obsah stránky',
|
'page_contents' => 'Page Contents',
|
||||||
'page_contents_none' => 'Na stránce nejsou žádné nadpisy.',
|
'page_contents_none' => 'No headings were found in the page content.',
|
||||||
'page_contents_info' => 'Obsah se generuje ze všech použitých nadpisů na stránce.',
|
'page_contents_info' => 'The contents menu is generated from any heading formats used in the page.',
|
||||||
'page_tags' => 'Štítky stránky',
|
'page_tags' => 'Štítky stránky',
|
||||||
'chapter_tags' => 'Štítky kapitoly',
|
'chapter_tags' => 'Štítky kapitoly',
|
||||||
'book_tags' => 'Štítky knihy',
|
'book_tags' => 'Štítky knihy',
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ return [
|
|||||||
'role_all' => 'Vše',
|
'role_all' => 'Vše',
|
||||||
'role_own' => 'Vlastní',
|
'role_own' => 'Vlastní',
|
||||||
'role_controlled_by_asset' => 'Řídí se obsahem, do kterého jsou nahrávány',
|
'role_controlled_by_asset' => 'Řídí se obsahem, do kterého jsou nahrávány',
|
||||||
'role_controlled_by_page_delete' => 'Řídí se právem k odstranění stránky',
|
'role_controlled_by_page_delete' => 'Controlled by page delete permissions',
|
||||||
'role_save' => 'Uložit roli',
|
'role_save' => 'Uložit roli',
|
||||||
'role_users' => 'Uživatelé mající tuto roli',
|
'role_users' => 'Uživatelé mající tuto roli',
|
||||||
'role_users_none' => 'Žádný uživatel nemá tuto roli',
|
'role_users_none' => 'Žádný uživatel nemá tuto roli',
|
||||||
@@ -260,13 +260,13 @@ return [
|
|||||||
'users_api_tokens_create' => 'Vytvořit Token',
|
'users_api_tokens_create' => 'Vytvořit Token',
|
||||||
'users_api_tokens_expires' => 'Vyprší',
|
'users_api_tokens_expires' => 'Vyprší',
|
||||||
'users_api_tokens_docs' => 'Dokumentace API',
|
'users_api_tokens_docs' => 'Dokumentace API',
|
||||||
'users_mfa' => 'Vícefaktorové ověření',
|
'users_mfa' => 'Vícefázové ověření',
|
||||||
'users_mfa_desc' => 'Nastavit vícefaktorové ověřování jako další vrstvu zabezpečení vašeho uživatelského účtu.',
|
'users_mfa_desc' => 'Nastavit vícefaktorové ověřování jako další vrstvu zabezpečení vašeho uživatelského účtu.',
|
||||||
'users_mfa_x_methods' => ':count nastavená metoda|:count nastavených metod',
|
'users_mfa_x_methods' => ':count nastavená metoda|:count nastavených metod',
|
||||||
'users_mfa_configure' => 'Konfigurovat metody',
|
'users_mfa_configure' => 'Konfigurovat metody',
|
||||||
'users_mfa_reset' => 'Obnova metod vícefaktorového ověření',
|
'users_mfa_reset' => 'Reset Multi-Factor Authentication Methods',
|
||||||
'users_mfa_reset_desc' => 'Tímto se obnoví a vymažou všechny nakonfigurované metody vícefaktorového ověřování pro tohoto uživatele. Pokud některá z jeho rolí vyžaduje vícefaktorové ověřování, bude při příštím přihlášení vyzván k nastavení nových metod.',
|
'users_mfa_reset_desc' => 'This will reset and clear all configured multi-factor authentication methods for this user. If multi-factor authentication is required by any of their roles, they\'ll be prompted to configure new methods on their next login.',
|
||||||
'users_mfa_reset_confirm' => 'Opravdu chcete obnovit vícefaktorové ověřování pro tohoto uživatele?',
|
'users_mfa_reset_confirm' => 'Are you sure you want to reset multi-factor authentication for this user?',
|
||||||
|
|
||||||
// API Tokens
|
// API Tokens
|
||||||
'user_api_token_create' => 'Vytvořit API Token',
|
'user_api_token_create' => 'Vytvořit API Token',
|
||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ return [
|
|||||||
|
|
||||||
'failed' => 'De indtastede brugeroplysninger stemmer ikke overens med vores registreringer.',
|
'failed' => 'De indtastede brugeroplysninger stemmer ikke overens med vores registreringer.',
|
||||||
'throttle' => 'For mange mislykkede loginforsøg. Prøv igen om :seconds sekunder.',
|
'throttle' => 'For mange mislykkede loginforsøg. Prøv igen om :seconds sekunder.',
|
||||||
'mfa_throttle' => 'For mange mislykkede loginforsøg. Prøv igen om :seconds sekunder.',
|
'mfa_throttle' => 'Too many multi-factor verification attempts. Please try again in :seconds seconds.',
|
||||||
|
|
||||||
// Login & Register
|
// Login & Register
|
||||||
'sign_up' => 'Registrer',
|
'sign_up' => 'Registrer',
|
||||||
|
|||||||
@@ -331,9 +331,9 @@ return [
|
|||||||
|
|
||||||
// Editor Sidebar
|
// Editor Sidebar
|
||||||
'toggle_sidebar' => 'Sidebjælke til/fra',
|
'toggle_sidebar' => 'Sidebjælke til/fra',
|
||||||
'page_contents' => 'Sideindhold',
|
'page_contents' => 'Page Contents',
|
||||||
'page_contents_none' => 'Ingen overskrifter blev fundet i sidens indhold.',
|
'page_contents_none' => 'No headings were found in the page content.',
|
||||||
'page_contents_info' => 'Indholdsmenuen er genereret fra alle kursformater, der bruges på siden.',
|
'page_contents_info' => 'The contents menu is generated from any heading formats used in the page.',
|
||||||
'page_tags' => 'Sidetags',
|
'page_tags' => 'Sidetags',
|
||||||
'chapter_tags' => 'Kapiteltags',
|
'chapter_tags' => 'Kapiteltags',
|
||||||
'book_tags' => 'Bogtags',
|
'book_tags' => 'Bogtags',
|
||||||
|
|||||||
@@ -366,9 +366,8 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'Thailandsk',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
'uk' => 'Українська',
|
'uk' => 'Українська',
|
||||||
'uz' => 'O‘zbekcha',
|
'uz' => 'O‘zbekcha',
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ return [
|
|||||||
|
|
||||||
'failed' => 'Diese Anmeldedaten stimmen nicht mit unseren Aufzeichnungen überein.',
|
'failed' => 'Diese Anmeldedaten stimmen nicht mit unseren Aufzeichnungen überein.',
|
||||||
'throttle' => 'Zu viele Anmeldeversuche. Bitte versuchen Sie es in :seconds Sekunden erneut.',
|
'throttle' => 'Zu viele Anmeldeversuche. Bitte versuchen Sie es in :seconds Sekunden erneut.',
|
||||||
'mfa_throttle' => 'Zu viele Multi-Faktor-Verifizierungsversuche. Bitte versuchen Sie es in :seconds Sekunden erneut.',
|
'mfa_throttle' => 'Too many multi-factor verification attempts. Please try again in :seconds seconds.',
|
||||||
|
|
||||||
// Login & Register
|
// Login & Register
|
||||||
'sign_up' => 'Registrieren',
|
'sign_up' => 'Registrieren',
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ return [
|
|||||||
'books_sort_desc' => 'Verschieben Sie Kapitel und Seiten innerhalb eines Buches, um dessen Inhalt neu zu ordnen. Es können weitere Bücher hinzugefügt werden, wodurch Kapitel und Seiten problemlos zwischen den Büchern verschoben werden können. Optional kann eine automatische Sortierregel festgelegt werden, um den Inhalt dieses Buches bei Änderungen automatisch zu sortieren.',
|
'books_sort_desc' => 'Verschieben Sie Kapitel und Seiten innerhalb eines Buches, um dessen Inhalt neu zu ordnen. Es können weitere Bücher hinzugefügt werden, wodurch Kapitel und Seiten problemlos zwischen den Büchern verschoben werden können. Optional kann eine automatische Sortierregel festgelegt werden, um den Inhalt dieses Buches bei Änderungen automatisch zu sortieren.',
|
||||||
'books_sort_auto_sort' => 'Automatische Sortierfunktionsoption',
|
'books_sort_auto_sort' => 'Automatische Sortierfunktionsoption',
|
||||||
'books_sort_auto_sort_active' => 'Automatische Sortierung aktiv: :sortName',
|
'books_sort_auto_sort_active' => 'Automatische Sortierung aktiv: :sortName',
|
||||||
'books_sort_auto_sort_creation_hint' => 'Regeln für die automatische Sortierung können von einem Benutzer mit den entsprechenden Berechtigungen im Einstellungsbereich "Listen & Sortieren" erstellt werden.',
|
'books_sort_auto_sort_creation_hint' => 'Auto sort option rules can be created in the "Lists & Sorting" settings area by a user with the relevant permissions.',
|
||||||
'books_sort_named' => 'Buch ":bookName" sortieren',
|
'books_sort_named' => 'Buch ":bookName" sortieren',
|
||||||
'books_sort_name' => 'Sortieren nach Namen',
|
'books_sort_name' => 'Sortieren nach Namen',
|
||||||
'books_sort_created' => 'Sortieren nach Erstellungsdatum',
|
'books_sort_created' => 'Sortieren nach Erstellungsdatum',
|
||||||
@@ -331,9 +331,9 @@ return [
|
|||||||
|
|
||||||
// Editor Sidebar
|
// Editor Sidebar
|
||||||
'toggle_sidebar' => 'Seitenleiste umschalten',
|
'toggle_sidebar' => 'Seitenleiste umschalten',
|
||||||
'page_contents' => 'Seiteninhalt',
|
'page_contents' => 'Page Contents',
|
||||||
'page_contents_none' => 'Es wurden keine Überschriften im Seiteninhalt gefunden.',
|
'page_contents_none' => 'No headings were found in the page content.',
|
||||||
'page_contents_info' => 'Das Inhaltsmenü wird aus allen auf der Seite verwendeten Überschriften generiert.',
|
'page_contents_info' => 'The contents menu is generated from any heading formats used in the page.',
|
||||||
'page_tags' => 'Seiten-Schlagwörter',
|
'page_tags' => 'Seiten-Schlagwörter',
|
||||||
'chapter_tags' => 'Kapitel-Schlagwörter',
|
'chapter_tags' => 'Kapitel-Schlagwörter',
|
||||||
'book_tags' => 'Buch-Schlagwörter',
|
'book_tags' => 'Buch-Schlagwörter',
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ return [
|
|||||||
'role_all' => 'Alle',
|
'role_all' => 'Alle',
|
||||||
'role_own' => 'Eigene',
|
'role_own' => 'Eigene',
|
||||||
'role_controlled_by_asset' => 'Abhängig von dem Asset, in das sie hochgeladen werden',
|
'role_controlled_by_asset' => 'Abhängig von dem Asset, in das sie hochgeladen werden',
|
||||||
'role_controlled_by_page_delete' => 'Kontrolliert durch die Berechtigung zum Löschen einer Seite',
|
'role_controlled_by_page_delete' => 'Controlled by page delete permissions',
|
||||||
'role_save' => 'Rolle speichern',
|
'role_save' => 'Rolle speichern',
|
||||||
'role_users' => 'Dieser Rolle zugeordnete Benutzer',
|
'role_users' => 'Dieser Rolle zugeordnete Benutzer',
|
||||||
'role_users_none' => 'Derzeit sind diesem Rollentyp keine Benutzer zugewiesen',
|
'role_users_none' => 'Derzeit sind diesem Rollentyp keine Benutzer zugewiesen',
|
||||||
@@ -265,7 +265,7 @@ return [
|
|||||||
'users_mfa_x_methods' => ':count Methode konfiguriert|:count Methoden konfiguriert',
|
'users_mfa_x_methods' => ':count Methode konfiguriert|:count Methoden konfiguriert',
|
||||||
'users_mfa_configure' => 'Methoden konfigurieren',
|
'users_mfa_configure' => 'Methoden konfigurieren',
|
||||||
'users_mfa_reset' => 'Setze Multifaktor-Authentifizierung zurück',
|
'users_mfa_reset' => 'Setze Multifaktor-Authentifizierung zurück',
|
||||||
'users_mfa_reset_desc' => 'Dies wird alle konfigurierten Multifaktor-Authentifizierungsmethoden für diesen Nutzer zurücksetzen. Falls Multifaktor-Authentifizierung für eine seiner Rollen erforderlich ist, wird der Nutzer aufgefordert, neue Methoden beim nächsten Login zu konfigurieren.',
|
'users_mfa_reset_desc' => 'Dies wird alle konfigurierten Multifaktor-Authentifizierungsmethoden für diesen Nutzer zurücksetzen. Falls Multifaktor-Authentifizierung für eine seiner Rollen erforderlich ist, werden sie aufgefordert, neue Methoden beim nächsten Login zu konfigurieren.',
|
||||||
'users_mfa_reset_confirm' => 'Sind Sie sicher, dass Sie diese Multi-Faktor-Authentifizierungsmethode für diesen Nutzer zurücksetzen möchten?',
|
'users_mfa_reset_confirm' => 'Sind Sie sicher, dass Sie diese Multi-Faktor-Authentifizierungsmethode für diesen Nutzer zurücksetzen möchten?',
|
||||||
|
|
||||||
// API Tokens
|
// API Tokens
|
||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Russisch',
|
'ru' => 'Russisch',
|
||||||
'sk' => 'Slowenisch',
|
'sk' => 'Slowenisch',
|
||||||
'sl' => 'Slowenisch',
|
'sl' => 'Slowenisch',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Schwedisch',
|
'sv' => 'Schwedisch',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkisch',
|
'tr' => 'Türkisch',
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ return [
|
|||||||
|
|
||||||
'failed' => 'Die eingegebenen Anmeldedaten sind ungültig.',
|
'failed' => 'Die eingegebenen Anmeldedaten sind ungültig.',
|
||||||
'throttle' => 'Zu viele Anmeldeversuche. Bitte versuche es in :seconds Sekunden erneut.',
|
'throttle' => 'Zu viele Anmeldeversuche. Bitte versuche es in :seconds Sekunden erneut.',
|
||||||
'mfa_throttle' => 'Zu viele Multi-Faktor-Verifizierungsversuche. Bitte versuche es in :seconds Sekunden erneut.',
|
'mfa_throttle' => 'Too many multi-factor verification attempts. Please try again in :seconds seconds.',
|
||||||
|
|
||||||
// Login & Register
|
// Login & Register
|
||||||
'sign_up' => 'Registrieren',
|
'sign_up' => 'Registrieren',
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ return [
|
|||||||
'books_sort_desc' => 'Kapitel und Seiten innerhalb eines Buches verschieben, um dessen Inhalt zu reorganisieren. Andere Bücher können hinzugefügt werden, was das Verschieben von Kapiteln und Seiten zwischen Büchern erleichtert. Optional kann eine automatische Sortierregel erstellt werden, um den Inhalt dieses Buches nach Änderungen automatisch zu sortieren.',
|
'books_sort_desc' => 'Kapitel und Seiten innerhalb eines Buches verschieben, um dessen Inhalt zu reorganisieren. Andere Bücher können hinzugefügt werden, was das Verschieben von Kapiteln und Seiten zwischen Büchern erleichtert. Optional kann eine automatische Sortierregel erstellt werden, um den Inhalt dieses Buches nach Änderungen automatisch zu sortieren.',
|
||||||
'books_sort_auto_sort' => 'Auto-Sortieroption',
|
'books_sort_auto_sort' => 'Auto-Sortieroption',
|
||||||
'books_sort_auto_sort_active' => 'Automatische Sortierung aktiv: :sortName',
|
'books_sort_auto_sort_active' => 'Automatische Sortierung aktiv: :sortName',
|
||||||
'books_sort_auto_sort_creation_hint' => 'Regeln für die automatische Sortierung können von einem Benutzer mit den entsprechenden Berechtigungen im Einstellungsbereich "Listen & Sortieren" erstellt werden.',
|
'books_sort_auto_sort_creation_hint' => 'Auto sort option rules can be created in the "Lists & Sorting" settings area by a user with the relevant permissions.',
|
||||||
'books_sort_named' => 'Buch ":bookName" sortieren',
|
'books_sort_named' => 'Buch ":bookName" sortieren',
|
||||||
'books_sort_name' => 'Sortieren nach Namen',
|
'books_sort_name' => 'Sortieren nach Namen',
|
||||||
'books_sort_created' => 'Sortieren nach Erstellungsdatum',
|
'books_sort_created' => 'Sortieren nach Erstellungsdatum',
|
||||||
@@ -331,9 +331,9 @@ return [
|
|||||||
|
|
||||||
// Editor Sidebar
|
// Editor Sidebar
|
||||||
'toggle_sidebar' => 'Seitenleiste umschalten',
|
'toggle_sidebar' => 'Seitenleiste umschalten',
|
||||||
'page_contents' => 'Seiteninhalt',
|
'page_contents' => 'Page Contents',
|
||||||
'page_contents_none' => 'Es wurden keine Überschriften im Seiteninhalt gefunden.',
|
'page_contents_none' => 'No headings were found in the page content.',
|
||||||
'page_contents_info' => 'Das Inhaltsmenü wird aus allen auf der Seite verwendeten Überschriften generiert.',
|
'page_contents_info' => 'The contents menu is generated from any heading formats used in the page.',
|
||||||
'page_tags' => 'Seiten-Schlagwörter',
|
'page_tags' => 'Seiten-Schlagwörter',
|
||||||
'chapter_tags' => 'Kapitel-Schlagwörter',
|
'chapter_tags' => 'Kapitel-Schlagwörter',
|
||||||
'book_tags' => 'Buch-Schlagwörter',
|
'book_tags' => 'Buch-Schlagwörter',
|
||||||
|
|||||||
@@ -208,7 +208,7 @@ Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung
|
|||||||
'role_all' => 'Alle',
|
'role_all' => 'Alle',
|
||||||
'role_own' => 'Eigene',
|
'role_own' => 'Eigene',
|
||||||
'role_controlled_by_asset' => 'Berechtigungen werden vom Uploadziel bestimmt',
|
'role_controlled_by_asset' => 'Berechtigungen werden vom Uploadziel bestimmt',
|
||||||
'role_controlled_by_page_delete' => 'Kontrolliert durch die Berechtigung zum Löschen einer Seite',
|
'role_controlled_by_page_delete' => 'Controlled by page delete permissions',
|
||||||
'role_save' => 'Rolle speichern',
|
'role_save' => 'Rolle speichern',
|
||||||
'role_users' => 'Dieser Rolle zugeordnete Benutzer',
|
'role_users' => 'Dieser Rolle zugeordnete Benutzer',
|
||||||
'role_users_none' => 'Bisher sind dieser Rolle keine Benutzer zugeordnet',
|
'role_users_none' => 'Bisher sind dieser Rolle keine Benutzer zugeordnet',
|
||||||
@@ -266,8 +266,8 @@ Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung
|
|||||||
'users_mfa_x_methods' => ':count Methode konfiguriert|:count Methoden konfiguriert',
|
'users_mfa_x_methods' => ':count Methode konfiguriert|:count Methoden konfiguriert',
|
||||||
'users_mfa_configure' => 'Methoden konfigurieren',
|
'users_mfa_configure' => 'Methoden konfigurieren',
|
||||||
'users_mfa_reset' => 'Setze Multifaktor-Authentifizierung zurück',
|
'users_mfa_reset' => 'Setze Multifaktor-Authentifizierung zurück',
|
||||||
'users_mfa_reset_desc' => 'Dies wird alle konfigurierten Multifaktor-Authentifizierungsmethoden für diesen Nutzer zurücksetzen. Falls Multifaktor-Authentifizierung für eine seiner Rollen erforderlich ist, wird der Nutzer aufgefordert, neue Methoden beim nächsten Login zu konfigurieren.',
|
'users_mfa_reset_desc' => 'Dies wird alle konfigurierten Multifaktor-Authentifizierungsmethoden für diesen Nutzer zurücksetzen. Falls Multifaktor-Authentifizierung für eine seiner Rollen erforderlich ist, werden sie aufgefordert, neue Methoden beim nächsten Login zu konfigurieren.',
|
||||||
'users_mfa_reset_confirm' => 'Bist du sicher, dass du diese Multi-Faktor-Authentifizierungsmethode für diesen Nutzer zurücksetzen möchtest?',
|
'users_mfa_reset_confirm' => 'Sind Sie sicher, dass Sie diese Multi-Faktor-Authentifizierungsmethode für diesen Nutzer zurücksetzen möchten?',
|
||||||
|
|
||||||
// API Tokens
|
// API Tokens
|
||||||
'user_api_token_create' => 'Neuen API-Token erstellen',
|
'user_api_token_create' => 'Neuen API-Token erstellen',
|
||||||
@@ -367,7 +367,6 @@ Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung
|
|||||||
'ru' => 'Russisch',
|
'ru' => 'Russisch',
|
||||||
'sk' => 'Slowenisch',
|
'sk' => 'Slowenisch',
|
||||||
'sl' => 'Slowenisch',
|
'sl' => 'Slowenisch',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Schwedisch',
|
'sv' => 'Schwedisch',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkisch',
|
'tr' => 'Türkisch',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Ruso',
|
'ru' => 'Ruso',
|
||||||
'sk' => 'Eslovaco',
|
'sk' => 'Eslovaco',
|
||||||
'sl' => 'Esloveno',
|
'sl' => 'Esloveno',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Sueco',
|
'sv' => 'Sueco',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Turco',
|
'tr' => 'Turco',
|
||||||
|
|||||||
@@ -367,7 +367,6 @@ return [
|
|||||||
'ru' => 'Ruso',
|
'ru' => 'Ruso',
|
||||||
'sk' => 'Eslovaco',
|
'sk' => 'Eslovaco',
|
||||||
'sl' => 'Esloveno',
|
'sl' => 'Esloveno',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Sueco',
|
'sv' => 'Sueco',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Turco',
|
'tr' => 'Turco',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский (vene keel)',
|
'ru' => 'Русский (vene keel)',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Sloveenia',
|
'sl' => 'Sloveenia',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Rootsi',
|
'sv' => 'Rootsi',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türgi',
|
'tr' => 'Türgi',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Russe',
|
'ru' => 'Russe',
|
||||||
'sk' => 'Slovaque',
|
'sk' => 'Slovaque',
|
||||||
'sl' => 'Slovène',
|
'sl' => 'Slovène',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Suédois',
|
'sv' => 'Suédois',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Turc',
|
'tr' => 'Turc',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,9 +366,8 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'Thai',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
'uk' => 'Українська',
|
'uk' => 'Українська',
|
||||||
'uz' => 'O‘zbekcha',
|
'uz' => 'O‘zbekcha',
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ return [
|
|||||||
'user_update_notification' => 'Pengguna berhasil diperbarui',
|
'user_update_notification' => 'Pengguna berhasil diperbarui',
|
||||||
'user_delete' => 'pengguna yang dihapus',
|
'user_delete' => 'pengguna yang dihapus',
|
||||||
'user_delete_notification' => 'Pengguna berhasil dihapus',
|
'user_delete_notification' => 'Pengguna berhasil dihapus',
|
||||||
'user_mfa_reset' => 'atur ulang MFA untuk pengguna',
|
'user_mfa_reset' => 'reset MFA for user',
|
||||||
'user_mfa_reset_notification' => 'Multi-factor authentication methods reset',
|
'user_mfa_reset_notification' => 'Multi-factor authentication methods reset',
|
||||||
|
|
||||||
// API Tokens
|
// API Tokens
|
||||||
|
|||||||
@@ -8,8 +8,8 @@
|
|||||||
return [
|
return [
|
||||||
// General editor terms
|
// General editor terms
|
||||||
'general' => 'Umum',
|
'general' => 'Umum',
|
||||||
'advanced' => 'Tingkat lanjut',
|
'advanced' => 'Lanjutan',
|
||||||
'none' => 'Tidak Satupun',
|
'none' => 'Tidak Ada',
|
||||||
'cancel' => 'Batal',
|
'cancel' => 'Batal',
|
||||||
'save' => 'Simpan',
|
'save' => 'Simpan',
|
||||||
'close' => 'Tutup',
|
'close' => 'Tutup',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,9 +366,8 @@ return [
|
|||||||
'ru' => 'Russo',
|
'ru' => 'Russo',
|
||||||
'sk' => 'Sloveno',
|
'sk' => 'Sloveno',
|
||||||
'sl' => 'Sloveno',
|
'sl' => 'Sloveno',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svedese',
|
'sv' => 'Svedese',
|
||||||
'th' => 'Thailandese',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Turco',
|
'tr' => 'Turco',
|
||||||
'uk' => 'Ucraino',
|
'uk' => 'Ucraino',
|
||||||
'uz' => 'O‘zbekcha',
|
'uz' => 'O‘zbekcha',
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ return [
|
|||||||
'books_sort_desc' => 'ブック内のチャプタおよびページを移動して内容を再編成できます。他のブックを並べて、ブック間でチャプタやページを簡単に移動することもできます。オプションで自動ソートルールを設定すると、変更時にブックの内容を自動的にソートすることができます。',
|
'books_sort_desc' => 'ブック内のチャプタおよびページを移動して内容を再編成できます。他のブックを並べて、ブック間でチャプタやページを簡単に移動することもできます。オプションで自動ソートルールを設定すると、変更時にブックの内容を自動的にソートすることができます。',
|
||||||
'books_sort_auto_sort' => '自動ソートオプション',
|
'books_sort_auto_sort' => '自動ソートオプション',
|
||||||
'books_sort_auto_sort_active' => '自動ソート有効: :sortName',
|
'books_sort_auto_sort_active' => '自動ソート有効: :sortName',
|
||||||
'books_sort_auto_sort_creation_hint' => '自動ソートオプションのルールは、関連する権限を持ったユーザーによって設定の「一覧とソート」エリアで作成できます。',
|
'books_sort_auto_sort_creation_hint' => 'Auto sort option rules can be created in the "Lists & Sorting" settings area by a user with the relevant permissions.',
|
||||||
'books_sort_named' => 'ブック「:bookName」を並べ替え',
|
'books_sort_named' => 'ブック「:bookName」を並べ替え',
|
||||||
'books_sort_name' => '名前で並べ替え',
|
'books_sort_name' => '名前で並べ替え',
|
||||||
'books_sort_created' => '作成日で並べ替え',
|
'books_sort_created' => '作成日で並べ替え',
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ return [
|
|||||||
'role_all' => '全て',
|
'role_all' => '全て',
|
||||||
'role_own' => '自身',
|
'role_own' => '自身',
|
||||||
'role_controlled_by_asset' => 'このアセットに対し、右記の操作を許可:',
|
'role_controlled_by_asset' => 'このアセットに対し、右記の操作を許可:',
|
||||||
'role_controlled_by_page_delete' => 'ページ削除権限を適用',
|
'role_controlled_by_page_delete' => 'Controlled by page delete permissions',
|
||||||
'role_save' => '役割を保存',
|
'role_save' => '役割を保存',
|
||||||
'role_users' => 'この役割を持つユーザー',
|
'role_users' => 'この役割を持つユーザー',
|
||||||
'role_users_none' => 'この役割が付与されたユーザーはいません',
|
'role_users_none' => 'この役割が付与されたユーザーはいません',
|
||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -331,7 +331,7 @@ return [
|
|||||||
|
|
||||||
// Editor Sidebar
|
// Editor Sidebar
|
||||||
'toggle_sidebar' => 'Zijbalk Tonen/Verbergen',
|
'toggle_sidebar' => 'Zijbalk Tonen/Verbergen',
|
||||||
'page_contents' => 'Pagina Inhoud',
|
'page_contents' => 'Page Contents',
|
||||||
'page_contents_none' => 'No headings were found in the page content.',
|
'page_contents_none' => 'No headings were found in the page content.',
|
||||||
'page_contents_info' => 'The contents menu is generated from any heading formats used in the page.',
|
'page_contents_info' => 'The contents menu is generated from any heading formats used in the page.',
|
||||||
'page_tags' => 'Pagina Labels',
|
'page_tags' => 'Pagina Labels',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский (Russisch)',
|
'ru' => 'Русский (Russisch)',
|
||||||
'sk' => 'Slovensky (Slowaaks)',
|
'sk' => 'Slovensky (Slowaaks)',
|
||||||
'sl' => 'Slovenščina (Sloveens)',
|
'sl' => 'Slovenščina (Sloveens)',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska (Zweeds)',
|
'sv' => 'Svenska (Zweeds)',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe (Turks)',
|
'tr' => 'Türkçe (Turks)',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -99,8 +99,8 @@ return [
|
|||||||
'user_update_notification' => 'Użytkownik zaktualizowany pomyślnie',
|
'user_update_notification' => 'Użytkownik zaktualizowany pomyślnie',
|
||||||
'user_delete' => 'usunięto użytkownika',
|
'user_delete' => 'usunięto użytkownika',
|
||||||
'user_delete_notification' => 'Użytkownik pomyślnie usunięty',
|
'user_delete_notification' => 'Użytkownik pomyślnie usunięty',
|
||||||
'user_mfa_reset' => 'zresetuj MFA dla użytkownika',
|
'user_mfa_reset' => 'reset MFA for user',
|
||||||
'user_mfa_reset_notification' => 'Przywracanie metod uwierzytelniania wieloskładnikowego',
|
'user_mfa_reset_notification' => 'Multi-factor authentication methods reset',
|
||||||
|
|
||||||
// API Tokens
|
// API Tokens
|
||||||
'api_token_create' => 'utworzono token API',
|
'api_token_create' => 'utworzono token API',
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ return [
|
|||||||
|
|
||||||
'failed' => 'Wprowadzone poświadczenia są nieprawidłowe.',
|
'failed' => 'Wprowadzone poświadczenia są nieprawidłowe.',
|
||||||
'throttle' => 'Zbyt wiele prób logowania. Spróbuj ponownie za :seconds s.',
|
'throttle' => 'Zbyt wiele prób logowania. Spróbuj ponownie za :seconds s.',
|
||||||
'mfa_throttle' => 'Zbyt wiele prób weryfikacji wieloskładnikowej. Spróbuj ponownie za :seconds sekund.',
|
'mfa_throttle' => 'Too many multi-factor verification attempts. Please try again in :seconds seconds.',
|
||||||
|
|
||||||
// Login & Register
|
// Login & Register
|
||||||
'sign_up' => 'Zarejestruj się',
|
'sign_up' => 'Zarejestruj się',
|
||||||
|
|||||||
@@ -170,10 +170,10 @@ return [
|
|||||||
'books_search_this' => 'Wyszukaj w tej książce',
|
'books_search_this' => 'Wyszukaj w tej książce',
|
||||||
'books_navigation' => 'Nawigacja po książce',
|
'books_navigation' => 'Nawigacja po książce',
|
||||||
'books_sort' => 'Sortuj zawartość książki',
|
'books_sort' => 'Sortuj zawartość książki',
|
||||||
'books_sort_desc' => 'Przenieś rozdziały i strony w książce w celu reorganizacji jej treści. Można dodać inne książki, które umożliwiają łatwe przenoszenie rozdziałów i stron między książkami. Opcjonalnie reguła automatycznego sortowania może być ustawiona, aby automatycznie sortować zawartość tej książki po jej zmianach.',
|
'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' => 'Opcja automatycznego sortowania',
|
'books_sort_auto_sort' => 'Opcja automatycznego sortowania',
|
||||||
'books_sort_auto_sort_active' => 'Automatyczne sortowanie aktywne: :sortName',
|
'books_sort_auto_sort_active' => 'Automatyczne sortowanie aktywne: :sortName',
|
||||||
'books_sort_auto_sort_creation_hint' => 'Reguły opcji automatycznego sortowania mogą być tworzone w obszarze ustawień "Listy i sortowanie" przez użytkownika z odpowiednimi uprawnieniami.',
|
'books_sort_auto_sort_creation_hint' => 'Auto sort option rules can be created in the "Lists & Sorting" settings area by a user with the relevant permissions.',
|
||||||
'books_sort_named' => 'Sortuj książkę :bookName',
|
'books_sort_named' => 'Sortuj książkę :bookName',
|
||||||
'books_sort_name' => 'Sortuj według nazwy',
|
'books_sort_name' => 'Sortuj według nazwy',
|
||||||
'books_sort_created' => 'Sortuj według daty utworzenia',
|
'books_sort_created' => 'Sortuj według daty utworzenia',
|
||||||
@@ -331,9 +331,9 @@ return [
|
|||||||
|
|
||||||
// Editor Sidebar
|
// Editor Sidebar
|
||||||
'toggle_sidebar' => 'Przełącz pasek boczny',
|
'toggle_sidebar' => 'Przełącz pasek boczny',
|
||||||
'page_contents' => 'Zawartość strony',
|
'page_contents' => 'Page Contents',
|
||||||
'page_contents_none' => 'Nie znaleziono nagłówków w treści strony.',
|
'page_contents_none' => 'No headings were found in the page content.',
|
||||||
'page_contents_info' => 'Menu zawartości jest generowane z dowolnych formatów nagłówków używanych na stronie.',
|
'page_contents_info' => 'The contents menu is generated from any heading formats used in the page.',
|
||||||
'page_tags' => 'Tagi strony',
|
'page_tags' => 'Tagi strony',
|
||||||
'chapter_tags' => 'Tagi rozdziału',
|
'chapter_tags' => 'Tagi rozdziału',
|
||||||
'book_tags' => 'Tagi książki',
|
'book_tags' => 'Tagi książki',
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ return [
|
|||||||
'api_incorrect_token_secret' => 'Podany sekret dla tego API jest nieprawidłowy',
|
'api_incorrect_token_secret' => 'Podany sekret dla tego API jest nieprawidłowy',
|
||||||
'api_user_no_api_permission' => 'Właściciel używanego tokenu API nie ma uprawnień do wykonywania zapytań do API',
|
'api_user_no_api_permission' => 'Właściciel używanego tokenu API nie ma uprawnień do wykonywania zapytań do API',
|
||||||
'api_user_token_expired' => 'Token uwierzytelniania wygasł',
|
'api_user_token_expired' => 'Token uwierzytelniania wygasł',
|
||||||
'api_cookie_auth_only_get' => 'Tylko żądania GET są dozwolone podczas korzystania z API z uwierzytelniania opartego na plikach cookie',
|
'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
|
||||||
|
|
||||||
// Settings & Maintenance
|
// Settings & Maintenance
|
||||||
'maintenance_test_email_failure' => 'Błąd podczas wysyłania testowej wiadomości e-mail:',
|
'maintenance_test_email_failure' => 'Błąd podczas wysyłania testowej wiadomości e-mail:',
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ return [
|
|||||||
'sort_rule_op_chapters_first' => 'Rozdziały na początku',
|
'sort_rule_op_chapters_first' => 'Rozdziały na początku',
|
||||||
'sort_rule_op_chapters_last' => 'Rozdziały na końcu',
|
'sort_rule_op_chapters_last' => 'Rozdziały na końcu',
|
||||||
'sorting_page_limits' => 'Limity wyświetlania per strona',
|
'sorting_page_limits' => 'Limity wyświetlania per strona',
|
||||||
'sorting_page_limits_desc' => 'Ustaw ile elementów pokazywać na stronie w różnych listach w systemie. Zazwyczaj mniejsza ilość będzie bardziej wydajna, podczas gdy większa ilość unika konieczności kliknięcia na wiele stron. Zaleca się stosowanie wielokrotności 6 razy.',
|
'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
|
||||||
|
|
||||||
// Maintenance settings
|
// Maintenance settings
|
||||||
'maint' => 'Konserwacja',
|
'maint' => 'Konserwacja',
|
||||||
@@ -207,7 +207,7 @@ return [
|
|||||||
'role_all' => 'Wszyscy',
|
'role_all' => 'Wszyscy',
|
||||||
'role_own' => 'Własne',
|
'role_own' => 'Własne',
|
||||||
'role_controlled_by_asset' => 'Kontrolowane przez zasób, do którego zostały udostępnione',
|
'role_controlled_by_asset' => 'Kontrolowane przez zasób, do którego zostały udostępnione',
|
||||||
'role_controlled_by_page_delete' => 'Kontrolowane przez uprawnienia do usuwania stron',
|
'role_controlled_by_page_delete' => 'Controlled by page delete permissions',
|
||||||
'role_save' => 'Zapisz rolę',
|
'role_save' => 'Zapisz rolę',
|
||||||
'role_users' => 'Użytkownicy w tej roli',
|
'role_users' => 'Użytkownicy w tej roli',
|
||||||
'role_users_none' => 'Brak użytkowników zapisanych do tej roli',
|
'role_users_none' => 'Brak użytkowników zapisanych do tej roli',
|
||||||
@@ -264,9 +264,9 @@ return [
|
|||||||
'users_mfa_desc' => 'Skonfiguruj uwierzytelnianie wieloskładnikowe jako dodatkową warstwę bezpieczeństwa dla swojego konta użytkownika.',
|
'users_mfa_desc' => 'Skonfiguruj uwierzytelnianie wieloskładnikowe jako dodatkową warstwę bezpieczeństwa dla swojego konta użytkownika.',
|
||||||
'users_mfa_x_methods' => ':count metoda skonfigurowana|:count metody skonfigurowane',
|
'users_mfa_x_methods' => ':count metoda skonfigurowana|:count metody skonfigurowane',
|
||||||
'users_mfa_configure' => 'Konfiguruj metody',
|
'users_mfa_configure' => 'Konfiguruj metody',
|
||||||
'users_mfa_reset' => 'Resetuj metody uwierzytelniania wieloetapowego',
|
'users_mfa_reset' => 'Reset Multi-Factor Authentication Methods',
|
||||||
'users_mfa_reset_desc' => 'Spowoduje to zresetowanie i wyczyszczenie wszystkich skonfigurowanych metod uwierzytelniania wieloetapowego dla tego użytkownika. Jeśli uwierzytelnianie wieloetapowe jest wymagane przez dowolną z ich ról, zostaną poproszone o skonfigurowanie nowych metod przy następnym logowaniu.',
|
'users_mfa_reset_desc' => 'This will reset and clear all configured multi-factor authentication methods for this user. If multi-factor authentication is required by any of their roles, they\'ll be prompted to configure new methods on their next login.',
|
||||||
'users_mfa_reset_confirm' => 'Czy na pewno chcesz zresetować uwierzytelnianie wieloskładnikowe dla tego użytkownika?',
|
'users_mfa_reset_confirm' => 'Are you sure you want to reset multi-factor authentication for this user?',
|
||||||
|
|
||||||
// API Tokens
|
// API Tokens
|
||||||
'user_api_token_create' => 'Utwórz klucz API',
|
'user_api_token_create' => 'Utwórz klucz API',
|
||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -99,8 +99,8 @@ return [
|
|||||||
'user_update_notification' => 'Utilizador atualizado com sucesso',
|
'user_update_notification' => 'Utilizador atualizado com sucesso',
|
||||||
'user_delete' => 'utilizador eliminado',
|
'user_delete' => 'utilizador eliminado',
|
||||||
'user_delete_notification' => 'Utilizador removido com sucesso',
|
'user_delete_notification' => 'Utilizador removido com sucesso',
|
||||||
'user_mfa_reset' => 'reiniciar a MFA para o utilizador',
|
'user_mfa_reset' => 'reset MFA for user',
|
||||||
'user_mfa_reset_notification' => 'Reinicialização dos métodos de autenticação multifatorial',
|
'user_mfa_reset_notification' => 'Multi-factor authentication methods reset',
|
||||||
|
|
||||||
// API Tokens
|
// API Tokens
|
||||||
'api_token_create' => 'token API criado',
|
'api_token_create' => 'token API criado',
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ return [
|
|||||||
|
|
||||||
'failed' => 'Estas credenciais não coincidem com os nossos registos.',
|
'failed' => 'Estas credenciais não coincidem com os nossos registos.',
|
||||||
'throttle' => 'Demasiadas tentativas de acesso. Tente novamente em :seconds segundos.',
|
'throttle' => 'Demasiadas tentativas de acesso. Tente novamente em :seconds segundos.',
|
||||||
'mfa_throttle' => 'Foram efetuadas demasiadas tentativas de verificação multifatorial. Por favor, tente novamente daqui a :seconds segundos.',
|
'mfa_throttle' => 'Too many multi-factor verification attempts. Please try again in :seconds seconds.',
|
||||||
|
|
||||||
// Login & Register
|
// Login & Register
|
||||||
'sign_up' => 'Registar',
|
'sign_up' => 'Registar',
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ return [
|
|||||||
'superscript' => 'Superior à linha',
|
'superscript' => 'Superior à linha',
|
||||||
'subscript' => 'Inferior à linha',
|
'subscript' => 'Inferior à linha',
|
||||||
'text_color' => 'Cor do texto',
|
'text_color' => 'Cor do texto',
|
||||||
'highlight_color' => 'Cor de destaque',
|
'highlight_color' => 'Highlight color',
|
||||||
'custom_color' => 'Cor personalizada',
|
'custom_color' => 'Cor personalizada',
|
||||||
'remove_color' => 'Remover cor',
|
'remove_color' => 'Remover cor',
|
||||||
'background_color' => 'Cor de fundo',
|
'background_color' => 'Cor de fundo',
|
||||||
@@ -83,9 +83,9 @@ return [
|
|||||||
'table_properties' => 'Propriedades da tabela',
|
'table_properties' => 'Propriedades da tabela',
|
||||||
'table_properties_title' => 'Propriedades da Tabela',
|
'table_properties_title' => 'Propriedades da Tabela',
|
||||||
'delete_table' => 'Eliminar tabela',
|
'delete_table' => 'Eliminar tabela',
|
||||||
'table_clear_formatting' => 'Limpar formatação de tabela',
|
'table_clear_formatting' => 'Clear table formatting',
|
||||||
'resize_to_contents' => 'Redimensionar para o conteúdo',
|
'resize_to_contents' => 'Resize to contents',
|
||||||
'row_header' => 'Cabeçalho da linha',
|
'row_header' => 'Row header',
|
||||||
'insert_row_before' => 'Inserir linha antes',
|
'insert_row_before' => 'Inserir linha antes',
|
||||||
'insert_row_after' => 'Inserir linha depois',
|
'insert_row_after' => 'Inserir linha depois',
|
||||||
'delete_row' => 'Eliminar linha',
|
'delete_row' => 'Eliminar linha',
|
||||||
@@ -149,7 +149,7 @@ return [
|
|||||||
'url' => 'URL',
|
'url' => 'URL',
|
||||||
'text_to_display' => 'Texto a ser exibido',
|
'text_to_display' => 'Texto a ser exibido',
|
||||||
'title' => 'Título',
|
'title' => 'Título',
|
||||||
'browse_links' => 'Procurar ligações',
|
'browse_links' => 'Browse links',
|
||||||
'open_link' => 'Abrir ligação',
|
'open_link' => 'Abrir ligação',
|
||||||
'open_link_in' => 'Abrir ligação em...',
|
'open_link_in' => 'Abrir ligação em...',
|
||||||
'open_link_current' => 'Janela atual',
|
'open_link_current' => 'Janela atual',
|
||||||
@@ -167,7 +167,7 @@ return [
|
|||||||
'about_title' => 'Sobre o Editor WYSIWYG',
|
'about_title' => 'Sobre o Editor WYSIWYG',
|
||||||
'editor_license' => 'Editor da licença de direitos autorais',
|
'editor_license' => 'Editor da licença de direitos autorais',
|
||||||
'editor_lexical_license' => 'Este editor é criado como um fork do :lexicaLink que é distribuído sob a licença MIT.',
|
'editor_lexical_license' => 'Este editor é criado como um fork do :lexicaLink que é distribuído sob a licença MIT.',
|
||||||
'editor_lexical_license_link' => 'Detalhes da licença completa podem ser encontrados aqui.',
|
'editor_lexical_license_link' => 'Full license details can be found here.',
|
||||||
'editor_tiny_license' => 'Este editor foi criado com :tinyLink que é fornecido sob a licença MIT.',
|
'editor_tiny_license' => 'Este editor foi criado com :tinyLink que é fornecido sob a licença MIT.',
|
||||||
'editor_tiny_license_link' => 'Os dados relativos aos direitos de autor e à licença do TinyMCE podem ser encontrados aqui.',
|
'editor_tiny_license_link' => 'Os dados relativos aos direitos de autor e à licença do TinyMCE podem ser encontrados aqui.',
|
||||||
'save_continue' => 'Salvar página e continuar',
|
'save_continue' => 'Salvar página e continuar',
|
||||||
|
|||||||
@@ -46,27 +46,27 @@ return [
|
|||||||
'import' => 'Importar',
|
'import' => 'Importar',
|
||||||
'import_validate' => 'Validar Importação',
|
'import_validate' => 'Validar Importação',
|
||||||
'import_desc' => 'Importar livros, capítulos e páginas usando uma exportação ZIP portátil da mesma ou uma instância diferente. Selecione um arquivo ZIP para prosseguir. Após o carregamento e validação do arquivo, conseguirá configurar e confirmar a importação na próxima visualização.',
|
'import_desc' => 'Importar livros, capítulos e páginas usando uma exportação ZIP portátil da mesma ou uma instância diferente. Selecione um arquivo ZIP para prosseguir. Após o carregamento e validação do arquivo, conseguirá configurar e confirmar a importação na próxima visualização.',
|
||||||
'import_zip_select' => 'Selecione o ficheiro ZIP para enviar',
|
'import_zip_select' => 'Select ZIP file to upload',
|
||||||
'import_zip_validation_errors' => 'Foram detetados erros ao validar o ficheiro ZIP fornecido:',
|
'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
|
||||||
'import_pending' => 'Aguardando importação',
|
'import_pending' => 'Pending Imports',
|
||||||
'import_pending_none' => 'Nenhuma importação foi iniciada.',
|
'import_pending_none' => 'No imports have been started.',
|
||||||
'import_continue' => 'Continuar importação',
|
'import_continue' => 'Continue Import',
|
||||||
'import_continue_desc' => 'Verifique o conteúdo a importar a partir do ficheiro ZIP carregado. Quando estiver pronto, execute a importação para adicionar o seu conteúdo a este sistema. O ficheiro ZIP de importação carregado será automaticamente removido após a importação bem-sucedida.',
|
'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' => 'Detalhes da importação',
|
'import_details' => 'Import Details',
|
||||||
'import_run' => 'Executar Importação',
|
'import_run' => 'Run Import',
|
||||||
'import_size' => ':size Tamanho do ZIP importado',
|
'import_size' => ':size Import ZIP Size',
|
||||||
'import_uploaded_at' => 'Carregado :relativeTime',
|
'import_uploaded_at' => 'Uploaded :relativeTime',
|
||||||
'import_uploaded_by' => 'Carregado por',
|
'import_uploaded_by' => 'Uploaded by',
|
||||||
'import_location' => 'Local de Importação',
|
'import_location' => 'Import Location',
|
||||||
'import_location_desc' => 'Selecione um local de destino para o seu conteúdo importado. Terá de dispor das permissões necessárias para criar conteúdo no local que escolher.',
|
'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' => 'Tem a certeza que pretende eliminar a importação?',
|
'import_delete_confirm' => 'Are you sure you want to delete this import?',
|
||||||
'import_delete_desc' => 'Isto irá eliminar o arquivo ZIP de importação enviado e não pode ser desfeito.',
|
'import_delete_desc' => 'Isto irá eliminar o arquivo ZIP de importação enviado e não pode ser desfeito.',
|
||||||
'import_errors' => 'Erros de Importação',
|
'import_errors' => 'Import Errors',
|
||||||
'import_errors_desc' => 'Ocorreram os seguintes erros durante a tentativa de importação:',
|
'import_errors_desc' => 'The follow errors occurred during the import attempt:',
|
||||||
'breadcrumb_siblings_for_page' => 'Navegar itens do mesmo nível por página',
|
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
|
||||||
'breadcrumb_siblings_for_chapter' => 'Navegar itens do mesmo nível por capítulo',
|
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
|
||||||
'breadcrumb_siblings_for_book' => 'Navegar itens do mesmo nível por livro',
|
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
|
||||||
'breadcrumb_siblings_for_bookshelf' => 'Navegar itens do mesmo nível por estante',
|
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
|
||||||
|
|
||||||
// Permissions and restrictions
|
// Permissions and restrictions
|
||||||
'permissions' => 'Permissões',
|
'permissions' => 'Permissões',
|
||||||
@@ -172,8 +172,8 @@ return [
|
|||||||
'books_sort' => 'Ordenar Conteúdos do Livro',
|
'books_sort' => 'Ordenar Conteúdos do Livro',
|
||||||
'books_sort_desc' => 'Mova capítulos e páginas de um livro para reorganizar o 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 organização automática pode ser definida para classificar automaticamente o conteúdo deste livro após alterações.',
|
'books_sort_desc' => 'Mova capítulos e páginas de um livro para reorganizar o 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 organização automática pode ser definida para classificar automaticamente o conteúdo deste livro após alterações.',
|
||||||
'books_sort_auto_sort' => '',
|
'books_sort_auto_sort' => '',
|
||||||
'books_sort_auto_sort_active' => 'Ordenação automática ativada: :sortName',
|
'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
|
||||||
'books_sort_auto_sort_creation_hint' => 'As regras da opção de ordenação automática podem ser criadas na área de configurações "Listas e Ordenação" por um utilizador com as permissões necessárias.',
|
'books_sort_auto_sort_creation_hint' => 'Auto sort option rules can be created in the "Lists & Sorting" settings area by a user with the relevant permissions.',
|
||||||
'books_sort_named' => 'Ordenar Livro :bookName',
|
'books_sort_named' => 'Ordenar Livro :bookName',
|
||||||
'books_sort_name' => 'Ordenar por Nome',
|
'books_sort_name' => 'Ordenar por Nome',
|
||||||
'books_sort_created' => 'Ordenar por Data de Criação',
|
'books_sort_created' => 'Ordenar por Data de Criação',
|
||||||
@@ -235,7 +235,7 @@ return [
|
|||||||
'pages_delete_draft' => 'Eliminar Rascunho de Página',
|
'pages_delete_draft' => 'Eliminar Rascunho de Página',
|
||||||
'pages_delete_success' => 'Página eliminada',
|
'pages_delete_success' => 'Página eliminada',
|
||||||
'pages_delete_draft_success' => 'Rascunho de página eliminado',
|
'pages_delete_draft_success' => 'Rascunho de página eliminado',
|
||||||
'pages_delete_warning_template' => 'Esta página é atualmente utilizada como modelo de página predefinido para livros ou capítulos. Após a eliminação desta página, estes livros ou capítulos deixarão de ter um modelo de página predefinido atribuído.',
|
'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
|
||||||
'pages_delete_confirm' => 'Tem certeza que deseja eliminar a página?',
|
'pages_delete_confirm' => 'Tem certeza que deseja eliminar a página?',
|
||||||
'pages_delete_draft_confirm' => 'Tem certeza que deseja eliminar o rascunho de página?',
|
'pages_delete_draft_confirm' => 'Tem certeza que deseja eliminar o rascunho de página?',
|
||||||
'pages_editing_named' => 'A Editar a Página :pageName',
|
'pages_editing_named' => 'A Editar a Página :pageName',
|
||||||
@@ -252,8 +252,8 @@ return [
|
|||||||
'pages_edit_switch_to_markdown_clean' => '(Conteúdo Limitado)',
|
'pages_edit_switch_to_markdown_clean' => '(Conteúdo Limitado)',
|
||||||
'pages_edit_switch_to_markdown_stable' => '(Conteúdo Estável)',
|
'pages_edit_switch_to_markdown_stable' => '(Conteúdo Estável)',
|
||||||
'pages_edit_switch_to_wysiwyg' => 'Alternar para o editor WYSIWYG',
|
'pages_edit_switch_to_wysiwyg' => 'Alternar para o editor WYSIWYG',
|
||||||
'pages_edit_switch_to_new_wysiwyg' => 'Mudar para o novo WYSIWYG',
|
'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
|
||||||
'pages_edit_switch_to_new_wysiwyg_desc' => '(Em fase de testes beta)',
|
'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
|
||||||
'pages_edit_set_changelog' => 'Relatar Alterações',
|
'pages_edit_set_changelog' => 'Relatar Alterações',
|
||||||
'pages_edit_enter_changelog_desc' => 'Digite uma breve descrição das alterações efetuadas por si',
|
'pages_edit_enter_changelog_desc' => 'Digite uma breve descrição das alterações efetuadas por si',
|
||||||
'pages_edit_enter_changelog' => 'Inserir Alterações',
|
'pages_edit_enter_changelog' => 'Inserir Alterações',
|
||||||
@@ -273,7 +273,7 @@ return [
|
|||||||
'pages_md_insert_drawing' => 'Inserir Desenho',
|
'pages_md_insert_drawing' => 'Inserir Desenho',
|
||||||
'pages_md_show_preview' => 'Mostrar pré-visualização',
|
'pages_md_show_preview' => 'Mostrar pré-visualização',
|
||||||
'pages_md_sync_scroll' => 'Sincronizar pré-visualização',
|
'pages_md_sync_scroll' => 'Sincronizar pré-visualização',
|
||||||
'pages_md_plain_editor' => 'Editor de texto simples',
|
'pages_md_plain_editor' => 'Plaintext editor',
|
||||||
'pages_drawing_unsaved' => 'Encontrado um rascunho não guardado',
|
'pages_drawing_unsaved' => 'Encontrado um rascunho não guardado',
|
||||||
'pages_drawing_unsaved_confirm' => 'Dados de um rascunho não guardado foi encontrado de um tentativa anteriormente falhada. Deseja restaurar e continuar a edição desse rascunho?',
|
'pages_drawing_unsaved_confirm' => 'Dados de um rascunho não guardado foi encontrado de um tentativa anteriormente falhada. Deseja restaurar e continuar a edição desse rascunho?',
|
||||||
'pages_not_in_chapter' => 'A página não está dentro de um capítulo',
|
'pages_not_in_chapter' => 'A página não está dentro de um capítulo',
|
||||||
@@ -331,9 +331,9 @@ return [
|
|||||||
|
|
||||||
// Editor Sidebar
|
// Editor Sidebar
|
||||||
'toggle_sidebar' => 'Alternar barra lateral',
|
'toggle_sidebar' => 'Alternar barra lateral',
|
||||||
'page_contents' => 'Conteúdo da Página',
|
'page_contents' => 'Page Contents',
|
||||||
'page_contents_none' => 'Não foram encontrados títulos no conteúdo da página.',
|
'page_contents_none' => 'No headings were found in the page content.',
|
||||||
'page_contents_info' => 'O índice é gerado a partir dos formatos de título utilizados na página.',
|
'page_contents_info' => 'The contents menu is generated from any heading formats used in the page.',
|
||||||
'page_tags' => 'Etiquetas de Página',
|
'page_tags' => 'Etiquetas de Página',
|
||||||
'chapter_tags' => 'Etiquetas do Capítulo',
|
'chapter_tags' => 'Etiquetas do Capítulo',
|
||||||
'book_tags' => 'Etiquetas do Livro',
|
'book_tags' => 'Etiquetas do Livro',
|
||||||
@@ -401,11 +401,11 @@ return [
|
|||||||
'comment' => 'Comentário',
|
'comment' => 'Comentário',
|
||||||
'comments' => 'Comentários',
|
'comments' => 'Comentários',
|
||||||
'comment_add' => 'Adicionar Comentário',
|
'comment_add' => 'Adicionar Comentário',
|
||||||
'comment_none' => 'Não há comentários para apresentar',
|
'comment_none' => 'No comments to display',
|
||||||
'comment_placeholder' => 'Digite aqui os seus comentários',
|
'comment_placeholder' => 'Digite aqui os seus comentários',
|
||||||
'comment_thread_count' => ':count Tópico de comentários|:count Tópicos de comentários',
|
'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
|
||||||
'comment_archived_count' => ':count Arquivado',
|
'comment_archived_count' => ':count Archived',
|
||||||
'comment_archived_threads' => 'Tópicos Arquivados',
|
'comment_archived_threads' => 'Archived Threads',
|
||||||
'comment_save' => 'Guardar comentário',
|
'comment_save' => 'Guardar comentário',
|
||||||
'comment_new' => 'Comentário Novo',
|
'comment_new' => 'Comentário Novo',
|
||||||
'comment_created' => 'comentado :createDiff',
|
'comment_created' => 'comentado :createDiff',
|
||||||
@@ -414,14 +414,14 @@ return [
|
|||||||
'comment_deleted_success' => 'Comentário removido',
|
'comment_deleted_success' => 'Comentário removido',
|
||||||
'comment_created_success' => 'Comentário adicionado',
|
'comment_created_success' => 'Comentário adicionado',
|
||||||
'comment_updated_success' => 'Comentário editado',
|
'comment_updated_success' => 'Comentário editado',
|
||||||
'comment_archive_success' => 'Comentário arquivado',
|
'comment_archive_success' => 'Comment archived',
|
||||||
'comment_unarchive_success' => 'Comentário não arquivado',
|
'comment_unarchive_success' => 'Comment un-archived',
|
||||||
'comment_view' => 'Ver comentário',
|
'comment_view' => 'View comment',
|
||||||
'comment_jump_to_thread' => 'Ir para o tópico',
|
'comment_jump_to_thread' => 'Jump to thread',
|
||||||
'comment_delete_confirm' => 'Tem a certeza de que deseja eliminar este comentário?',
|
'comment_delete_confirm' => 'Tem a certeza de que deseja eliminar este comentário?',
|
||||||
'comment_in_reply_to' => 'Em resposta à :commentId',
|
'comment_in_reply_to' => 'Em resposta à :commentId',
|
||||||
'comment_reference' => 'Referência',
|
'comment_reference' => 'Reference',
|
||||||
'comment_reference_outdated' => '(Desatualizado)',
|
'comment_reference_outdated' => '(Outdated)',
|
||||||
'comment_editor_explain' => 'Aqui estão os comentários que foram deixados nesta página. Comentários podem ser adicionados e geridos ao visualizar a página guardada.',
|
'comment_editor_explain' => 'Aqui estão os comentários que foram deixados nesta página. Comentários podem ser adicionados e geridos ao visualizar a página guardada.',
|
||||||
|
|
||||||
// Revision
|
// Revision
|
||||||
@@ -452,7 +452,7 @@ return [
|
|||||||
// References
|
// References
|
||||||
'references' => 'Referências',
|
'references' => 'Referências',
|
||||||
'references_none' => 'Não há referências registadas para este item.',
|
'references_none' => 'Não há referências registadas para este item.',
|
||||||
'references_to_desc' => 'A seguir, encontra-se uma lista de todo o conteúdo conhecido no sistema associado a este item.',
|
'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
|
||||||
|
|
||||||
// Watch Options
|
// Watch Options
|
||||||
'watch' => 'Ver',
|
'watch' => 'Ver',
|
||||||
@@ -470,11 +470,11 @@ return [
|
|||||||
'watch_desc_comments_page' => 'Notificar sobre alterações na página e novos comentários.',
|
'watch_desc_comments_page' => 'Notificar sobre alterações na página e novos comentários.',
|
||||||
'watch_change_default' => 'Alterar preferências padrão de notificação',
|
'watch_change_default' => 'Alterar preferências padrão de notificação',
|
||||||
'watch_detail_ignore' => 'Ignorar notificações',
|
'watch_detail_ignore' => 'Ignorar notificações',
|
||||||
'watch_detail_new' => 'A observar novas páginas',
|
'watch_detail_new' => 'Watching for new pages',
|
||||||
'watch_detail_updates' => 'A observar novas páginas e atualizações',
|
'watch_detail_updates' => 'Watching new pages and updates',
|
||||||
'watch_detail_comments' => 'A observar novas páginas, atualizações e comentários',
|
'watch_detail_comments' => 'Watching new pages, updates & comments',
|
||||||
'watch_detail_parent_book' => 'A observar via livro pai',
|
'watch_detail_parent_book' => 'Watching via parent book',
|
||||||
'watch_detail_parent_book_ignore' => 'A ignorar através do livro pai',
|
'watch_detail_parent_book_ignore' => 'A ignorar através do livro pai',
|
||||||
'watch_detail_parent_chapter' => 'A observar via capítulo pai',
|
'watch_detail_parent_chapter' => 'Watching via parent chapter',
|
||||||
'watch_detail_parent_chapter_ignore' => 'A ignorar via capítulo pai',
|
'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ return [
|
|||||||
|
|
||||||
// Auth
|
// Auth
|
||||||
'error_user_exists_different_creds' => 'Um utilizador com o endereço de e-mail :email já existe mas com credenciais diferentes.',
|
'error_user_exists_different_creds' => 'Um utilizador com o endereço de e-mail :email já existe mas com credenciais diferentes.',
|
||||||
'auth_pre_register_theme_prevention' => 'Não foi possível registar a conta de utilizador com os detalhes fornecidos',
|
'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
|
||||||
'email_already_confirmed' => 'E-mail já foi confirmado. Tente iniciar sessão.',
|
'email_already_confirmed' => 'E-mail já foi confirmado. Tente iniciar sessão.',
|
||||||
'email_confirmation_invalid' => 'Este token de confirmação não é válido ou já foi utilizado. Por favor, tente registar-se novamente.',
|
'email_confirmation_invalid' => 'Este token de confirmação não é válido ou já foi utilizado. Por favor, tente registar-se novamente.',
|
||||||
'email_confirmation_expired' => 'O token de confirmação já expirou. Um novo e-mail foi enviado.',
|
'email_confirmation_expired' => 'O token de confirmação já expirou. Um novo e-mail foi enviado.',
|
||||||
@@ -37,7 +37,7 @@ return [
|
|||||||
'social_driver_not_found' => 'Social driver não encontrado',
|
'social_driver_not_found' => 'Social driver não encontrado',
|
||||||
'social_driver_not_configured' => 'Os seus parâmetros sociais de :socialAccount não estão corretamente configurados.',
|
'social_driver_not_configured' => 'Os seus parâmetros sociais de :socialAccount não estão corretamente configurados.',
|
||||||
'invite_token_expired' => 'Este link de convite expirou. Alternativamente, pode tentar redefinir a senha da sua conta.',
|
'invite_token_expired' => 'Este link de convite expirou. Alternativamente, pode tentar redefinir a senha da sua conta.',
|
||||||
'login_user_not_found' => 'Não foi possível encontrar um utilizador para esta ação.',
|
'login_user_not_found' => 'A user for this action could not be found.',
|
||||||
|
|
||||||
// System
|
// System
|
||||||
'path_not_writable' => 'O caminho do arquivo :filePath não pôde ser carregado. Certifique-se de que tem permissões de escrita no servidor.',
|
'path_not_writable' => 'O caminho do arquivo :filePath não pôde ser carregado. Certifique-se de que tem permissões de escrita no servidor.',
|
||||||
@@ -51,9 +51,9 @@ return [
|
|||||||
'image_upload_error' => 'Ocorreu um erro no carregamento da imagem',
|
'image_upload_error' => 'Ocorreu um erro no carregamento da imagem',
|
||||||
'image_upload_type_error' => 'O tipo de imagem enviada é inválida',
|
'image_upload_type_error' => 'O tipo de imagem enviada é inválida',
|
||||||
'image_upload_replace_type' => 'A imagem de substituição deverá ser do mesmo tipo que a anterior',
|
'image_upload_replace_type' => 'A imagem de substituição deverá ser do mesmo tipo que a anterior',
|
||||||
'image_upload_memory_limit' => 'Não foi possível processar o carregamento da imagem e/ou criar miniaturas devido a limites de recursos do sistema.',
|
'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
|
||||||
'image_thumbnail_memory_limit' => 'Não foi possível criar variações de tamanho de imagem devido a limites de recursos do sistema.',
|
'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
|
||||||
'image_gallery_thumbnail_memory_limit' => 'Não foi possível criar miniaturas da galeria devido a limites de recursos do sistema.',
|
'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
|
||||||
'drawing_data_not_found' => 'Dados de desenho não puderam ser carregados. Talvez o arquivo de desenho não exista mais ou não tenha permissão para aceder-lhe.',
|
'drawing_data_not_found' => 'Dados de desenho não puderam ser carregados. Talvez o arquivo de desenho não exista mais ou não tenha permissão para aceder-lhe.',
|
||||||
|
|
||||||
// Attachments
|
// Attachments
|
||||||
@@ -78,7 +78,7 @@ return [
|
|||||||
// Users
|
// Users
|
||||||
'users_cannot_delete_only_admin' => 'Não pode excluir o único administrador',
|
'users_cannot_delete_only_admin' => 'Não pode excluir o único administrador',
|
||||||
'users_cannot_delete_guest' => 'Não pode excluir o usuário convidado',
|
'users_cannot_delete_guest' => 'Não pode excluir o usuário convidado',
|
||||||
'users_could_not_send_invite' => 'Não foi possível criar o utilizador, pois o envio do endereço eletrónico de convite falhou',
|
'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
|
||||||
|
|
||||||
// Roles
|
// Roles
|
||||||
'role_cannot_be_edited' => 'Este cargo não pode ser editado',
|
'role_cannot_be_edited' => 'Este cargo não pode ser editado',
|
||||||
@@ -106,17 +106,17 @@ return [
|
|||||||
'back_soon' => 'Voltaremos em breve.',
|
'back_soon' => 'Voltaremos em breve.',
|
||||||
|
|
||||||
// Import
|
// Import
|
||||||
'import_zip_cant_read' => 'Não foi possível ler o ficheiro ZIP.',
|
'import_zip_cant_read' => 'Could not read ZIP file.',
|
||||||
'import_zip_cant_decode_data' => 'Não foi possível encontrar nem descodificar o conteúdo do ficheiro ZIP data.json.',
|
'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
|
||||||
'import_zip_no_data' => 'Os dados do ficheiro ZIP não contêm o conteúdo esperado de livro, capítulo ou página.',
|
'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
|
||||||
'import_zip_data_too_large' => 'O conteúdo do ficheiro ZIP data.json excede o tamanho máximo de upload definido para a aplicação.',
|
'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
|
||||||
'import_validation_failed' => 'A importação do ficheiro ZIP não foi validada devido a erros:',
|
'import_validation_failed' => 'Import ZIP failed to validate with errors:',
|
||||||
'import_zip_failed_notification' => 'Não foi possível importar o ficheiro ZIP.',
|
'import_zip_failed_notification' => 'Failed to import ZIP file.',
|
||||||
'import_perms_books' => 'Não dispõe das permissões necessárias para criar livros.',
|
'import_perms_books' => 'You are lacking the required permissions to create books.',
|
||||||
'import_perms_chapters' => 'Não dispõe das permissões necessárias para criar capítulos.',
|
'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
|
||||||
'import_perms_pages' => 'Não dispõe das permissões necessárias para criar páginas.',
|
'import_perms_pages' => 'You are lacking the required permissions to create pages.',
|
||||||
'import_perms_images' => 'Não dispõe das permissões necessárias para criar imagens.',
|
'import_perms_images' => 'You are lacking the required permissions to create images.',
|
||||||
'import_perms_attachments' => 'Não dispõe das permissões necessárias para criar anexos.',
|
'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
|
||||||
|
|
||||||
// API errors
|
// API errors
|
||||||
'api_no_authorization_found' => 'Nenhum token de autorização encontrado na requisição',
|
'api_no_authorization_found' => 'Nenhum token de autorização encontrado na requisição',
|
||||||
@@ -125,11 +125,11 @@ return [
|
|||||||
'api_incorrect_token_secret' => 'O segredo fornecido para o token de API usado está incorreto',
|
'api_incorrect_token_secret' => 'O segredo fornecido para o token de API usado está incorreto',
|
||||||
'api_user_no_api_permission' => 'O proprietário do token de API utilizado não tem permissão para fazer requisições de API',
|
'api_user_no_api_permission' => 'O proprietário do token de API utilizado não tem permissão para fazer requisições de API',
|
||||||
'api_user_token_expired' => 'O token de autenticação expirou',
|
'api_user_token_expired' => 'O token de autenticação expirou',
|
||||||
'api_cookie_auth_only_get' => 'Ao utilizar a API com autenticação baseada em “cookies”, apenas são permitidos pedidos GET',
|
'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
|
||||||
|
|
||||||
// Settings & Maintenance
|
// Settings & Maintenance
|
||||||
'maintenance_test_email_failure' => 'Erro lançado ao enviar um e-mail de teste:',
|
'maintenance_test_email_failure' => 'Erro lançado ao enviar um e-mail de teste:',
|
||||||
|
|
||||||
// HTTP errors
|
// HTTP errors
|
||||||
'http_ssr_url_no_match' => 'O URL não corresponde aos "hosts" SSR permitidos configurados',
|
'http_ssr_url_no_match' => 'The URL does not match the configured allowed SSR hosts',
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -11,11 +11,11 @@ return [
|
|||||||
'updated_page_subject' => 'Página atualizada: :pageName',
|
'updated_page_subject' => 'Página atualizada: :pageName',
|
||||||
'updated_page_intro' => 'Uma página foi atualizada em :appName:',
|
'updated_page_intro' => 'Uma página foi atualizada em :appName:',
|
||||||
'updated_page_debounce' => 'Para evitar um grande volume de notificações, durante algum tempo não serão enviadas notificações de edições futuras para esta página através do mesmo editor.',
|
'updated_page_debounce' => 'Para evitar um grande volume de notificações, durante algum tempo não serão enviadas notificações de edições futuras para esta página através do mesmo editor.',
|
||||||
'comment_mention_subject' => 'Foi mencionado num comentário na página: :pageName',
|
'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
|
||||||
'comment_mention_intro' => 'Foi mencionado num comentário no :appName:',
|
'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
|
||||||
|
|
||||||
'detail_page_name' => 'Nome da Página:',
|
'detail_page_name' => 'Nome da Página:',
|
||||||
'detail_page_path' => 'Caminho da página:',
|
'detail_page_path' => 'Page Path:',
|
||||||
'detail_commenter' => 'Comentador:',
|
'detail_commenter' => 'Comentador:',
|
||||||
'detail_comment' => 'Comentário:',
|
'detail_comment' => 'Comentário:',
|
||||||
'detail_created_by' => 'Criado Por:',
|
'detail_created_by' => 'Criado Por:',
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ return [
|
|||||||
'notifications_desc' => 'Controlar as notificações via correio eletrónico quando certas atividades são executadas pelo sistema.',
|
'notifications_desc' => 'Controlar as notificações via correio eletrónico quando certas atividades são executadas pelo sistema.',
|
||||||
'notifications_opt_own_page_changes' => 'Notificar quando páginas que possuo sofrem alterações',
|
'notifications_opt_own_page_changes' => 'Notificar quando páginas que possuo sofrem alterações',
|
||||||
'notifications_opt_own_page_comments' => 'Notificar quando comentam páginas que possuo',
|
'notifications_opt_own_page_comments' => 'Notificar quando comentam páginas que possuo',
|
||||||
'notifications_opt_comment_mentions' => 'Notificar-me quando for mencionado num comentário',
|
'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
|
||||||
'notifications_opt_comment_replies' => 'Notificar respostas aos meus comentários',
|
'notifications_opt_comment_replies' => 'Notificar respostas aos meus comentários',
|
||||||
'notifications_save' => 'Guardar preferências',
|
'notifications_save' => 'Guardar preferências',
|
||||||
'notifications_update_success' => 'Preferências de notificação foram atualizadas!',
|
'notifications_update_success' => 'Preferências de notificação foram atualizadas!',
|
||||||
@@ -43,7 +43,7 @@ return [
|
|||||||
'profile_email_no_permission' => 'Infelizmente você não tem permissão para alterar seu correio eletrônico. Se você quiser mudar isso, você precisa pedir a um administrador para alterar por você.',
|
'profile_email_no_permission' => 'Infelizmente você não tem permissão para alterar seu correio eletrônico. Se você quiser mudar isso, você precisa pedir a um administrador para alterar por você.',
|
||||||
'profile_avatar_desc' => 'Selecione uma imagem que será usada para lhe representar aos outros usuários do sistema. Idealmente, esta imagem deve ser quadrada e sobre 256px em largura e altura.',
|
'profile_avatar_desc' => 'Selecione uma imagem que será usada para lhe representar aos outros usuários do sistema. Idealmente, esta imagem deve ser quadrada e sobre 256px em largura e altura.',
|
||||||
'profile_admin_options' => 'Opções de administrador',
|
'profile_admin_options' => 'Opções de administrador',
|
||||||
'profile_admin_options_desc' => 'Poderá encontrar opções adicionais de nível de administrador, como as destinadas a gerir a atribuição de funções, na sua conta de utilizador, na secção "Definições > Utilizadores" da aplicação.',
|
'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' => 'Excluir Conta',
|
'delete_account' => 'Excluir Conta',
|
||||||
'delete_my_account' => 'Excluir a Minha Conta',
|
'delete_my_account' => 'Excluir a Minha Conta',
|
||||||
|
|||||||
@@ -75,36 +75,36 @@ return [
|
|||||||
'reg_confirm_restrict_domain_placeholder' => 'Nenhuma restrição definida',
|
'reg_confirm_restrict_domain_placeholder' => 'Nenhuma restrição definida',
|
||||||
|
|
||||||
// Sorting Settings
|
// Sorting Settings
|
||||||
'sorting' => 'Listas e ordenação',
|
'sorting' => 'Lists & Sorting',
|
||||||
'sorting_book_default' => 'Regra de ordenação padrão dos livros',
|
'sorting_book_default' => 'Default Book Sort Rule',
|
||||||
'sorting_book_default_desc' => 'Selecione a regra de ordenação predefinida a aplicar aos novos livros. Isto não afetará os livros existentes e pode ser substituído individualmente para cada livro.',
|
'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 Ordenação',
|
'sorting_rules' => 'Sort Rules',
|
||||||
'sorting_rules_desc' => 'Trata-se de operações de ordenação predefinidas que podem ser aplicadas ao conteúdo do sistema.',
|
'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
|
||||||
'sort_rule_assigned_to_x_books' => 'Atribuído a: :count Livro|Atribuído a: :count Livros',
|
'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
|
||||||
'sort_rule_create' => 'Criar Regra de Ordenação',
|
'sort_rule_create' => 'Create Sort Rule',
|
||||||
'sort_rule_edit' => 'Editar Regra de Ordenação',
|
'sort_rule_edit' => 'Edit Sort Rule',
|
||||||
'sort_rule_delete' => 'Eliminar Regra de Ordenação',
|
'sort_rule_delete' => 'Delete Sort Rule',
|
||||||
'sort_rule_delete_desc' => 'Remova esta regra de ordenação do sistema. Os livros que utilizam esta ordenação voltarão a ser ordenados manualmente.',
|
'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' => 'Esta regra de ordenação é atualmente utilizada em :count livro(s). Tem a certeza de que deseja eliminar isto?',
|
'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' => 'Esta regra de ordenação é atualmente utilizada em livros. Tem a certeza de que deseja eliminar isto?',
|
'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' => 'Detalhes de Regras de Ordenação',
|
'sort_rule_details' => 'Sort Rule Details',
|
||||||
'sort_rule_details_desc' => 'Defina um nome para esta regra de ordenação, que aparecerá nas listas quando os utilizadores selecionarem uma opção de ordenação.',
|
'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' => 'Operações de Ordenação',
|
'sort_rule_operations' => 'Sort Operations',
|
||||||
'sort_rule_operations_desc' => 'Configure as ações de ordenação a executar, selecionando-as na lista de operações disponíveis. Quando utilizadas, as operações serão aplicadas por ordem, de cima para baixo. Quaisquer alterações efetuadas aqui serão aplicadas a todos os livros atribuídos quando se guardar.',
|
'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' => 'Operações Disponíveis',
|
'sort_rule_available_operations' => 'Available Operations',
|
||||||
'sort_rule_available_operations_empty' => 'Não há operações pendentes',
|
'sort_rule_available_operations_empty' => 'No operations remaining',
|
||||||
'sort_rule_configured_operations' => 'Operações Configuradas',
|
'sort_rule_configured_operations' => 'Configured Operations',
|
||||||
'sort_rule_configured_operations_empty' => 'Operações de arrastar/adicionar a partir da lista "Operações Disponíveis"',
|
'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
|
||||||
'sort_rule_op_asc' => '(Asc)',
|
'sort_rule_op_asc' => '(Asc)',
|
||||||
'sort_rule_op_desc' => '(Desc)',
|
'sort_rule_op_desc' => '(Desc)',
|
||||||
'sort_rule_op_name' => 'Nome - Alfabético',
|
'sort_rule_op_name' => 'Name - Alphabetical',
|
||||||
'sort_rule_op_name_numeric' => 'Nome - Numérico',
|
'sort_rule_op_name_numeric' => 'Name - Numeric',
|
||||||
'sort_rule_op_created_date' => 'Data de criação',
|
'sort_rule_op_created_date' => 'Created Date',
|
||||||
'sort_rule_op_updated_date' => 'Data de atualização',
|
'sort_rule_op_updated_date' => 'Updated Date',
|
||||||
'sort_rule_op_chapters_first' => 'Capítulos: Primeiro',
|
'sort_rule_op_chapters_first' => 'Chapters First',
|
||||||
'sort_rule_op_chapters_last' => 'Capítulos: Últimos',
|
'sort_rule_op_chapters_last' => 'Chapters Last',
|
||||||
'sorting_page_limits' => 'Limites de Exibição por Página',
|
'sorting_page_limits' => 'Per-Page Display Limits',
|
||||||
'sorting_page_limits_desc' => 'Defina o número de itens a apresentar por página nas várias listas do sistema. Normalmente, um número mais baixo proporciona melhor desempenho, enquanto um número mais elevado evita a necessidade de percorrer várias páginas. É recomendado utilizar um múltiplo de 6.',
|
'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
|
||||||
|
|
||||||
// Maintenance settings
|
// Maintenance settings
|
||||||
'maint' => 'Manutenção',
|
'maint' => 'Manutenção',
|
||||||
@@ -141,7 +141,7 @@ return [
|
|||||||
'recycle_bin_contents_empty' => 'A reciclagem está atualmente vazia',
|
'recycle_bin_contents_empty' => 'A reciclagem está atualmente vazia',
|
||||||
'recycle_bin_empty' => 'Esvaziar Reciclagem',
|
'recycle_bin_empty' => 'Esvaziar Reciclagem',
|
||||||
'recycle_bin_empty_confirm' => 'Isto irá destruir permanentemente todos os itens na reciclagem inclusive o conteúdo de cada item. Tem certeza de que a deseja esvaziar?',
|
'recycle_bin_empty_confirm' => 'Isto irá destruir permanentemente todos os itens na reciclagem inclusive o conteúdo de cada item. Tem certeza de que a deseja esvaziar?',
|
||||||
'recycle_bin_destroy_confirm' => 'Esta ação irá eliminar definitivamente este item do sistema, com quaisquer elementos secundários listados abaixo, e não será possível recuperar este conteúdo. Tem a certeza de que deseja eliminar definitivamente este item?',
|
'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' => 'Itens a serem Destruídos',
|
'recycle_bin_destroy_list' => 'Itens a serem Destruídos',
|
||||||
'recycle_bin_restore_list' => 'Itens a serem Restaurados',
|
'recycle_bin_restore_list' => 'Itens a serem Restaurados',
|
||||||
'recycle_bin_restore_confirm' => 'Esta ação irá restaurar o item excluído, inclusive quaisquer elementos filhos, para o seu local original. Se a localização original tiver, entretanto, sido eliminada e estiver agora na reciclagem, o item pai também precisará de ser restaurado.',
|
'recycle_bin_restore_confirm' => 'Esta ação irá restaurar o item excluído, inclusive quaisquer elementos filhos, para o seu local original. Se a localização original tiver, entretanto, sido eliminada e estiver agora na reciclagem, o item pai também precisará de ser restaurado.',
|
||||||
@@ -194,20 +194,20 @@ return [
|
|||||||
'role_access_api' => 'Aceder à API do sistema',
|
'role_access_api' => 'Aceder à API do sistema',
|
||||||
'role_manage_settings' => 'Gerir as configurações da aplicação',
|
'role_manage_settings' => 'Gerir as configurações da aplicação',
|
||||||
'role_export_content' => 'Exportar conteúdo',
|
'role_export_content' => 'Exportar conteúdo',
|
||||||
'role_import_content' => 'Importar conteúdo',
|
'role_import_content' => 'Import content',
|
||||||
'role_editor_change' => 'Alterar editor de página',
|
'role_editor_change' => 'Alterar editor de página',
|
||||||
'role_notifications' => 'Receber e gerir notificações',
|
'role_notifications' => 'Receive & manage notifications',
|
||||||
'role_permission_note_users_and_roles' => 'Tecnicamente, estas permissões também permitirão visualizar e pesquisar utilizadores e papéis no sistema.',
|
'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
|
||||||
'role_asset' => 'Permissões de Ativos',
|
'role_asset' => 'Permissões de Ativos',
|
||||||
'roles_system_warning' => 'Esteja ciente de que o acesso a qualquer uma das três permissões acima pode permitir que um utilizador altere os seus próprios privilégios ou privilégios de outros no sistema. Apenas atribua cargos com essas permissões a utilizadores de confiança.',
|
'roles_system_warning' => 'Esteja ciente de que o acesso a qualquer uma das três permissões acima pode permitir que um utilizador altere os seus próprios privilégios ou privilégios de outros no sistema. Apenas atribua cargos com essas permissões a utilizadores de confiança.',
|
||||||
'role_asset_desc' => 'Estas permissões controlam o acesso padrão para os ativos dentro do sistema. Permissões em Livros, Capítulos e Páginas serão sobrescritas por estas permissões.',
|
'role_asset_desc' => 'Estas permissões controlam o acesso padrão para os ativos dentro do sistema. Permissões em Livros, Capítulos e Páginas serão sobrescritas por estas permissões.',
|
||||||
'role_asset_admins' => 'Os administradores recebem automaticamente acesso a todo o conteúdo, mas estas opções podem mostrar ou ocultar as opções da Interface de Usuário.',
|
'role_asset_admins' => 'Os administradores recebem automaticamente acesso a todo o conteúdo, mas estas opções podem mostrar ou ocultar as opções da Interface de Usuário.',
|
||||||
'role_asset_image_view_note' => 'Isto está relacionado com a visibilidade do gerenciador de imagens. O acesso real dos arquivos de imagem enviados dependerá da opção de armazenamento de imagens do sistema.',
|
'role_asset_image_view_note' => 'Isto está relacionado com a visibilidade do gerenciador de imagens. O acesso real dos arquivos de imagem enviados dependerá da opção de armazenamento de imagens do sistema.',
|
||||||
'role_asset_users_note' => 'Tecnicamente, estas permissões também permitirão visualizar e pesquisar utilizadores no sistema.',
|
'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
|
||||||
'role_all' => 'Todos',
|
'role_all' => 'Todos',
|
||||||
'role_own' => 'Próprio',
|
'role_own' => 'Próprio',
|
||||||
'role_controlled_by_asset' => 'Controlado pelo ativo para o qual eles são enviados',
|
'role_controlled_by_asset' => 'Controlado pelo ativo para o qual eles são enviados',
|
||||||
'role_controlled_by_page_delete' => 'Controlado pelas permissões de eliminação de páginas',
|
'role_controlled_by_page_delete' => 'Controlled by page delete permissions',
|
||||||
'role_save' => 'Guardar Cargo',
|
'role_save' => 'Guardar Cargo',
|
||||||
'role_users' => 'Utilizadores com este cargo',
|
'role_users' => 'Utilizadores com este cargo',
|
||||||
'role_users_none' => 'Nenhum utilizador está atualmente vinculado a este cargo',
|
'role_users_none' => 'Nenhum utilizador está atualmente vinculado a este cargo',
|
||||||
@@ -229,8 +229,8 @@ return [
|
|||||||
'users_send_invite_text' => 'Pode escolher enviar a este utilizador um convite por e-mail que o possibilitará definir a sua própria palavra-passe, ou defina você mesmo uma.',
|
'users_send_invite_text' => 'Pode escolher enviar a este utilizador um convite por e-mail que o possibilitará definir a sua própria palavra-passe, ou defina você mesmo uma.',
|
||||||
'users_send_invite_option' => 'Enviar convite por e-mail',
|
'users_send_invite_option' => 'Enviar convite por e-mail',
|
||||||
'users_external_auth_id' => 'ID de Autenticação Externa',
|
'users_external_auth_id' => 'ID de Autenticação Externa',
|
||||||
'users_external_auth_id_desc' => 'Quando se utiliza um sistema de autenticação externo (como SAML2, OIDC ou LDAP), este é o ID que associa este utilizador do BookStack à conta do sistema de autenticação. Pode ignorar este campo se estiver a utilizar a autenticação padrão baseada no e-mail.',
|
'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' => 'Preencha os campos abaixo apenas se pretender alterar a palavra-passe deste utilizador.',
|
'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
|
||||||
'users_system_public' => 'Este utilizador representa quaisquer convidados que visitam a aplicação. Não pode ser utilizado para efetuar autenticação, mas é automaticamente atribuído.',
|
'users_system_public' => 'Este utilizador representa quaisquer convidados que visitam a aplicação. Não pode ser utilizado para efetuar autenticação, mas é automaticamente atribuído.',
|
||||||
'users_delete' => 'Eliminar Utilizador',
|
'users_delete' => 'Eliminar Utilizador',
|
||||||
'users_delete_named' => 'Eliminar :userName',
|
'users_delete_named' => 'Eliminar :userName',
|
||||||
@@ -246,7 +246,7 @@ return [
|
|||||||
'users_preferred_language' => 'Linguagem de Preferência',
|
'users_preferred_language' => 'Linguagem de Preferência',
|
||||||
'users_preferred_language_desc' => 'Esta opção irá alterar o idioma utilizado para a interface de utilizador da aplicação. Isto não afetará nenhum conteúdo criado por utilizadores.',
|
'users_preferred_language_desc' => 'Esta opção irá alterar o idioma utilizado para a interface de utilizador da aplicação. Isto não afetará nenhum conteúdo criado por utilizadores.',
|
||||||
'users_social_accounts' => 'Contas Sociais',
|
'users_social_accounts' => 'Contas Sociais',
|
||||||
'users_social_accounts_desc' => 'Ver o estado das contas sociais associadas a este utilizador. As contas sociais podem ser utilizadas em complemento ao sistema de autenticação principal para aceder ao sistema.',
|
'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' => 'Aqui pode ligar outras contas para acesso mais rápido. Desligar uma conta não retira a possibilidade de acesso usando-a. Para revogar o acesso ao perfil através da conta social, você deverá fazê-lo na sua conta social.',
|
'users_social_accounts_info' => 'Aqui pode ligar outras contas para acesso mais rápido. Desligar uma conta não retira a possibilidade de acesso usando-a. Para revogar o acesso ao perfil através da conta social, você deverá fazê-lo na sua conta social.',
|
||||||
'users_social_connect' => 'Contas Associadas',
|
'users_social_connect' => 'Contas Associadas',
|
||||||
'users_social_disconnect' => 'Dissociar Conta',
|
'users_social_disconnect' => 'Dissociar Conta',
|
||||||
@@ -255,7 +255,7 @@ return [
|
|||||||
'users_social_connected' => 'A conta:socialAccount foi associada com sucesso ao seu perfil.',
|
'users_social_connected' => 'A conta:socialAccount foi associada com sucesso ao seu perfil.',
|
||||||
'users_social_disconnected' => 'A conta:socialAccount foi dissociada com sucesso de seu perfil.',
|
'users_social_disconnected' => 'A conta:socialAccount foi dissociada com sucesso de seu perfil.',
|
||||||
'users_api_tokens' => 'Tokens de API',
|
'users_api_tokens' => 'Tokens de API',
|
||||||
'users_api_tokens_desc' => 'Crie e faça a gestão dos tokens de acesso utilizados para autenticação na API REST do BookStack. As permissões para a API são geridas através do utilizador a quem o token pertence.',
|
'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' => 'Nenhum token de API foi criado para este utilizador',
|
'users_api_tokens_none' => 'Nenhum token de API foi criado para este utilizador',
|
||||||
'users_api_tokens_create' => 'Criar Token',
|
'users_api_tokens_create' => 'Criar Token',
|
||||||
'users_api_tokens_expires' => 'Expira',
|
'users_api_tokens_expires' => 'Expira',
|
||||||
@@ -264,9 +264,9 @@ return [
|
|||||||
'users_mfa_desc' => 'Configure a autenticação multi-fatores como uma camada extra de segurança para sua conta de utilizador.',
|
'users_mfa_desc' => 'Configure a autenticação multi-fatores como uma camada extra de segurança para sua conta de utilizador.',
|
||||||
'users_mfa_x_methods' => ':count método configurado|:count métodos configurados',
|
'users_mfa_x_methods' => ':count método configurado|:count métodos configurados',
|
||||||
'users_mfa_configure' => 'Configurar Métodos',
|
'users_mfa_configure' => 'Configurar Métodos',
|
||||||
'users_mfa_reset' => 'Redefinir métodos de autenticação multifator',
|
'users_mfa_reset' => 'Reset Multi-Factor Authentication Methods',
|
||||||
'users_mfa_reset_desc' => 'Isto irá reiniciar e eliminar todos os métodos de autenticação multifator configurados para este utilizador. Se a autenticação multifator for exigida por alguma das suas funções, ser-lhe-á solicitado que configure novos métodos no seu próximo início de sessão.',
|
'users_mfa_reset_desc' => 'This will reset and clear all configured multi-factor authentication methods for this user. If multi-factor authentication is required by any of their roles, they\'ll be prompted to configure new methods on their next login.',
|
||||||
'users_mfa_reset_confirm' => 'Tem a certeza de que deseja repor a autenticação multifator para este utilizador?',
|
'users_mfa_reset_confirm' => 'Are you sure you want to reset multi-factor authentication for this user?',
|
||||||
|
|
||||||
// API Tokens
|
// API Tokens
|
||||||
'user_api_token_create' => 'Criar Token de API',
|
'user_api_token_create' => 'Criar Token de API',
|
||||||
@@ -316,13 +316,13 @@ return [
|
|||||||
'webhooks_last_error_message' => 'Última mensagem de erro:',
|
'webhooks_last_error_message' => 'Última mensagem de erro:',
|
||||||
|
|
||||||
// Licensing
|
// Licensing
|
||||||
'licenses' => 'Licenças',
|
'licenses' => 'Licenses',
|
||||||
'licenses_desc' => 'Esta página apresenta informações sobre as licenças do BookStack, bem como sobre os projetos e bibliotecas utilizados no BookStack. Muitos dos projetos aqui listados só podem ser utilizados num contexto de desenvolvimento.',
|
'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' => 'Licença de BookStack',
|
'licenses_bookstack' => 'BookStack License',
|
||||||
'licenses_php' => 'Licenças de Bibliotecas PHP',
|
'licenses_php' => 'PHP Library Licenses',
|
||||||
'licenses_js' => 'Licenças de Bibliotecas de JavaScript',
|
'licenses_js' => 'JavaScript Library Licenses',
|
||||||
'licenses_other' => 'Outras Licenças',
|
'licenses_other' => 'Other Licenses',
|
||||||
'license_details' => 'Detalhes de Licença',
|
'license_details' => 'License Details',
|
||||||
|
|
||||||
//! If editing translations files directly please ignore this in all
|
//! If editing translations files directly please ignore this in all
|
||||||
//! languages apart from en. Content will be auto-copied from en.
|
//! languages apart from en. Content will be auto-copied from en.
|
||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -105,11 +105,11 @@ return [
|
|||||||
'url' => 'O formato da URL :attribute é inválido.',
|
'url' => 'O formato da URL :attribute é inválido.',
|
||||||
'uploaded' => 'O arquivo não pôde ser carregado. O servidor pode não aceitar arquivos deste tamanho.',
|
'uploaded' => 'O arquivo não pôde ser carregado. O servidor pode não aceitar arquivos deste tamanho.',
|
||||||
|
|
||||||
'zip_file' => 'O :attribute deve referenciar um ficheiro dentro do ZIP.',
|
'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
|
||||||
'zip_file_size' => 'O ficheiro :attribute não deve exceder :size MB.',
|
'zip_file_size' => 'The file :attribute must not exceed :size MB.',
|
||||||
'zip_file_mime' => 'O :attribute deve referenciar um ficheiro do tipo :validTypes, encontrado em :foundType.',
|
'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
|
||||||
'zip_model_expected' => 'Era esperado um objeto de dados, mas foi encontrado “:type”.',
|
'zip_model_expected' => 'Data object expected but ":type" found.',
|
||||||
'zip_unique' => 'O :attribute deve ser único para o tipo de objeto dentro do ficheiro ZIP.',
|
'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
|
||||||
|
|
||||||
// Custom validation lines
|
// Custom validation lines
|
||||||
'custom' => [
|
'custom' => [
|
||||||
|
|||||||
@@ -99,8 +99,8 @@ return [
|
|||||||
'user_update_notification' => 'Usuário atualizado com sucesso',
|
'user_update_notification' => 'Usuário atualizado com sucesso',
|
||||||
'user_delete' => 'usuário excluído',
|
'user_delete' => 'usuário excluído',
|
||||||
'user_delete_notification' => 'Usuário removido com sucesso',
|
'user_delete_notification' => 'Usuário removido com sucesso',
|
||||||
'user_mfa_reset' => 'redefinir MFA para usuário',
|
'user_mfa_reset' => 'reset MFA for user',
|
||||||
'user_mfa_reset_notification' => 'Redefinir métodos de autenticação de múltiplos fatores',
|
'user_mfa_reset_notification' => 'Multi-factor authentication methods reset',
|
||||||
|
|
||||||
// API Tokens
|
// API Tokens
|
||||||
'api_token_create' => 'token de API criado',
|
'api_token_create' => 'token de API criado',
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ return [
|
|||||||
|
|
||||||
'failed' => 'As credenciais fornecidas não puderam ser validadas em nossos registros.',
|
'failed' => 'As credenciais fornecidas não puderam ser validadas em nossos registros.',
|
||||||
'throttle' => 'Muitas tentativas de login. Por favor, tente novamente em :seconds segundos.',
|
'throttle' => 'Muitas tentativas de login. Por favor, tente novamente em :seconds segundos.',
|
||||||
'mfa_throttle' => 'Muitas tentativas de verificação de multifatores. Por favor tente novamente em :seconds segundos.',
|
'mfa_throttle' => 'Too many multi-factor verification attempts. Please try again in :seconds seconds.',
|
||||||
|
|
||||||
// Login & Register
|
// Login & Register
|
||||||
'sign_up' => 'Criar Conta',
|
'sign_up' => 'Criar Conta',
|
||||||
|
|||||||
@@ -219,7 +219,7 @@ return [
|
|||||||
'chapters_permissions_active' => 'Permissões de Capítulo Ativas',
|
'chapters_permissions_active' => 'Permissões de Capítulo Ativas',
|
||||||
'chapters_permissions_success' => 'Permissões de Capítulo Atualizadas',
|
'chapters_permissions_success' => 'Permissões de Capítulo Atualizadas',
|
||||||
'chapters_search_this' => 'Pesquisar neste Capítulo',
|
'chapters_search_this' => 'Pesquisar neste Capítulo',
|
||||||
'chapter_sort_book' => 'Ordenar livro',
|
'chapter_sort_book' => 'Classificar livro',
|
||||||
|
|
||||||
// Pages
|
// Pages
|
||||||
'page' => 'Página',
|
'page' => 'Página',
|
||||||
@@ -331,9 +331,9 @@ return [
|
|||||||
|
|
||||||
// Editor Sidebar
|
// Editor Sidebar
|
||||||
'toggle_sidebar' => '',
|
'toggle_sidebar' => '',
|
||||||
'page_contents' => 'Conteúdos da página',
|
'page_contents' => 'Page Contents',
|
||||||
'page_contents_none' => 'Nenhum título foi encontrado no conteúdo da página.',
|
'page_contents_none' => 'No headings were found in the page content.',
|
||||||
'page_contents_info' => 'O menu de conteúdo é gerado a partir de qualquer formato de cabeçalho usado na página.',
|
'page_contents_info' => 'The contents menu is generated from any heading formats used in the page.',
|
||||||
'page_tags' => 'Marcadores de Página',
|
'page_tags' => 'Marcadores de Página',
|
||||||
'chapter_tags' => 'Marcadores de Capítulo',
|
'chapter_tags' => 'Marcadores de Capítulo',
|
||||||
'book_tags' => 'Marcadores de Livro',
|
'book_tags' => 'Marcadores de Livro',
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ return [
|
|||||||
'role_details' => 'Detalhes do Perfil',
|
'role_details' => 'Detalhes do Perfil',
|
||||||
'role_name' => 'Nome do Perfil',
|
'role_name' => 'Nome do Perfil',
|
||||||
'role_desc' => 'Breve Descrição do Perfil',
|
'role_desc' => 'Breve Descrição do Perfil',
|
||||||
'role_mfa_enforced' => 'Requer Autenticação Multifator',
|
'role_mfa_enforced' => 'Requer Autenticação Multi-fator',
|
||||||
'role_external_auth_id' => 'IDs de Autenticação Externa',
|
'role_external_auth_id' => 'IDs de Autenticação Externa',
|
||||||
'role_system' => 'Permissões do Sistema',
|
'role_system' => 'Permissões do Sistema',
|
||||||
'role_manage_users' => 'Gerenciar usuários',
|
'role_manage_users' => 'Gerenciar usuários',
|
||||||
@@ -260,13 +260,13 @@ return [
|
|||||||
'users_api_tokens_create' => 'Criar Token',
|
'users_api_tokens_create' => 'Criar Token',
|
||||||
'users_api_tokens_expires' => 'Expira',
|
'users_api_tokens_expires' => 'Expira',
|
||||||
'users_api_tokens_docs' => 'Documentação da API',
|
'users_api_tokens_docs' => 'Documentação da API',
|
||||||
'users_mfa' => 'Autenticação Multifator',
|
'users_mfa' => 'Autenticação de Múltiplos Fatores',
|
||||||
'users_mfa_desc' => 'A autenticação multifator adiciona uma camada extra de segurança à sua conta.',
|
'users_mfa_desc' => 'A autenticação multi-fator adiciona outra camada de segurança à sua conta.',
|
||||||
'users_mfa_x_methods' => ':count método configurado|:count métodos configurados',
|
'users_mfa_x_methods' => ':count método configurado|:count métodos configurados',
|
||||||
'users_mfa_configure' => 'Configurar Métodos',
|
'users_mfa_configure' => 'Configurar Métodos',
|
||||||
'users_mfa_reset' => 'Redefiner Métodos de Autenticação Multifator',
|
'users_mfa_reset' => 'Reset Multi-Factor Authentication Methods',
|
||||||
'users_mfa_reset_desc' => 'Isto irá redefinir e limpar todos os métodos de autenticação multifator configurados para este usuário. Se a autenticação multifator for exigida por qualquer uma de suas funções, você será solicitado a configurar novos métodos em seu próximo login.',
|
'users_mfa_reset_desc' => 'This will reset and clear all configured multi-factor authentication methods for this user. If multi-factor authentication is required by any of their roles, they\'ll be prompted to configure new methods on their next login.',
|
||||||
'users_mfa_reset_confirm' => 'Você tem certeza que deseja remover o método de autenticação multifator?',
|
'users_mfa_reset_confirm' => 'Are you sure you want to reset multi-factor authentication for this user?',
|
||||||
|
|
||||||
// API Tokens
|
// API Tokens
|
||||||
'user_api_token_create' => 'Criar Token de API',
|
'user_api_token_create' => 'Criar Token de API',
|
||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -367,7 +367,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'slovenščina',
|
'sl' => 'slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -366,7 +366,6 @@ return [
|
|||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sk' => 'Slovensky',
|
'sk' => 'Slovensky',
|
||||||
'sl' => 'Slovenščina',
|
'sl' => 'Slovenščina',
|
||||||
'sr' => 'Српски',
|
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'th' => 'ภาษาไทย',
|
'th' => 'ภาษาไทย',
|
||||||
'tr' => 'Türkçe',
|
'tr' => 'Türkçe',
|
||||||
|
|||||||
@@ -77,20 +77,20 @@ return [
|
|||||||
'maintenance_action_run' => 'покренуо акцију одржавања',
|
'maintenance_action_run' => 'покренуо акцију одржавања',
|
||||||
|
|
||||||
// Webhooks
|
// Webhooks
|
||||||
'webhook_create' => 'креирана веб закачка',
|
'webhook_create' => 'креиран вебхоок',
|
||||||
'webhook_create_notification' => 'Веб закачка је успешно креирана',
|
'webhook_create_notification' => 'Вебхоок је успешно креиран',
|
||||||
'webhook_update' => 'ажурирана веб закачка',
|
'webhook_update' => 'ажуриран вебхоок',
|
||||||
'webhook_update_notification' => 'Веб закачка је успешно ажурирана',
|
'webhook_update_notification' => 'Вебхоок је успешно ажуриран',
|
||||||
'webhook_delete' => 'обрисана веб закачка',
|
'webhook_delete' => 'обрисан вебхоок',
|
||||||
'webhook_delete_notification' => 'Веб закачка је успешно обрисана',
|
'webhook_delete_notification' => 'Вебхоок је успешно обрисан',
|
||||||
|
|
||||||
// Imports
|
// Imports
|
||||||
'import_create' => 'креиран увоз',
|
'import_create' => 'креиран увоз',
|
||||||
'import_create_notification' => 'Увоз је успешно отпремљен',
|
'import_create_notification' => 'Import successfully uploaded',
|
||||||
'import_run' => 'ажуриран увоз',
|
'import_run' => 'ажуриран увоз',
|
||||||
'import_run_notification' => 'Садржај је успешно увезен',
|
'import_run_notification' => 'Content successfully imported',
|
||||||
'import_delete' => 'обрисан увоз',
|
'import_delete' => 'deleted import',
|
||||||
'import_delete_notification' => 'Увоз је успешно обрисан',
|
'import_delete_notification' => 'Import successfully deleted',
|
||||||
|
|
||||||
// Users
|
// Users
|
||||||
'user_create' => 'креирао корисника',
|
'user_create' => 'креирао корисника',
|
||||||
@@ -99,8 +99,8 @@ return [
|
|||||||
'user_update_notification' => 'Корисник је успешно ажуриран',
|
'user_update_notification' => 'Корисник је успешно ажуриран',
|
||||||
'user_delete' => 'избрисан корисника',
|
'user_delete' => 'избрисан корисника',
|
||||||
'user_delete_notification' => 'Корисник је успешно уклоњен',
|
'user_delete_notification' => 'Корисник је успешно уклоњен',
|
||||||
'user_mfa_reset' => 'поништи МФА за корисника',
|
'user_mfa_reset' => 'reset MFA for user',
|
||||||
'user_mfa_reset_notification' => 'Поништавања начина мултифакторске аутентификације',
|
'user_mfa_reset_notification' => 'Multi-factor authentication methods reset',
|
||||||
|
|
||||||
// API Tokens
|
// API Tokens
|
||||||
'api_token_create' => 'креирао апи токен',
|
'api_token_create' => 'креирао апи токен',
|
||||||
@@ -130,12 +130,12 @@ return [
|
|||||||
'comment_delete' => 'обрисан коментар',
|
'comment_delete' => 'обрисан коментар',
|
||||||
|
|
||||||
// Sort Rules
|
// Sort Rules
|
||||||
'sort_rule_create' => 'направљено је правило слагања',
|
'sort_rule_create' => 'created sort rule',
|
||||||
'sort_rule_create_notification' => 'Правило слагања је успешно направљено',
|
'sort_rule_create_notification' => 'Sort rule successfully created',
|
||||||
'sort_rule_update' => 'ажурирано је правило слагања',
|
'sort_rule_update' => 'updated sort rule',
|
||||||
'sort_rule_update_notification' => 'Правило слагања је успешно ажурирано',
|
'sort_rule_update_notification' => 'Sort rule successfully updated',
|
||||||
'sort_rule_delete' => 'избрисано је правило слагања',
|
'sort_rule_delete' => 'deleted sort rule',
|
||||||
'sort_rule_delete_notification' => 'Правило слагања је успешно избрисано',
|
'sort_rule_delete_notification' => 'Sort rule successfully deleted',
|
||||||
|
|
||||||
// Other
|
// Other
|
||||||
'permissions_update' => 'ажуриране дозволе',
|
'permissions_update' => 'ажуриране дозволе',
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user