Compare commits
574 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e4e9c87eec | |||
| 7b601a3759 | |||
| 5bc2154bf0 | |||
| 1c558d2f15 | |||
| 40f01de456 | |||
| 987b59b006 | |||
| 9eb99ecbab | |||
| 7416f44dbc | |||
| 1d33d37bf2 | |||
| 0f7260de03 | |||
| 3ebf7b818b | |||
| e4735ea580 | |||
| c779928143 | |||
| d9226608b4 | |||
| ad7ddbdec5 | |||
| 9205e01f69 | |||
| 9d68520524 | |||
| 06cc4a0778 | |||
| 0f57aba5f6 | |||
| 7bb579d650 | |||
| 5936991827 | |||
| d76b7fb7fe | |||
| d3e0d989af | |||
| 96814dec10 | |||
| aeefd41b87 | |||
| 720c7e4881 | |||
| 3c207d9932 | |||
| 233ae5a58b | |||
| 5137af7293 | |||
| 5cfeec8f5d | |||
| f13ffc2a64 | |||
| 723278da5c | |||
| 2b7ad44c99 | |||
| e7810fd8cf | |||
| 19833e8b0e | |||
| e07b8e01af | |||
| e58cf22ed6 | |||
| 8480f5ac7a | |||
| 3f255ab9ae | |||
| 143e603d4e | |||
| c2b482693d | |||
| 0cab937222 | |||
| 38a1c2938b | |||
| afba77caee | |||
| c739fae390 | |||
| 4a3b259baf | |||
| 90a288c6ea | |||
| 53629b93bc | |||
| 4bdfbe1a1f | |||
| 796c57121d | |||
| 6cd11638d5 | |||
| 3c66e7caac | |||
| 00712bd8f1 | |||
| 0d7ba732b7 | |||
| 4c99ba4ad3 | |||
| f9b0f6d601 | |||
| c1857ef203 | |||
| ba9eb1308d | |||
| 471369ca2b | |||
| 81a4810203 | |||
| 8d2459656d | |||
| d3fae80d0c | |||
| 6769550a11 | |||
| d7c88ece4e | |||
| aca699c263 | |||
| 8a25e2dbcb | |||
| 4b6b40b5b1 | |||
| 54296f5567 | |||
| d596900410 | |||
| fea3eed909 | |||
| 24c908ff11 | |||
| c050ca9db4 | |||
| 717fdad70d | |||
| 222b8942af | |||
| 7bcd4193b8 | |||
| d524329ec3 | |||
| 1a1a810cf2 | |||
| 695ceba17c | |||
| cb99a5795d | |||
| 6d566367a9 | |||
| 19042c4d91 | |||
| 6e4d50b914 | |||
| 3b3048e403 | |||
| 5efabd1fa9 | |||
| a574e1f3c7 | |||
| 4a4ee4fccd | |||
| 166f07649f | |||
| 5cd1e77dbd | |||
| 9a0270ace4 | |||
| 5a8fca96cb | |||
| 05af366fa5 | |||
| a84b70a45a | |||
| f9a2410ccb | |||
| 895d068ab9 | |||
| a448205308 | |||
| 1b2441b90e | |||
| eb756d8ca5 | |||
| a96877a5ff | |||
| cfa0dab8f1 | |||
| 2c33a04f07 | |||
| fdf74b0f53 | |||
| 8aa6c10382 | |||
| 5f26c549bd | |||
| 6916a311e7 | |||
| 2f8ff76061 | |||
| 5eb5d39d9f | |||
| 8992ba85c7 | |||
| 300148b21d | |||
| 854bfcc38d | |||
| 266426f5e4 | |||
| 20859a3f3f | |||
| b27f584dd3 | |||
| 30b2b86115 | |||
| daba112247 | |||
| 345a216502 | |||
| a5961d1977 | |||
| 5ed9925883 | |||
| e93300deb4 | |||
| 5a9eb9f519 | |||
| 249cd4c7d7 | |||
| 8d30564b82 | |||
| a7fd34015c | |||
| ba4e859ff0 | |||
| 30e72fe180 | |||
| b4bccf1ea3 | |||
| 9b652c787f | |||
| f4ae66dce1 | |||
| 460277eef2 | |||
| f7183b7f79 | |||
| 7339e49105 | |||
| d84d75dc3a | |||
| f03b33d3b1 | |||
| 259af058b0 | |||
| 1d753c83bf | |||
| 49a4aa4089 | |||
| c36511dc23 | |||
| 326eba8c2c | |||
| 0467731dae | |||
| 663feb76b9 | |||
| ca8bbbd6f0 | |||
| 7e7991bd66 | |||
| 4916139dcc | |||
| 8d0c5cc66a | |||
| e68be69dc9 | |||
| 5369d752d7 | |||
| 4e6b51224a | |||
| 512f458ac0 | |||
| b36de92fde | |||
| e58eb4650d | |||
| 468951a814 | |||
| b003cae1b8 | |||
| a994472e47 | |||
| 3cc71b834c | |||
| 42140fe8e1 | |||
| 23b188f61c | |||
| 660b309243 | |||
| 3b48c251fa | |||
| 3881c021e2 | |||
| de2290b8f6 | |||
| e390a6eb20 | |||
| a7e3e9ae65 | |||
| 17a2e832a1 | |||
| 1eafe4b32f | |||
| 88cc6297d3 | |||
| ff84ff4c42 | |||
| 1b71b84110 | |||
| 59d20bf78b | |||
| 6971771ce1 | |||
| f63b3c8d0f | |||
| d29070e7bd | |||
| 0ba09ac1db | |||
| 2fe48763dd | |||
| 4665fa2e1e | |||
| 316dad1618 | |||
| 76272f5889 | |||
| 058bf13482 | |||
| caceb9d0a8 | |||
| d207d6ec82 | |||
| 9d0296fef8 | |||
| b7fdadbe1a | |||
| 8ecba9d32d | |||
| 1a75cc19c8 | |||
| ba29002024 | |||
| 236a16670b | |||
| f9459b0e2d | |||
| f98bc65d6e | |||
| 7ce07a5029 | |||
| 58b5ce9952 | |||
| 51bce70f77 | |||
| 3b427a09f0 | |||
| 00ffe6f658 | |||
| 80ba0f2a64 | |||
| 43a52fc20e | |||
| f56e6c8c11 | |||
| 2278bee890 | |||
| 8424e506c4 | |||
| 70414b15f9 | |||
| 1e489f7ec0 | |||
| f2cc09fef1 | |||
| 4f489a6694 | |||
| bc908b044a | |||
| 1cce67e18d | |||
| 819deced0a | |||
| 5aad1247eb | |||
| 4cf7304932 | |||
| 3a3e092705 | |||
| 1cae227951 | |||
| d6e6b8b7c5 | |||
| f19c6dab44 | |||
| 09d315566d | |||
| 66d58d6eeb | |||
| 52575d9309 | |||
| d485db32bc | |||
| b5b7a41948 | |||
| 952a4aba5b | |||
| e7f993de71 | |||
| 78bf1b987d | |||
| b70ba23029 | |||
| 6d049e6a13 | |||
| 4c3bfd20b3 | |||
| c457ebfabe | |||
| ab011363a9 | |||
| 8b1d8c3722 | |||
| c781121a16 | |||
| 76270a9a2f | |||
| 83d85bd045 | |||
| cffa3673f1 | |||
| 18515f6332 | |||
| 6880f3ba6d | |||
| 6ceb64b384 | |||
| 4f26225df6 | |||
| 48d06714dc | |||
| 1b9866fa45 | |||
| 88cf98b13d | |||
| c6ccd39b05 | |||
| a93f8b6945 | |||
| 9403110854 | |||
| 2b2ec5e7f7 | |||
| c587979785 | |||
| f55ac66ad1 | |||
| 8b995d7eed | |||
| 28b2ba9a69 | |||
| 0cb14bdcb4 | |||
| 3289739110 | |||
| 4127f33f4e | |||
| de6012d100 | |||
| 05acb130ce | |||
| 18e8433b32 | |||
| c6b2d08e67 | |||
| fc74415e68 | |||
| b8ad0752fa | |||
| 9151960af0 | |||
| 808e604eb3 | |||
| ac0630788d | |||
| 975ebc1248 | |||
| 09a089ad57 | |||
| d6eaaf3fe0 | |||
| 07155246d3 | |||
| 29be674b5d | |||
| 8896b40164 | |||
| 413ac2dc50 | |||
| 2084fbad3a | |||
| c26832233f | |||
| 7c6d99e8ea | |||
| c124456881 | |||
| adc106a197 | |||
| 7170b141ba | |||
| 39b47e1a78 | |||
| 7508e5d5be | |||
| 677451427e | |||
| aab74bea40 | |||
| 4e635933c0 | |||
| f30b8df317 | |||
| b45848d91e | |||
| 31694ca314 | |||
| c4e4aff418 | |||
| 7ca983750b | |||
| 76f60d04d8 | |||
| 592739dd97 | |||
| a3263fb329 | |||
| 2887ee0518 | |||
| 5fa94ae9af | |||
| 36d3ef1c7c | |||
| 883bda7be4 | |||
| c1c502ba4a | |||
| 794bbd36f3 | |||
| a2b5ed52da | |||
| 4bb481cbb3 | |||
| 826f0aeae0 | |||
| a2d29eddf4 | |||
| 4a448f31b2 | |||
| 44233f7c23 | |||
| 98977247da | |||
| 62e5313cda | |||
| fa570bd0e4 | |||
| 2117736e34 | |||
| 9cf71f2b5a | |||
| eb785ec9b6 | |||
| 9df81090f1 | |||
| 429c512ab7 | |||
| dba67aa021 | |||
| df583faba3 | |||
| d49c7a3bdc | |||
| afeaf93bdb | |||
| ef1957d42e | |||
| f8f357aa1b | |||
| e9d1c4afdb | |||
| 487759652b | |||
| 05c9f0acb6 | |||
| f9d40847f1 | |||
| dc2fe31250 | |||
| 415fe8d8fe | |||
| 0dc2ed24f1 | |||
| 611a6c6751 | |||
| 625d6d4d0c | |||
| 6a3f2ff022 | |||
| 0fd9d8b132 | |||
| be1ef4296f | |||
| 102093b1a2 | |||
| a0930d01b1 | |||
| 5733fccdd1 | |||
| d2333d1081 | |||
| 71511ddd37 | |||
| 1d9d6c63bc | |||
| c9b20c0b23 | |||
| b772dbd416 | |||
| 5bb1d81c71 | |||
| 707fc6599f | |||
| b851446c6a | |||
| 9a5a80438a | |||
| 9429ba0e9a | |||
| 893078cebf | |||
| 0484885d38 | |||
| 271ceb0e6c | |||
| c6dea6e609 | |||
| 0da59de01d | |||
| a318699f6d | |||
| 26dac925b3 | |||
| 49ddbb3655 | |||
| 69c6229b0b | |||
| 263108c889 | |||
| a94cc32f1e | |||
| 7b001abd08 | |||
| f5d5f019fa | |||
| 4fc531bd03 | |||
| 5437573914 | |||
| cdf6e03215 | |||
| 7a96c80afb | |||
| 3c6da41c8a | |||
| 40e2b11a68 | |||
| 69eafb3bc0 | |||
| 372db926e9 | |||
| adbaff71de | |||
| 6fe73aee37 | |||
| c63f61d62e | |||
| 73e278a8af | |||
| 414a8d7de7 | |||
| b568587783 | |||
| 7a38af2d28 | |||
| f5fa046ed9 | |||
| c7a9514aa6 | |||
| 05e320a034 | |||
| a24edd5587 | |||
| 433f8011a8 | |||
| bf526631fa | |||
| 6b1901f0e7 | |||
| fda3af7915 | |||
| 53458967b3 | |||
| 08adbbd7ef | |||
| 8052cd9d08 | |||
| f5e5d47fd9 | |||
| 20ea9a2535 | |||
| 6827b6c232 | |||
| 0368c65e05 | |||
| e487d822ee | |||
| b99e478840 | |||
| d094884057 | |||
| 3b076350d1 | |||
| 98a95fb986 | |||
| 6690df39dc | |||
| f4a14cfe69 | |||
| 52a5d0cea6 | |||
| 6119604f71 | |||
| 25efb43ac4 | |||
| 446bb96ba8 | |||
| 726d857690 | |||
| 373ba3ecee | |||
| 684bd274b8 | |||
| 7f498d0fa0 | |||
| 7c4a5b0dd1 | |||
| 08227ca28d | |||
| 1309459fee | |||
| 37cca49630 | |||
| 982534349a | |||
| 61d2937bf4 | |||
| 5c7613fd67 | |||
| 10cf013e19 | |||
| df218bc4db | |||
| f17f24ffad | |||
| b3832bcd05 | |||
| a7211e6ab0 | |||
| b695d2f107 | |||
| faab6c8072 | |||
| ae6a8d5cf5 | |||
| 6c47b26102 | |||
| 2a42dd4f4e | |||
| 1fb7567294 | |||
| 1360771be8 | |||
| 7da871437b | |||
| 1dd634c0e6 | |||
| 5e2c5e5fb6 | |||
| c2510a481e | |||
| 39938297ee | |||
| 267f3896ae | |||
| be005877ff | |||
| c48b15fb70 | |||
| ec230f9290 | |||
| 1db6d96e94 | |||
| 1d02efdd8b | |||
| 8e89c281a5 | |||
| ad0405a18b | |||
| 775e4e023d | |||
| be7b7f5d13 | |||
| 8caffb784f | |||
| ce7bfc6b33 | |||
| c98334fdac | |||
| f477a22404 | |||
| cecd778c2b | |||
| b9b201cc9a | |||
| b885e44dde | |||
| 4beffc4209 | |||
| 4cbfeec38e | |||
| 66b1cf3a19 | |||
| 873ba714ae | |||
| 9068bf5788 | |||
| 0644eab947 | |||
| 116897fc90 | |||
| 061833b83d | |||
| e50f95eab6 | |||
| 8fcb1c1d76 | |||
| 263e3e829e | |||
| 1921685e4e | |||
| 402143d4e8 | |||
| 4807c23e09 | |||
| 0c6b5cde95 | |||
| ab959249d3 | |||
| c4a6f5c7b2 | |||
| 0612e008d4 | |||
| 47e950dbee | |||
| 36473a3f63 | |||
| f4fc7daf73 | |||
| 31e5e102c1 | |||
| 511ade9497 | |||
| d1dc38dc1f | |||
| fad56d683c | |||
| c765dac633 | |||
| bbd972b2ca | |||
| a4bfea7f37 | |||
| 7b841c060d | |||
| 0a2744a998 | |||
| c26e17104c | |||
| 1f0245e68f | |||
| a3febe2a40 | |||
| 7ed5679f2c | |||
| 380aaef96e | |||
| 1b4c82156d | |||
| 07ac47812b | |||
| 46180dd9f3 | |||
| d847a89436 | |||
| eafcc4e3a1 | |||
| 51c249d9ab | |||
| b1617bca39 | |||
| 14a59c461b | |||
| a2d8bd4c11 | |||
| 115058720a | |||
| 65144258d2 | |||
| 7b2f226ce6 | |||
| ac5ec1af7d | |||
| 34ca126b37 | |||
| 02d07e14b3 | |||
| 61def5e276 | |||
| ffecfc6441 | |||
| 94b86b22ce | |||
| cfd01baf04 | |||
| 036af3556c | |||
| a3b96282ed | |||
| 56abd79050 | |||
| 5267da34b1 | |||
| 446e495c59 | |||
| cae61e00f6 | |||
| 5660589ca9 | |||
| 8aed08e058 | |||
| f2d7d13579 | |||
| 4dea095a76 | |||
| 2ea723d1e1 | |||
| 019ffa2ec0 | |||
| 885b55b7af | |||
| 467a0eaee2 | |||
| 77da30a906 | |||
| ce1dddcc64 | |||
| b84eb26f72 | |||
| b6fd615bf7 | |||
| 68284b87f2 | |||
| 904ac63310 | |||
| 1f27bd153b | |||
| 92a4ce9f3b | |||
| 729b78708f | |||
| 8b34878771 | |||
| a5c5740e84 | |||
| ab51e4ef24 | |||
| d442a3c1be | |||
| 6ac50c26ef | |||
| 4aeb701b87 | |||
| 9c073fd760 | |||
| 413610ede4 | |||
| c12f26867d | |||
| 847535ee88 | |||
| d9c07af32a | |||
| e85870afa7 | |||
| 7bdaa9fa04 | |||
| 9c21bda303 | |||
| 3bb4d01a7c | |||
| 99cb56cda2 | |||
| a85d1cad6a | |||
| 6965d4b4af | |||
| 4441416245 | |||
| 96423a1172 | |||
| 2d86948c34 | |||
| dbc421580e | |||
| 89f8179e64 | |||
| bc9f3d3d4c | |||
| 9fe747f2c5 | |||
| 6f8b3916ad | |||
| 82e9af439e | |||
| c471c8d6de | |||
| 42ca267d83 | |||
| 981da3d49f | |||
| 7083596dc1 | |||
| ac2e94f121 | |||
| de295ba8dd | |||
| 5d078383b6 | |||
| e938bbec19 | |||
| 1f0f227b43 | |||
| b2fa292ee8 | |||
| cc6b12a166 | |||
| b45d342654 | |||
| e43814f74d | |||
| 611b920e3d | |||
| c25d61c7b8 | |||
| 4be6d23d00 | |||
| f2bd15229a | |||
| a703818ee7 | |||
| 5ee61a5fc6 | |||
| 019e85d92c | |||
| 1fae3ae4ae | |||
| c6c4328e2a | |||
| aff9302638 | |||
| 1115199ae3 | |||
| 86b787d21e | |||
| 359a37fd10 | |||
| 079a8c0e0f | |||
| 42bc4a0b2a | |||
| 205760a3aa | |||
| 2948697257 | |||
| 3c47caf08b | |||
| 515e05cf16 | |||
| 060230eec7 | |||
| b2a893abad | |||
| 95dcc610fc | |||
| a5a8f4e9ef | |||
| 9366ec0fb8 | |||
| bfaa31af61 | |||
| 063aac8ebc | |||
| 773826f9e1 |
+41
-5
@@ -374,7 +374,7 @@ services:
|
||||
- name: cache
|
||||
image: ghcr.io/nextcloud/continuous-integration-redis:latest
|
||||
- name: mariadb
|
||||
image: ghcr.io/nextcloud/continuous-integration-mariadb-10.6continuous-integration-mariadb-10.6:10.6
|
||||
image: ghcr.io/nextcloud/continuous-integration-mariadb-10.6:latest
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: owncloud
|
||||
MYSQL_USER: oc_autotest
|
||||
@@ -455,7 +455,7 @@ services:
|
||||
image: ghcr.io/nextcloud/continuous-integration-postgres-10:postgres-10
|
||||
environment:
|
||||
POSTGRES_USER: oc_autotest
|
||||
POSTGRES_DB: oc_autotest_dummy
|
||||
POSTGRES_DB: oc_autotest
|
||||
POSTGRES_PASSWORD: owncloud
|
||||
tmpfs:
|
||||
- /var/lib/postgresql/data
|
||||
@@ -491,7 +491,7 @@ services:
|
||||
image: ghcr.io/nextcloud/continuous-integration-postgres-11:postgres-11
|
||||
environment:
|
||||
POSTGRES_USER: oc_autotest
|
||||
POSTGRES_DB: oc_autotest_dummy
|
||||
POSTGRES_DB: oc_autotest
|
||||
POSTGRES_PASSWORD: owncloud
|
||||
tmpfs:
|
||||
- /var/lib/postgresql/data
|
||||
@@ -527,7 +527,43 @@ services:
|
||||
image: ghcr.io/nextcloud/continuous-integration-postgres-13:postgres-13
|
||||
environment:
|
||||
POSTGRES_USER: oc_autotest
|
||||
POSTGRES_DB: oc_autotest_dummy
|
||||
POSTGRES_DB: oc_autotest
|
||||
POSTGRES_PASSWORD: owncloud
|
||||
tmpfs:
|
||||
- /var/lib/postgresql/data
|
||||
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
- stable*
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: postgres15-php8.0
|
||||
|
||||
steps:
|
||||
- name: submodules
|
||||
image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: postgres-php8.0
|
||||
image: ghcr.io/nextcloud/continuous-integration-php8.0:latest
|
||||
commands:
|
||||
- bash tests/drone-run-php-tests.sh || exit 0
|
||||
- sleep 10 # gives the database enough time to initialize
|
||||
- POSTGRES=15 NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh pgsql
|
||||
|
||||
services:
|
||||
- name: cache
|
||||
image: ghcr.io/nextcloud/continuous-integration-redis:latest
|
||||
- name: postgres-15
|
||||
image: ghcr.io/nextcloud/continuous-integration-postgres-15:latest
|
||||
environment:
|
||||
POSTGRES_USER: oc_autotest
|
||||
POSTGRES_DB: oc_autotest
|
||||
POSTGRES_PASSWORD: owncloud
|
||||
tmpfs:
|
||||
- /var/lib/postgresql/data
|
||||
@@ -1214,7 +1250,7 @@ steps:
|
||||
commands:
|
||||
# JavaScript files are not used in integration tests so it is not needed to
|
||||
# build them.
|
||||
- git clone --depth 1 https://github.com/nextcloud/spreed apps/spreed
|
||||
- git clone --depth 1 --branch stable25 https://github.com/nextcloud/spreed apps/spreed
|
||||
- name: integration-sharing-v1-video-verification
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
|
||||
+1
-1
@@ -16,4 +16,4 @@
|
||||
/lib/public/Profiler @CarlSchwan
|
||||
|
||||
# Security team
|
||||
resources/config/ca-bundle.crt @ChristophWurst @eneiluj @miaulalala @nickvergessen
|
||||
resources/config/ca-bundle.crt @ChristophWurst @julien-nc @miaulalala @nickvergessen
|
||||
|
||||
+29
-22
@@ -1,46 +1,39 @@
|
||||
name: PHPUnit
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: phpunit-oci-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
phpunit-oci8:
|
||||
phpunit-oci:
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: [ '7.4', '8.0', '8.1']
|
||||
databases: [ 'oci' ]
|
||||
|
||||
name: php${{ matrix.php-versions }}-${{ matrix.databases }}
|
||||
|
||||
services:
|
||||
oracle:
|
||||
image: deepdiver/docker-oracle-xe-11g # "wnameless/oracle-xe-11g-r2"
|
||||
image: deepdiver/docker-oracle-xe-11g # 'wnameless/oracle-xe-11g-r2'
|
||||
ports:
|
||||
- "1521:1521"
|
||||
- 1521:1521/tcp
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Checkout submodules
|
||||
shell: bash
|
||||
run: |
|
||||
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
||||
git submodule sync --recursive
|
||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: ctype,curl,dom,fileinfo,gd,imagick,intl,json,mbstring,oci8,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
extensions: ctype, curl, dom, fileinfo, gd, imagick, intl, json, mbstring, oci8, openssl, pdo_sqlite, posix, sqlite, xml, zip
|
||||
tools: phpunit:9
|
||||
coverage: none
|
||||
|
||||
@@ -53,3 +46,17 @@ jobs:
|
||||
- name: PHPUnit
|
||||
working-directory: tests
|
||||
run: phpunit --configuration phpunit-autotest.xml --group DB,SLOWDB
|
||||
|
||||
summary:
|
||||
permissions:
|
||||
contents: none
|
||||
runs-on: ubuntu-latest
|
||||
needs: phpunit-oci
|
||||
|
||||
if: always()
|
||||
|
||||
name: phpunit-oci-summary
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.phpunit-oci.result != 'success' }}; then exit 1; fi
|
||||
|
||||
@@ -8,7 +8,7 @@ on:
|
||||
|
||||
jobs:
|
||||
s3-primary-tests-minio:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
strategy:
|
||||
# do not stop on another job's failure
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
# See https://pre-commit.com for more information
|
||||
# See https://pre-commit.com/hooks.html for more hooks
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v4.3.0
|
||||
hooks:
|
||||
- id: end-of-file-fixer
|
||||
- id: check-yaml
|
||||
- id: check-added-large-files
|
||||
- repo: https://github.com/nextcloud/pre-commit-php.git
|
||||
rev: 1.5.1
|
||||
hooks:
|
||||
- id: php-lint
|
||||
- id: php-cs-fixer
|
||||
files: \.(php)$
|
||||
exclude: ^(config|data|composer)
|
||||
args: []
|
||||
+1
-1
Submodule 3rdparty updated: f143482ffb...72a171171c
@@ -1,7 +1,7 @@
|
||||
OC.L10N.register(
|
||||
"admin_audit",
|
||||
{
|
||||
"Auditing / Logging" : "Audit / journalisation",
|
||||
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Fournit des capacités de journalisation pour Nextcloud telles que l'enregistrement des accès aux fichiers ou d'autres actions sensibles."
|
||||
"Auditing / Logging" : "Vérification / Connexion",
|
||||
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Fournit des capacités de traçage pour NextCloud tels que l'accès au fichier de connexions ou d'autres actions sensibles."
|
||||
},
|
||||
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{ "translations": {
|
||||
"Auditing / Logging" : "Audit / journalisation",
|
||||
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Fournit des capacités de journalisation pour Nextcloud telles que l'enregistrement des accès aux fichiers ou d'autres actions sensibles."
|
||||
"Auditing / Logging" : "Vérification / Connexion",
|
||||
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Fournit des capacités de traçage pour NextCloud tels que l'accès au fichier de connexions ou d'autres actions sensibles."
|
||||
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
OC.L10N.register(
|
||||
"admin_audit",
|
||||
{
|
||||
"Auditing / Logging" : "Ревизија / Евиденција"
|
||||
},
|
||||
"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;");
|
||||
@@ -0,0 +1,4 @@
|
||||
{ "translations": {
|
||||
"Auditing / Logging" : "Ревизија / Евиденција"
|
||||
},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
OC.L10N.register(
|
||||
"cloud_federation_api",
|
||||
{
|
||||
"Cloud Federation API" : "API de la Federació cloud",
|
||||
"Enable clouds to communicate with each other and exchange data" : "Permetre que els núvols es comuniquin entre si i intercanviar dades",
|
||||
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "L'API de la Federació cloud permet que diverses instàncies Nextcloud es comuniquin entre si i intercanviin dades."
|
||||
"Cloud Federation API" : "API de federació de núvols",
|
||||
"Enable clouds to communicate with each other and exchange data" : "Permeteu que els núvols es comuniquin entre si i intercanviïn dades",
|
||||
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "L'API de federació de núvols permet que diverses instàncies del Nextcloud es comuniquin entre si i intercanviïn dades."
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{ "translations": {
|
||||
"Cloud Federation API" : "API de la Federació cloud",
|
||||
"Enable clouds to communicate with each other and exchange data" : "Permetre que els núvols es comuniquin entre si i intercanviar dades",
|
||||
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "L'API de la Federació cloud permet que diverses instàncies Nextcloud es comuniquin entre si i intercanviin dades."
|
||||
"Cloud Federation API" : "API de federació de núvols",
|
||||
"Enable clouds to communicate with each other and exchange data" : "Permeteu que els núvols es comuniquin entre si i intercanviïn dades",
|
||||
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "L'API de federació de núvols permet que diverses instàncies del Nextcloud es comuniquin entre si i intercanviïn dades."
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
OC.L10N.register(
|
||||
"cloud_federation_api",
|
||||
{
|
||||
"Cloud Federation API" : "API pro federování cloudu",
|
||||
"Cloud Federation API" : "API pro federovaný cloud",
|
||||
"Enable clouds to communicate with each other and exchange data" : "Umožňuje cloudům navzájem komunikovat a vyměňovat si data",
|
||||
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "API pro federování cloudů umožňuje různým instancím Nextcloud vzájemně komunikovat a vyměňovat si data."
|
||||
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "API pro federovaný cloud umožňuje různým instancím Nextcloud vzájemně komunikovat a vyměňovat si data."
|
||||
},
|
||||
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{ "translations": {
|
||||
"Cloud Federation API" : "API pro federování cloudu",
|
||||
"Cloud Federation API" : "API pro federovaný cloud",
|
||||
"Enable clouds to communicate with each other and exchange data" : "Umožňuje cloudům navzájem komunikovat a vyměňovat si data",
|
||||
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "API pro federování cloudů umožňuje různým instancím Nextcloud vzájemně komunikovat a vyměňovat si data."
|
||||
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "API pro federovaný cloud umožňuje různým instancím Nextcloud vzájemně komunikovat a vyměňovat si data."
|
||||
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
|
||||
}
|
||||
@@ -10,16 +10,25 @@ OC.L10N.register(
|
||||
"%1$s commented on %2$s" : "%1$s ha comentat a %2$s",
|
||||
"{author} commented on {file}" : "{author} ha comentat a {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comentaris</strong> per fitxers",
|
||||
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Se t'ha esmentat a \"{file}\" en un comentari d'un usuari que s'ha suprimit des de llavors",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "{user} t'ha mencionat en un comentari a \"{file}\"",
|
||||
"Files app plugin to add comments to files" : "Connexió de l’aplicació de fitxers per afegir comentaris als fitxers",
|
||||
"Edit comment" : "Edita comentari",
|
||||
"Edit comment" : "Edició comentari",
|
||||
"Delete comment" : "Suprimeix comentari",
|
||||
"Cancel edit" : "Cancel·la l'edició",
|
||||
"Post comment" : "Enviar comentari",
|
||||
"No comments yet, start the conversation!" : "Encara no hi ha comentaris. Enceteu la conversa!",
|
||||
"Retry" : "Torna a intentar",
|
||||
"No more messages" : "No hi ha més missatges",
|
||||
"Retry" : "Reintent",
|
||||
"Unable to load the comments list" : "No es pot carregar la llista de comentaris",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentari no llegit","%n comentaris no llegits"],
|
||||
"_1 new comment_::_{unread} new comments_" : ["1 comentari nou","{unread} comentaris nous"],
|
||||
"Comment" : "Comentari",
|
||||
"An error occurred while trying to edit the comment" : "S'ha produït un error en intentar editar el comentari",
|
||||
"Comment deleted" : "Comentari suprimit",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Heu estat esmentats a \"{file}\" en un comentari d'un usuari que ja no existeix",
|
||||
"An error occurred while trying to delete the comment" : "S'ha produït un error en intentar suprimir el comentari",
|
||||
"An error occurred while trying to create the comment" : "S'ha produït un error en intentar crear el comentari",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Heu estat esmentats a \"{file}\" en un comentari d'un usuari que ja s'ha suprimit",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} us ha esmentat en un comentari de “{file}”"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
@@ -8,16 +8,25 @@
|
||||
"%1$s commented on %2$s" : "%1$s ha comentat a %2$s",
|
||||
"{author} commented on {file}" : "{author} ha comentat a {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comentaris</strong> per fitxers",
|
||||
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Se t'ha esmentat a \"{file}\" en un comentari d'un usuari que s'ha suprimit des de llavors",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "{user} t'ha mencionat en un comentari a \"{file}\"",
|
||||
"Files app plugin to add comments to files" : "Connexió de l’aplicació de fitxers per afegir comentaris als fitxers",
|
||||
"Edit comment" : "Edita comentari",
|
||||
"Edit comment" : "Edició comentari",
|
||||
"Delete comment" : "Suprimeix comentari",
|
||||
"Cancel edit" : "Cancel·la l'edició",
|
||||
"Post comment" : "Enviar comentari",
|
||||
"No comments yet, start the conversation!" : "Encara no hi ha comentaris. Enceteu la conversa!",
|
||||
"Retry" : "Torna a intentar",
|
||||
"No more messages" : "No hi ha més missatges",
|
||||
"Retry" : "Reintent",
|
||||
"Unable to load the comments list" : "No es pot carregar la llista de comentaris",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentari no llegit","%n comentaris no llegits"],
|
||||
"_1 new comment_::_{unread} new comments_" : ["1 comentari nou","{unread} comentaris nous"],
|
||||
"Comment" : "Comentari",
|
||||
"An error occurred while trying to edit the comment" : "S'ha produït un error en intentar editar el comentari",
|
||||
"Comment deleted" : "Comentari suprimit",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Heu estat esmentats a \"{file}\" en un comentari d'un usuari que ja no existeix",
|
||||
"An error occurred while trying to delete the comment" : "S'ha produït un error en intentar suprimir el comentari",
|
||||
"An error occurred while trying to create the comment" : "S'ha produït un error en intentar crear el comentari",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Heu estat esmentats a \"{file}\" en un comentari d'un usuari que ja s'ha suprimit",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} us ha esmentat en un comentari de “{file}”"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -3,14 +3,14 @@ OC.L10N.register(
|
||||
{
|
||||
"Comments" : "Komentáře",
|
||||
"You commented" : "Okomentovali jste",
|
||||
"%1$s commented" : "%1$s okomentován",
|
||||
"%1$s commented" : "%1$s okomentováno",
|
||||
"{author} commented" : "{author} okomentoval(a)",
|
||||
"You commented on %1$s" : "Okomentovali jste %1$s",
|
||||
"You commented on {file}" : "Okomentovali jste {file}",
|
||||
"%1$s commented on %2$s" : "%1$s okomentoval(a) %2$s",
|
||||
"{author} commented on {file}" : "{author} okomentoval(a) {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Komentáře</strong> k souborům",
|
||||
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Byli jste zmíněni v souboru „{file}“, v komentáři od uživatele, který byl později smazán",
|
||||
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od uživatele, který byl později smazán",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "{user} vás zmínil(a) v komentáři u „{file}“",
|
||||
"Files app plugin to add comments to files" : "Zásuvný modul do aplikace Soubory pro přidávání komentářů k souborům",
|
||||
"Edit comment" : "Upravit komentář",
|
||||
@@ -28,7 +28,7 @@ OC.L10N.register(
|
||||
"Comment deleted" : "Komentář smazán",
|
||||
"An error occurred while trying to delete the comment" : "Došlo k chybě při pokusu o smazání komentáře",
|
||||
"An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Byli jste zmíněni v souboru „{file}“, v komentáři od uživatele, který byl později smazán",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od uživatele, který byl později smazán",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} vás zmínil(a) v komentáři u „{file}“"
|
||||
},
|
||||
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
{ "translations": {
|
||||
"Comments" : "Komentáře",
|
||||
"You commented" : "Okomentovali jste",
|
||||
"%1$s commented" : "%1$s okomentován",
|
||||
"%1$s commented" : "%1$s okomentováno",
|
||||
"{author} commented" : "{author} okomentoval(a)",
|
||||
"You commented on %1$s" : "Okomentovali jste %1$s",
|
||||
"You commented on {file}" : "Okomentovali jste {file}",
|
||||
"%1$s commented on %2$s" : "%1$s okomentoval(a) %2$s",
|
||||
"{author} commented on {file}" : "{author} okomentoval(a) {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Komentáře</strong> k souborům",
|
||||
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Byli jste zmíněni v souboru „{file}“, v komentáři od uživatele, který byl později smazán",
|
||||
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od uživatele, který byl později smazán",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "{user} vás zmínil(a) v komentáři u „{file}“",
|
||||
"Files app plugin to add comments to files" : "Zásuvný modul do aplikace Soubory pro přidávání komentářů k souborům",
|
||||
"Edit comment" : "Upravit komentář",
|
||||
@@ -26,7 +26,7 @@
|
||||
"Comment deleted" : "Komentář smazán",
|
||||
"An error occurred while trying to delete the comment" : "Došlo k chybě při pokusu o smazání komentáře",
|
||||
"An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Byli jste zmíněni v souboru „{file}“, v komentáři od uživatele, který byl později smazán",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od uživatele, který byl později smazán",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} vás zmínil(a) v komentáři u „{file}“"
|
||||
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
|
||||
}
|
||||
@@ -10,14 +10,24 @@ OC.L10N.register(
|
||||
"%1$s commented on %2$s" : "%1$s commented on %2$s",
|
||||
"{author} commented on {file}" : "{author} commented on {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comments</strong> for files",
|
||||
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "You were mentioned on \"{file}\", in a comment by a user that has since been deleted",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "{user} mentioned you in a comment on \"{file}\"",
|
||||
"Files app plugin to add comments to files" : "Files app plugin to add comments to files",
|
||||
"Edit comment" : "Edit comment",
|
||||
"Delete comment" : "Delete comment",
|
||||
"Cancel edit" : "Cancel edit",
|
||||
"Post comment" : "Post comment",
|
||||
"No comments yet, start the conversation!" : "No comments yet, start the conversation!",
|
||||
"No more messages" : "No more messages",
|
||||
"Retry" : "Retry",
|
||||
"Unable to load the comments list" : "Unable to load the comments list",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n unread comment","%n unread comments"],
|
||||
"_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread} new comments"],
|
||||
"Comment" : "Comment",
|
||||
"An error occurred while trying to edit the comment" : "An error occurred while trying to edit the comment",
|
||||
"Comment deleted" : "Comment deleted",
|
||||
"An error occurred while trying to delete the comment" : "An error occurred while trying to delete the comment",
|
||||
"An error occurred while trying to create the comment" : "An error occurred while trying to create the comment",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "You were mentioned on “{file}”, in a comment by a user that has since been deleted",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} mentioned you in a comment on “{file}”"
|
||||
},
|
||||
|
||||
@@ -8,14 +8,24 @@
|
||||
"%1$s commented on %2$s" : "%1$s commented on %2$s",
|
||||
"{author} commented on {file}" : "{author} commented on {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comments</strong> for files",
|
||||
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "You were mentioned on \"{file}\", in a comment by a user that has since been deleted",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "{user} mentioned you in a comment on \"{file}\"",
|
||||
"Files app plugin to add comments to files" : "Files app plugin to add comments to files",
|
||||
"Edit comment" : "Edit comment",
|
||||
"Delete comment" : "Delete comment",
|
||||
"Cancel edit" : "Cancel edit",
|
||||
"Post comment" : "Post comment",
|
||||
"No comments yet, start the conversation!" : "No comments yet, start the conversation!",
|
||||
"No more messages" : "No more messages",
|
||||
"Retry" : "Retry",
|
||||
"Unable to load the comments list" : "Unable to load the comments list",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n unread comment","%n unread comments"],
|
||||
"_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread} new comments"],
|
||||
"Comment" : "Comment",
|
||||
"An error occurred while trying to edit the comment" : "An error occurred while trying to edit the comment",
|
||||
"Comment deleted" : "Comment deleted",
|
||||
"An error occurred while trying to delete the comment" : "An error occurred while trying to delete the comment",
|
||||
"An error occurred while trying to create the comment" : "An error occurred while trying to create the comment",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "You were mentioned on “{file}”, in a comment by a user that has since been deleted",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} mentioned you in a comment on “{file}”"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
|
||||
@@ -10,6 +10,8 @@ OC.L10N.register(
|
||||
"%1$s commented on %2$s" : "התקבלו תגובות %1$s ב- %2$s ",
|
||||
"{author} commented on {file}" : "נוספה תגובה על {file} מאת {author}",
|
||||
"<strong>Comments</strong> for files" : "<strong>תגובות</strong> על קבצים",
|
||||
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "אוזכרת בקובץ „{file}”, בהערה על ידי משתמש שנמחק מאז",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "אוזכרת על ידי {user} בהערה בתוך „{file}”",
|
||||
"Files app plugin to add comments to files" : "תוסף ליישומון הקבצים כדי להוסיף הערות על קבצים",
|
||||
"Edit comment" : "עריכת תגובה",
|
||||
"Delete comment" : "מחיקת תגובה",
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
"%1$s commented on %2$s" : "התקבלו תגובות %1$s ב- %2$s ",
|
||||
"{author} commented on {file}" : "נוספה תגובה על {file} מאת {author}",
|
||||
"<strong>Comments</strong> for files" : "<strong>תגובות</strong> על קבצים",
|
||||
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "אוזכרת בקובץ „{file}”, בהערה על ידי משתמש שנמחק מאז",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "אוזכרת על ידי {user} בהערה בתוך „{file}”",
|
||||
"Files app plugin to add comments to files" : "תוסף ליישומון הקבצים כדי להוסיף הערות על קבצים",
|
||||
"Edit comment" : "עריכת תגובה",
|
||||
"Delete comment" : "מחיקת תגובה",
|
||||
|
||||
@@ -11,6 +11,7 @@ OC.L10N.register(
|
||||
"{author} commented on {file}" : "{author} reageerde op {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Reacties</strong> voor bestanden",
|
||||
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Je werd vermeld op \"{file}\" in een reactie door een sindsdien verwijderde gebruiker",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "{user} noemde jou in een reactie op \"{file}\"",
|
||||
"Files app plugin to add comments to files" : "Bestanden app plugin om reacties aan bestanden toe te voegen",
|
||||
"Edit comment" : "Bewerk reactie",
|
||||
"Delete comment" : "Verwijder reactie",
|
||||
@@ -27,7 +28,7 @@ OC.L10N.register(
|
||||
"Comment deleted" : "Reactie verwijderd",
|
||||
"An error occurred while trying to delete the comment" : "Er trad een fout op bij het verwijderen van de reactie",
|
||||
"An error occurred while trying to create the comment" : "Er trad een fout op bij het creëren van de reactie",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Je werd vermeld op \"{file}\" in een reactie door een sindsdien verwijderde gebruiker",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Je werd vermeld in een reactie op \"{file}\" door een sindsdien verwijderde gebruiker",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} heeft je vermeld in een reactie op “{file}\""
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
"{author} commented on {file}" : "{author} reageerde op {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Reacties</strong> voor bestanden",
|
||||
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Je werd vermeld op \"{file}\" in een reactie door een sindsdien verwijderde gebruiker",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "{user} noemde jou in een reactie op \"{file}\"",
|
||||
"Files app plugin to add comments to files" : "Bestanden app plugin om reacties aan bestanden toe te voegen",
|
||||
"Edit comment" : "Bewerk reactie",
|
||||
"Delete comment" : "Verwijder reactie",
|
||||
@@ -25,7 +26,7 @@
|
||||
"Comment deleted" : "Reactie verwijderd",
|
||||
"An error occurred while trying to delete the comment" : "Er trad een fout op bij het verwijderen van de reactie",
|
||||
"An error occurred while trying to create the comment" : "Er trad een fout op bij het creëren van de reactie",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Je werd vermeld op \"{file}\" in een reactie door een sindsdien verwijderde gebruiker",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Je werd vermeld in een reactie op \"{file}\" door een sindsdien verwijderde gebruiker",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} heeft je vermeld in een reactie op “{file}\""
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -10,15 +10,24 @@ OC.L10N.register(
|
||||
"%1$s commented on %2$s" : "%1$s прокоментовано у %2$s",
|
||||
"{author} commented on {file}" : "{author} прокоментував {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Коментів</strong> для файлів",
|
||||
"Files app plugin to add comments to files" : "Додаток до застосунку Файли (Files) для коментування файлів",
|
||||
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Вас згадали в \"{file}\" у коментарі користувача, який згодом було видалено",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "{user} згадав вас у коментарі до \"{file}\"",
|
||||
"Files app plugin to add comments to files" : "Плаґін до застосунку и\"Файли\" для додавання коментарів до файлів",
|
||||
"Edit comment" : "Редагувати коментар",
|
||||
"Delete comment" : "Вилучити коментар",
|
||||
"No comments yet, start the conversation!" : "Коментарі відсутні, почніть бесіду!",
|
||||
"Cancel edit" : "Скасувати редагування",
|
||||
"Post comment" : "Опублікувати коментар",
|
||||
"No comments yet, start the conversation!" : "Тут можна додати коментарі",
|
||||
"No more messages" : "Більше жодних повідомлень",
|
||||
"Retry" : "Ще раз",
|
||||
"Unable to load the comments list" : "Не вдалося завантажити список коментарів",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n непрочитаний коментар","%n непрочитаних коментарів","%n непрочитаних коментарів","%n непрочитаних коментарів"],
|
||||
"_1 new comment_::_{unread} new comments_" : ["{unread} новий коментар","{unread} нових коментарів","{unread} нових коментарів","{unread} нових коментарів"],
|
||||
"Comment" : "Коментар",
|
||||
"An error occurred while trying to edit the comment" : "Під час редагування коментаря сталася помилка",
|
||||
"Comment deleted" : "Коментар вилучено",
|
||||
"An error occurred while trying to delete the comment" : "Під час спроби видалити коментар сталася помилка",
|
||||
"An error occurred while trying to create the comment" : "Під час створення коментаря сталася помилка",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Вас було згадано у “{file}” у коментарі користувача, якого було пізніше вилучено",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} згадав Вас у коментарі про “{file}”"
|
||||
},
|
||||
|
||||
@@ -8,15 +8,24 @@
|
||||
"%1$s commented on %2$s" : "%1$s прокоментовано у %2$s",
|
||||
"{author} commented on {file}" : "{author} прокоментував {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Коментів</strong> для файлів",
|
||||
"Files app plugin to add comments to files" : "Додаток до застосунку Файли (Files) для коментування файлів",
|
||||
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Вас згадали в \"{file}\" у коментарі користувача, який згодом було видалено",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "{user} згадав вас у коментарі до \"{file}\"",
|
||||
"Files app plugin to add comments to files" : "Плаґін до застосунку и\"Файли\" для додавання коментарів до файлів",
|
||||
"Edit comment" : "Редагувати коментар",
|
||||
"Delete comment" : "Вилучити коментар",
|
||||
"No comments yet, start the conversation!" : "Коментарі відсутні, почніть бесіду!",
|
||||
"Cancel edit" : "Скасувати редагування",
|
||||
"Post comment" : "Опублікувати коментар",
|
||||
"No comments yet, start the conversation!" : "Тут можна додати коментарі",
|
||||
"No more messages" : "Більше жодних повідомлень",
|
||||
"Retry" : "Ще раз",
|
||||
"Unable to load the comments list" : "Не вдалося завантажити список коментарів",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n непрочитаний коментар","%n непрочитаних коментарів","%n непрочитаних коментарів","%n непрочитаних коментарів"],
|
||||
"_1 new comment_::_{unread} new comments_" : ["{unread} новий коментар","{unread} нових коментарів","{unread} нових коментарів","{unread} нових коментарів"],
|
||||
"Comment" : "Коментар",
|
||||
"An error occurred while trying to edit the comment" : "Під час редагування коментаря сталася помилка",
|
||||
"Comment deleted" : "Коментар вилучено",
|
||||
"An error occurred while trying to delete the comment" : "Під час спроби видалити коментар сталася помилка",
|
||||
"An error occurred while trying to create the comment" : "Під час створення коментаря сталася помилка",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Вас було згадано у “{file}” у коментарі користувача, якого було пізніше вилучено",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} згадав Вас у коментарі про “{file}”"
|
||||
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"
|
||||
|
||||
@@ -69,6 +69,7 @@
|
||||
:auto-complete="autoComplete"
|
||||
:contenteditable="!loading"
|
||||
:value="localMessage"
|
||||
:user-data="userData"
|
||||
@update:value="updateLocalMessage"
|
||||
@submit="onSubmit" />
|
||||
<NcButton class="comment__submit"
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
import { parseXML, prepareFileFromProps } from 'webdav/dist/node/tools/dav'
|
||||
import { processResponsePayload } from 'webdav/dist/node/response'
|
||||
import { decodeHtmlEntities } from '../utils/decodeHtmlEntities'
|
||||
import client from './DavClient'
|
||||
|
||||
export const DEFAULT_LIMIT = 20
|
||||
@@ -89,16 +90,3 @@ function processMultistatus(result, isDetailed = false) {
|
||||
return prepareFileFromProps(decodedProps, decodedProps.id.toString(), isDetailed)
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {any} value -
|
||||
* @param {any} passes -
|
||||
*/
|
||||
function decodeHtmlEntities(value, passes = 1) {
|
||||
const parser = new DOMParser()
|
||||
let decoded = value
|
||||
for (let i = 0; i < passes; i++) {
|
||||
decoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent
|
||||
}
|
||||
return decoded
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
import { getCurrentUser } from '@nextcloud/auth'
|
||||
import { getRootPath } from '../utils/davUtils'
|
||||
import { decodeHtmlEntities } from '../utils/decodeHtmlEntities'
|
||||
import axios from '@nextcloud/axios'
|
||||
import client from './DavClient'
|
||||
|
||||
@@ -55,5 +56,12 @@ export default async function(commentsType, ressourceId, message) {
|
||||
details: true,
|
||||
})
|
||||
|
||||
const props = comment.data.props
|
||||
// Decode twice to handle potentially double-encoded entities
|
||||
// FIXME Remove this once https://github.com/nextcloud/server/issues/29306
|
||||
// is resolved
|
||||
props.actorDisplayName = decodeHtmlEntities(props.actorDisplayName, 2)
|
||||
props.message = decodeHtmlEntities(props.message, 2)
|
||||
|
||||
return comment.data
|
||||
}
|
||||
|
||||
+14
-5
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>
|
||||
* @copyright Copyright (c) 2021 Christopher Ng <chrng8@gmail.com>
|
||||
*
|
||||
* @author Julius Härtl <jus@bitgrid.net>
|
||||
* @author Christopher Ng <chrng8@gmail.com>
|
||||
*
|
||||
* @license AGPL-3.0-or-later
|
||||
*
|
||||
@@ -20,6 +20,15 @@
|
||||
*
|
||||
*/
|
||||
|
||||
import { generateFilePath } from '@nextcloud/router'
|
||||
|
||||
export const prefixWithBaseUrl = (url) => generateFilePath('theming', '', 'img/background/') + url
|
||||
/**
|
||||
* @param {any} value -
|
||||
* @param {any} passes -
|
||||
*/
|
||||
export function decodeHtmlEntities(value, passes = 1) {
|
||||
const parser = new DOMParser()
|
||||
let decoded = value
|
||||
for (let i = 0; i < passes; i++) {
|
||||
decoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent
|
||||
}
|
||||
return decoded
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
- @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
-
|
||||
- @author John Molakvoæ <skjnldsv@protonmail.com>
|
||||
- @author Richard Steinmetz <richard@steinmetz.cloud>
|
||||
-
|
||||
- @license GNU AGPL version 3 or any later version
|
||||
-
|
||||
@@ -25,14 +26,19 @@
|
||||
<!-- Editor -->
|
||||
<Comment v-bind="editorData"
|
||||
:auto-complete="autoComplete"
|
||||
:user-data="userData"
|
||||
:editor="true"
|
||||
:ressource-id="ressourceId"
|
||||
class="comments__writer"
|
||||
@new="onNewComment" />
|
||||
|
||||
<template v-if="!isFirstLoading">
|
||||
<NcEmptyContent v-if="!hasComments && done" icon="icon-comment">
|
||||
{{ t('comments', 'No comments yet, start the conversation!') }}
|
||||
<NcEmptyContent v-if="!hasComments && done"
|
||||
class="comments__empty"
|
||||
:title="t('comments', 'No comments yet, start the conversation!')">
|
||||
<template #icon>
|
||||
<MessageReplyTextIcon />
|
||||
</template>
|
||||
</NcEmptyContent>
|
||||
|
||||
<!-- Comments -->
|
||||
@@ -55,14 +61,19 @@
|
||||
</div>
|
||||
|
||||
<!-- Error message -->
|
||||
<NcEmptyContent v-else-if="error" class="comments__error" icon="icon-error">
|
||||
{{ error }}
|
||||
<template #desc>
|
||||
<button icon="icon-history" @click="getComments">
|
||||
{{ t('comments', 'Retry') }}
|
||||
</button>
|
||||
</template>
|
||||
</NcEmptyContent>
|
||||
<template v-else-if="error">
|
||||
<NcEmptyContent class="comments__error" :title="error">
|
||||
<template #icon>
|
||||
<AlertCircleOutlineIcon />
|
||||
</template>
|
||||
</NcEmptyContent>
|
||||
<NcButton class="comments__retry" @click="getComments">
|
||||
<template #icon>
|
||||
<RefreshIcon />
|
||||
</template>
|
||||
{{ t('comments', 'Retry') }}
|
||||
</NcButton>
|
||||
</template>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
@@ -76,10 +87,14 @@ import VTooltip from 'v-tooltip'
|
||||
import Vue from 'vue'
|
||||
|
||||
import NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent'
|
||||
import NcButton from '@nextcloud/vue/dist/Components/NcButton'
|
||||
import RefreshIcon from 'vue-material-design-icons/Refresh'
|
||||
import MessageReplyTextIcon from 'vue-material-design-icons/MessageReplyText'
|
||||
import AlertCircleOutlineIcon from 'vue-material-design-icons/AlertCircleOutline'
|
||||
|
||||
import Comment from '../components/Comment'
|
||||
import getComments, { DEFAULT_LIMIT } from '../services/GetComments'
|
||||
import cancelableRequest from '../utils/cancelableRequest'
|
||||
import Comment from '../components/Comment.vue'
|
||||
import getComments, { DEFAULT_LIMIT } from '../services/GetComments.js'
|
||||
import cancelableRequest from '../utils/cancelableRequest.js'
|
||||
|
||||
Vue.use(VTooltip)
|
||||
|
||||
@@ -90,6 +105,10 @@ export default {
|
||||
// Avatar,
|
||||
Comment,
|
||||
NcEmptyContent,
|
||||
NcButton,
|
||||
RefreshIcon,
|
||||
MessageReplyTextIcon,
|
||||
AlertCircleOutlineIcon,
|
||||
},
|
||||
|
||||
data() {
|
||||
@@ -111,6 +130,7 @@ export default {
|
||||
},
|
||||
|
||||
Comment,
|
||||
userData: {},
|
||||
}
|
||||
},
|
||||
|
||||
@@ -155,21 +175,22 @@ export default {
|
||||
* Make sure we have all mentions as Array of objects
|
||||
*
|
||||
* @param {Array} mentions the mentions list
|
||||
* @return {object[]}
|
||||
* @return {Object<string, object>}
|
||||
*/
|
||||
genMentionsData(mentions) {
|
||||
const list = Object.values(mentions).flat()
|
||||
return list.reduce((mentions, mention) => {
|
||||
mentions[mention.mentionId] = {
|
||||
// TODO: support groups
|
||||
icon: 'icon-user',
|
||||
id: mention.mentionId,
|
||||
label: mention.mentionDisplayName,
|
||||
source: 'users',
|
||||
primary: getCurrentUser().uid === mention.mentionId,
|
||||
}
|
||||
return mentions
|
||||
}, {})
|
||||
Object.values(mentions)
|
||||
.flat()
|
||||
.forEach(mention => {
|
||||
this.userData[mention.mentionId] = {
|
||||
// TODO: support groups
|
||||
icon: 'icon-user',
|
||||
id: mention.mentionId,
|
||||
label: mention.mentionDisplayName,
|
||||
source: 'users',
|
||||
primary: getCurrentUser().uid === mention.mentionId,
|
||||
}
|
||||
})
|
||||
return this.userData
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -233,7 +254,9 @@ export default {
|
||||
limit: loadState('comments', 'maxAutoCompleteResults'),
|
||||
},
|
||||
})
|
||||
return callback(results.data.ocs.data)
|
||||
// Save user data so it can be used by the editor to replace mentions
|
||||
results.data.ocs.data.forEach(user => { this.userData[user.id] = user })
|
||||
return callback(Object.values(this.userData))
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -276,8 +299,13 @@ export default {
|
||||
<style lang="scss" scoped>
|
||||
.comments {
|
||||
// Do not add emptycontent top margin
|
||||
&__error{
|
||||
margin-top: 0;
|
||||
&__empty,
|
||||
&__error {
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
&__retry {
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
&__info {
|
||||
|
||||
@@ -2,8 +2,8 @@ OC.L10N.register(
|
||||
"contactsinteraction",
|
||||
{
|
||||
"Recently contacted" : "Nedávno kontaktovaní",
|
||||
"Contacts Interaction" : "Napojení na kontakty",
|
||||
"Contacts Interaction" : "Napojení na Kontakty",
|
||||
"Manages interaction between users and contacts" : "Spravuje interakci mezi uživateli a kontakty",
|
||||
"Collect data about user and contacts interactions and provide an address book for the data" : "Shromáždit údaje o uživateli a interakci s kontakty a poskytnout adresář kontaktů pro data"
|
||||
"Collect data about user and contacts interactions and provide an address book for the data" : "Shromažďuje data o interakcích mezi uživatelem a kontakty a poskytuje pro tato data adresář kontaktů"
|
||||
},
|
||||
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{ "translations": {
|
||||
"Recently contacted" : "Nedávno kontaktovaní",
|
||||
"Contacts Interaction" : "Napojení na kontakty",
|
||||
"Contacts Interaction" : "Napojení na Kontakty",
|
||||
"Manages interaction between users and contacts" : "Spravuje interakci mezi uživateli a kontakty",
|
||||
"Collect data about user and contacts interactions and provide an address book for the data" : "Shromáždit údaje o uživateli a interakci s kontakty a poskytnout adresář kontaktů pro data"
|
||||
"Collect data about user and contacts interactions and provide an address book for the data" : "Shromažďuje data o interakcích mezi uživatelem a kontakty a poskytuje pro tato data adresář kontaktů"
|
||||
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
OC.L10N.register(
|
||||
"contactsinteraction",
|
||||
{
|
||||
"Recently contacted" : "Nylig kontaktet",
|
||||
"Contacts Interaction" : "Interaksjon med kontakter",
|
||||
"Manages interaction between users and contacts" : "Administrerer interaksjon mellom brukere og kontakter",
|
||||
"Collect data about user and contacts interactions and provide an address book for the data" : "Samle inn data om bruker- og kontaktinteraksjoner og oppgi en adressebok for dataene"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -0,0 +1,7 @@
|
||||
{ "translations": {
|
||||
"Recently contacted" : "Nylig kontaktet",
|
||||
"Contacts Interaction" : "Interaksjon med kontakter",
|
||||
"Manages interaction between users and contacts" : "Administrerer interaksjon mellom brukere og kontakter",
|
||||
"Collect data about user and contacts interactions and provide an address book for the data" : "Samle inn data om bruker- og kontaktinteraksjoner og oppgi en adressebok for dataene"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -8,7 +8,7 @@ OC.L10N.register(
|
||||
"Edit widgets" : "Edita els ginys",
|
||||
"Get more widgets from the App Store" : "Aconseguiu més widgets de la botiga d'aplicacions",
|
||||
"Weather service" : "Servei meteorològic",
|
||||
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Per a la seva privacitat, les dades meteorològiques les sol·licita el seu servidor Nextcloud en el seu lloc perquè el servei meteorològic no rebi cap informació personal.",
|
||||
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Per a la seva privadesa, les dades meteorològiques les sol·licita el seu servidor Nextcloud en el seu lloc perquè el servei meteorològic no rebi cap informació personal.",
|
||||
"Weather data from Met.no" : "Dades meteorològiques de Met.no",
|
||||
"geocoding with Nominatim" : "codis geogràfics amb Nominatim",
|
||||
"elevation data from OpenTopoData" : "dades d'altitud d'OpenTopoData",
|
||||
@@ -16,7 +16,7 @@ OC.L10N.register(
|
||||
"Status" : "Estat",
|
||||
"Good morning" : "Bon dia",
|
||||
"Good morning, {name}" : "Bon dia, {name}",
|
||||
"Good afternoon" : "Salutació",
|
||||
"Good afternoon" : "Bona tarda",
|
||||
"Good afternoon, {name}" : "Bona tarda, {name}",
|
||||
"Good evening" : "Bona tarda",
|
||||
"Good evening, {name}" : "Bona nit, {name}",
|
||||
@@ -25,7 +25,7 @@ OC.L10N.register(
|
||||
"Show something" : "Mostra alguna cosa",
|
||||
"Change background image" : "Canvia la imatge de fons",
|
||||
"Pick from Files" : "Trieu dels fitxers",
|
||||
"Default images" : "Imatges predeterminades",
|
||||
"Default images" : "Imatges per defecte",
|
||||
"Plain background" : "Fons senzill",
|
||||
"Insert from {productName}" : "Insereix des de {productName}"
|
||||
},
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"Edit widgets" : "Edita els ginys",
|
||||
"Get more widgets from the App Store" : "Aconseguiu més widgets de la botiga d'aplicacions",
|
||||
"Weather service" : "Servei meteorològic",
|
||||
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Per a la seva privacitat, les dades meteorològiques les sol·licita el seu servidor Nextcloud en el seu lloc perquè el servei meteorològic no rebi cap informació personal.",
|
||||
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Per a la seva privadesa, les dades meteorològiques les sol·licita el seu servidor Nextcloud en el seu lloc perquè el servei meteorològic no rebi cap informació personal.",
|
||||
"Weather data from Met.no" : "Dades meteorològiques de Met.no",
|
||||
"geocoding with Nominatim" : "codis geogràfics amb Nominatim",
|
||||
"elevation data from OpenTopoData" : "dades d'altitud d'OpenTopoData",
|
||||
@@ -14,7 +14,7 @@
|
||||
"Status" : "Estat",
|
||||
"Good morning" : "Bon dia",
|
||||
"Good morning, {name}" : "Bon dia, {name}",
|
||||
"Good afternoon" : "Salutació",
|
||||
"Good afternoon" : "Bona tarda",
|
||||
"Good afternoon, {name}" : "Bona tarda, {name}",
|
||||
"Good evening" : "Bona tarda",
|
||||
"Good evening, {name}" : "Bona nit, {name}",
|
||||
@@ -23,7 +23,7 @@
|
||||
"Show something" : "Mostra alguna cosa",
|
||||
"Change background image" : "Canvia la imatge de fons",
|
||||
"Pick from Files" : "Trieu dels fitxers",
|
||||
"Default images" : "Imatges predeterminades",
|
||||
"Default images" : "Imatges per defecte",
|
||||
"Plain background" : "Fons senzill",
|
||||
"Insert from {productName}" : "Insereix des de {productName}"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
OC.L10N.register(
|
||||
"dashboard",
|
||||
{
|
||||
"Dashboard" : "Dashboard",
|
||||
"Dashboard app" : "Dashboard app",
|
||||
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking.",
|
||||
"Customize" : "Customise",
|
||||
"Edit widgets" : "Edit widgets",
|
||||
"Get more widgets from the App Store" : "Get more widgets from the App Store",
|
||||
"Weather service" : "Weather service",
|
||||
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.",
|
||||
"Weather data from Met.no" : "Weather data from Met.no",
|
||||
"geocoding with Nominatim" : "geocoding with Nominatim",
|
||||
"elevation data from OpenTopoData" : "elevation data from OpenTopoData",
|
||||
"Weather" : "Weather",
|
||||
"Status" : "Status",
|
||||
"Good morning" : "Good morning",
|
||||
"Good morning, {name}" : "Good morning, {name}",
|
||||
"Good afternoon" : "Good afternoon",
|
||||
"Good afternoon, {name}" : "Good afternoon, {name}",
|
||||
"Good evening" : "Good evening",
|
||||
"Good evening, {name}" : "Good evening, {name}",
|
||||
"Hello" : "Hello",
|
||||
"Hello, {name}" : "Hello, {name}",
|
||||
"Show something" : "Show something",
|
||||
"Change background image" : "Change background image",
|
||||
"Pick from Files" : "Pick from Files",
|
||||
"Default images" : "Default images",
|
||||
"Plain background" : "Plain background",
|
||||
"Insert from {productName}" : "Insert from {productName}"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -0,0 +1,30 @@
|
||||
{ "translations": {
|
||||
"Dashboard" : "Dashboard",
|
||||
"Dashboard app" : "Dashboard app",
|
||||
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking.",
|
||||
"Customize" : "Customise",
|
||||
"Edit widgets" : "Edit widgets",
|
||||
"Get more widgets from the App Store" : "Get more widgets from the App Store",
|
||||
"Weather service" : "Weather service",
|
||||
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.",
|
||||
"Weather data from Met.no" : "Weather data from Met.no",
|
||||
"geocoding with Nominatim" : "geocoding with Nominatim",
|
||||
"elevation data from OpenTopoData" : "elevation data from OpenTopoData",
|
||||
"Weather" : "Weather",
|
||||
"Status" : "Status",
|
||||
"Good morning" : "Good morning",
|
||||
"Good morning, {name}" : "Good morning, {name}",
|
||||
"Good afternoon" : "Good afternoon",
|
||||
"Good afternoon, {name}" : "Good afternoon, {name}",
|
||||
"Good evening" : "Good evening",
|
||||
"Good evening, {name}" : "Good evening, {name}",
|
||||
"Hello" : "Hello",
|
||||
"Hello, {name}" : "Hello, {name}",
|
||||
"Show something" : "Show something",
|
||||
"Change background image" : "Change background image",
|
||||
"Pick from Files" : "Pick from Files",
|
||||
"Default images" : "Default images",
|
||||
"Plain background" : "Plain background",
|
||||
"Insert from {productName}" : "Insert from {productName}"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -3,6 +3,7 @@ OC.L10N.register(
|
||||
{
|
||||
"Dashboard" : "Tableau de bord",
|
||||
"Dashboard app" : "App Tableau de bord",
|
||||
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Commencez votre journée en étant informé\n\nLe tableau de bord Nextcloud est votre point de départ de la journée, vous donnant un\naperçu de vos rendez-vous à venir, des e-mails urgents, des messages de tchat,\ndes tickets entrants, des derniers tweets et bien plus encore ! Les utilisateurs peuvent ajouter les widgets\nqu'ils souhaitent et modifier l'arrière-plan à leur guise.",
|
||||
"Customize" : "Personnaliser",
|
||||
"Edit widgets" : "Modifier les widgets",
|
||||
"Get more widgets from the App Store" : "Obtenez plus de widgets depuis la Boutique d'applications",
|
||||
@@ -24,7 +25,7 @@ OC.L10N.register(
|
||||
"Show something" : "Afficher quelque chose",
|
||||
"Change background image" : "Changer l’image d'arrière-plan",
|
||||
"Pick from Files" : "Mes images",
|
||||
"Default images" : "Images par défaut",
|
||||
"Default images" : "Image par défaut",
|
||||
"Plain background" : "Arrière-plan uni",
|
||||
"Insert from {productName}" : "Sélectionnez une image de {productName}"
|
||||
},
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{ "translations": {
|
||||
"Dashboard" : "Tableau de bord",
|
||||
"Dashboard app" : "App Tableau de bord",
|
||||
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Commencez votre journée en étant informé\n\nLe tableau de bord Nextcloud est votre point de départ de la journée, vous donnant un\naperçu de vos rendez-vous à venir, des e-mails urgents, des messages de tchat,\ndes tickets entrants, des derniers tweets et bien plus encore ! Les utilisateurs peuvent ajouter les widgets\nqu'ils souhaitent et modifier l'arrière-plan à leur guise.",
|
||||
"Customize" : "Personnaliser",
|
||||
"Edit widgets" : "Modifier les widgets",
|
||||
"Get more widgets from the App Store" : "Obtenez plus de widgets depuis la Boutique d'applications",
|
||||
@@ -22,7 +23,7 @@
|
||||
"Show something" : "Afficher quelque chose",
|
||||
"Change background image" : "Changer l’image d'arrière-plan",
|
||||
"Pick from Files" : "Mes images",
|
||||
"Default images" : "Images par défaut",
|
||||
"Default images" : "Image par défaut",
|
||||
"Plain background" : "Arrière-plan uni",
|
||||
"Insert from {productName}" : "Sélectionnez une image de {productName}"
|
||||
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||
|
||||
@@ -27,6 +27,6 @@ OC.L10N.register(
|
||||
"Pick from Files" : "Választás a fájlok közül",
|
||||
"Default images" : "Alapértelmezett képek",
|
||||
"Plain background" : "Egyszerű háttér",
|
||||
"Insert from {productName}" : "Beillesztés innen: {productName}-"
|
||||
"Insert from {productName}" : "Beillesztés innen: {productName}"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
@@ -25,6 +25,6 @@
|
||||
"Pick from Files" : "Választás a fájlok közül",
|
||||
"Default images" : "Alapértelmezett képek",
|
||||
"Plain background" : "Egyszerű háttér",
|
||||
"Insert from {productName}" : "Beillesztés innen: {productName}-"
|
||||
"Insert from {productName}" : "Beillesztés innen: {productName}"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -3,6 +3,7 @@ OC.L10N.register(
|
||||
{
|
||||
"Dashboard" : "Dasbor",
|
||||
"Dashboard app" : "Aplikasi dasbor",
|
||||
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Mulai harimu sama berita\n\nDasbor Nextcloud memberi kamu ikhtisar janji temumu yang akan datang, email mendesak, pesan obrolan, tiket masuk, tweet terbaru, dan lebih banyak! Pengguna bisa tambahkan widget-widget yang mereka suka dan berubah mereka dapat mengubah latar belakang sesuai keinginan mereka.",
|
||||
"Customize" : "Sesuaikan",
|
||||
"Edit widgets" : "Edit widget",
|
||||
"Get more widgets from the App Store" : "Dapatkan lebih banyak widget dari App Store",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{ "translations": {
|
||||
"Dashboard" : "Dasbor",
|
||||
"Dashboard app" : "Aplikasi dasbor",
|
||||
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Mulai harimu sama berita\n\nDasbor Nextcloud memberi kamu ikhtisar janji temumu yang akan datang, email mendesak, pesan obrolan, tiket masuk, tweet terbaru, dan lebih banyak! Pengguna bisa tambahkan widget-widget yang mereka suka dan berubah mereka dapat mengubah latar belakang sesuai keinginan mereka.",
|
||||
"Customize" : "Sesuaikan",
|
||||
"Edit widgets" : "Edit widget",
|
||||
"Get more widgets from the App Store" : "Dapatkan lebih banyak widget dari App Store",
|
||||
|
||||
@@ -2,11 +2,16 @@ OC.L10N.register(
|
||||
"dashboard",
|
||||
{
|
||||
"Dashboard" : "Майстерня",
|
||||
"Dashboard app" : "Застосунок з панеллю віджетів ",
|
||||
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Почніть свій день інформовано \nІнформаційна панель Nextcloud — це ваша початкова точка дня, яка дає вам змогу огляд ваших майбутніх зустрічей, термінових електронних листів, повідомлень чату, вхідні квитки, останні твіти та багато іншого! Користувачі можуть додавати віджети вони люблять і змінюють фон на свій смак.",
|
||||
"Customize" : "Редагувати",
|
||||
"Edit widgets" : "Редагувати віджети",
|
||||
"Get more widgets from the App Store" : "Більше віджетів у магазині додатків",
|
||||
"Get more widgets from the App Store" : "Більше віджетів у каталозі застосунків",
|
||||
"Weather service" : "Погода",
|
||||
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Для забезпечення вашої конфіденційності дані про погоду запитуються вашим сервером Nextcloud від вашого імені, тому служба погоди не отримує особисту інформацію.",
|
||||
"Weather data from Met.no" : "Дані про погоду з Met.no",
|
||||
"geocoding with Nominatim" : "геокодування за допомогою Nominatim",
|
||||
"elevation data from OpenTopoData" : "дані про висоту з OpenTopoData",
|
||||
"Weather" : "Погода",
|
||||
"Status" : "Статус",
|
||||
"Good morning" : "Доброго ранку",
|
||||
@@ -18,6 +23,10 @@ OC.L10N.register(
|
||||
"Hello" : "Привіт",
|
||||
"Hello, {name}" : "Привіт, {name}",
|
||||
"Show something" : "Показати щось",
|
||||
"Change background image" : "Змінити фонову світлину"
|
||||
"Change background image" : "Змінити фонову світлину",
|
||||
"Pick from Files" : "Виберіть із файлів",
|
||||
"Default images" : "Типові зображення",
|
||||
"Plain background" : "Рівний фон",
|
||||
"Insert from {productName}" : "Вставка з {productName}"
|
||||
},
|
||||
"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);");
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
{ "translations": {
|
||||
"Dashboard" : "Майстерня",
|
||||
"Dashboard app" : "Застосунок з панеллю віджетів ",
|
||||
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Почніть свій день інформовано \nІнформаційна панель Nextcloud — це ваша початкова точка дня, яка дає вам змогу огляд ваших майбутніх зустрічей, термінових електронних листів, повідомлень чату, вхідні квитки, останні твіти та багато іншого! Користувачі можуть додавати віджети вони люблять і змінюють фон на свій смак.",
|
||||
"Customize" : "Редагувати",
|
||||
"Edit widgets" : "Редагувати віджети",
|
||||
"Get more widgets from the App Store" : "Більше віджетів у магазині додатків",
|
||||
"Get more widgets from the App Store" : "Більше віджетів у каталозі застосунків",
|
||||
"Weather service" : "Погода",
|
||||
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Для забезпечення вашої конфіденційності дані про погоду запитуються вашим сервером Nextcloud від вашого імені, тому служба погоди не отримує особисту інформацію.",
|
||||
"Weather data from Met.no" : "Дані про погоду з Met.no",
|
||||
"geocoding with Nominatim" : "геокодування за допомогою Nominatim",
|
||||
"elevation data from OpenTopoData" : "дані про висоту з OpenTopoData",
|
||||
"Weather" : "Погода",
|
||||
"Status" : "Статус",
|
||||
"Good morning" : "Доброго ранку",
|
||||
@@ -16,6 +21,10 @@
|
||||
"Hello" : "Привіт",
|
||||
"Hello, {name}" : "Привіт, {name}",
|
||||
"Show something" : "Показати щось",
|
||||
"Change background image" : "Змінити фонову світлину"
|
||||
"Change background image" : "Змінити фонову світлину",
|
||||
"Pick from Files" : "Виберіть із файлів",
|
||||
"Default images" : "Типові зображення",
|
||||
"Plain background" : "Рівний фон",
|
||||
"Insert from {productName}" : "Вставка з {productName}"
|
||||
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"
|
||||
}
|
||||
@@ -88,7 +88,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { generateUrl, imagePath } from '@nextcloud/router'
|
||||
import { generateUrl } from '@nextcloud/router'
|
||||
import { getCurrentUser } from '@nextcloud/auth'
|
||||
import { loadState } from '@nextcloud/initial-state'
|
||||
import axios from '@nextcloud/axios'
|
||||
@@ -99,16 +99,10 @@ import Pencil from 'vue-material-design-icons/Pencil.vue'
|
||||
import Vue from 'vue'
|
||||
|
||||
import isMobile from './mixins/isMobile.js'
|
||||
import { getBackgroundUrl } from './helpers/getBackgroundUrl.js'
|
||||
|
||||
const panels = loadState('dashboard', 'panels')
|
||||
const firstRun = loadState('dashboard', 'firstRun')
|
||||
|
||||
const background = loadState('theming', 'background')
|
||||
const backgroundVersion = loadState('theming', 'backgroundVersion')
|
||||
const themingDefaultBackground = loadState('theming', 'themingDefaultBackground')
|
||||
const shippedBackgroundList = loadState('theming', 'shippedBackgrounds')
|
||||
|
||||
const statusInfo = {
|
||||
weather: {
|
||||
text: t('dashboard', 'Weather'),
|
||||
@@ -150,24 +144,9 @@ export default {
|
||||
modal: false,
|
||||
appStoreUrl: generateUrl('/settings/apps/dashboard'),
|
||||
statuses: {},
|
||||
background,
|
||||
themingDefaultBackground,
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
backgroundImage() {
|
||||
return getBackgroundUrl(this.background, backgroundVersion, this.themingDefaultBackground)
|
||||
},
|
||||
backgroundStyle() {
|
||||
if ((this.background === 'default' && this.themingDefaultBackground === 'backgroundColor')
|
||||
|| this.background.match(/#[0-9A-Fa-f]{6}/g)) {
|
||||
return null
|
||||
}
|
||||
|
||||
return {
|
||||
backgroundImage: this.background === 'default' ? 'var(--image-main-background)' : `url('${this.backgroundImage}')`,
|
||||
}
|
||||
},
|
||||
greeting() {
|
||||
const time = this.timer.getHours()
|
||||
|
||||
@@ -255,7 +234,6 @@ export default {
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.updateGlobalStyles()
|
||||
this.updateSkipLink()
|
||||
window.addEventListener('scroll', this.handleScroll)
|
||||
|
||||
@@ -272,32 +250,6 @@ export default {
|
||||
},
|
||||
|
||||
methods: {
|
||||
updateGlobalStyles() {
|
||||
// Override primary-invert-if-bright and color-primary-text if background is set
|
||||
const isBackgroundBright = shippedBackgroundList[this.background]?.theming === 'dark'
|
||||
if (isBackgroundBright) {
|
||||
document.querySelector('#header').style.setProperty('--primary-invert-if-bright', 'invert(100%)')
|
||||
document.querySelector('#header').style.setProperty('--color-primary-text', '#000000')
|
||||
// document.body.removeAttribute('data-theme-dark')
|
||||
// document.body.setAttribute('data-theme-light', 'true')
|
||||
} else {
|
||||
document.querySelector('#header').style.setProperty('--primary-invert-if-bright', 'no')
|
||||
document.querySelector('#header').style.setProperty('--color-primary-text', '#ffffff')
|
||||
// document.body.removeAttribute('data-theme-light')
|
||||
// document.body.setAttribute('data-theme-dark', 'true')
|
||||
}
|
||||
|
||||
const themeElements = [document.documentElement, document.querySelector('#header'), document.querySelector('body')]
|
||||
for (const element of themeElements) {
|
||||
if (this.background === 'default') {
|
||||
element.style.setProperty('--image-main-background', `url('${imagePath('core', 'app-background.jpg')}')`)
|
||||
} else if (this.background.match(/#[0-9A-Fa-f]{6}/g)) {
|
||||
element.style.setProperty('--image-main-background', undefined)
|
||||
} else {
|
||||
element.style.setProperty('--image-main-background', this.backgroundStyle.backgroundImage)
|
||||
}
|
||||
}
|
||||
},
|
||||
/**
|
||||
* Method to register panels that will be called by the integrating apps
|
||||
*
|
||||
@@ -441,7 +393,7 @@ export default {
|
||||
.panels {
|
||||
width: auto;
|
||||
margin: auto;
|
||||
max-width: 1500px;
|
||||
max-width: 1800px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: row;
|
||||
@@ -686,6 +638,5 @@ html, body {
|
||||
|
||||
#content {
|
||||
overflow: auto;
|
||||
position: static !important;;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
/**
|
||||
* @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @author Avior <florian.bouillon@delta-wings.net>
|
||||
* @author Julien Veyssier <eneiluj@posteo.net>
|
||||
* @author Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @license AGPL-3.0-or-later
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
import { generateUrl } from '@nextcloud/router'
|
||||
import { prefixWithBaseUrl } from './prefixWithBaseUrl.js'
|
||||
|
||||
export const getBackgroundUrl = (background, time = 0, themingDefaultBackground = '') => {
|
||||
const enabledThemes = window.OCA?.Theming?.enabledThemes || []
|
||||
const isDarkTheme = (enabledThemes.length === 0 || enabledThemes[0] === 'default')
|
||||
? window.matchMedia('(prefers-color-scheme: dark)').matches
|
||||
: enabledThemes.join('').indexOf('dark') !== -1
|
||||
|
||||
if (background === 'default') {
|
||||
if (themingDefaultBackground && themingDefaultBackground !== 'backgroundColor') {
|
||||
return generateUrl('/apps/theming/image/background') + '?v=' + window.OCA.Theming.cacheBuster
|
||||
}
|
||||
|
||||
if (isDarkTheme) {
|
||||
return prefixWithBaseUrl('eduardo-neves-pedra-azul.jpg')
|
||||
}
|
||||
|
||||
return prefixWithBaseUrl('kamil-porembinski-clouds.jpg')
|
||||
} else if (background === 'custom') {
|
||||
return generateUrl('/apps/theming/background') + '?v=' + time
|
||||
}
|
||||
|
||||
return prefixWithBaseUrl(background)
|
||||
}
|
||||
+83
-3
@@ -2,6 +2,7 @@ OC.L10N.register(
|
||||
"dav",
|
||||
{
|
||||
"Calendar" : "Calendari",
|
||||
"To-dos" : "Tasques pendents",
|
||||
"Personal" : "Personal",
|
||||
"{actor} created calendar {calendar}" : "{actor} ha creat el calendari {calendar}",
|
||||
"You created calendar {calendar}" : "Heu creat el calendari {calendar}",
|
||||
@@ -9,6 +10,8 @@ OC.L10N.register(
|
||||
"You deleted calendar {calendar}" : "Heu suprimit el calendari {calendar}",
|
||||
"{actor} updated calendar {calendar}" : "{actor} ha actualitzat el calendari {calendar}",
|
||||
"You updated calendar {calendar}" : "Heu actualitzat el calendari {calendar}",
|
||||
"{actor} restored calendar {calendar}" : "{actor} ha restaurat el calendari {calendar}",
|
||||
"You restored calendar {calendar}" : "Heu restaurat el calendari {calendar}",
|
||||
"You shared calendar {calendar} as public link" : "Heu compartit el calendari {calendar} amb un enllaç públic",
|
||||
"You removed public link for calendar {calendar}" : "Heu eliminat l'enllaç públic del calendari {calendar}",
|
||||
"{actor} shared calendar {calendar} with you" : "{actor} ha compartit el calendari {calendar} amb vós",
|
||||
@@ -29,9 +32,27 @@ OC.L10N.register(
|
||||
"You deleted event {event} from calendar {calendar}" : "Heu suprimit l'esdeveniment {event} del calendari {calendar}",
|
||||
"{actor} updated event {event} in calendar {calendar}" : "{actor} esdeveniment actualitzat {esdeveniment} al calendari {calendar}",
|
||||
"You updated event {event} in calendar {calendar}" : "Heu actualitzat l'esdeveniment {event} al calendari {calendar}",
|
||||
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} ha mogut l'esdeveniment {event} del calendari {sourceCalendar} al calendari {targetCalendar}",
|
||||
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Heu mogut l'esdeveniment {event} del calendari {sourceCalendar} al calendari {targetCalendar}",
|
||||
"{actor} restored event {event} of calendar {calendar}" : "{actor} esdeveniment restaurat {event} del calendari {calendar}",
|
||||
"You restored event {event} of calendar {calendar}" : "Heu restaurat l'esdeveniment {event} del calendari {calendar}",
|
||||
"Busy" : "Ocupat",
|
||||
"{actor} created to-do {todo} in list {calendar}" : "{actor} ha creat la tasca pendent {todo} a la llista {calendar}",
|
||||
"You created to-do {todo} in list {calendar}" : "Heu creat la tasca pendent {todo} a la llista {calendar}",
|
||||
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} ha suprimit tasques pendents {todo} de la llista {calendar}",
|
||||
"You deleted to-do {todo} from list {calendar}" : "Heu suprimit la tasca pendent {todo} de la llista {calendar}",
|
||||
"{actor} updated to-do {todo} in list {calendar}" : "{actor} ha actualitzat tasques pendents {todo} a la llista {calendar}",
|
||||
"You updated to-do {todo} in list {calendar}" : "Heu actualitzat la tasca pendent {todo} a la llista {calendar}",
|
||||
"{actor} solved to-do {todo} in list {calendar}" : "{actor} ha resolt la tasca pendent {todo} a la llista {calendar}",
|
||||
"You solved to-do {todo} in list {calendar}" : "Heu resolt la tasca pendent {todo} a la llista {calendar}",
|
||||
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} va reobrir tasques pendents {todo} a la llista {calendar}",
|
||||
"You reopened to-do {todo} in list {calendar}" : "Heu reobert les tasques pendents {todo} a la llista {calendar}",
|
||||
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} ha mogut la tasca pendent {todo} de la llista {sourceCalendar} a la llista {targetCalendar}",
|
||||
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Heu mogut la tasca pendent {todo} de la llista {sourceCalendar} a la llista {targetCalendar}",
|
||||
"Calendar, contacts and tasks" : "Calendari, contactes i tasques",
|
||||
"A <strong>calendar</strong> was modified" : "El <strong>calendari</strong> has estat modificat",
|
||||
"A calendar <strong>event</strong> was modified" : "S'ha modificat un <strong> esdeveniment </strong> del calendari",
|
||||
"A calendar <strong>to-do</strong> was modified" : "S'ha modificat una <strong>tasca pendent</strong> del calendari",
|
||||
"Contact birthdays" : "Aniversaris dels contactes",
|
||||
"Death of %s" : "Mort de %s",
|
||||
"Calendar:" : "Calendari:",
|
||||
@@ -50,8 +71,11 @@ OC.L10N.register(
|
||||
"Description: %s" : "Descripció: %s",
|
||||
"Where: %s" : "On: %s",
|
||||
"%1$s via %2$s" : "%1$s mitjançant %2$s",
|
||||
"Cancelled: %1$s" : "Cancel·lat: %1$s",
|
||||
"Invitation canceled" : "Invitació cancel·lada",
|
||||
"Re: %1$s" : "Re: %1$s",
|
||||
"Invitation updated" : "Invitació actualitzada",
|
||||
"Invitation: %1$s" : "Invitació: %1$s",
|
||||
"Invitation" : "Invitació",
|
||||
"Title:" : "Títol:",
|
||||
"Time:" : "Hora:",
|
||||
@@ -60,10 +84,52 @@ OC.L10N.register(
|
||||
"Organizer:" : "Organitzador:",
|
||||
"Attendees:" : "Assistents:",
|
||||
"Accept" : "Accepta",
|
||||
"Decline" : "Rebutja",
|
||||
"Decline" : "Declina",
|
||||
"More options …" : "Més opcions …",
|
||||
"More options at %s" : "Més opcions a %s",
|
||||
"Contacts" : "Contactes",
|
||||
"{actor} created address book {addressbook}" : "{actor} ha creat la llibreta d'adreces {addressbook}",
|
||||
"You created address book {addressbook}" : "Heu creat la llibreta d'adreces {addressbook}",
|
||||
"{actor} deleted address book {addressbook}" : "{actor} llibreta d'adreces suprimida {addressbook}",
|
||||
"You deleted address book {addressbook}" : "Heu suprimit la llibreta d'adreces {addressbook}",
|
||||
"{actor} updated address book {addressbook}" : "{actor} llibreta d'adreces actualitzada {addressbook}",
|
||||
"You updated address book {addressbook}" : "Heu actualitzat la llibreta d'adreces {addressbook}",
|
||||
"{actor} shared address book {addressbook} with you" : "{actor} ha compartit la llibreta d'adreces {addressbook} amb vostè",
|
||||
"You shared address book {addressbook} with {user}" : "Heu compartit la llibreta d'adreces {addressbook} amb {user}",
|
||||
"{actor} shared address book {addressbook} with {user}" : "{actor} ha compartit la llibreta d'adreces {addressbook} amb {user}",
|
||||
"{actor} unshared address book {addressbook} from you" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} amb vostè",
|
||||
"You unshared address book {addressbook} from {user}" : "Heu deixat de compartir la llibreta d'adreces {addressbook} de {user}",
|
||||
"{actor} unshared address book {addressbook} from {user}" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} de {user}",
|
||||
"{actor} unshared address book {addressbook} from themselves" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} d'ells mateixos",
|
||||
"You shared address book {addressbook} with group {group}" : "Heu compartit la llibreta d'adreces {addressbook} amb el grup {group}",
|
||||
"{actor} shared address book {addressbook} with group {group}" : "{actor} ha compartit la llibreta d'adreces {addressbook} amb el grup {group}",
|
||||
"You unshared address book {addressbook} from group {group}" : "Heu deixat de compartir la llibreta d'adreces {addressbook} del grup {group}",
|
||||
"{actor} unshared address book {addressbook} from group {group}" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} del grup {group}",
|
||||
"{actor} created contact {card} in address book {addressbook}" : "{actor} ha creat el contacte {card} a la llibreta d'adreces {addressbook}",
|
||||
"You created contact {card} in address book {addressbook}" : "Heu creat el contacte {card} a la llibreta d'adreces {addressbook}",
|
||||
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} ha suprimit el contacte {card} de la llibreta d'adreces {addressbook}",
|
||||
"You deleted contact {card} from address book {addressbook}" : "Heu suprimit el contacte {card} de la llibreta d'adreces {addressbook}",
|
||||
"{actor} updated contact {card} in address book {addressbook}" : "{actor} ha actualitzat el contacte {card} a la llibreta d'adreces {addressbook}",
|
||||
"You updated contact {card} in address book {addressbook}" : "Heu actualitzat el contacte {card} a la llibreta d'adreces {addressbook}",
|
||||
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "S'ha modificat un <strong>contacte</strong> o una <strong>llibreta d'adreces</strong>",
|
||||
"File is not updatable: %1$s" : "El fitxer no es pot actualitzar: %1$s",
|
||||
"Could not write to final file, canceled by hook" : "No s'ha pogut escriure al fitxer final, cancel·lat per ganxo",
|
||||
"Could not write file contents" : "No s'ha pogut escriure el contingut del fitxer",
|
||||
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
|
||||
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Error en copiar el fitxer a la ubicació de destí (copiat: %1$s, mida esperada del fitxer: %2$s)",
|
||||
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "S'esperava una mida de fitxer de %1$s però llegit (des del client Nextcloud) i escrit (a l'emmagatzematge de Nextcloud) %2$s. Pot ser un problema de xarxa al costat d'enviament o un problema d'escriptura a l'emmagatzematge del costat del servidor.",
|
||||
"Could not rename part file to final file, canceled by hook" : "No s'ha pogut canviar el nom del fitxer de la part al fitxer final, cancel·lat per ganxo",
|
||||
"Could not rename part file to final file" : "No s'ha pogut canviar el nom del fitxer de part al fitxer final",
|
||||
"Failed to check file size: %1$s" : "No s'ha pogut comprovar la mida del fitxer: %1$s",
|
||||
"Could not open file" : "No s’ha pogut obrir el fitxer",
|
||||
"Encryption not ready: %1$s" : "El xifratge no està preparat: %1$s",
|
||||
"Failed to open file: %1$s" : "No s'ha pogut obrir el fitxer: %1$s",
|
||||
"Failed to unlink: %1$s" : "No s'ha pogut desenllaçar: %1$s",
|
||||
"Invalid chunk name" : "Nom del fragment no vàlid",
|
||||
"Could not rename part file assembled from chunks" : "No s'ha pogut canviar el nom del fitxer de peces muntat a partir de fragments",
|
||||
"Failed to write file contents: %1$s" : "No s'ha pogut escriure el contingut del fitxer: %1$s",
|
||||
"File not found: %1$s" : "No s'ha trobat el fitxer: %1$s",
|
||||
"System is in maintenance mode." : "Sistema en mode de manteniment.",
|
||||
"Upgrade needed" : "Fa falta l'actualització",
|
||||
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "El vostre %s cal configurar-se per utilitzar HTTPS per poder fer servir CalDAV i CardDAV amb iOS/macOS.",
|
||||
"Configures a CalDAV account" : "Configura un compte CalDAV",
|
||||
@@ -74,11 +140,18 @@ OC.L10N.register(
|
||||
"Completed on %s" : "Completat a %s",
|
||||
"Due on %s by %s" : "Venciment a %s per %s",
|
||||
"Due on %s" : "Venç en %s",
|
||||
"Migrated calendar (%1$s)" : "Calendari migrat (%1$s)",
|
||||
"Calendars including events, details and attendees" : "Calendaris que inclouen esdeveniments, detalls i assistents",
|
||||
"Contacts and groups" : "Contactes i grups",
|
||||
"WebDAV" : "WebDAV",
|
||||
"WebDAV endpoint" : "Punt final de WebDAV",
|
||||
"Availability" : "Disponibilitat",
|
||||
"If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Si configureu el vostre horari laboral, els altres usuaris veuran quan sou fora de l'oficina quan reserven una reunió.",
|
||||
"Time zone:" : "Zona horària:",
|
||||
"to" : "a",
|
||||
"Delete slot" : "Suprimeix unitat temporal",
|
||||
"Delete slot" : "Suprimeix forat",
|
||||
"No working hours set" : "Sense horari de treball establert",
|
||||
"Add slot" : "Afegeix una forat",
|
||||
"Monday" : "Dilluns",
|
||||
"Tuesday" : "Dimarts",
|
||||
"Wednesday" : "Dimecres",
|
||||
@@ -86,14 +159,20 @@ OC.L10N.register(
|
||||
"Friday" : "Divendres",
|
||||
"Saturday" : "Dissabte",
|
||||
"Sunday" : "Diumenge",
|
||||
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Estableix automàticament l'estat de l'usuari a \"No molestar\" fora de la disponibilitat per silenciar totes les notificacions.",
|
||||
"Save" : "Desa",
|
||||
"Failed to load availability" : "No s'ha pogut carregar la disponibilitat",
|
||||
"Saved availability" : "Disponibilitat guardada",
|
||||
"Failed to save availability" : "No s'ha pogut desar la disponibilitat",
|
||||
"Calendar server" : "Servidor de calendari",
|
||||
"Send invitations to attendees" : "Envia invitacions als assistents",
|
||||
"Automatically generate a birthday calendar" : "Genera automàticament un calendari d’aniversari",
|
||||
"Birthday calendars will be generated by a background job." : "Els calendaris d'aniversari es generaran per un procés en segon pla..",
|
||||
"Hence they will not be available immediately after enabling but will show up after some time." : "Per tant, no estaran disponibles immediatament després d'habilitar-los, però apareixeran d'aquí una estona.",
|
||||
"Send notifications for events" : "Envia notificacions per als esdeveniments",
|
||||
"Notifications are sent via background jobs, so these must occur often enough." : "Les notificacions s'envien per tasques funcionant en segon pla, així que això ha de succeir bastant sovint.",
|
||||
"Notifications are sent via background jobs, so these must occur often enough." : "Les notificacions s'envien per feines en segon pla, així que això ha de succeir bastant sovint.",
|
||||
"Send reminder notifications to calendar sharees as well" : "També envieu notificacions de recordatoris als recursos compartits del calendari",
|
||||
"Reminders are always sent to organizers and attendees." : "Sempre s'envien recordatoris als organitzadors i als assistents.",
|
||||
"Enable notifications for events via push" : "Habiliteu les notificacions per a esdeveniments mitjançant l’empenyiment",
|
||||
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instal·leu també {calendarappstoreopen}l’aplicació de Calendari{linkclose} o {calendardocopen}connecteu el vostre escriptori i el mòbil per sincronitzar ↗{linkclose}.",
|
||||
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Si us plau, assegureu-vos de configurar correctament {emailopen}el servidor de correu electrònic{linkclose}.",
|
||||
@@ -101,6 +180,7 @@ OC.L10N.register(
|
||||
"Please contact the organizer directly." : "Si us plau contacteu amb l'organitzador directament.",
|
||||
"Are you accepting the invitation?" : "Accepteu la invitació?",
|
||||
"Tentative" : "Provisional",
|
||||
"Number of guests" : "Nombre d'hostes",
|
||||
"Comment" : "Comentari",
|
||||
"Your attendance was updated successfully." : "La vostra assistència ha estat actualitzada correctament.",
|
||||
"Todos" : "Tasques",
|
||||
|
||||
+83
-3
@@ -1,5 +1,6 @@
|
||||
{ "translations": {
|
||||
"Calendar" : "Calendari",
|
||||
"To-dos" : "Tasques pendents",
|
||||
"Personal" : "Personal",
|
||||
"{actor} created calendar {calendar}" : "{actor} ha creat el calendari {calendar}",
|
||||
"You created calendar {calendar}" : "Heu creat el calendari {calendar}",
|
||||
@@ -7,6 +8,8 @@
|
||||
"You deleted calendar {calendar}" : "Heu suprimit el calendari {calendar}",
|
||||
"{actor} updated calendar {calendar}" : "{actor} ha actualitzat el calendari {calendar}",
|
||||
"You updated calendar {calendar}" : "Heu actualitzat el calendari {calendar}",
|
||||
"{actor} restored calendar {calendar}" : "{actor} ha restaurat el calendari {calendar}",
|
||||
"You restored calendar {calendar}" : "Heu restaurat el calendari {calendar}",
|
||||
"You shared calendar {calendar} as public link" : "Heu compartit el calendari {calendar} amb un enllaç públic",
|
||||
"You removed public link for calendar {calendar}" : "Heu eliminat l'enllaç públic del calendari {calendar}",
|
||||
"{actor} shared calendar {calendar} with you" : "{actor} ha compartit el calendari {calendar} amb vós",
|
||||
@@ -27,9 +30,27 @@
|
||||
"You deleted event {event} from calendar {calendar}" : "Heu suprimit l'esdeveniment {event} del calendari {calendar}",
|
||||
"{actor} updated event {event} in calendar {calendar}" : "{actor} esdeveniment actualitzat {esdeveniment} al calendari {calendar}",
|
||||
"You updated event {event} in calendar {calendar}" : "Heu actualitzat l'esdeveniment {event} al calendari {calendar}",
|
||||
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} ha mogut l'esdeveniment {event} del calendari {sourceCalendar} al calendari {targetCalendar}",
|
||||
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Heu mogut l'esdeveniment {event} del calendari {sourceCalendar} al calendari {targetCalendar}",
|
||||
"{actor} restored event {event} of calendar {calendar}" : "{actor} esdeveniment restaurat {event} del calendari {calendar}",
|
||||
"You restored event {event} of calendar {calendar}" : "Heu restaurat l'esdeveniment {event} del calendari {calendar}",
|
||||
"Busy" : "Ocupat",
|
||||
"{actor} created to-do {todo} in list {calendar}" : "{actor} ha creat la tasca pendent {todo} a la llista {calendar}",
|
||||
"You created to-do {todo} in list {calendar}" : "Heu creat la tasca pendent {todo} a la llista {calendar}",
|
||||
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} ha suprimit tasques pendents {todo} de la llista {calendar}",
|
||||
"You deleted to-do {todo} from list {calendar}" : "Heu suprimit la tasca pendent {todo} de la llista {calendar}",
|
||||
"{actor} updated to-do {todo} in list {calendar}" : "{actor} ha actualitzat tasques pendents {todo} a la llista {calendar}",
|
||||
"You updated to-do {todo} in list {calendar}" : "Heu actualitzat la tasca pendent {todo} a la llista {calendar}",
|
||||
"{actor} solved to-do {todo} in list {calendar}" : "{actor} ha resolt la tasca pendent {todo} a la llista {calendar}",
|
||||
"You solved to-do {todo} in list {calendar}" : "Heu resolt la tasca pendent {todo} a la llista {calendar}",
|
||||
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} va reobrir tasques pendents {todo} a la llista {calendar}",
|
||||
"You reopened to-do {todo} in list {calendar}" : "Heu reobert les tasques pendents {todo} a la llista {calendar}",
|
||||
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} ha mogut la tasca pendent {todo} de la llista {sourceCalendar} a la llista {targetCalendar}",
|
||||
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Heu mogut la tasca pendent {todo} de la llista {sourceCalendar} a la llista {targetCalendar}",
|
||||
"Calendar, contacts and tasks" : "Calendari, contactes i tasques",
|
||||
"A <strong>calendar</strong> was modified" : "El <strong>calendari</strong> has estat modificat",
|
||||
"A calendar <strong>event</strong> was modified" : "S'ha modificat un <strong> esdeveniment </strong> del calendari",
|
||||
"A calendar <strong>to-do</strong> was modified" : "S'ha modificat una <strong>tasca pendent</strong> del calendari",
|
||||
"Contact birthdays" : "Aniversaris dels contactes",
|
||||
"Death of %s" : "Mort de %s",
|
||||
"Calendar:" : "Calendari:",
|
||||
@@ -48,8 +69,11 @@
|
||||
"Description: %s" : "Descripció: %s",
|
||||
"Where: %s" : "On: %s",
|
||||
"%1$s via %2$s" : "%1$s mitjançant %2$s",
|
||||
"Cancelled: %1$s" : "Cancel·lat: %1$s",
|
||||
"Invitation canceled" : "Invitació cancel·lada",
|
||||
"Re: %1$s" : "Re: %1$s",
|
||||
"Invitation updated" : "Invitació actualitzada",
|
||||
"Invitation: %1$s" : "Invitació: %1$s",
|
||||
"Invitation" : "Invitació",
|
||||
"Title:" : "Títol:",
|
||||
"Time:" : "Hora:",
|
||||
@@ -58,10 +82,52 @@
|
||||
"Organizer:" : "Organitzador:",
|
||||
"Attendees:" : "Assistents:",
|
||||
"Accept" : "Accepta",
|
||||
"Decline" : "Rebutja",
|
||||
"Decline" : "Declina",
|
||||
"More options …" : "Més opcions …",
|
||||
"More options at %s" : "Més opcions a %s",
|
||||
"Contacts" : "Contactes",
|
||||
"{actor} created address book {addressbook}" : "{actor} ha creat la llibreta d'adreces {addressbook}",
|
||||
"You created address book {addressbook}" : "Heu creat la llibreta d'adreces {addressbook}",
|
||||
"{actor} deleted address book {addressbook}" : "{actor} llibreta d'adreces suprimida {addressbook}",
|
||||
"You deleted address book {addressbook}" : "Heu suprimit la llibreta d'adreces {addressbook}",
|
||||
"{actor} updated address book {addressbook}" : "{actor} llibreta d'adreces actualitzada {addressbook}",
|
||||
"You updated address book {addressbook}" : "Heu actualitzat la llibreta d'adreces {addressbook}",
|
||||
"{actor} shared address book {addressbook} with you" : "{actor} ha compartit la llibreta d'adreces {addressbook} amb vostè",
|
||||
"You shared address book {addressbook} with {user}" : "Heu compartit la llibreta d'adreces {addressbook} amb {user}",
|
||||
"{actor} shared address book {addressbook} with {user}" : "{actor} ha compartit la llibreta d'adreces {addressbook} amb {user}",
|
||||
"{actor} unshared address book {addressbook} from you" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} amb vostè",
|
||||
"You unshared address book {addressbook} from {user}" : "Heu deixat de compartir la llibreta d'adreces {addressbook} de {user}",
|
||||
"{actor} unshared address book {addressbook} from {user}" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} de {user}",
|
||||
"{actor} unshared address book {addressbook} from themselves" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} d'ells mateixos",
|
||||
"You shared address book {addressbook} with group {group}" : "Heu compartit la llibreta d'adreces {addressbook} amb el grup {group}",
|
||||
"{actor} shared address book {addressbook} with group {group}" : "{actor} ha compartit la llibreta d'adreces {addressbook} amb el grup {group}",
|
||||
"You unshared address book {addressbook} from group {group}" : "Heu deixat de compartir la llibreta d'adreces {addressbook} del grup {group}",
|
||||
"{actor} unshared address book {addressbook} from group {group}" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} del grup {group}",
|
||||
"{actor} created contact {card} in address book {addressbook}" : "{actor} ha creat el contacte {card} a la llibreta d'adreces {addressbook}",
|
||||
"You created contact {card} in address book {addressbook}" : "Heu creat el contacte {card} a la llibreta d'adreces {addressbook}",
|
||||
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} ha suprimit el contacte {card} de la llibreta d'adreces {addressbook}",
|
||||
"You deleted contact {card} from address book {addressbook}" : "Heu suprimit el contacte {card} de la llibreta d'adreces {addressbook}",
|
||||
"{actor} updated contact {card} in address book {addressbook}" : "{actor} ha actualitzat el contacte {card} a la llibreta d'adreces {addressbook}",
|
||||
"You updated contact {card} in address book {addressbook}" : "Heu actualitzat el contacte {card} a la llibreta d'adreces {addressbook}",
|
||||
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "S'ha modificat un <strong>contacte</strong> o una <strong>llibreta d'adreces</strong>",
|
||||
"File is not updatable: %1$s" : "El fitxer no es pot actualitzar: %1$s",
|
||||
"Could not write to final file, canceled by hook" : "No s'ha pogut escriure al fitxer final, cancel·lat per ganxo",
|
||||
"Could not write file contents" : "No s'ha pogut escriure el contingut del fitxer",
|
||||
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
|
||||
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Error en copiar el fitxer a la ubicació de destí (copiat: %1$s, mida esperada del fitxer: %2$s)",
|
||||
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "S'esperava una mida de fitxer de %1$s però llegit (des del client Nextcloud) i escrit (a l'emmagatzematge de Nextcloud) %2$s. Pot ser un problema de xarxa al costat d'enviament o un problema d'escriptura a l'emmagatzematge del costat del servidor.",
|
||||
"Could not rename part file to final file, canceled by hook" : "No s'ha pogut canviar el nom del fitxer de la part al fitxer final, cancel·lat per ganxo",
|
||||
"Could not rename part file to final file" : "No s'ha pogut canviar el nom del fitxer de part al fitxer final",
|
||||
"Failed to check file size: %1$s" : "No s'ha pogut comprovar la mida del fitxer: %1$s",
|
||||
"Could not open file" : "No s’ha pogut obrir el fitxer",
|
||||
"Encryption not ready: %1$s" : "El xifratge no està preparat: %1$s",
|
||||
"Failed to open file: %1$s" : "No s'ha pogut obrir el fitxer: %1$s",
|
||||
"Failed to unlink: %1$s" : "No s'ha pogut desenllaçar: %1$s",
|
||||
"Invalid chunk name" : "Nom del fragment no vàlid",
|
||||
"Could not rename part file assembled from chunks" : "No s'ha pogut canviar el nom del fitxer de peces muntat a partir de fragments",
|
||||
"Failed to write file contents: %1$s" : "No s'ha pogut escriure el contingut del fitxer: %1$s",
|
||||
"File not found: %1$s" : "No s'ha trobat el fitxer: %1$s",
|
||||
"System is in maintenance mode." : "Sistema en mode de manteniment.",
|
||||
"Upgrade needed" : "Fa falta l'actualització",
|
||||
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "El vostre %s cal configurar-se per utilitzar HTTPS per poder fer servir CalDAV i CardDAV amb iOS/macOS.",
|
||||
"Configures a CalDAV account" : "Configura un compte CalDAV",
|
||||
@@ -72,11 +138,18 @@
|
||||
"Completed on %s" : "Completat a %s",
|
||||
"Due on %s by %s" : "Venciment a %s per %s",
|
||||
"Due on %s" : "Venç en %s",
|
||||
"Migrated calendar (%1$s)" : "Calendari migrat (%1$s)",
|
||||
"Calendars including events, details and attendees" : "Calendaris que inclouen esdeveniments, detalls i assistents",
|
||||
"Contacts and groups" : "Contactes i grups",
|
||||
"WebDAV" : "WebDAV",
|
||||
"WebDAV endpoint" : "Punt final de WebDAV",
|
||||
"Availability" : "Disponibilitat",
|
||||
"If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Si configureu el vostre horari laboral, els altres usuaris veuran quan sou fora de l'oficina quan reserven una reunió.",
|
||||
"Time zone:" : "Zona horària:",
|
||||
"to" : "a",
|
||||
"Delete slot" : "Suprimeix unitat temporal",
|
||||
"Delete slot" : "Suprimeix forat",
|
||||
"No working hours set" : "Sense horari de treball establert",
|
||||
"Add slot" : "Afegeix una forat",
|
||||
"Monday" : "Dilluns",
|
||||
"Tuesday" : "Dimarts",
|
||||
"Wednesday" : "Dimecres",
|
||||
@@ -84,14 +157,20 @@
|
||||
"Friday" : "Divendres",
|
||||
"Saturday" : "Dissabte",
|
||||
"Sunday" : "Diumenge",
|
||||
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Estableix automàticament l'estat de l'usuari a \"No molestar\" fora de la disponibilitat per silenciar totes les notificacions.",
|
||||
"Save" : "Desa",
|
||||
"Failed to load availability" : "No s'ha pogut carregar la disponibilitat",
|
||||
"Saved availability" : "Disponibilitat guardada",
|
||||
"Failed to save availability" : "No s'ha pogut desar la disponibilitat",
|
||||
"Calendar server" : "Servidor de calendari",
|
||||
"Send invitations to attendees" : "Envia invitacions als assistents",
|
||||
"Automatically generate a birthday calendar" : "Genera automàticament un calendari d’aniversari",
|
||||
"Birthday calendars will be generated by a background job." : "Els calendaris d'aniversari es generaran per un procés en segon pla..",
|
||||
"Hence they will not be available immediately after enabling but will show up after some time." : "Per tant, no estaran disponibles immediatament després d'habilitar-los, però apareixeran d'aquí una estona.",
|
||||
"Send notifications for events" : "Envia notificacions per als esdeveniments",
|
||||
"Notifications are sent via background jobs, so these must occur often enough." : "Les notificacions s'envien per tasques funcionant en segon pla, així que això ha de succeir bastant sovint.",
|
||||
"Notifications are sent via background jobs, so these must occur often enough." : "Les notificacions s'envien per feines en segon pla, així que això ha de succeir bastant sovint.",
|
||||
"Send reminder notifications to calendar sharees as well" : "També envieu notificacions de recordatoris als recursos compartits del calendari",
|
||||
"Reminders are always sent to organizers and attendees." : "Sempre s'envien recordatoris als organitzadors i als assistents.",
|
||||
"Enable notifications for events via push" : "Habiliteu les notificacions per a esdeveniments mitjançant l’empenyiment",
|
||||
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instal·leu també {calendarappstoreopen}l’aplicació de Calendari{linkclose} o {calendardocopen}connecteu el vostre escriptori i el mòbil per sincronitzar ↗{linkclose}.",
|
||||
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Si us plau, assegureu-vos de configurar correctament {emailopen}el servidor de correu electrònic{linkclose}.",
|
||||
@@ -99,6 +178,7 @@
|
||||
"Please contact the organizer directly." : "Si us plau contacteu amb l'organitzador directament.",
|
||||
"Are you accepting the invitation?" : "Accepteu la invitació?",
|
||||
"Tentative" : "Provisional",
|
||||
"Number of guests" : "Nombre d'hostes",
|
||||
"Comment" : "Comentari",
|
||||
"Your attendance was updated successfully." : "La vostra assistència ha estat actualitzada correctament.",
|
||||
"Todos" : "Tasques",
|
||||
|
||||
@@ -75,6 +75,7 @@ OC.L10N.register(
|
||||
"Contacts and groups" : "Kontakter og grupper",
|
||||
"WebDAV" : "WebDAV",
|
||||
"WebDAV endpoint" : "WebDAV endpoint",
|
||||
"Availability" : "tilgængelighed",
|
||||
"to" : "til",
|
||||
"Delete slot" : "Slet slot",
|
||||
"Monday" : "Mandag",
|
||||
|
||||
@@ -73,6 +73,7 @@
|
||||
"Contacts and groups" : "Kontakter og grupper",
|
||||
"WebDAV" : "WebDAV",
|
||||
"WebDAV endpoint" : "WebDAV endpoint",
|
||||
"Availability" : "tilgængelighed",
|
||||
"to" : "til",
|
||||
"Delete slot" : "Slet slot",
|
||||
"Monday" : "Mandag",
|
||||
|
||||
@@ -31,6 +31,7 @@ OC.L10N.register(
|
||||
"{actor} updated event {event} in calendar {calendar}" : "Ο {actor} ενημέρωσε το γεγονός {event} στο ημερολόγιο {calendar}",
|
||||
"You updated event {event} in calendar {calendar}" : "Ενημερώσατε το συμβάν {event} στο ημερολόγιο {calendar}",
|
||||
"Busy" : "Απασχολημένος",
|
||||
"Calendar, contacts and tasks" : "Ημερολόγιο, επαφές και εργασίες",
|
||||
"A <strong>calendar</strong> was modified" : "Τροποποιήθηκε ένα <strong>ημερολόγιο</strong> ",
|
||||
"A calendar <strong>event</strong> was modified" : "Τροποποιήθηκε ένα <strong>γεγονός</strong> του ημερολογίου",
|
||||
"Contact birthdays" : "Γενέθλια επαφών",
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
"{actor} updated event {event} in calendar {calendar}" : "Ο {actor} ενημέρωσε το γεγονός {event} στο ημερολόγιο {calendar}",
|
||||
"You updated event {event} in calendar {calendar}" : "Ενημερώσατε το συμβάν {event} στο ημερολόγιο {calendar}",
|
||||
"Busy" : "Απασχολημένος",
|
||||
"Calendar, contacts and tasks" : "Ημερολόγιο, επαφές και εργασίες",
|
||||
"A <strong>calendar</strong> was modified" : "Τροποποιήθηκε ένα <strong>ημερολόγιο</strong> ",
|
||||
"A calendar <strong>event</strong> was modified" : "Τροποποιήθηκε ένα <strong>γεγονός</strong> του ημερολογίου",
|
||||
"Contact birthdays" : "Γενέθλια επαφών",
|
||||
|
||||
+156
-26
@@ -2,7 +2,7 @@ OC.L10N.register(
|
||||
"dav",
|
||||
{
|
||||
"Calendar" : "Calendar",
|
||||
"Todos" : "Todos",
|
||||
"To-dos" : "To-dos",
|
||||
"Personal" : "Personal",
|
||||
"{actor} created calendar {calendar}" : "{actor} created calendar {calendar}",
|
||||
"You created calendar {calendar}" : "You created calendar {calendar}",
|
||||
@@ -10,6 +10,8 @@ OC.L10N.register(
|
||||
"You deleted calendar {calendar}" : "You deleted calendar {calendar}",
|
||||
"{actor} updated calendar {calendar}" : "{actor} updated calendar {calendar}",
|
||||
"You updated calendar {calendar}" : "You updated calendar {calendar}",
|
||||
"{actor} restored calendar {calendar}" : "{actor} restored calendar {calendar}",
|
||||
"You restored calendar {calendar}" : "You restored calendar {calendar}",
|
||||
"You shared calendar {calendar} as public link" : "You shared calendar {calendar} as public link",
|
||||
"You removed public link for calendar {calendar}" : "You removed public link for calendar {calendar}",
|
||||
"{actor} shared calendar {calendar} with you" : "{actor} shared calendar {calendar} with you",
|
||||
@@ -23,13 +25,165 @@ OC.L10N.register(
|
||||
"{actor} shared calendar {calendar} with group {group}" : "{actor} shared calendar {calendar} with group {group}",
|
||||
"You unshared calendar {calendar} from group {group}" : "You unshared calendar {calendar} from group {group}",
|
||||
"{actor} unshared calendar {calendar} from group {group}" : "{actor} unshared calendar {calendar} from group {group}",
|
||||
"Untitled event" : "Untitled event",
|
||||
"{actor} created event {event} in calendar {calendar}" : "{actor} created event {event} in calendar {calendar}",
|
||||
"You created event {event} in calendar {calendar}" : "You created event {event} in calendar {calendar}",
|
||||
"{actor} deleted event {event} from calendar {calendar}" : "{actor} deleted event {event} from calendar {calendar}",
|
||||
"You deleted event {event} from calendar {calendar}" : "You deleted event {event} from calendar {calendar}",
|
||||
"{actor} updated event {event} in calendar {calendar}" : "{actor} updated event {event} in calendar {calendar}",
|
||||
"You updated event {event} in calendar {calendar}" : "You updated event {event} in calendar {calendar}",
|
||||
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}",
|
||||
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}",
|
||||
"{actor} restored event {event} of calendar {calendar}" : "{actor} restored event {event} of calendar {calendar}",
|
||||
"You restored event {event} of calendar {calendar}" : "You restored event {event} of calendar {calendar}",
|
||||
"Busy" : "Busy",
|
||||
"{actor} created to-do {todo} in list {calendar}" : "{actor} created to-do {todo} in list {calendar}",
|
||||
"You created to-do {todo} in list {calendar}" : "You created to-do {todo} in list {calendar}",
|
||||
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} deleted to-do {todo} from list {calendar}",
|
||||
"You deleted to-do {todo} from list {calendar}" : "You deleted to-do {todo} from list {calendar}",
|
||||
"{actor} updated to-do {todo} in list {calendar}" : "{actor} updated to-do {todo} in list {calendar}",
|
||||
"You updated to-do {todo} in list {calendar}" : "You updated to-do {todo} in list {calendar}",
|
||||
"{actor} solved to-do {todo} in list {calendar}" : "{actor} solved to-do {todo} in list {calendar}",
|
||||
"You solved to-do {todo} in list {calendar}" : "You solved to-do {todo} in list {calendar}",
|
||||
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} reopened to-do {todo} in list {calendar}",
|
||||
"You reopened to-do {todo} in list {calendar}" : "You reopened to-do {todo} in list {calendar}",
|
||||
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}",
|
||||
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}",
|
||||
"Calendar, contacts and tasks" : "Calendar, contacts and tasks",
|
||||
"A <strong>calendar</strong> was modified" : "A <strong>calendar</strong> was modified",
|
||||
"A calendar <strong>event</strong> was modified" : "A calendar <strong>event</strong> was modified",
|
||||
"A calendar <strong>to-do</strong> was modified" : "A calendar <strong>to-do</strong> was modified",
|
||||
"Contact birthdays" : "Contact birthdays",
|
||||
"Death of %s" : "Death of %s",
|
||||
"Calendar:" : "Calendar:",
|
||||
"Date:" : "Date:",
|
||||
"Where:" : "Where:",
|
||||
"Description:" : "Description:",
|
||||
"_%n year_::_%n years_" : ["%n year","%n years"],
|
||||
"_%n month_::_%n months_" : ["%n month","%n months"],
|
||||
"_%n day_::_%n days_" : ["%n day","%n days"],
|
||||
"_%n hour_::_%n hours_" : ["%n hour","%n hours"],
|
||||
"_%n minute_::_%n minutes_" : ["%n minute","%n minutes"],
|
||||
"%s (in %s)" : "%s (in %s)",
|
||||
"%s (%s ago)" : "%s (%s ago)",
|
||||
"Calendar: %s" : "Calendar: %s",
|
||||
"Date: %s" : "Date: %s",
|
||||
"Description: %s" : "Description: %s",
|
||||
"Where: %s" : "Where: %s",
|
||||
"%1$s via %2$s" : "%1$s via %2$s",
|
||||
"Cancelled: %1$s" : "Cancelled: %1$s",
|
||||
"Invitation canceled" : "Invitation canceled",
|
||||
"Re: %1$s" : "Re: %1$s",
|
||||
"Invitation updated" : "Invitation updated",
|
||||
"Invitation: %1$s" : "Invitation: %1$s",
|
||||
"Invitation" : "Invitation",
|
||||
"Title:" : "Title:",
|
||||
"Time:" : "Time:",
|
||||
"Location:" : "Location:",
|
||||
"Link:" : "Link:",
|
||||
"Organizer:" : "Organizer:",
|
||||
"Attendees:" : "Attendees:",
|
||||
"Accept" : "Accept",
|
||||
"Decline" : "Decline",
|
||||
"More options …" : "More options …",
|
||||
"More options at %s" : "More options at %s",
|
||||
"Contacts" : "Contacts",
|
||||
"{actor} created address book {addressbook}" : "{actor} created address book {addressbook}",
|
||||
"You created address book {addressbook}" : "You created address book {addressbook}",
|
||||
"{actor} deleted address book {addressbook}" : "{actor} deleted address book {addressbook}",
|
||||
"You deleted address book {addressbook}" : "You deleted address book {addressbook}",
|
||||
"{actor} updated address book {addressbook}" : "{actor} updated address book {addressbook}",
|
||||
"You updated address book {addressbook}" : "You updated address book {addressbook}",
|
||||
"{actor} shared address book {addressbook} with you" : "{actor} shared address book {addressbook} with you",
|
||||
"You shared address book {addressbook} with {user}" : "You shared address book {addressbook} with {user}",
|
||||
"{actor} shared address book {addressbook} with {user}" : "{actor} shared address book {addressbook} with {user}",
|
||||
"{actor} unshared address book {addressbook} from you" : "{actor} unshared address book {addressbook} from you",
|
||||
"You unshared address book {addressbook} from {user}" : "You unshared address book {addressbook} from {user}",
|
||||
"{actor} unshared address book {addressbook} from {user}" : "{actor} unshared address book {addressbook} from {user}",
|
||||
"{actor} unshared address book {addressbook} from themselves" : "{actor} unshared address book {addressbook} from themselves",
|
||||
"You shared address book {addressbook} with group {group}" : "You shared address book {addressbook} with group {group}",
|
||||
"{actor} shared address book {addressbook} with group {group}" : "{actor} shared address book {addressbook} with group {group}",
|
||||
"You unshared address book {addressbook} from group {group}" : "You unshared address book {addressbook} from group {group}",
|
||||
"{actor} unshared address book {addressbook} from group {group}" : "{actor} unshared address book {addressbook} from group {group}",
|
||||
"{actor} created contact {card} in address book {addressbook}" : "{actor} created contact {card} in address book {addressbook}",
|
||||
"You created contact {card} in address book {addressbook}" : "You created contact {card} in address book {addressbook}",
|
||||
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} deleted contact {card} from address book {addressbook}",
|
||||
"You deleted contact {card} from address book {addressbook}" : "You deleted contact {card} from address book {addressbook}",
|
||||
"{actor} updated contact {card} in address book {addressbook}" : "{actor} updated contact {card} in address book {addressbook}",
|
||||
"You updated contact {card} in address book {addressbook}" : "You updated contact {card} in address book {addressbook}",
|
||||
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "A <strong>contact</strong> or <strong>address book</strong> was modified",
|
||||
"File is not updatable: %1$s" : "File is not updatable: %1$s",
|
||||
"Could not write to final file, canceled by hook" : "Could not write to final file, canceled by hook",
|
||||
"Could not write file contents" : "Could not write file contents",
|
||||
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
|
||||
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Error while copying file to target location (copied: %1$s, expected filesize: %2$s)",
|
||||
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side.",
|
||||
"Could not rename part file to final file, canceled by hook" : "Could not rename part file to final file, canceled by hook",
|
||||
"Could not rename part file to final file" : "Could not rename part file to final file",
|
||||
"Failed to check file size: %1$s" : "Failed to check file size: %1$s",
|
||||
"Could not open file" : "Could not open file",
|
||||
"Encryption not ready: %1$s" : "Encryption not ready: %1$s",
|
||||
"Failed to open file: %1$s" : "Failed to open file: %1$s",
|
||||
"Failed to unlink: %1$s" : "Failed to unlink: %1$s",
|
||||
"Invalid chunk name" : "Invalid chunk name",
|
||||
"Could not rename part file assembled from chunks" : "Could not rename part file assembled from chunks",
|
||||
"Failed to write file contents: %1$s" : "Failed to write file contents: %1$s",
|
||||
"File not found: %1$s" : "File not found: %1$s",
|
||||
"System is in maintenance mode." : "System is in maintenance mode.",
|
||||
"Upgrade needed" : "Upgrade needed",
|
||||
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS.",
|
||||
"Configures a CalDAV account" : "Configures a CalDAV account",
|
||||
"Configures a CardDAV account" : "Configures a CardDAV account",
|
||||
"Events" : "Events",
|
||||
"Tasks" : "Tasks",
|
||||
"Untitled task" : "Untitled task",
|
||||
"Completed on %s" : "Completed on %s",
|
||||
"Due on %s by %s" : "Due on %s by %s",
|
||||
"Due on %s" : "Due on %s",
|
||||
"Migrated calendar (%1$s)" : "Migrated calendar (%1$s)",
|
||||
"Calendars including events, details and attendees" : "Calendars including events, details and attendees",
|
||||
"Contacts and groups" : "Contacts and groups",
|
||||
"WebDAV" : "WebDAV",
|
||||
"WebDAV endpoint" : "WebDAV endpoint",
|
||||
"Availability" : "Availability",
|
||||
"If you configure your working hours, other users will see when you are out of office when they book a meeting." : "If you configure your working hours, other users will see when you are out of office when they book a meeting.",
|
||||
"Time zone:" : "Time zone:",
|
||||
"to" : "to",
|
||||
"Delete slot" : "Delete slot",
|
||||
"No working hours set" : "No working hours set",
|
||||
"Add slot" : "Add slot",
|
||||
"Monday" : "Monday",
|
||||
"Tuesday" : "Tuesday",
|
||||
"Wednesday" : "Wednesday",
|
||||
"Thursday" : "Thursday",
|
||||
"Friday" : "Friday",
|
||||
"Saturday" : "Saturday",
|
||||
"Sunday" : "Sunday",
|
||||
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications.",
|
||||
"Save" : "Save",
|
||||
"Failed to load availability" : "Failed to load availability",
|
||||
"Saved availability" : "Saved availability",
|
||||
"Failed to save availability" : "Failed to save availability",
|
||||
"Calendar server" : "Calendar server",
|
||||
"Send invitations to attendees" : "Send invitations to attendees",
|
||||
"Automatically generate a birthday calendar" : "Automatically generate a birthday calendar",
|
||||
"Birthday calendars will be generated by a background job." : "Birthday calendars will be generated by a background job.",
|
||||
"Hence they will not be available immediately after enabling but will show up after some time." : "Hence they will not be available immediately after enabling but will show up after some time.",
|
||||
"Send notifications for events" : "Send notifications for events",
|
||||
"Notifications are sent via background jobs, so these must occur often enough." : "Notifications are sent via background jobs, so these must occur often enough.",
|
||||
"Send reminder notifications to calendar sharees as well" : "Send reminder notifications to calendar sharees as well",
|
||||
"Reminders are always sent to organizers and attendees." : "Reminders are always sent to organizers and attendees.",
|
||||
"Enable notifications for events via push" : "Enable notifications for events via push",
|
||||
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}.",
|
||||
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Please make sure to properly set up {emailopen}the email server{linkclose}.",
|
||||
"There was an error updating your attendance status." : "There was an error updating your attendance status.",
|
||||
"Please contact the organizer directly." : "Please contact the organizer directly.",
|
||||
"Are you accepting the invitation?" : "Are you accepting the invitation?",
|
||||
"Tentative" : "Tentative",
|
||||
"Number of guests" : "Number of guests",
|
||||
"Comment" : "Comment",
|
||||
"Your attendance was updated successfully." : "Your attendance was updated successfully.",
|
||||
"Todos" : "Todos",
|
||||
"{actor} created todo {todo} in list {calendar}" : "{actor} created todo {todo} in list {calendar}",
|
||||
"You created todo {todo} in list {calendar}" : "You created todo {todo} in list {calendar}",
|
||||
"{actor} deleted todo {todo} from list {calendar}" : "{actor} deleted todo {todo} from list {calendar}",
|
||||
@@ -40,30 +194,6 @@ OC.L10N.register(
|
||||
"You solved todo {todo} in list {calendar}" : "You solved todo {todo} in list {calendar}",
|
||||
"{actor} reopened todo {todo} in list {calendar}" : "{actor} reopened todo {todo} in list {calendar}",
|
||||
"You reopened todo {todo} in list {calendar}" : "You reopened todo {todo} in list {calendar}",
|
||||
"A <strong>calendar</strong> was modified" : "A <strong>calendar</strong> was modified",
|
||||
"A calendar <strong>event</strong> was modified" : "A calendar <strong>event</strong> was modified",
|
||||
"A calendar <strong>todo</strong> was modified" : "A calendar <strong>todo</strong> was modified",
|
||||
"Contact birthdays" : "Contact birthdays",
|
||||
"Where:" : "Where:",
|
||||
"Description:" : "Description:",
|
||||
"%1$s via %2$s" : "%1$s via %2$s",
|
||||
"Invitation canceled" : "Invitation canceled",
|
||||
"Invitation updated" : "Invitation updated",
|
||||
"Location:" : "Location:",
|
||||
"Link:" : "Link:",
|
||||
"Accept" : "Accept",
|
||||
"Decline" : "Decline",
|
||||
"Contacts" : "Contacts",
|
||||
"Tasks" : "Tasks",
|
||||
"WebDAV" : "WebDAV",
|
||||
"WebDAV endpoint" : "WebDAV endpoint",
|
||||
"Tentative" : "Tentative",
|
||||
"Save" : "Save",
|
||||
"Send invitations to attendees" : "Send invitations to attendees",
|
||||
"Automatically generate a birthday calendar" : "Automatically generate a birthday calendar",
|
||||
"Birthday calendars will be generated by a background job." : "Birthday calendars will be generated by a background job.",
|
||||
"Hence they will not be available immediately after enabling but will show up after some time." : "Hence they will not be available immediately after enabling but will show up after some time.",
|
||||
"Hello %s," : "Hello %s,",
|
||||
"When:" : "When:"
|
||||
"A calendar <strong>todo</strong> was modified" : "A calendar <strong>todo</strong> was modified"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
+156
-26
@@ -1,6 +1,6 @@
|
||||
{ "translations": {
|
||||
"Calendar" : "Calendar",
|
||||
"Todos" : "Todos",
|
||||
"To-dos" : "To-dos",
|
||||
"Personal" : "Personal",
|
||||
"{actor} created calendar {calendar}" : "{actor} created calendar {calendar}",
|
||||
"You created calendar {calendar}" : "You created calendar {calendar}",
|
||||
@@ -8,6 +8,8 @@
|
||||
"You deleted calendar {calendar}" : "You deleted calendar {calendar}",
|
||||
"{actor} updated calendar {calendar}" : "{actor} updated calendar {calendar}",
|
||||
"You updated calendar {calendar}" : "You updated calendar {calendar}",
|
||||
"{actor} restored calendar {calendar}" : "{actor} restored calendar {calendar}",
|
||||
"You restored calendar {calendar}" : "You restored calendar {calendar}",
|
||||
"You shared calendar {calendar} as public link" : "You shared calendar {calendar} as public link",
|
||||
"You removed public link for calendar {calendar}" : "You removed public link for calendar {calendar}",
|
||||
"{actor} shared calendar {calendar} with you" : "{actor} shared calendar {calendar} with you",
|
||||
@@ -21,13 +23,165 @@
|
||||
"{actor} shared calendar {calendar} with group {group}" : "{actor} shared calendar {calendar} with group {group}",
|
||||
"You unshared calendar {calendar} from group {group}" : "You unshared calendar {calendar} from group {group}",
|
||||
"{actor} unshared calendar {calendar} from group {group}" : "{actor} unshared calendar {calendar} from group {group}",
|
||||
"Untitled event" : "Untitled event",
|
||||
"{actor} created event {event} in calendar {calendar}" : "{actor} created event {event} in calendar {calendar}",
|
||||
"You created event {event} in calendar {calendar}" : "You created event {event} in calendar {calendar}",
|
||||
"{actor} deleted event {event} from calendar {calendar}" : "{actor} deleted event {event} from calendar {calendar}",
|
||||
"You deleted event {event} from calendar {calendar}" : "You deleted event {event} from calendar {calendar}",
|
||||
"{actor} updated event {event} in calendar {calendar}" : "{actor} updated event {event} in calendar {calendar}",
|
||||
"You updated event {event} in calendar {calendar}" : "You updated event {event} in calendar {calendar}",
|
||||
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}",
|
||||
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}",
|
||||
"{actor} restored event {event} of calendar {calendar}" : "{actor} restored event {event} of calendar {calendar}",
|
||||
"You restored event {event} of calendar {calendar}" : "You restored event {event} of calendar {calendar}",
|
||||
"Busy" : "Busy",
|
||||
"{actor} created to-do {todo} in list {calendar}" : "{actor} created to-do {todo} in list {calendar}",
|
||||
"You created to-do {todo} in list {calendar}" : "You created to-do {todo} in list {calendar}",
|
||||
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} deleted to-do {todo} from list {calendar}",
|
||||
"You deleted to-do {todo} from list {calendar}" : "You deleted to-do {todo} from list {calendar}",
|
||||
"{actor} updated to-do {todo} in list {calendar}" : "{actor} updated to-do {todo} in list {calendar}",
|
||||
"You updated to-do {todo} in list {calendar}" : "You updated to-do {todo} in list {calendar}",
|
||||
"{actor} solved to-do {todo} in list {calendar}" : "{actor} solved to-do {todo} in list {calendar}",
|
||||
"You solved to-do {todo} in list {calendar}" : "You solved to-do {todo} in list {calendar}",
|
||||
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} reopened to-do {todo} in list {calendar}",
|
||||
"You reopened to-do {todo} in list {calendar}" : "You reopened to-do {todo} in list {calendar}",
|
||||
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}",
|
||||
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}",
|
||||
"Calendar, contacts and tasks" : "Calendar, contacts and tasks",
|
||||
"A <strong>calendar</strong> was modified" : "A <strong>calendar</strong> was modified",
|
||||
"A calendar <strong>event</strong> was modified" : "A calendar <strong>event</strong> was modified",
|
||||
"A calendar <strong>to-do</strong> was modified" : "A calendar <strong>to-do</strong> was modified",
|
||||
"Contact birthdays" : "Contact birthdays",
|
||||
"Death of %s" : "Death of %s",
|
||||
"Calendar:" : "Calendar:",
|
||||
"Date:" : "Date:",
|
||||
"Where:" : "Where:",
|
||||
"Description:" : "Description:",
|
||||
"_%n year_::_%n years_" : ["%n year","%n years"],
|
||||
"_%n month_::_%n months_" : ["%n month","%n months"],
|
||||
"_%n day_::_%n days_" : ["%n day","%n days"],
|
||||
"_%n hour_::_%n hours_" : ["%n hour","%n hours"],
|
||||
"_%n minute_::_%n minutes_" : ["%n minute","%n minutes"],
|
||||
"%s (in %s)" : "%s (in %s)",
|
||||
"%s (%s ago)" : "%s (%s ago)",
|
||||
"Calendar: %s" : "Calendar: %s",
|
||||
"Date: %s" : "Date: %s",
|
||||
"Description: %s" : "Description: %s",
|
||||
"Where: %s" : "Where: %s",
|
||||
"%1$s via %2$s" : "%1$s via %2$s",
|
||||
"Cancelled: %1$s" : "Cancelled: %1$s",
|
||||
"Invitation canceled" : "Invitation canceled",
|
||||
"Re: %1$s" : "Re: %1$s",
|
||||
"Invitation updated" : "Invitation updated",
|
||||
"Invitation: %1$s" : "Invitation: %1$s",
|
||||
"Invitation" : "Invitation",
|
||||
"Title:" : "Title:",
|
||||
"Time:" : "Time:",
|
||||
"Location:" : "Location:",
|
||||
"Link:" : "Link:",
|
||||
"Organizer:" : "Organizer:",
|
||||
"Attendees:" : "Attendees:",
|
||||
"Accept" : "Accept",
|
||||
"Decline" : "Decline",
|
||||
"More options …" : "More options …",
|
||||
"More options at %s" : "More options at %s",
|
||||
"Contacts" : "Contacts",
|
||||
"{actor} created address book {addressbook}" : "{actor} created address book {addressbook}",
|
||||
"You created address book {addressbook}" : "You created address book {addressbook}",
|
||||
"{actor} deleted address book {addressbook}" : "{actor} deleted address book {addressbook}",
|
||||
"You deleted address book {addressbook}" : "You deleted address book {addressbook}",
|
||||
"{actor} updated address book {addressbook}" : "{actor} updated address book {addressbook}",
|
||||
"You updated address book {addressbook}" : "You updated address book {addressbook}",
|
||||
"{actor} shared address book {addressbook} with you" : "{actor} shared address book {addressbook} with you",
|
||||
"You shared address book {addressbook} with {user}" : "You shared address book {addressbook} with {user}",
|
||||
"{actor} shared address book {addressbook} with {user}" : "{actor} shared address book {addressbook} with {user}",
|
||||
"{actor} unshared address book {addressbook} from you" : "{actor} unshared address book {addressbook} from you",
|
||||
"You unshared address book {addressbook} from {user}" : "You unshared address book {addressbook} from {user}",
|
||||
"{actor} unshared address book {addressbook} from {user}" : "{actor} unshared address book {addressbook} from {user}",
|
||||
"{actor} unshared address book {addressbook} from themselves" : "{actor} unshared address book {addressbook} from themselves",
|
||||
"You shared address book {addressbook} with group {group}" : "You shared address book {addressbook} with group {group}",
|
||||
"{actor} shared address book {addressbook} with group {group}" : "{actor} shared address book {addressbook} with group {group}",
|
||||
"You unshared address book {addressbook} from group {group}" : "You unshared address book {addressbook} from group {group}",
|
||||
"{actor} unshared address book {addressbook} from group {group}" : "{actor} unshared address book {addressbook} from group {group}",
|
||||
"{actor} created contact {card} in address book {addressbook}" : "{actor} created contact {card} in address book {addressbook}",
|
||||
"You created contact {card} in address book {addressbook}" : "You created contact {card} in address book {addressbook}",
|
||||
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} deleted contact {card} from address book {addressbook}",
|
||||
"You deleted contact {card} from address book {addressbook}" : "You deleted contact {card} from address book {addressbook}",
|
||||
"{actor} updated contact {card} in address book {addressbook}" : "{actor} updated contact {card} in address book {addressbook}",
|
||||
"You updated contact {card} in address book {addressbook}" : "You updated contact {card} in address book {addressbook}",
|
||||
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "A <strong>contact</strong> or <strong>address book</strong> was modified",
|
||||
"File is not updatable: %1$s" : "File is not updatable: %1$s",
|
||||
"Could not write to final file, canceled by hook" : "Could not write to final file, canceled by hook",
|
||||
"Could not write file contents" : "Could not write file contents",
|
||||
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
|
||||
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Error while copying file to target location (copied: %1$s, expected filesize: %2$s)",
|
||||
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side.",
|
||||
"Could not rename part file to final file, canceled by hook" : "Could not rename part file to final file, canceled by hook",
|
||||
"Could not rename part file to final file" : "Could not rename part file to final file",
|
||||
"Failed to check file size: %1$s" : "Failed to check file size: %1$s",
|
||||
"Could not open file" : "Could not open file",
|
||||
"Encryption not ready: %1$s" : "Encryption not ready: %1$s",
|
||||
"Failed to open file: %1$s" : "Failed to open file: %1$s",
|
||||
"Failed to unlink: %1$s" : "Failed to unlink: %1$s",
|
||||
"Invalid chunk name" : "Invalid chunk name",
|
||||
"Could not rename part file assembled from chunks" : "Could not rename part file assembled from chunks",
|
||||
"Failed to write file contents: %1$s" : "Failed to write file contents: %1$s",
|
||||
"File not found: %1$s" : "File not found: %1$s",
|
||||
"System is in maintenance mode." : "System is in maintenance mode.",
|
||||
"Upgrade needed" : "Upgrade needed",
|
||||
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS.",
|
||||
"Configures a CalDAV account" : "Configures a CalDAV account",
|
||||
"Configures a CardDAV account" : "Configures a CardDAV account",
|
||||
"Events" : "Events",
|
||||
"Tasks" : "Tasks",
|
||||
"Untitled task" : "Untitled task",
|
||||
"Completed on %s" : "Completed on %s",
|
||||
"Due on %s by %s" : "Due on %s by %s",
|
||||
"Due on %s" : "Due on %s",
|
||||
"Migrated calendar (%1$s)" : "Migrated calendar (%1$s)",
|
||||
"Calendars including events, details and attendees" : "Calendars including events, details and attendees",
|
||||
"Contacts and groups" : "Contacts and groups",
|
||||
"WebDAV" : "WebDAV",
|
||||
"WebDAV endpoint" : "WebDAV endpoint",
|
||||
"Availability" : "Availability",
|
||||
"If you configure your working hours, other users will see when you are out of office when they book a meeting." : "If you configure your working hours, other users will see when you are out of office when they book a meeting.",
|
||||
"Time zone:" : "Time zone:",
|
||||
"to" : "to",
|
||||
"Delete slot" : "Delete slot",
|
||||
"No working hours set" : "No working hours set",
|
||||
"Add slot" : "Add slot",
|
||||
"Monday" : "Monday",
|
||||
"Tuesday" : "Tuesday",
|
||||
"Wednesday" : "Wednesday",
|
||||
"Thursday" : "Thursday",
|
||||
"Friday" : "Friday",
|
||||
"Saturday" : "Saturday",
|
||||
"Sunday" : "Sunday",
|
||||
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications.",
|
||||
"Save" : "Save",
|
||||
"Failed to load availability" : "Failed to load availability",
|
||||
"Saved availability" : "Saved availability",
|
||||
"Failed to save availability" : "Failed to save availability",
|
||||
"Calendar server" : "Calendar server",
|
||||
"Send invitations to attendees" : "Send invitations to attendees",
|
||||
"Automatically generate a birthday calendar" : "Automatically generate a birthday calendar",
|
||||
"Birthday calendars will be generated by a background job." : "Birthday calendars will be generated by a background job.",
|
||||
"Hence they will not be available immediately after enabling but will show up after some time." : "Hence they will not be available immediately after enabling but will show up after some time.",
|
||||
"Send notifications for events" : "Send notifications for events",
|
||||
"Notifications are sent via background jobs, so these must occur often enough." : "Notifications are sent via background jobs, so these must occur often enough.",
|
||||
"Send reminder notifications to calendar sharees as well" : "Send reminder notifications to calendar sharees as well",
|
||||
"Reminders are always sent to organizers and attendees." : "Reminders are always sent to organizers and attendees.",
|
||||
"Enable notifications for events via push" : "Enable notifications for events via push",
|
||||
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}.",
|
||||
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Please make sure to properly set up {emailopen}the email server{linkclose}.",
|
||||
"There was an error updating your attendance status." : "There was an error updating your attendance status.",
|
||||
"Please contact the organizer directly." : "Please contact the organizer directly.",
|
||||
"Are you accepting the invitation?" : "Are you accepting the invitation?",
|
||||
"Tentative" : "Tentative",
|
||||
"Number of guests" : "Number of guests",
|
||||
"Comment" : "Comment",
|
||||
"Your attendance was updated successfully." : "Your attendance was updated successfully.",
|
||||
"Todos" : "Todos",
|
||||
"{actor} created todo {todo} in list {calendar}" : "{actor} created todo {todo} in list {calendar}",
|
||||
"You created todo {todo} in list {calendar}" : "You created todo {todo} in list {calendar}",
|
||||
"{actor} deleted todo {todo} from list {calendar}" : "{actor} deleted todo {todo} from list {calendar}",
|
||||
@@ -38,30 +192,6 @@
|
||||
"You solved todo {todo} in list {calendar}" : "You solved todo {todo} in list {calendar}",
|
||||
"{actor} reopened todo {todo} in list {calendar}" : "{actor} reopened todo {todo} in list {calendar}",
|
||||
"You reopened todo {todo} in list {calendar}" : "You reopened todo {todo} in list {calendar}",
|
||||
"A <strong>calendar</strong> was modified" : "A <strong>calendar</strong> was modified",
|
||||
"A calendar <strong>event</strong> was modified" : "A calendar <strong>event</strong> was modified",
|
||||
"A calendar <strong>todo</strong> was modified" : "A calendar <strong>todo</strong> was modified",
|
||||
"Contact birthdays" : "Contact birthdays",
|
||||
"Where:" : "Where:",
|
||||
"Description:" : "Description:",
|
||||
"%1$s via %2$s" : "%1$s via %2$s",
|
||||
"Invitation canceled" : "Invitation canceled",
|
||||
"Invitation updated" : "Invitation updated",
|
||||
"Location:" : "Location:",
|
||||
"Link:" : "Link:",
|
||||
"Accept" : "Accept",
|
||||
"Decline" : "Decline",
|
||||
"Contacts" : "Contacts",
|
||||
"Tasks" : "Tasks",
|
||||
"WebDAV" : "WebDAV",
|
||||
"WebDAV endpoint" : "WebDAV endpoint",
|
||||
"Tentative" : "Tentative",
|
||||
"Save" : "Save",
|
||||
"Send invitations to attendees" : "Send invitations to attendees",
|
||||
"Automatically generate a birthday calendar" : "Automatically generate a birthday calendar",
|
||||
"Birthday calendars will be generated by a background job." : "Birthday calendars will be generated by a background job.",
|
||||
"Hence they will not be available immediately after enabling but will show up after some time." : "Hence they will not be available immediately after enabling but will show up after some time.",
|
||||
"Hello %s," : "Hello %s,",
|
||||
"When:" : "When:"
|
||||
"A calendar <strong>todo</strong> was modified" : "A calendar <strong>todo</strong> was modified"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -31,6 +31,7 @@ OC.L10N.register(
|
||||
"You deleted event {event} from calendar {calendar}" : "Poistit tapahtuman {event} kalenterista {calendar}",
|
||||
"{actor} updated event {event} in calendar {calendar}" : "{actor} päivitti tapahtuman {event} kalenteriin {calendar}",
|
||||
"You updated event {event} in calendar {calendar}" : "Päivitit tapahtuman {event} kalenteriin {calendar}",
|
||||
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Siirsit tapahtuman {event} kalenterista {sourceCalendar} kalenteriin {targetCalendar}",
|
||||
"Busy" : "Varattu",
|
||||
"Calendar, contacts and tasks" : "Kalenteri, yhteystiedot ja tehtävät",
|
||||
"A <strong>calendar</strong> was modified" : "<strong>Kalenteria</strong> on muokattu",
|
||||
@@ -77,8 +78,13 @@ OC.L10N.register(
|
||||
"{actor} shared address book {addressbook} with you" : "{actor} jakoi osoitekirjan {addressbook} kanssasi",
|
||||
"You shared address book {addressbook} with {user}" : "Jaoit osoitekirjan {addressbook} käyttäjän {user} kanssa",
|
||||
"{actor} shared address book {addressbook} with {user}" : "{actor} jakoi osoitekirjan {addressbook} käyttäjän {user} kanssa",
|
||||
"{actor} unshared address book {addressbook} from you" : "{actor} lopetti osoitekirjan {addressbook} jakamisen kanssasi",
|
||||
"You unshared address book {addressbook} from {user}" : "Lopetit osoitekirjan {addressbook} jakamisen käyttäjän {user} kanssa",
|
||||
"{actor} unshared address book {addressbook} from {user}" : "{actor} lopetti osoitekirjan {addressbook} jakamisen käyttäjän {user} kanssa",
|
||||
"You shared address book {addressbook} with group {group}" : "Jaoit osoitekirjan {addressbook} ryhmän {group} kanssa",
|
||||
"{actor} shared address book {addressbook} with group {group}" : "{actor} jakoi osoitekirjan {addressbook} ryhmän {group} kanssa",
|
||||
"You unshared address book {addressbook} from group {group}" : "Lopetit osoitekirjan {addressbook} jakamisen ryhmän {group} kanssa",
|
||||
"{actor} unshared address book {addressbook} from group {group}" : "{actor} lopetti osoitekirjan {addressbook} jakamisen ryhmän {group} kanssa",
|
||||
"{actor} created contact {card} in address book {addressbook}" : "{actor} loi yhteystiedon {card} osoitekirjaan {addressbook}",
|
||||
"You created contact {card} in address book {addressbook}" : "Loit yhteystiedon {card} osoitekirjaan {addressbook}",
|
||||
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} poisti yhteystiedon {card} osoitekirjasta {addressbook}",
|
||||
@@ -88,6 +94,7 @@ OC.L10N.register(
|
||||
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Yhteystietoa</strong> tai <strong>osoitekirjaa</strong> muokattiin",
|
||||
"File is not updatable: %1$s" : "Tiedosto ei ole päivitettävissä: %1$s",
|
||||
"_%n byte_::_%n bytes_" : ["%n tavu","%n tavua"],
|
||||
"Failed to check file size: %1$s" : "Tiedoston koon tarkistaminen epäonnistui: %1$s",
|
||||
"Could not open file" : "Tiedoston avaaminen ei onnistunut",
|
||||
"Encryption not ready: %1$s" : "Salaus ei ole valmis: %1$s",
|
||||
"Failed to open file: %1$s" : "Tiedoston avaaminen epäonnistui: %1$s",
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
"You deleted event {event} from calendar {calendar}" : "Poistit tapahtuman {event} kalenterista {calendar}",
|
||||
"{actor} updated event {event} in calendar {calendar}" : "{actor} päivitti tapahtuman {event} kalenteriin {calendar}",
|
||||
"You updated event {event} in calendar {calendar}" : "Päivitit tapahtuman {event} kalenteriin {calendar}",
|
||||
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Siirsit tapahtuman {event} kalenterista {sourceCalendar} kalenteriin {targetCalendar}",
|
||||
"Busy" : "Varattu",
|
||||
"Calendar, contacts and tasks" : "Kalenteri, yhteystiedot ja tehtävät",
|
||||
"A <strong>calendar</strong> was modified" : "<strong>Kalenteria</strong> on muokattu",
|
||||
@@ -75,8 +76,13 @@
|
||||
"{actor} shared address book {addressbook} with you" : "{actor} jakoi osoitekirjan {addressbook} kanssasi",
|
||||
"You shared address book {addressbook} with {user}" : "Jaoit osoitekirjan {addressbook} käyttäjän {user} kanssa",
|
||||
"{actor} shared address book {addressbook} with {user}" : "{actor} jakoi osoitekirjan {addressbook} käyttäjän {user} kanssa",
|
||||
"{actor} unshared address book {addressbook} from you" : "{actor} lopetti osoitekirjan {addressbook} jakamisen kanssasi",
|
||||
"You unshared address book {addressbook} from {user}" : "Lopetit osoitekirjan {addressbook} jakamisen käyttäjän {user} kanssa",
|
||||
"{actor} unshared address book {addressbook} from {user}" : "{actor} lopetti osoitekirjan {addressbook} jakamisen käyttäjän {user} kanssa",
|
||||
"You shared address book {addressbook} with group {group}" : "Jaoit osoitekirjan {addressbook} ryhmän {group} kanssa",
|
||||
"{actor} shared address book {addressbook} with group {group}" : "{actor} jakoi osoitekirjan {addressbook} ryhmän {group} kanssa",
|
||||
"You unshared address book {addressbook} from group {group}" : "Lopetit osoitekirjan {addressbook} jakamisen ryhmän {group} kanssa",
|
||||
"{actor} unshared address book {addressbook} from group {group}" : "{actor} lopetti osoitekirjan {addressbook} jakamisen ryhmän {group} kanssa",
|
||||
"{actor} created contact {card} in address book {addressbook}" : "{actor} loi yhteystiedon {card} osoitekirjaan {addressbook}",
|
||||
"You created contact {card} in address book {addressbook}" : "Loit yhteystiedon {card} osoitekirjaan {addressbook}",
|
||||
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} poisti yhteystiedon {card} osoitekirjasta {addressbook}",
|
||||
@@ -86,6 +92,7 @@
|
||||
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Yhteystietoa</strong> tai <strong>osoitekirjaa</strong> muokattiin",
|
||||
"File is not updatable: %1$s" : "Tiedosto ei ole päivitettävissä: %1$s",
|
||||
"_%n byte_::_%n bytes_" : ["%n tavu","%n tavua"],
|
||||
"Failed to check file size: %1$s" : "Tiedoston koon tarkistaminen epäonnistui: %1$s",
|
||||
"Could not open file" : "Tiedoston avaaminen ei onnistunut",
|
||||
"Encryption not ready: %1$s" : "Salaus ei ole valmis: %1$s",
|
||||
"Failed to open file: %1$s" : "Tiedoston avaaminen epäonnistui: %1$s",
|
||||
|
||||
+21
-1
@@ -2,6 +2,7 @@ OC.L10N.register(
|
||||
"dav",
|
||||
{
|
||||
"Calendar" : "Agenda",
|
||||
"To-dos" : "Pense-bêtes",
|
||||
"Personal" : "Personnel",
|
||||
"{actor} created calendar {calendar}" : "{actor} a créé l'agenda {calendar}",
|
||||
"You created calendar {calendar}" : "Vous avez créé l'agenda {calendar}",
|
||||
@@ -31,12 +32,27 @@ OC.L10N.register(
|
||||
"You deleted event {event} from calendar {calendar}" : "Vous avez supprimé l'évènement {event} de l'agenda {calendar}",
|
||||
"{actor} updated event {event} in calendar {calendar}" : "{actor} a mis à jour l'évènement {event} dans l'agenda {calendar}",
|
||||
"You updated event {event} in calendar {calendar}" : "Vous avez mis à jour l'évènement {event} dans l'agenda {calendar}",
|
||||
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} a déplacé l'événement {event} du calendrier {sourceCalendar} au calendrier {targetCalendar}",
|
||||
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Vous avez déplacé l'événement {event} du calendrier {sourceCalendar} au calendrier {targetCalendar}",
|
||||
"{actor} restored event {event} of calendar {calendar}" : "{actor} a restauré l'événement {event} dans l'agenda {calendar}",
|
||||
"You restored event {event} of calendar {calendar}" : "Vous avez restauré l'événement {event} dans l'agenda {calendar}",
|
||||
"Busy" : "Occupé",
|
||||
"{actor} created to-do {todo} in list {calendar}" : "{actor} a créé le pense-bête {todo} dans la liste {calendar}",
|
||||
"You created to-do {todo} in list {calendar}" : "Vous avez créé un pense-bête {todo} dans la liste {calendar}",
|
||||
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} a supprimé un pense-bête {todo} de la liste {calendar}",
|
||||
"You deleted to-do {todo} from list {calendar}" : "Vous avez supprimé le pense-bête {todo} de la liste {calendar}",
|
||||
"{actor} updated to-do {todo} in list {calendar}" : "{actor} a mis à jour le pense-bête {todo} dans la liste {calendar}",
|
||||
"You updated to-do {todo} in list {calendar}" : "Vous avez mis à jour le pense-bête {todo} dans la liste {calendar}",
|
||||
"{actor} solved to-do {todo} in list {calendar}" : "{actor} a résolu le pense-bête {todo} dans la liste {calendar}",
|
||||
"You solved to-do {todo} in list {calendar}" : "Vous avez résolu le pense-bête {todo} dans la liste {calendar}",
|
||||
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} a réouvert le pense-bête {todo} dans la liste {calendar}",
|
||||
"You reopened to-do {todo} in list {calendar}" : "Vous avez réouvert le pense-bête {todo} dans la liste {calendar}",
|
||||
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} a déplacé le pense-bête {todo} de la liste {sourceCalendar} à la liste {targetCalendar}",
|
||||
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Vous avez déplacé le pense-bête {todo} de la liste {sourceCalendar} à la liste {targetCalendar}",
|
||||
"Calendar, contacts and tasks" : "Agenda, contacts et tâches",
|
||||
"A <strong>calendar</strong> was modified" : "Un <strong>agenda</strong> a été modifié",
|
||||
"A calendar <strong>event</strong> was modified" : "Un <strong>événement</strong> de l'agenda a été modifié",
|
||||
"A calendar <strong>to-do</strong> was modified" : "Un calendrier <strong>de tâches</strong> a été modifié",
|
||||
"Contact birthdays" : "Anniversaires des contacts",
|
||||
"Death of %s" : "Mort de %s",
|
||||
"Calendar:" : "Agenda:",
|
||||
@@ -143,7 +159,11 @@ OC.L10N.register(
|
||||
"Friday" : "Vendredi",
|
||||
"Saturday" : "Samedi",
|
||||
"Sunday" : "Dimanche",
|
||||
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Définir automatiquement le statut \"Ne pas déranger\" en dehors des heures de disponibilité pour désactiver toutes les notifications.",
|
||||
"Save" : "Enregistrer",
|
||||
"Failed to load availability" : "Impossible de charger la disponibilité",
|
||||
"Saved availability" : "Disponibilité sauvegardée",
|
||||
"Failed to save availability" : "Impossible de sauvegarder la disponibilité",
|
||||
"Calendar server" : "Serveur de calendrier",
|
||||
"Send invitations to attendees" : "Envoyer des invitations aux participants",
|
||||
"Automatically generate a birthday calendar" : "Générer automatiquement un agenda d'anniversaire",
|
||||
@@ -155,7 +175,7 @@ OC.L10N.register(
|
||||
"Reminders are always sent to organizers and attendees." : "Des rappels sont toujours envoyés aux organisateurs et aux participants.",
|
||||
"Enable notifications for events via push" : "Activer les notifications push pour les évènements",
|
||||
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Installer aussi {calendarappstoreopen}l'application Calendrier{linkclose}, ou {calendardocopen}connecter à votre PC & téléphone pour synchroniser ↗{linkclose}.",
|
||||
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Merci de vérifier d'avoir correctement configuré {emailopen}le serveur de courriel{linkclose}.",
|
||||
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Merci de vérifier d'avoir correctement configuré {emailopen}le serveur de messagerie{linkclose}.",
|
||||
"There was an error updating your attendance status." : "Une erreur s'est produite lors de la mise à jour de votre statut de présence.",
|
||||
"Please contact the organizer directly." : "Merci de contacter l'organisateur directement.",
|
||||
"Are you accepting the invitation?" : "Acceptez-vous l'invitation ?",
|
||||
|
||||
+21
-1
@@ -1,5 +1,6 @@
|
||||
{ "translations": {
|
||||
"Calendar" : "Agenda",
|
||||
"To-dos" : "Pense-bêtes",
|
||||
"Personal" : "Personnel",
|
||||
"{actor} created calendar {calendar}" : "{actor} a créé l'agenda {calendar}",
|
||||
"You created calendar {calendar}" : "Vous avez créé l'agenda {calendar}",
|
||||
@@ -29,12 +30,27 @@
|
||||
"You deleted event {event} from calendar {calendar}" : "Vous avez supprimé l'évènement {event} de l'agenda {calendar}",
|
||||
"{actor} updated event {event} in calendar {calendar}" : "{actor} a mis à jour l'évènement {event} dans l'agenda {calendar}",
|
||||
"You updated event {event} in calendar {calendar}" : "Vous avez mis à jour l'évènement {event} dans l'agenda {calendar}",
|
||||
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} a déplacé l'événement {event} du calendrier {sourceCalendar} au calendrier {targetCalendar}",
|
||||
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Vous avez déplacé l'événement {event} du calendrier {sourceCalendar} au calendrier {targetCalendar}",
|
||||
"{actor} restored event {event} of calendar {calendar}" : "{actor} a restauré l'événement {event} dans l'agenda {calendar}",
|
||||
"You restored event {event} of calendar {calendar}" : "Vous avez restauré l'événement {event} dans l'agenda {calendar}",
|
||||
"Busy" : "Occupé",
|
||||
"{actor} created to-do {todo} in list {calendar}" : "{actor} a créé le pense-bête {todo} dans la liste {calendar}",
|
||||
"You created to-do {todo} in list {calendar}" : "Vous avez créé un pense-bête {todo} dans la liste {calendar}",
|
||||
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} a supprimé un pense-bête {todo} de la liste {calendar}",
|
||||
"You deleted to-do {todo} from list {calendar}" : "Vous avez supprimé le pense-bête {todo} de la liste {calendar}",
|
||||
"{actor} updated to-do {todo} in list {calendar}" : "{actor} a mis à jour le pense-bête {todo} dans la liste {calendar}",
|
||||
"You updated to-do {todo} in list {calendar}" : "Vous avez mis à jour le pense-bête {todo} dans la liste {calendar}",
|
||||
"{actor} solved to-do {todo} in list {calendar}" : "{actor} a résolu le pense-bête {todo} dans la liste {calendar}",
|
||||
"You solved to-do {todo} in list {calendar}" : "Vous avez résolu le pense-bête {todo} dans la liste {calendar}",
|
||||
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} a réouvert le pense-bête {todo} dans la liste {calendar}",
|
||||
"You reopened to-do {todo} in list {calendar}" : "Vous avez réouvert le pense-bête {todo} dans la liste {calendar}",
|
||||
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} a déplacé le pense-bête {todo} de la liste {sourceCalendar} à la liste {targetCalendar}",
|
||||
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Vous avez déplacé le pense-bête {todo} de la liste {sourceCalendar} à la liste {targetCalendar}",
|
||||
"Calendar, contacts and tasks" : "Agenda, contacts et tâches",
|
||||
"A <strong>calendar</strong> was modified" : "Un <strong>agenda</strong> a été modifié",
|
||||
"A calendar <strong>event</strong> was modified" : "Un <strong>événement</strong> de l'agenda a été modifié",
|
||||
"A calendar <strong>to-do</strong> was modified" : "Un calendrier <strong>de tâches</strong> a été modifié",
|
||||
"Contact birthdays" : "Anniversaires des contacts",
|
||||
"Death of %s" : "Mort de %s",
|
||||
"Calendar:" : "Agenda:",
|
||||
@@ -141,7 +157,11 @@
|
||||
"Friday" : "Vendredi",
|
||||
"Saturday" : "Samedi",
|
||||
"Sunday" : "Dimanche",
|
||||
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Définir automatiquement le statut \"Ne pas déranger\" en dehors des heures de disponibilité pour désactiver toutes les notifications.",
|
||||
"Save" : "Enregistrer",
|
||||
"Failed to load availability" : "Impossible de charger la disponibilité",
|
||||
"Saved availability" : "Disponibilité sauvegardée",
|
||||
"Failed to save availability" : "Impossible de sauvegarder la disponibilité",
|
||||
"Calendar server" : "Serveur de calendrier",
|
||||
"Send invitations to attendees" : "Envoyer des invitations aux participants",
|
||||
"Automatically generate a birthday calendar" : "Générer automatiquement un agenda d'anniversaire",
|
||||
@@ -153,7 +173,7 @@
|
||||
"Reminders are always sent to organizers and attendees." : "Des rappels sont toujours envoyés aux organisateurs et aux participants.",
|
||||
"Enable notifications for events via push" : "Activer les notifications push pour les évènements",
|
||||
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Installer aussi {calendarappstoreopen}l'application Calendrier{linkclose}, ou {calendardocopen}connecter à votre PC & téléphone pour synchroniser ↗{linkclose}.",
|
||||
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Merci de vérifier d'avoir correctement configuré {emailopen}le serveur de courriel{linkclose}.",
|
||||
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Merci de vérifier d'avoir correctement configuré {emailopen}le serveur de messagerie{linkclose}.",
|
||||
"There was an error updating your attendance status." : "Une erreur s'est produite lors de la mise à jour de votre statut de présence.",
|
||||
"Please contact the organizer directly." : "Merci de contacter l'organisateur directement.",
|
||||
"Are you accepting the invitation?" : "Acceptez-vous l'invitation ?",
|
||||
|
||||
@@ -77,6 +77,7 @@ OC.L10N.register(
|
||||
"Contacts and groups" : "Contactos e grupos",
|
||||
"WebDAV" : "WebDAV",
|
||||
"WebDAV endpoint" : "Terminación WebDAV",
|
||||
"Availability" : "Dispoñibilidade",
|
||||
"to" : "para",
|
||||
"Monday" : "luns",
|
||||
"Tuesday" : "martes",
|
||||
|
||||
@@ -75,6 +75,7 @@
|
||||
"Contacts and groups" : "Contactos e grupos",
|
||||
"WebDAV" : "WebDAV",
|
||||
"WebDAV endpoint" : "Terminación WebDAV",
|
||||
"Availability" : "Dispoñibilidade",
|
||||
"to" : "para",
|
||||
"Monday" : "luns",
|
||||
"Tuesday" : "martes",
|
||||
|
||||
@@ -2,6 +2,7 @@ OC.L10N.register(
|
||||
"dav",
|
||||
{
|
||||
"Calendar" : "カレンダー",
|
||||
"To-dos" : "To-dos",
|
||||
"Personal" : "個人",
|
||||
"{actor} created calendar {calendar}" : "{actor}はカレンダー {calendar} を作成しました",
|
||||
"You created calendar {calendar}" : "カレンダー {calendar} を作成しました",
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{ "translations": {
|
||||
"Calendar" : "カレンダー",
|
||||
"To-dos" : "To-dos",
|
||||
"Personal" : "個人",
|
||||
"{actor} created calendar {calendar}" : "{actor}はカレンダー {calendar} を作成しました",
|
||||
"You created calendar {calendar}" : "カレンダー {calendar} を作成しました",
|
||||
|
||||
@@ -100,8 +100,11 @@ OC.L10N.register(
|
||||
"You unshared address book {addressbook} from {user}" : "Не го споделиувате адресар {addressbook} со {user}",
|
||||
"{actor} unshared address book {addressbook} from {user}" : "{actor} не го споделува адресар {addressbook} со {user}",
|
||||
"{actor} unshared address book {addressbook} from themselves" : "{actor} не го споделува адресар {addressbook} со себе",
|
||||
"You shared address book {addressbook} with group {group}" : "Споделивте адресар {addressbook} со група {group}",
|
||||
"{actor} shared address book {addressbook} with group {group}" : "{actor} сподели адресар {addressbook} со група {group}",
|
||||
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Контракт</strong> или <strong>адресар</strong> е променет",
|
||||
"_%n byte_::_%n bytes_" : ["%n бајт","%n бајти"],
|
||||
"Could not open file" : "Неможе да се отвори датотеката",
|
||||
"File not found: %1$s" : "Датотеката не е пронајдена: %1$s",
|
||||
"System is in maintenance mode." : "Системот е во мод за одржување.",
|
||||
"Upgrade needed" : "Потребна е надградба",
|
||||
|
||||
@@ -98,8 +98,11 @@
|
||||
"You unshared address book {addressbook} from {user}" : "Не го споделиувате адресар {addressbook} со {user}",
|
||||
"{actor} unshared address book {addressbook} from {user}" : "{actor} не го споделува адресар {addressbook} со {user}",
|
||||
"{actor} unshared address book {addressbook} from themselves" : "{actor} не го споделува адресар {addressbook} со себе",
|
||||
"You shared address book {addressbook} with group {group}" : "Споделивте адресар {addressbook} со група {group}",
|
||||
"{actor} shared address book {addressbook} with group {group}" : "{actor} сподели адресар {addressbook} со група {group}",
|
||||
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Контракт</strong> или <strong>адресар</strong> е променет",
|
||||
"_%n byte_::_%n bytes_" : ["%n бајт","%n бајти"],
|
||||
"Could not open file" : "Неможе да се отвори датотеката",
|
||||
"File not found: %1$s" : "Датотеката не е пронајдена: %1$s",
|
||||
"System is in maintenance mode." : "Системот е во мод за одржување.",
|
||||
"Upgrade needed" : "Потребна е надградба",
|
||||
|
||||
@@ -2,6 +2,7 @@ OC.L10N.register(
|
||||
"dav",
|
||||
{
|
||||
"Calendar" : "Kalendár",
|
||||
"To-dos" : "Úlohy",
|
||||
"Personal" : "Osobné",
|
||||
"{actor} created calendar {calendar}" : "[actor] vytvoril kalendár [calendar]",
|
||||
"You created calendar {calendar}" : "Vytvorili ste kalendár {calendar}",
|
||||
@@ -31,12 +32,27 @@ OC.L10N.register(
|
||||
"You deleted event {event} from calendar {calendar}" : "Zmazali ste udalosť {event} z kalendára {calendar}",
|
||||
"{actor} updated event {event} in calendar {calendar}" : "{actor} aktualizoval udalosť {event} v kalendári {calendar}",
|
||||
"You updated event {event} in calendar {calendar}" : "Aktualizovali ste udalosť {event} v kalendári {calendar}",
|
||||
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} presunul udalosť {event} z kalendára {sourceCalendar} do kalendára {targetCalendar}",
|
||||
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Presunuli ste udalosť {event} z kalendára {sourceCalendar} do kalendára {targetCalendar}",
|
||||
"{actor} restored event {event} of calendar {calendar}" : "{actor} obnovil udalosť {event} v kalendári {calendar}",
|
||||
"You restored event {event} of calendar {calendar}" : "Obnovili ste udalosť {event} v kalendári {calendar}",
|
||||
"Busy" : "Zaneprázdnený",
|
||||
"{actor} created to-do {todo} in list {calendar}" : "{actor} vytvoril úlohu {todo} v zozname {calendar}",
|
||||
"You created to-do {todo} in list {calendar}" : "Vytvorili ste úlohu {todo} v zozname {calendar}",
|
||||
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} zmazal úlohu {todo} zo zoznamu {calendar}",
|
||||
"You deleted to-do {todo} from list {calendar}" : "Zmazali ste úlohu {todo} zo zoznamu {calendar}",
|
||||
"{actor} updated to-do {todo} in list {calendar}" : "{actor} upravil úlohu {todo} v zozname {calendar}",
|
||||
"You updated to-do {todo} in list {calendar}" : "Upravili ste úlohu {todo} v zozname {calendar}",
|
||||
"{actor} solved to-do {todo} in list {calendar}" : "{actor} vyriešil úlohu {todo} v zozname {calendar}",
|
||||
"You solved to-do {todo} in list {calendar}" : "Vyriešili ste úlohu {todo} v zozname {calendar}",
|
||||
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} znovu otvoril úlohu {todo} v zozname {calendar}",
|
||||
"You reopened to-do {todo} in list {calendar}" : "Otvorili ste znovu úlohu {todo} v zozname {calendar}",
|
||||
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} presunul udalosť {event} zo zoznamu {sourceCalendar} do zoznamu {targetCalendar}",
|
||||
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Presunuli ste udalosť {event} zo zoznamu {sourceCalendar} do zoznamu {targetCalendar}",
|
||||
"Calendar, contacts and tasks" : "Kalendár, kontakty a úlohy",
|
||||
"A <strong>calendar</strong> was modified" : "<strong>kalendár</strong> bol upravený",
|
||||
"A calendar <strong>event</strong> was modified" : "<strong>Udalosť</strong> v kalendári bola upravená",
|
||||
"A calendar <strong>to-do</strong> was modified" : "Kalendár <strong>úloh</strong> bol upravený",
|
||||
"Contact birthdays" : "Narodeniny kontaktu",
|
||||
"Death of %s" : "Dátum úmrtia %s",
|
||||
"Calendar:" : "Kalendár:",
|
||||
@@ -143,6 +159,7 @@ OC.L10N.register(
|
||||
"Friday" : "Piatok",
|
||||
"Saturday" : "Sobota",
|
||||
"Sunday" : "Nedeľa",
|
||||
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Automaticky nastaviť stav používateľa na „Nerušiť“ ak nie ste dostupný, pre stlmenie všetkých upozornení.",
|
||||
"Save" : "Uložiť",
|
||||
"Failed to load availability" : "Nepodarilo sa načítať dostupnosť",
|
||||
"Saved availability" : "Dostupnosť bola uložená",
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{ "translations": {
|
||||
"Calendar" : "Kalendár",
|
||||
"To-dos" : "Úlohy",
|
||||
"Personal" : "Osobné",
|
||||
"{actor} created calendar {calendar}" : "[actor] vytvoril kalendár [calendar]",
|
||||
"You created calendar {calendar}" : "Vytvorili ste kalendár {calendar}",
|
||||
@@ -29,12 +30,27 @@
|
||||
"You deleted event {event} from calendar {calendar}" : "Zmazali ste udalosť {event} z kalendára {calendar}",
|
||||
"{actor} updated event {event} in calendar {calendar}" : "{actor} aktualizoval udalosť {event} v kalendári {calendar}",
|
||||
"You updated event {event} in calendar {calendar}" : "Aktualizovali ste udalosť {event} v kalendári {calendar}",
|
||||
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} presunul udalosť {event} z kalendára {sourceCalendar} do kalendára {targetCalendar}",
|
||||
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Presunuli ste udalosť {event} z kalendára {sourceCalendar} do kalendára {targetCalendar}",
|
||||
"{actor} restored event {event} of calendar {calendar}" : "{actor} obnovil udalosť {event} v kalendári {calendar}",
|
||||
"You restored event {event} of calendar {calendar}" : "Obnovili ste udalosť {event} v kalendári {calendar}",
|
||||
"Busy" : "Zaneprázdnený",
|
||||
"{actor} created to-do {todo} in list {calendar}" : "{actor} vytvoril úlohu {todo} v zozname {calendar}",
|
||||
"You created to-do {todo} in list {calendar}" : "Vytvorili ste úlohu {todo} v zozname {calendar}",
|
||||
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} zmazal úlohu {todo} zo zoznamu {calendar}",
|
||||
"You deleted to-do {todo} from list {calendar}" : "Zmazali ste úlohu {todo} zo zoznamu {calendar}",
|
||||
"{actor} updated to-do {todo} in list {calendar}" : "{actor} upravil úlohu {todo} v zozname {calendar}",
|
||||
"You updated to-do {todo} in list {calendar}" : "Upravili ste úlohu {todo} v zozname {calendar}",
|
||||
"{actor} solved to-do {todo} in list {calendar}" : "{actor} vyriešil úlohu {todo} v zozname {calendar}",
|
||||
"You solved to-do {todo} in list {calendar}" : "Vyriešili ste úlohu {todo} v zozname {calendar}",
|
||||
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} znovu otvoril úlohu {todo} v zozname {calendar}",
|
||||
"You reopened to-do {todo} in list {calendar}" : "Otvorili ste znovu úlohu {todo} v zozname {calendar}",
|
||||
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} presunul udalosť {event} zo zoznamu {sourceCalendar} do zoznamu {targetCalendar}",
|
||||
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Presunuli ste udalosť {event} zo zoznamu {sourceCalendar} do zoznamu {targetCalendar}",
|
||||
"Calendar, contacts and tasks" : "Kalendár, kontakty a úlohy",
|
||||
"A <strong>calendar</strong> was modified" : "<strong>kalendár</strong> bol upravený",
|
||||
"A calendar <strong>event</strong> was modified" : "<strong>Udalosť</strong> v kalendári bola upravená",
|
||||
"A calendar <strong>to-do</strong> was modified" : "Kalendár <strong>úloh</strong> bol upravený",
|
||||
"Contact birthdays" : "Narodeniny kontaktu",
|
||||
"Death of %s" : "Dátum úmrtia %s",
|
||||
"Calendar:" : "Kalendár:",
|
||||
@@ -141,6 +157,7 @@
|
||||
"Friday" : "Piatok",
|
||||
"Saturday" : "Sobota",
|
||||
"Sunday" : "Nedeľa",
|
||||
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Automaticky nastaviť stav používateľa na „Nerušiť“ ak nie ste dostupný, pre stlmenie všetkých upozornení.",
|
||||
"Save" : "Uložiť",
|
||||
"Failed to load availability" : "Nepodarilo sa načítať dostupnosť",
|
||||
"Saved availability" : "Dostupnosť bola uložená",
|
||||
|
||||
@@ -114,6 +114,7 @@ OC.L10N.register(
|
||||
"If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Om du konfigurerar dina arbetstimmar kan andra användare se när du inte är på jobbet när de bokar ett möte.",
|
||||
"Time zone:" : "Tidszon:",
|
||||
"to" : "till",
|
||||
"Delete slot" : "Radera lucka",
|
||||
"No working hours set" : "Inga arbetstimmar satta",
|
||||
"Monday" : "Måndag",
|
||||
"Tuesday" : "Tisdag",
|
||||
|
||||
@@ -112,6 +112,7 @@
|
||||
"If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Om du konfigurerar dina arbetstimmar kan andra användare se när du inte är på jobbet när de bokar ett möte.",
|
||||
"Time zone:" : "Tidszon:",
|
||||
"to" : "till",
|
||||
"Delete slot" : "Radera lucka",
|
||||
"No working hours set" : "Inga arbetstimmar satta",
|
||||
"Monday" : "Måndag",
|
||||
"Tuesday" : "Tisdag",
|
||||
|
||||
+2
-2
@@ -25,7 +25,7 @@ OC.L10N.register(
|
||||
"{actor} shared calendar {calendar} with group {group}" : "{actor}, {calendar} takvimini {group} grubu ile paylaştı",
|
||||
"You unshared calendar {calendar} from group {group}" : "{calendar} takviminin {group} grubu ile paylaşımını kaldırdınız",
|
||||
"{actor} unshared calendar {calendar} from group {group}" : "{actor}, {calendar} takviminin {group} grubu ile paylaşımını kaldırdı",
|
||||
"Untitled event" : "Adsız etkinlik",
|
||||
"Untitled event" : "Adlandırılmamış etkinlik",
|
||||
"{actor} created event {event} in calendar {calendar}" : "{actor}, {calendar} takvimine {event} etkinliğini ekledi",
|
||||
"You created event {event} in calendar {calendar}" : "{calendar} takvimine {event} etkinliğini eklediniz",
|
||||
"{actor} deleted event {event} from calendar {calendar}" : "{actor}, {calendar} takviminden {event} etkinliğini sildi",
|
||||
@@ -136,7 +136,7 @@ OC.L10N.register(
|
||||
"Configures a CardDAV account" : "Bir CardDAV hesabı yapılandırır",
|
||||
"Events" : "Etkinlikler",
|
||||
"Tasks" : "Görevler",
|
||||
"Untitled task" : "Adsız görev",
|
||||
"Untitled task" : "Adlandırılmamış görev",
|
||||
"Completed on %s" : "%s tarihinde tamamlandı",
|
||||
"Due on %s by %s" : "%s tarihine kadar %s tarafından",
|
||||
"Due on %s" : "%s tarihine kadar",
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"{actor} shared calendar {calendar} with group {group}" : "{actor}, {calendar} takvimini {group} grubu ile paylaştı",
|
||||
"You unshared calendar {calendar} from group {group}" : "{calendar} takviminin {group} grubu ile paylaşımını kaldırdınız",
|
||||
"{actor} unshared calendar {calendar} from group {group}" : "{actor}, {calendar} takviminin {group} grubu ile paylaşımını kaldırdı",
|
||||
"Untitled event" : "Adsız etkinlik",
|
||||
"Untitled event" : "Adlandırılmamış etkinlik",
|
||||
"{actor} created event {event} in calendar {calendar}" : "{actor}, {calendar} takvimine {event} etkinliğini ekledi",
|
||||
"You created event {event} in calendar {calendar}" : "{calendar} takvimine {event} etkinliğini eklediniz",
|
||||
"{actor} deleted event {event} from calendar {calendar}" : "{actor}, {calendar} takviminden {event} etkinliğini sildi",
|
||||
@@ -134,7 +134,7 @@
|
||||
"Configures a CardDAV account" : "Bir CardDAV hesabı yapılandırır",
|
||||
"Events" : "Etkinlikler",
|
||||
"Tasks" : "Görevler",
|
||||
"Untitled task" : "Adsız görev",
|
||||
"Untitled task" : "Adlandırılmamış görev",
|
||||
"Completed on %s" : "%s tarihinde tamamlandı",
|
||||
"Due on %s by %s" : "%s tarihine kadar %s tarafından",
|
||||
"Due on %s" : "%s tarihine kadar",
|
||||
|
||||
+92
-1
@@ -2,6 +2,7 @@ OC.L10N.register(
|
||||
"dav",
|
||||
{
|
||||
"Calendar" : "Календар",
|
||||
"To-dos" : "Справи",
|
||||
"Personal" : "Особисте",
|
||||
"{actor} created calendar {calendar}" : "{actor} створив календар {calendar}",
|
||||
"You created calendar {calendar}" : "Ви створили календар {calendar}",
|
||||
@@ -9,6 +10,8 @@ OC.L10N.register(
|
||||
"You deleted calendar {calendar}" : "Ви вилучили календар {calendar}",
|
||||
"{actor} updated calendar {calendar}" : "{actor} оновив календар {calendar}",
|
||||
"You updated calendar {calendar}" : "Ви оновили календар {calendar}",
|
||||
"{actor} restored calendar {calendar}" : "{actor} відновив календар {calendar}",
|
||||
"You restored calendar {calendar}" : "Ви відновили календар {calendar}",
|
||||
"You shared calendar {calendar} as public link" : "Ви поширили календар {calendar} як публічне посилання",
|
||||
"You removed public link for calendar {calendar}" : "Ви вилучили публічне посилання на календар {calendar}",
|
||||
"{actor} shared calendar {calendar} with you" : "{actor} поширив календар {calendar} з вами",
|
||||
@@ -29,9 +32,27 @@ OC.L10N.register(
|
||||
"You deleted event {event} from calendar {calendar}" : "Ви вилучили подію {event} з календаря {calendar}",
|
||||
"{actor} updated event {event} in calendar {calendar}" : "{actor} оновив подію {event} у календарі {calendar}",
|
||||
"You updated event {event} in calendar {calendar}" : "Ви оновили подію {event} у календарі {calendar}",
|
||||
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} перемістив подію {event} з календаря {sourceCalendar} до календаря {targetCalendar}",
|
||||
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Ви перемістили подію {event} з календаря {sourceCalendar} до календаря {targetCalendar}",
|
||||
"{actor} restored event {event} of calendar {calendar}" : "{actor} відновив подію {event} календаря {calendar}",
|
||||
"You restored event {event} of calendar {calendar}" : "Ви відновили подію {event} календаря {calendar}",
|
||||
"Busy" : "Зайнято",
|
||||
"{actor} created to-do {todo} in list {calendar}" : "{actor} створив завдання {todo} у списку {calendar}",
|
||||
"You created to-do {todo} in list {calendar}" : "Ви створили завдання {todo} у списку {calendar}",
|
||||
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} видалив справу {todo} зі списку {calendar}",
|
||||
"You deleted to-do {todo} from list {calendar}" : "Ви видалили завдання {todo} зі списку {calendar}",
|
||||
"{actor} updated to-do {todo} in list {calendar}" : "{actor} оновив завдання {todo} у списку {calendar}",
|
||||
"You updated to-do {todo} in list {calendar}" : "Ви оновили завдання {todo} у списку {calendar}",
|
||||
"{actor} solved to-do {todo} in list {calendar}" : "{actor} вирішив завдання {todo} у списку {calendar}",
|
||||
"You solved to-do {todo} in list {calendar}" : "Ви вирішили завдання {todo} у списку {calendar}",
|
||||
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} знову відкрив справу {todo} у списку {calendar}",
|
||||
"You reopened to-do {todo} in list {calendar}" : "Ви знову відкрили справу {todo} у списку {calendar}",
|
||||
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} перемістив завдання {todo} зі списку {sourceCalendar} до списку {targetCalendar}",
|
||||
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Ви перемістили завдання {todo} зі списку {sourceCalendar} до списку {targetCalendar}",
|
||||
"Calendar, contacts and tasks" : "Календар, контакти та завдання",
|
||||
"A <strong>calendar</strong> was modified" : "<strong>Календар</strong> був змінений",
|
||||
"A calendar <strong>event</strong> was modified" : "Календарна <strong>подія</strong> була змінена",
|
||||
"A calendar <strong>to-do</strong> was modified" : "<strong>Завдання</strong> в календарі змінено",
|
||||
"Contact birthdays" : "Дні народження контактів",
|
||||
"Death of %s" : "Смерть %s",
|
||||
"Calendar:" : "Календар:",
|
||||
@@ -50,24 +71,87 @@ OC.L10N.register(
|
||||
"Description: %s" : "Опис: %s",
|
||||
"Where: %s" : "Місце: %s",
|
||||
"%1$s via %2$s" : "%1$s через %2$s",
|
||||
"Cancelled: %1$s" : "Скасовано: %1$s",
|
||||
"Invitation canceled" : "Запрошення скасоване",
|
||||
"Re: %1$s" : "Re: %1$s",
|
||||
"Invitation updated" : "Запрошення оновлене",
|
||||
"Invitation: %1$s" : "Запрошення: %1$s",
|
||||
"Invitation" : "Запрошення",
|
||||
"Title:" : "Назва:",
|
||||
"Time:" : "Час:",
|
||||
"Location:" : "Місцевість:",
|
||||
"Link:" : "Посилання:",
|
||||
"Organizer:" : "Організатор:",
|
||||
"Attendees:" : "Учасники:",
|
||||
"Accept" : "Прийняти",
|
||||
"Decline" : "Відхилити",
|
||||
"More options …" : "Більше варіантів …",
|
||||
"More options at %s" : "Більше варіантів на %s",
|
||||
"Contacts" : "Контакти",
|
||||
"{actor} created address book {addressbook}" : "{actor} створив адресну книгу {addressbook}",
|
||||
"You created address book {addressbook}" : "Ви створили адресну книгу {addressbook}",
|
||||
"{actor} deleted address book {addressbook}" : "адресна книга{actor} видалив адресну книгу {addressbook}",
|
||||
"You deleted address book {addressbook}" : "Ви видалили адресну книгу {addressbook}",
|
||||
"{actor} updated address book {addressbook}" : "{actor} оновив адресну книгу {addressbook}",
|
||||
"You updated address book {addressbook}" : "Ви оновили адресну книгу {addressbook}",
|
||||
"{actor} shared address book {addressbook} with you" : "{actor} поділився з вами адресною книгою {addressbook}",
|
||||
"You shared address book {addressbook} with {user}" : "Ви надали доступ до адресної книги {addresbook} користувачу {user}",
|
||||
"{actor} shared address book {addressbook} with {user}" : "{actor} поділився адресною книгою {addressbook} з {user}",
|
||||
"{actor} unshared address book {addressbook} from you" : "{actor} не надіслана адресна книга {addressbook} від вас",
|
||||
"You unshared address book {addressbook} from {user}" : "Ви скасували спільний доступ до адресної книги {addresbook} від користувача {user}",
|
||||
"{actor} unshared address book {addressbook} from {user}" : "{actor} не має спільного доступу до адресної книги {addressbook} від {user}",
|
||||
"{actor} unshared address book {addressbook} from themselves" : "{actor} не поділився адресною книгою {addressbook} від себе",
|
||||
"You shared address book {addressbook} with group {group}" : "Ви надали спільний доступ до адресної книги {addressbook} групі {group}",
|
||||
"{actor} shared address book {addressbook} with group {group}" : "{actor} поділився адресною книгою {addresbook} із групою {group}",
|
||||
"You unshared address book {addressbook} from group {group}" : "Ви скасували спільний доступ до адресної книги {addressbook} із групи {group}",
|
||||
"{actor} unshared address book {addressbook} from group {group}" : "{actor} не має спільного доступу до адресної книги {addresbook} із групи {group}",
|
||||
"{actor} created contact {card} in address book {addressbook}" : "{actor} створив контакт {card} в адресній книзі {addressbook}",
|
||||
"You created contact {card} in address book {addressbook}" : "Ви створили контакт {card} в адресній книзі {addressbook}",
|
||||
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} видалив контакт {card} з адресної книги {addressbook}",
|
||||
"You deleted contact {card} from address book {addressbook}" : "Ви видалили контакт {card} з адресної книги {addressbook}",
|
||||
"{actor} updated contact {card} in address book {addressbook}" : "{actor} оновив контакт {card} в адресній книзі {addressbook}",
|
||||
"You updated contact {card} in address book {addressbook}" : "Ви оновили контакт {card} в адресній книзі {addressbook}",
|
||||
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Контактну</strong> або <strong>адресну книгу</strong> було змінено",
|
||||
"File is not updatable: %1$s" : "Файл не оновлюється: %1$s",
|
||||
"Could not write to final file, canceled by hook" : "Не вдалося записати в остаточний файл, скасовано перехопленням",
|
||||
"Could not write file contents" : "Не вдалося записати вміст файлу",
|
||||
"_%n byte_::_%n bytes_" : ["%n байт","%n байтів","%n байтів","%n байтів"],
|
||||
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Помилка під час копіювання файлу в цільове розташування (скопійовано: %1$s, очікуваний розмір файлу: %2$s)",
|
||||
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Очікуваний розмір файлу %1$s, але читання (з клієнта Nextcloud) і запис (до сховища Nextcloud) %2$s. Це може бути проблема мережі на стороні надсилання або проблема запису в сховище на стороні сервера.",
|
||||
"Could not rename part file to final file, canceled by hook" : "Не вдалося перейменувати файл частини на остаточний файл, скасовано підхопленням",
|
||||
"Could not rename part file to final file" : "Не вдалося перейменувати файл частини на остаточний файл",
|
||||
"Failed to check file size: %1$s" : "Не вдалося перевірити розмір файлу: %1$s",
|
||||
"Could not open file" : "Не вдалося відкрити файл",
|
||||
"Encryption not ready: %1$s" : "Шифрування не готове: %1$s",
|
||||
"Failed to open file: %1$s" : "Не вдалося відкрити файл: %1$s",
|
||||
"Failed to unlink: %1$s" : "Не вдалося від’єднати: %1$s",
|
||||
"Invalid chunk name" : "Недійсна назва блоку",
|
||||
"Could not rename part file assembled from chunks" : "Не вдалося перейменувати файл частини, зібраний із фрагментів",
|
||||
"Failed to write file contents: %1$s" : "Не вдалося записати вміст файлу: %1$s",
|
||||
"File not found: %1$s" : "Файл не знайдено: %1$s",
|
||||
"System is in maintenance mode." : "Система в режимі обслуговування.",
|
||||
"Upgrade needed" : "Потрібно оновитися",
|
||||
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Ваш %s мусить бути налаштований на використання HTTPS для надання доступу до CalDAV і CardDAV з iOS/macOS.",
|
||||
"Configures a CalDAV account" : "Налаштовує обліковий запис CalDAV",
|
||||
"Configures a CardDAV account" : "Налаштовує обліковий запис CardDAV",
|
||||
"Events" : "Події",
|
||||
"Tasks" : "Завдання",
|
||||
"Untitled task" : "Завдання без назви",
|
||||
"Completed on %s" : "Завершено %s",
|
||||
"Due on %s by %s" : "Термін погашення %s до %s",
|
||||
"Due on %s" : "Термін погашення %s",
|
||||
"Migrated calendar (%1$s)" : "Перенесений календар (%1$s)",
|
||||
"Calendars including events, details and attendees" : "Календарі, включаючи події, деталі та відвідувачів",
|
||||
"Contacts and groups" : "Контакти та групи",
|
||||
"WebDAV" : "WebDAV",
|
||||
"WebDAV endpoint" : "Точка доступу WebDAV",
|
||||
"Availability" : "Доступність",
|
||||
"If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Якщо ви налаштуєте свій робочий час, інші користувачі побачать, коли вас немає на місці, коли вони бронюють зустріч.",
|
||||
"Time zone:" : "Часовий пояс:",
|
||||
"to" : "до",
|
||||
"Delete slot" : "Видалити слот",
|
||||
"No working hours set" : "Робочий час не встановлено",
|
||||
"Add slot" : "Додати слот",
|
||||
"Monday" : "понеділок",
|
||||
"Tuesday" : "Вівторок",
|
||||
"Wednesday" : "Середа",
|
||||
@@ -75,7 +159,11 @@ OC.L10N.register(
|
||||
"Friday" : "П'ятниця",
|
||||
"Saturday" : "Субота",
|
||||
"Sunday" : "Неділя",
|
||||
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Автоматично встановлюйте статус користувача на \"Не турбувати\" поза доступністю, щоб вимкнути всі сповіщення.",
|
||||
"Save" : "Зберегти",
|
||||
"Failed to load availability" : "Не вдалося завантажити доступність",
|
||||
"Saved availability" : "Збережена наявність",
|
||||
"Failed to save availability" : "Не вдалося зберегти наявність",
|
||||
"Calendar server" : "Сервер календаря",
|
||||
"Send invitations to attendees" : "Надіслати запрошення учасникам",
|
||||
"Automatically generate a birthday calendar" : "Автоматично згенерувати календар днів народження",
|
||||
@@ -83,6 +171,8 @@ OC.L10N.register(
|
||||
"Hence they will not be available immediately after enabling but will show up after some time." : "Отже вони не будуть доступні одразу після увімкнення, але з'являться згодом.",
|
||||
"Send notifications for events" : "Відправити сповіщення для подій",
|
||||
"Notifications are sent via background jobs, so these must occur often enough." : "Сповіщення надсилаються у фонових завданнях, тож вони мають запускатися достатньо часто.",
|
||||
"Send reminder notifications to calendar sharees as well" : "Також надсилайте сповіщення про нагадування користувачам спільного календаря",
|
||||
"Reminders are always sent to organizers and attendees." : "Нагадування завжди надсилаються організаторам і учасникам.",
|
||||
"Enable notifications for events via push" : "Увімкнути push-сповіщення для подій",
|
||||
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Встановіть також {calendarappstoreopen}застосунок Календар{linkclose}, або {calendardocopen}з'єднайте ваш декстоп і мобільний для синхронізації ↗{linkclose}.",
|
||||
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Будь-ласка переконайтеся у коректності налаштувань {emailopen}поштового сервера{linkclose}.",
|
||||
@@ -90,9 +180,10 @@ OC.L10N.register(
|
||||
"Please contact the organizer directly." : "Будь-ласка повідомте організатора.",
|
||||
"Are you accepting the invitation?" : "Чи приймаєте ви запрошення?",
|
||||
"Tentative" : "Попередній",
|
||||
"Number of guests" : "Кількість гостей",
|
||||
"Comment" : "Коментар",
|
||||
"Your attendance was updated successfully." : "Ваша участь успішно оновлена.",
|
||||
"Todos" : "До роботи",
|
||||
"Todos" : "Завдання",
|
||||
"{actor} created todo {todo} in list {calendar}" : "{actor} створив завдання {todo} у списку {calendar}",
|
||||
"You created todo {todo} in list {calendar}" : "Ви створили завдання {todo} у списку {calendar}",
|
||||
"{actor} deleted todo {todo} from list {calendar}" : "{actor} вилучили завдання {todo} зі списку {calendar}",
|
||||
|
||||
+92
-1
@@ -1,5 +1,6 @@
|
||||
{ "translations": {
|
||||
"Calendar" : "Календар",
|
||||
"To-dos" : "Справи",
|
||||
"Personal" : "Особисте",
|
||||
"{actor} created calendar {calendar}" : "{actor} створив календар {calendar}",
|
||||
"You created calendar {calendar}" : "Ви створили календар {calendar}",
|
||||
@@ -7,6 +8,8 @@
|
||||
"You deleted calendar {calendar}" : "Ви вилучили календар {calendar}",
|
||||
"{actor} updated calendar {calendar}" : "{actor} оновив календар {calendar}",
|
||||
"You updated calendar {calendar}" : "Ви оновили календар {calendar}",
|
||||
"{actor} restored calendar {calendar}" : "{actor} відновив календар {calendar}",
|
||||
"You restored calendar {calendar}" : "Ви відновили календар {calendar}",
|
||||
"You shared calendar {calendar} as public link" : "Ви поширили календар {calendar} як публічне посилання",
|
||||
"You removed public link for calendar {calendar}" : "Ви вилучили публічне посилання на календар {calendar}",
|
||||
"{actor} shared calendar {calendar} with you" : "{actor} поширив календар {calendar} з вами",
|
||||
@@ -27,9 +30,27 @@
|
||||
"You deleted event {event} from calendar {calendar}" : "Ви вилучили подію {event} з календаря {calendar}",
|
||||
"{actor} updated event {event} in calendar {calendar}" : "{actor} оновив подію {event} у календарі {calendar}",
|
||||
"You updated event {event} in calendar {calendar}" : "Ви оновили подію {event} у календарі {calendar}",
|
||||
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} перемістив подію {event} з календаря {sourceCalendar} до календаря {targetCalendar}",
|
||||
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Ви перемістили подію {event} з календаря {sourceCalendar} до календаря {targetCalendar}",
|
||||
"{actor} restored event {event} of calendar {calendar}" : "{actor} відновив подію {event} календаря {calendar}",
|
||||
"You restored event {event} of calendar {calendar}" : "Ви відновили подію {event} календаря {calendar}",
|
||||
"Busy" : "Зайнято",
|
||||
"{actor} created to-do {todo} in list {calendar}" : "{actor} створив завдання {todo} у списку {calendar}",
|
||||
"You created to-do {todo} in list {calendar}" : "Ви створили завдання {todo} у списку {calendar}",
|
||||
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} видалив справу {todo} зі списку {calendar}",
|
||||
"You deleted to-do {todo} from list {calendar}" : "Ви видалили завдання {todo} зі списку {calendar}",
|
||||
"{actor} updated to-do {todo} in list {calendar}" : "{actor} оновив завдання {todo} у списку {calendar}",
|
||||
"You updated to-do {todo} in list {calendar}" : "Ви оновили завдання {todo} у списку {calendar}",
|
||||
"{actor} solved to-do {todo} in list {calendar}" : "{actor} вирішив завдання {todo} у списку {calendar}",
|
||||
"You solved to-do {todo} in list {calendar}" : "Ви вирішили завдання {todo} у списку {calendar}",
|
||||
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} знову відкрив справу {todo} у списку {calendar}",
|
||||
"You reopened to-do {todo} in list {calendar}" : "Ви знову відкрили справу {todo} у списку {calendar}",
|
||||
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} перемістив завдання {todo} зі списку {sourceCalendar} до списку {targetCalendar}",
|
||||
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Ви перемістили завдання {todo} зі списку {sourceCalendar} до списку {targetCalendar}",
|
||||
"Calendar, contacts and tasks" : "Календар, контакти та завдання",
|
||||
"A <strong>calendar</strong> was modified" : "<strong>Календар</strong> був змінений",
|
||||
"A calendar <strong>event</strong> was modified" : "Календарна <strong>подія</strong> була змінена",
|
||||
"A calendar <strong>to-do</strong> was modified" : "<strong>Завдання</strong> в календарі змінено",
|
||||
"Contact birthdays" : "Дні народження контактів",
|
||||
"Death of %s" : "Смерть %s",
|
||||
"Calendar:" : "Календар:",
|
||||
@@ -48,24 +69,87 @@
|
||||
"Description: %s" : "Опис: %s",
|
||||
"Where: %s" : "Місце: %s",
|
||||
"%1$s via %2$s" : "%1$s через %2$s",
|
||||
"Cancelled: %1$s" : "Скасовано: %1$s",
|
||||
"Invitation canceled" : "Запрошення скасоване",
|
||||
"Re: %1$s" : "Re: %1$s",
|
||||
"Invitation updated" : "Запрошення оновлене",
|
||||
"Invitation: %1$s" : "Запрошення: %1$s",
|
||||
"Invitation" : "Запрошення",
|
||||
"Title:" : "Назва:",
|
||||
"Time:" : "Час:",
|
||||
"Location:" : "Місцевість:",
|
||||
"Link:" : "Посилання:",
|
||||
"Organizer:" : "Організатор:",
|
||||
"Attendees:" : "Учасники:",
|
||||
"Accept" : "Прийняти",
|
||||
"Decline" : "Відхилити",
|
||||
"More options …" : "Більше варіантів …",
|
||||
"More options at %s" : "Більше варіантів на %s",
|
||||
"Contacts" : "Контакти",
|
||||
"{actor} created address book {addressbook}" : "{actor} створив адресну книгу {addressbook}",
|
||||
"You created address book {addressbook}" : "Ви створили адресну книгу {addressbook}",
|
||||
"{actor} deleted address book {addressbook}" : "адресна книга{actor} видалив адресну книгу {addressbook}",
|
||||
"You deleted address book {addressbook}" : "Ви видалили адресну книгу {addressbook}",
|
||||
"{actor} updated address book {addressbook}" : "{actor} оновив адресну книгу {addressbook}",
|
||||
"You updated address book {addressbook}" : "Ви оновили адресну книгу {addressbook}",
|
||||
"{actor} shared address book {addressbook} with you" : "{actor} поділився з вами адресною книгою {addressbook}",
|
||||
"You shared address book {addressbook} with {user}" : "Ви надали доступ до адресної книги {addresbook} користувачу {user}",
|
||||
"{actor} shared address book {addressbook} with {user}" : "{actor} поділився адресною книгою {addressbook} з {user}",
|
||||
"{actor} unshared address book {addressbook} from you" : "{actor} не надіслана адресна книга {addressbook} від вас",
|
||||
"You unshared address book {addressbook} from {user}" : "Ви скасували спільний доступ до адресної книги {addresbook} від користувача {user}",
|
||||
"{actor} unshared address book {addressbook} from {user}" : "{actor} не має спільного доступу до адресної книги {addressbook} від {user}",
|
||||
"{actor} unshared address book {addressbook} from themselves" : "{actor} не поділився адресною книгою {addressbook} від себе",
|
||||
"You shared address book {addressbook} with group {group}" : "Ви надали спільний доступ до адресної книги {addressbook} групі {group}",
|
||||
"{actor} shared address book {addressbook} with group {group}" : "{actor} поділився адресною книгою {addresbook} із групою {group}",
|
||||
"You unshared address book {addressbook} from group {group}" : "Ви скасували спільний доступ до адресної книги {addressbook} із групи {group}",
|
||||
"{actor} unshared address book {addressbook} from group {group}" : "{actor} не має спільного доступу до адресної книги {addresbook} із групи {group}",
|
||||
"{actor} created contact {card} in address book {addressbook}" : "{actor} створив контакт {card} в адресній книзі {addressbook}",
|
||||
"You created contact {card} in address book {addressbook}" : "Ви створили контакт {card} в адресній книзі {addressbook}",
|
||||
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} видалив контакт {card} з адресної книги {addressbook}",
|
||||
"You deleted contact {card} from address book {addressbook}" : "Ви видалили контакт {card} з адресної книги {addressbook}",
|
||||
"{actor} updated contact {card} in address book {addressbook}" : "{actor} оновив контакт {card} в адресній книзі {addressbook}",
|
||||
"You updated contact {card} in address book {addressbook}" : "Ви оновили контакт {card} в адресній книзі {addressbook}",
|
||||
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Контактну</strong> або <strong>адресну книгу</strong> було змінено",
|
||||
"File is not updatable: %1$s" : "Файл не оновлюється: %1$s",
|
||||
"Could not write to final file, canceled by hook" : "Не вдалося записати в остаточний файл, скасовано перехопленням",
|
||||
"Could not write file contents" : "Не вдалося записати вміст файлу",
|
||||
"_%n byte_::_%n bytes_" : ["%n байт","%n байтів","%n байтів","%n байтів"],
|
||||
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Помилка під час копіювання файлу в цільове розташування (скопійовано: %1$s, очікуваний розмір файлу: %2$s)",
|
||||
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Очікуваний розмір файлу %1$s, але читання (з клієнта Nextcloud) і запис (до сховища Nextcloud) %2$s. Це може бути проблема мережі на стороні надсилання або проблема запису в сховище на стороні сервера.",
|
||||
"Could not rename part file to final file, canceled by hook" : "Не вдалося перейменувати файл частини на остаточний файл, скасовано підхопленням",
|
||||
"Could not rename part file to final file" : "Не вдалося перейменувати файл частини на остаточний файл",
|
||||
"Failed to check file size: %1$s" : "Не вдалося перевірити розмір файлу: %1$s",
|
||||
"Could not open file" : "Не вдалося відкрити файл",
|
||||
"Encryption not ready: %1$s" : "Шифрування не готове: %1$s",
|
||||
"Failed to open file: %1$s" : "Не вдалося відкрити файл: %1$s",
|
||||
"Failed to unlink: %1$s" : "Не вдалося від’єднати: %1$s",
|
||||
"Invalid chunk name" : "Недійсна назва блоку",
|
||||
"Could not rename part file assembled from chunks" : "Не вдалося перейменувати файл частини, зібраний із фрагментів",
|
||||
"Failed to write file contents: %1$s" : "Не вдалося записати вміст файлу: %1$s",
|
||||
"File not found: %1$s" : "Файл не знайдено: %1$s",
|
||||
"System is in maintenance mode." : "Система в режимі обслуговування.",
|
||||
"Upgrade needed" : "Потрібно оновитися",
|
||||
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Ваш %s мусить бути налаштований на використання HTTPS для надання доступу до CalDAV і CardDAV з iOS/macOS.",
|
||||
"Configures a CalDAV account" : "Налаштовує обліковий запис CalDAV",
|
||||
"Configures a CardDAV account" : "Налаштовує обліковий запис CardDAV",
|
||||
"Events" : "Події",
|
||||
"Tasks" : "Завдання",
|
||||
"Untitled task" : "Завдання без назви",
|
||||
"Completed on %s" : "Завершено %s",
|
||||
"Due on %s by %s" : "Термін погашення %s до %s",
|
||||
"Due on %s" : "Термін погашення %s",
|
||||
"Migrated calendar (%1$s)" : "Перенесений календар (%1$s)",
|
||||
"Calendars including events, details and attendees" : "Календарі, включаючи події, деталі та відвідувачів",
|
||||
"Contacts and groups" : "Контакти та групи",
|
||||
"WebDAV" : "WebDAV",
|
||||
"WebDAV endpoint" : "Точка доступу WebDAV",
|
||||
"Availability" : "Доступність",
|
||||
"If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Якщо ви налаштуєте свій робочий час, інші користувачі побачать, коли вас немає на місці, коли вони бронюють зустріч.",
|
||||
"Time zone:" : "Часовий пояс:",
|
||||
"to" : "до",
|
||||
"Delete slot" : "Видалити слот",
|
||||
"No working hours set" : "Робочий час не встановлено",
|
||||
"Add slot" : "Додати слот",
|
||||
"Monday" : "понеділок",
|
||||
"Tuesday" : "Вівторок",
|
||||
"Wednesday" : "Середа",
|
||||
@@ -73,7 +157,11 @@
|
||||
"Friday" : "П'ятниця",
|
||||
"Saturday" : "Субота",
|
||||
"Sunday" : "Неділя",
|
||||
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Автоматично встановлюйте статус користувача на \"Не турбувати\" поза доступністю, щоб вимкнути всі сповіщення.",
|
||||
"Save" : "Зберегти",
|
||||
"Failed to load availability" : "Не вдалося завантажити доступність",
|
||||
"Saved availability" : "Збережена наявність",
|
||||
"Failed to save availability" : "Не вдалося зберегти наявність",
|
||||
"Calendar server" : "Сервер календаря",
|
||||
"Send invitations to attendees" : "Надіслати запрошення учасникам",
|
||||
"Automatically generate a birthday calendar" : "Автоматично згенерувати календар днів народження",
|
||||
@@ -81,6 +169,8 @@
|
||||
"Hence they will not be available immediately after enabling but will show up after some time." : "Отже вони не будуть доступні одразу після увімкнення, але з'являться згодом.",
|
||||
"Send notifications for events" : "Відправити сповіщення для подій",
|
||||
"Notifications are sent via background jobs, so these must occur often enough." : "Сповіщення надсилаються у фонових завданнях, тож вони мають запускатися достатньо часто.",
|
||||
"Send reminder notifications to calendar sharees as well" : "Також надсилайте сповіщення про нагадування користувачам спільного календаря",
|
||||
"Reminders are always sent to organizers and attendees." : "Нагадування завжди надсилаються організаторам і учасникам.",
|
||||
"Enable notifications for events via push" : "Увімкнути push-сповіщення для подій",
|
||||
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Встановіть також {calendarappstoreopen}застосунок Календар{linkclose}, або {calendardocopen}з'єднайте ваш декстоп і мобільний для синхронізації ↗{linkclose}.",
|
||||
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Будь-ласка переконайтеся у коректності налаштувань {emailopen}поштового сервера{linkclose}.",
|
||||
@@ -88,9 +178,10 @@
|
||||
"Please contact the organizer directly." : "Будь-ласка повідомте організатора.",
|
||||
"Are you accepting the invitation?" : "Чи приймаєте ви запрошення?",
|
||||
"Tentative" : "Попередній",
|
||||
"Number of guests" : "Кількість гостей",
|
||||
"Comment" : "Коментар",
|
||||
"Your attendance was updated successfully." : "Ваша участь успішно оновлена.",
|
||||
"Todos" : "До роботи",
|
||||
"Todos" : "Завдання",
|
||||
"{actor} created todo {todo} in list {calendar}" : "{actor} створив завдання {todo} у списку {calendar}",
|
||||
"You created todo {todo} in list {calendar}" : "Ви створили завдання {todo} у списку {calendar}",
|
||||
"{actor} deleted todo {todo} from list {calendar}" : "{actor} вилучили завдання {todo} зі списку {calendar}",
|
||||
|
||||
@@ -2,6 +2,7 @@ OC.L10N.register(
|
||||
"dav",
|
||||
{
|
||||
"Calendar" : "日历",
|
||||
"To-dos" : "代办事项",
|
||||
"Personal" : "个人",
|
||||
"{actor} created calendar {calendar}" : "{actor} 创建了日历 {calendar}",
|
||||
"You created calendar {calendar}" : "您创建的日历 {calendar}",
|
||||
@@ -31,12 +32,27 @@ OC.L10N.register(
|
||||
"You deleted event {event} from calendar {calendar}" : "您在日历 {calendar} 中删除了事件 {event}",
|
||||
"{actor} updated event {event} in calendar {calendar}" : "{actor} 在日历 {calendar} 中更新了事件 {event}",
|
||||
"You updated event {event} in calendar {calendar}" : "您在日历 {calendar} 中更新了事件 {event}",
|
||||
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} 将事件 {event} 从日历 {sourceCalendar} 移动至日历 {targetCalendar}",
|
||||
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "您已将事件 {event} 从日历 {sourceCalendar} 移动至日历 {targetCalendar}",
|
||||
"{actor} restored event {event} of calendar {calendar}" : "{actor} 还原了事件 {event},它位于日历 {calendar}",
|
||||
"You restored event {event} of calendar {calendar}" : "你还原了事件 {event},它位于日历 {calendar}",
|
||||
"Busy" : "忙碌",
|
||||
"{actor} created to-do {todo} in list {calendar}" : "{actor} 在清单 {calendar} 中创建了代办事项 {todo}",
|
||||
"You created to-do {todo} in list {calendar}" : "您已在清单 {calendar} 中创建了代办事项 {todo}",
|
||||
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} 从列表 {calendar} 中删除了待办事项 {todo}",
|
||||
"You deleted to-do {todo} from list {calendar}" : "你从列表 {calendar} 中删除了待办事项 {todo}",
|
||||
"{actor} updated to-do {todo} in list {calendar}" : "{actor} 更新了列表 {calendar} 中的待办事项 {todo}",
|
||||
"You updated to-do {todo} in list {calendar}" : "你更新了列表 {calendar} 中的待办事项 {todo}",
|
||||
"{actor} solved to-do {todo} in list {calendar}" : "{actor} 解决了列表 {calendar} 中的待办事项 {todo}",
|
||||
"You solved to-do {todo} in list {calendar}" : "你解决了列表 {calendar} 中的待办事项 {todo}",
|
||||
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} 重新开启了列表 {calendar} 中的待办事项 {todo}",
|
||||
"You reopened to-do {todo} in list {calendar}" : "你重新开启了列表 {calendar} 中的待办事项 {todo}",
|
||||
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} 将待办事项 {todo} 从列表 {sourceCalendar} 移动到列表 {targetCalendar}",
|
||||
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "你将待办事项 {todo} 从列表 {sourceCalendar} 移动到列表 {targetCalendar}",
|
||||
"Calendar, contacts and tasks" : "日历、联系人和任务",
|
||||
"A <strong>calendar</strong> was modified" : "<strong>日历</strong>已经修改",
|
||||
"A calendar <strong>event</strong> was modified" : "日历中<strong>事件</strong>已经修改",
|
||||
"A calendar <strong>to-do</strong> was modified" : "日历中的<strong>待办事项</strong>已修改",
|
||||
"Contact birthdays" : "联系人生日",
|
||||
"Death of %s" : "%s 的忌日",
|
||||
"Calendar:" : "日历:",
|
||||
@@ -96,6 +112,23 @@ OC.L10N.register(
|
||||
"{actor} updated contact {card} in address book {addressbook}" : "{actor} 更新了通讯录 {addressbook} 中的联系人 {card} ",
|
||||
"You updated contact {card} in address book {addressbook}" : "你更新了通讯录 {addressbook} 中的联系人 {card} ",
|
||||
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "一名 <strong>联系人</strong>或一个<strong>通讯录</strong>被更改了",
|
||||
"File is not updatable: %1$s" : "无法更新文件:%1$s",
|
||||
"Could not write to final file, canceled by hook" : "无法写入最终文件,操作被插件取消",
|
||||
"Could not write file contents" : "无法写入文件内容",
|
||||
"_%n byte_::_%n bytes_" : ["%n字节"],
|
||||
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "将文件复制到目标位置时发生错误(已复制:%1$s,预期大小:%2$s)",
|
||||
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "预期文件大小为 %1$s,实际从 Nextcloud 客户端读入并写入 Nextcloud 存储空间的大小为 %2$s。可能是发送端发生了网络问题,或者是服务器写入存储设备时发生错误。",
|
||||
"Could not rename part file to final file, canceled by hook" : "无法将部分文件重命名为最终文件,操作被插件取消",
|
||||
"Could not rename part file to final file" : "无法将部分文件重命名为最终文件",
|
||||
"Failed to check file size: %1$s" : "检查文件大小失败:%1$s",
|
||||
"Could not open file" : "无法打开文件",
|
||||
"Encryption not ready: %1$s" : "加密不可用:%1$s",
|
||||
"Failed to open file: %1$s" : "打开文件失败:%1$s",
|
||||
"Failed to unlink: %1$s" : "解除链接失败:%1$s",
|
||||
"Invalid chunk name" : "分片名称无效",
|
||||
"Could not rename part file assembled from chunks" : "无法重命名从分片组合的部分文件",
|
||||
"Failed to write file contents: %1$s" : "写入文件内容失败:%1$s",
|
||||
"File not found: %1$s" : "找不到文件:%1$s",
|
||||
"System is in maintenance mode." : "系统处于维护模式 ",
|
||||
"Upgrade needed" : "需要升级",
|
||||
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "您的%s 需要配置使用HTTPS以在iOS/macOS中使用CalDAV和CardDAV。",
|
||||
@@ -107,6 +140,8 @@ OC.L10N.register(
|
||||
"Completed on %s" : "已完成 %s",
|
||||
"Due on %s by %s" : "到期于%s ,在%s之前",
|
||||
"Due on %s" : "到期于%s",
|
||||
"Migrated calendar (%1$s)" : "迁移的日历(%1$s)",
|
||||
"Calendars including events, details and attendees" : "日历包含活动、参与人和事件详情",
|
||||
"Contacts and groups" : "联系人和群组",
|
||||
"WebDAV" : "WebDAV",
|
||||
"WebDAV endpoint" : "WebDAV端点",
|
||||
@@ -124,7 +159,11 @@ OC.L10N.register(
|
||||
"Friday" : "周五",
|
||||
"Saturday" : "周六",
|
||||
"Sunday" : "周日",
|
||||
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "不在可用时间内时,自动将用户状态设置为“请勿打扰”并静音所有通知。",
|
||||
"Save" : "保存",
|
||||
"Failed to load availability" : "可用时间段加载失败",
|
||||
"Saved availability" : "可用时间已保存",
|
||||
"Failed to save availability" : "可用时间保存失败",
|
||||
"Calendar server" : "日历服务器",
|
||||
"Send invitations to attendees" : "向与会者发送邀请",
|
||||
"Automatically generate a birthday calendar" : "自动生成生日日历",
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{ "translations": {
|
||||
"Calendar" : "日历",
|
||||
"To-dos" : "代办事项",
|
||||
"Personal" : "个人",
|
||||
"{actor} created calendar {calendar}" : "{actor} 创建了日历 {calendar}",
|
||||
"You created calendar {calendar}" : "您创建的日历 {calendar}",
|
||||
@@ -29,12 +30,27 @@
|
||||
"You deleted event {event} from calendar {calendar}" : "您在日历 {calendar} 中删除了事件 {event}",
|
||||
"{actor} updated event {event} in calendar {calendar}" : "{actor} 在日历 {calendar} 中更新了事件 {event}",
|
||||
"You updated event {event} in calendar {calendar}" : "您在日历 {calendar} 中更新了事件 {event}",
|
||||
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} 将事件 {event} 从日历 {sourceCalendar} 移动至日历 {targetCalendar}",
|
||||
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "您已将事件 {event} 从日历 {sourceCalendar} 移动至日历 {targetCalendar}",
|
||||
"{actor} restored event {event} of calendar {calendar}" : "{actor} 还原了事件 {event},它位于日历 {calendar}",
|
||||
"You restored event {event} of calendar {calendar}" : "你还原了事件 {event},它位于日历 {calendar}",
|
||||
"Busy" : "忙碌",
|
||||
"{actor} created to-do {todo} in list {calendar}" : "{actor} 在清单 {calendar} 中创建了代办事项 {todo}",
|
||||
"You created to-do {todo} in list {calendar}" : "您已在清单 {calendar} 中创建了代办事项 {todo}",
|
||||
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} 从列表 {calendar} 中删除了待办事项 {todo}",
|
||||
"You deleted to-do {todo} from list {calendar}" : "你从列表 {calendar} 中删除了待办事项 {todo}",
|
||||
"{actor} updated to-do {todo} in list {calendar}" : "{actor} 更新了列表 {calendar} 中的待办事项 {todo}",
|
||||
"You updated to-do {todo} in list {calendar}" : "你更新了列表 {calendar} 中的待办事项 {todo}",
|
||||
"{actor} solved to-do {todo} in list {calendar}" : "{actor} 解决了列表 {calendar} 中的待办事项 {todo}",
|
||||
"You solved to-do {todo} in list {calendar}" : "你解决了列表 {calendar} 中的待办事项 {todo}",
|
||||
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} 重新开启了列表 {calendar} 中的待办事项 {todo}",
|
||||
"You reopened to-do {todo} in list {calendar}" : "你重新开启了列表 {calendar} 中的待办事项 {todo}",
|
||||
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} 将待办事项 {todo} 从列表 {sourceCalendar} 移动到列表 {targetCalendar}",
|
||||
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "你将待办事项 {todo} 从列表 {sourceCalendar} 移动到列表 {targetCalendar}",
|
||||
"Calendar, contacts and tasks" : "日历、联系人和任务",
|
||||
"A <strong>calendar</strong> was modified" : "<strong>日历</strong>已经修改",
|
||||
"A calendar <strong>event</strong> was modified" : "日历中<strong>事件</strong>已经修改",
|
||||
"A calendar <strong>to-do</strong> was modified" : "日历中的<strong>待办事项</strong>已修改",
|
||||
"Contact birthdays" : "联系人生日",
|
||||
"Death of %s" : "%s 的忌日",
|
||||
"Calendar:" : "日历:",
|
||||
@@ -94,6 +110,23 @@
|
||||
"{actor} updated contact {card} in address book {addressbook}" : "{actor} 更新了通讯录 {addressbook} 中的联系人 {card} ",
|
||||
"You updated contact {card} in address book {addressbook}" : "你更新了通讯录 {addressbook} 中的联系人 {card} ",
|
||||
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "一名 <strong>联系人</strong>或一个<strong>通讯录</strong>被更改了",
|
||||
"File is not updatable: %1$s" : "无法更新文件:%1$s",
|
||||
"Could not write to final file, canceled by hook" : "无法写入最终文件,操作被插件取消",
|
||||
"Could not write file contents" : "无法写入文件内容",
|
||||
"_%n byte_::_%n bytes_" : ["%n字节"],
|
||||
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "将文件复制到目标位置时发生错误(已复制:%1$s,预期大小:%2$s)",
|
||||
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "预期文件大小为 %1$s,实际从 Nextcloud 客户端读入并写入 Nextcloud 存储空间的大小为 %2$s。可能是发送端发生了网络问题,或者是服务器写入存储设备时发生错误。",
|
||||
"Could not rename part file to final file, canceled by hook" : "无法将部分文件重命名为最终文件,操作被插件取消",
|
||||
"Could not rename part file to final file" : "无法将部分文件重命名为最终文件",
|
||||
"Failed to check file size: %1$s" : "检查文件大小失败:%1$s",
|
||||
"Could not open file" : "无法打开文件",
|
||||
"Encryption not ready: %1$s" : "加密不可用:%1$s",
|
||||
"Failed to open file: %1$s" : "打开文件失败:%1$s",
|
||||
"Failed to unlink: %1$s" : "解除链接失败:%1$s",
|
||||
"Invalid chunk name" : "分片名称无效",
|
||||
"Could not rename part file assembled from chunks" : "无法重命名从分片组合的部分文件",
|
||||
"Failed to write file contents: %1$s" : "写入文件内容失败:%1$s",
|
||||
"File not found: %1$s" : "找不到文件:%1$s",
|
||||
"System is in maintenance mode." : "系统处于维护模式 ",
|
||||
"Upgrade needed" : "需要升级",
|
||||
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "您的%s 需要配置使用HTTPS以在iOS/macOS中使用CalDAV和CardDAV。",
|
||||
@@ -105,6 +138,8 @@
|
||||
"Completed on %s" : "已完成 %s",
|
||||
"Due on %s by %s" : "到期于%s ,在%s之前",
|
||||
"Due on %s" : "到期于%s",
|
||||
"Migrated calendar (%1$s)" : "迁移的日历(%1$s)",
|
||||
"Calendars including events, details and attendees" : "日历包含活动、参与人和事件详情",
|
||||
"Contacts and groups" : "联系人和群组",
|
||||
"WebDAV" : "WebDAV",
|
||||
"WebDAV endpoint" : "WebDAV端点",
|
||||
@@ -122,7 +157,11 @@
|
||||
"Friday" : "周五",
|
||||
"Saturday" : "周六",
|
||||
"Sunday" : "周日",
|
||||
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "不在可用时间内时,自动将用户状态设置为“请勿打扰”并静音所有通知。",
|
||||
"Save" : "保存",
|
||||
"Failed to load availability" : "可用时间段加载失败",
|
||||
"Saved availability" : "可用时间已保存",
|
||||
"Failed to save availability" : "可用时间保存失败",
|
||||
"Calendar server" : "日历服务器",
|
||||
"Send invitations to attendees" : "向与会者发送邀请",
|
||||
"Automatically generate a birthday calendar" : "自动生成生日日历",
|
||||
|
||||
@@ -8,6 +8,7 @@ declare(strict_types=1);
|
||||
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||
* @author Georg Ehrke <oc.list@georgehrke.com>
|
||||
* @author Roeland Jago Douma <roeland@famdouma.nl>
|
||||
* @author Richard Steinmetz <richard@steinmetz.cloud>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
@@ -42,10 +43,12 @@ interface INotificationProvider {
|
||||
*
|
||||
* @param VEvent $vevent
|
||||
* @param string $calendarDisplayName
|
||||
* @param string[] $principalEmailAddresses All email addresses associated to the principal owning the calendar object
|
||||
* @param IUser[] $users
|
||||
* @return void
|
||||
*/
|
||||
public function send(VEvent $vevent,
|
||||
string $calendarDisplayName,
|
||||
array $principalEmailAddresses,
|
||||
array $users = []): void;
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ declare(strict_types=1);
|
||||
* @author Georg Ehrke <oc.list@georgehrke.com>
|
||||
* @author Joas Schilling <coding@schilljs.com>
|
||||
* @author Roeland Jago Douma <roeland@famdouma.nl>
|
||||
* @author Richard Steinmetz <richard@steinmetz.cloud>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
@@ -82,11 +83,13 @@ abstract class AbstractProvider implements INotificationProvider {
|
||||
*
|
||||
* @param VEvent $vevent
|
||||
* @param string $calendarDisplayName
|
||||
* @param string[] $principalEmailAddresses
|
||||
* @param IUser[] $users
|
||||
* @return void
|
||||
*/
|
||||
abstract public function send(VEvent $vevent,
|
||||
string $calendarDisplayName,
|
||||
array $principalEmailAddresses,
|
||||
array $users = []): void;
|
||||
|
||||
/**
|
||||
|
||||
@@ -71,16 +71,28 @@ class EmailProvider extends AbstractProvider {
|
||||
*
|
||||
* @param VEvent $vevent
|
||||
* @param string $calendarDisplayName
|
||||
* @param string[] $principalEmailAddresses
|
||||
* @param array $users
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function send(VEvent $vevent,
|
||||
string $calendarDisplayName,
|
||||
array $principalEmailAddresses,
|
||||
array $users = []):void {
|
||||
$fallbackLanguage = $this->getFallbackLanguage();
|
||||
|
||||
$organizerEmailAddress = null;
|
||||
if (isset($vevent->ORGANIZER)) {
|
||||
$organizerEmailAddress = $this->getEMailAddressOfAttendee($vevent->ORGANIZER);
|
||||
}
|
||||
|
||||
$emailAddressesOfSharees = $this->getEMailAddressesOfAllUsersWithWriteAccessToCalendar($users);
|
||||
$emailAddressesOfAttendees = $this->getAllEMailAddressesFromEvent($vevent);
|
||||
$emailAddressesOfAttendees = [];
|
||||
if (count($principalEmailAddresses) === 0
|
||||
|| ($organizerEmailAddress && in_array($organizerEmailAddress, $principalEmailAddresses, true))
|
||||
) {
|
||||
$emailAddressesOfAttendees = $this->getAllEMailAddressesFromEvent($vevent);
|
||||
}
|
||||
|
||||
// Quote from php.net:
|
||||
// If the input arrays have the same string keys, then the later value for that key will overwrite the previous one.
|
||||
|
||||
@@ -10,6 +10,7 @@ declare(strict_types=1);
|
||||
* @author Georg Ehrke <oc.list@georgehrke.com>
|
||||
* @author Roeland Jago Douma <roeland@famdouma.nl>
|
||||
* @author Thomas Citharel <nextcloud@tcit.fr>
|
||||
* @author Richard Steinmetz <richard@steinmetz.cloud>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
@@ -73,11 +74,13 @@ class PushProvider extends AbstractProvider {
|
||||
*
|
||||
* @param VEvent $vevent
|
||||
* @param string $calendarDisplayName
|
||||
* @param string[] $principalEmailAddresses
|
||||
* @param IUser[] $users
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function send(VEvent $vevent,
|
||||
string $calendarDisplayName = null,
|
||||
string $calendarDisplayName,
|
||||
array $principalEmailAddresses,
|
||||
array $users = []):void {
|
||||
if ($this->config->getAppValue('dav', 'sendEventRemindersPush', 'no') !== 'yes') {
|
||||
return;
|
||||
|
||||
@@ -11,6 +11,7 @@ declare(strict_types=1);
|
||||
* @author Joas Schilling <coding@schilljs.com>
|
||||
* @author Roeland Jago Douma <roeland@famdouma.nl>
|
||||
* @author Thomas Citharel <nextcloud@tcit.fr>
|
||||
* @author Richard Steinmetz <richard@steinmetz.cloud>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
@@ -32,6 +33,7 @@ namespace OCA\DAV\CalDAV\Reminder;
|
||||
|
||||
use DateTimeImmutable;
|
||||
use OCA\DAV\CalDAV\CalDavBackend;
|
||||
use OCA\DAV\Connector\Sabre\Principal;
|
||||
use OCP\AppFramework\Utility\ITimeFactory;
|
||||
use OCP\IConfig;
|
||||
use OCP\IGroup;
|
||||
@@ -76,6 +78,9 @@ class ReminderService {
|
||||
/** @var LoggerInterface */
|
||||
private $logger;
|
||||
|
||||
/** @var Principal */
|
||||
private $principalConnector;
|
||||
|
||||
public const REMINDER_TYPE_EMAIL = 'EMAIL';
|
||||
public const REMINDER_TYPE_DISPLAY = 'DISPLAY';
|
||||
public const REMINDER_TYPE_AUDIO = 'AUDIO';
|
||||
@@ -98,7 +103,8 @@ class ReminderService {
|
||||
CalDavBackend $caldavBackend,
|
||||
ITimeFactory $timeFactory,
|
||||
IConfig $config,
|
||||
LoggerInterface $logger) {
|
||||
LoggerInterface $logger,
|
||||
Principal $principalConnector) {
|
||||
$this->backend = $backend;
|
||||
$this->notificationProviderManager = $notificationProviderManager;
|
||||
$this->userManager = $userManager;
|
||||
@@ -107,6 +113,7 @@ class ReminderService {
|
||||
$this->timeFactory = $timeFactory;
|
||||
$this->config = $config;
|
||||
$this->logger = $logger;
|
||||
$this->principalConnector = $principalConnector;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -175,12 +182,18 @@ class ReminderService {
|
||||
$users[] = $user;
|
||||
}
|
||||
|
||||
$userPrincipalEmailAddresses = [];
|
||||
$userPrincipal = $this->principalConnector->getPrincipalByPath($reminder['principaluri']);
|
||||
if ($userPrincipal) {
|
||||
$userPrincipalEmailAddresses = $this->principalConnector->getEmailAddressesOfPrincipal($userPrincipal);
|
||||
}
|
||||
|
||||
$this->logger->debug('Reminder {id} will be sent to {numUsers} users', [
|
||||
'id' => $reminder['id'],
|
||||
'numUsers' => count($users),
|
||||
]);
|
||||
$notificationProvider = $this->notificationProviderManager->getProvider($reminder['type']);
|
||||
$notificationProvider->send($vevent, $reminder['displayname'], $users);
|
||||
$notificationProvider->send($vevent, $reminder['displayname'], $userPrincipalEmailAddresses, $users);
|
||||
|
||||
$this->deleteOrProcessNext($reminder, $vevent);
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
* @author Joas Schilling <coding@schilljs.com>
|
||||
* @author Roeland Jago Douma <roeland@famdouma.nl>
|
||||
* @author Thomas Citharel <nextcloud@tcit.fr>
|
||||
* @author Richard Steinmetz <richard@steinmetz.cloud>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
@@ -46,6 +47,7 @@ use Sabre\VObject\Component;
|
||||
use Sabre\VObject\Component\VCalendar;
|
||||
use Sabre\VObject\Component\VEvent;
|
||||
use Sabre\VObject\DateTimeParser;
|
||||
use Sabre\VObject\Document;
|
||||
use Sabre\VObject\FreeBusyGenerator;
|
||||
use Sabre\VObject\ITip;
|
||||
use Sabre\VObject\Parameter;
|
||||
@@ -164,6 +166,14 @@ class Plugin extends \Sabre\CalDAV\Schedule\Plugin {
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function scheduleLocalDelivery(ITip\Message $iTipMessage):void {
|
||||
/** @var Component|null $vevent */
|
||||
$vevent = $iTipMessage->message->VEVENT ?? null;
|
||||
|
||||
// Strip VALARMs from incoming VEVENT
|
||||
if ($vevent && isset($vevent->VALARM)) {
|
||||
$vevent->remove('VALARM');
|
||||
}
|
||||
|
||||
parent::scheduleLocalDelivery($iTipMessage);
|
||||
|
||||
// We only care when the message was successfully delivered locally
|
||||
@@ -200,18 +210,10 @@ class Plugin extends \Sabre\CalDAV\Schedule\Plugin {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isset($iTipMessage->message)) {
|
||||
if (!$vevent) {
|
||||
return;
|
||||
}
|
||||
|
||||
$vcalendar = $iTipMessage->message;
|
||||
if (!isset($vcalendar->VEVENT)) {
|
||||
return;
|
||||
}
|
||||
|
||||
/** @var Component $vevent */
|
||||
$vevent = $vcalendar->VEVENT;
|
||||
|
||||
// We don't support autoresponses for recurrencing events for now
|
||||
if (isset($vevent->RRULE) || isset($vevent->RDATE)) {
|
||||
return;
|
||||
|
||||
@@ -71,6 +71,7 @@ class FilesPlugin extends ServerPlugin {
|
||||
public const GETETAG_PROPERTYNAME = '{DAV:}getetag';
|
||||
public const LASTMODIFIED_PROPERTYNAME = '{DAV:}lastmodified';
|
||||
public const CREATIONDATE_PROPERTYNAME = '{DAV:}creationdate';
|
||||
public const DISPLAYNAME_PROPERTYNAME = '{DAV:}displayname';
|
||||
public const OWNER_ID_PROPERTYNAME = '{http://owncloud.org/ns}owner-id';
|
||||
public const OWNER_DISPLAY_NAME_PROPERTYNAME = '{http://owncloud.org/ns}owner-display-name';
|
||||
public const CHECKSUMS_PROPERTYNAME = '{http://owncloud.org/ns}checksums';
|
||||
@@ -351,7 +352,7 @@ class FilesPlugin extends ServerPlugin {
|
||||
$propFind->handle(self::HAS_PREVIEW_PROPERTYNAME, function () use ($node) {
|
||||
return json_encode($this->previewManager->isAvailable($node->getFileInfo()));
|
||||
});
|
||||
$propFind->handle(self::SIZE_PROPERTYNAME, function () use ($node): ?int {
|
||||
$propFind->handle(self::SIZE_PROPERTYNAME, function () use ($node) {
|
||||
return $node->getSize();
|
||||
});
|
||||
$propFind->handle(self::MOUNT_TYPE_PROPERTYNAME, function () use ($node) {
|
||||
@@ -379,6 +380,15 @@ class FilesPlugin extends ServerPlugin {
|
||||
$propFind->handle(self::CREATION_TIME_PROPERTYNAME, function () use ($node) {
|
||||
return $node->getFileInfo()->getCreationTime();
|
||||
});
|
||||
/**
|
||||
* Return file/folder name as displayname. The primary reason to
|
||||
* implement it this way is to avoid costly fallback to
|
||||
* CustomPropertiesBackend (esp. visible when querying all files
|
||||
* in a folder).
|
||||
*/
|
||||
$propFind->handle(self::DISPLAYNAME_PROPERTYNAME, function () use ($node) {
|
||||
return $node->getName();
|
||||
});
|
||||
}
|
||||
|
||||
if ($node instanceof \OCA\DAV\Connector\Sabre\File) {
|
||||
@@ -554,6 +564,13 @@ class FilesPlugin extends ServerPlugin {
|
||||
$node->setCreationTime((int) $time);
|
||||
return true;
|
||||
});
|
||||
/**
|
||||
* Disable modification of the displayname property for files and
|
||||
* folders via PROPPATCH. See PROPFIND for more information.
|
||||
*/
|
||||
$propPatch->handle(self::DISPLAYNAME_PROPERTYNAME, function ($displayName) {
|
||||
return 403;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -355,23 +355,19 @@ abstract class Node implements \Sabre\DAV\INode {
|
||||
return '';
|
||||
}
|
||||
|
||||
$types = [
|
||||
IShare::TYPE_USER,
|
||||
IShare::TYPE_GROUP,
|
||||
IShare::TYPE_CIRCLE,
|
||||
IShare::TYPE_ROOM
|
||||
];
|
||||
|
||||
foreach ($types as $shareType) {
|
||||
$shares = $this->shareManager->getSharedWith($user, $shareType, $this, -1);
|
||||
foreach ($shares as $share) {
|
||||
$note = $share->getNote();
|
||||
if ($share->getShareOwner() !== $user && !empty($note)) {
|
||||
return $note;
|
||||
}
|
||||
}
|
||||
// Retrieve note from the share object already loaded into
|
||||
// memory, to avoid additional database queries.
|
||||
$storage = $this->getNode()->getStorage();
|
||||
if (!$storage->instanceOfStorage(\OCA\Files_Sharing\SharedStorage::class)) {
|
||||
return '';
|
||||
}
|
||||
/** @var \OCA\Files_Sharing\SharedStorage $storage */
|
||||
|
||||
$share = $storage->getShare();
|
||||
$note = $share->getNote();
|
||||
if ($share->getShareOwner() !== $user) {
|
||||
return $note;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
|
||||
@@ -607,4 +607,44 @@ class Principal implements BackendInterface {
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all email addresses associated to a principal.
|
||||
*
|
||||
* @param array $principal Data from getPrincipal*()
|
||||
* @return string[] All email addresses without the mailto: prefix
|
||||
*/
|
||||
public function getEmailAddressesOfPrincipal(array $principal): array {
|
||||
$emailAddresses = [];
|
||||
|
||||
if (($primaryAddress = $principal['{http://sabredav.org/ns}email-address'])) {
|
||||
$emailAddresses[] = $primaryAddress;
|
||||
}
|
||||
|
||||
if (isset($principal['{DAV:}alternate-URI-set'])) {
|
||||
foreach ($principal['{DAV:}alternate-URI-set'] as $address) {
|
||||
if (str_starts_with($address, 'mailto:')) {
|
||||
$emailAddresses[] = substr($address, 7);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($principal['{urn:ietf:params:xml:ns:caldav}calendar-user-address-set'])) {
|
||||
foreach ($principal['{urn:ietf:params:xml:ns:caldav}calendar-user-address-set'] as $address) {
|
||||
if (str_starts_with($address, 'mailto:')) {
|
||||
$emailAddresses[] = substr($address, 7);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($principal['{http://calendarserver.org/ns/}email-address-set'])) {
|
||||
foreach ($principal['{http://calendarserver.org/ns/}email-address-set'] as $address) {
|
||||
if (str_starts_with($address, 'mailto:')) {
|
||||
$emailAddresses[] = substr($address, 7);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return array_values(array_unique($emailAddresses));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,6 @@ use Sabre\DAV\INode;
|
||||
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
|
||||
*/
|
||||
class QuotaPlugin extends \Sabre\DAV\ServerPlugin {
|
||||
|
||||
/** @var \OC\Files\View */
|
||||
private $view;
|
||||
|
||||
@@ -79,6 +78,7 @@ class QuotaPlugin extends \Sabre\DAV\ServerPlugin {
|
||||
$server->on('beforeWriteContent', [$this, 'beforeWriteContent'], 10);
|
||||
$server->on('beforeCreateFile', [$this, 'beforeCreateFile'], 10);
|
||||
$server->on('beforeMove', [$this, 'beforeMove'], 10);
|
||||
$server->on('beforeCopy', [$this, 'beforeCopy'], 10);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -131,7 +131,42 @@ class QuotaPlugin extends \Sabre\DAV\ServerPlugin {
|
||||
$destinationNode = $this->server->tree->getNodeForPath($destination);
|
||||
$path = $destinationNode->getPath();
|
||||
} else {
|
||||
$parentNode = $this->server->tree->getNodeForPath(dirname($destination));
|
||||
$parent = dirname($destination);
|
||||
if ($parent === '.') {
|
||||
$parent = '';
|
||||
}
|
||||
$parentNode = $this->server->tree->getNodeForPath($parent);
|
||||
$path = $parentNode->getPath();
|
||||
}
|
||||
|
||||
return $this->checkQuota($path, $sourceNode->getSize());
|
||||
}
|
||||
|
||||
/**
|
||||
* Check quota on the target destination before a copy.
|
||||
*/
|
||||
public function beforeCopy(string $sourcePath, string $destinationPath): bool {
|
||||
$sourceNode = $this->server->tree->getNodeForPath($sourcePath);
|
||||
if (!$sourceNode instanceof Node) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// get target node for proper path conversion
|
||||
if ($this->server->tree->nodeExists($destinationPath)) {
|
||||
$destinationNode = $this->server->tree->getNodeForPath($destinationPath);
|
||||
if (!$destinationNode instanceof Node) {
|
||||
return true;
|
||||
}
|
||||
$path = $destinationNode->getPath();
|
||||
} else {
|
||||
$parent = dirname($destinationPath);
|
||||
if ($parent === '.') {
|
||||
$parent = '';
|
||||
}
|
||||
$parentNode = $this->server->tree->getNodeForPath($parent);
|
||||
if (!$parentNode instanceof Node) {
|
||||
return true;
|
||||
}
|
||||
$path = $parentNode->getPath();
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ use SearchDAV\Query\Order;
|
||||
use SearchDAV\Query\Query;
|
||||
|
||||
class FileSearchBackend implements ISearchBackend {
|
||||
const OPERATOR_LIMIT = 100;
|
||||
public const OPERATOR_LIMIT = 100;
|
||||
|
||||
/** @var CachingTree */
|
||||
private $tree;
|
||||
@@ -432,7 +432,7 @@ class FileSearchBackend implements ISearchBackend {
|
||||
if (is_numeric($value)) {
|
||||
return max(0, 0 + $value);
|
||||
}
|
||||
$date = \DateTime::createFromFormat(\DateTimeInterface::ATOM, $value);
|
||||
$date = \DateTime::createFromFormat(\DateTimeInterface::ATOM, (string)$value);
|
||||
return ($date instanceof \DateTime && $date->getTimestamp() !== false) ? $date->getTimestamp() : 0;
|
||||
default:
|
||||
return $value;
|
||||
|
||||
@@ -72,18 +72,18 @@ exports[`CalDavSettings interactions 1`] = `
|
||||
>
|
||||
<span
|
||||
class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked"
|
||||
data-v-2b31639e=""
|
||||
data-v-751c6bad=""
|
||||
data-v-d423551e=""
|
||||
style="--icon-size: 36px;"
|
||||
>
|
||||
<label
|
||||
class="checkbox-radio-switch__label"
|
||||
data-v-2b31639e=""
|
||||
data-v-d423551e=""
|
||||
for="caldavSendInvitations"
|
||||
>
|
||||
<input
|
||||
class="checkbox-radio-switch__input"
|
||||
data-v-2b31639e=""
|
||||
data-v-d423551e=""
|
||||
id="caldavSendInvitations"
|
||||
type="checkbox"
|
||||
value=""
|
||||
@@ -92,7 +92,7 @@ exports[`CalDavSettings interactions 1`] = `
|
||||
<span
|
||||
aria-hidden="true"
|
||||
class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon"
|
||||
data-v-2b31639e=""
|
||||
data-v-d423551e=""
|
||||
role="img"
|
||||
>
|
||||
<svg
|
||||
@@ -133,18 +133,18 @@ exports[`CalDavSettings interactions 1`] = `
|
||||
>
|
||||
<span
|
||||
class="checkbox-radio-switch checkbox checkbox-radio-switch-switch checkbox-radio-switch--checked"
|
||||
data-v-2b31639e=""
|
||||
data-v-751c6bad=""
|
||||
data-v-d423551e=""
|
||||
style="--icon-size: 36px;"
|
||||
>
|
||||
<label
|
||||
class="checkbox-radio-switch__label"
|
||||
data-v-2b31639e=""
|
||||
data-v-d423551e=""
|
||||
for="caldavGenerateBirthdayCalendar"
|
||||
>
|
||||
<input
|
||||
class="checkbox-radio-switch__input"
|
||||
data-v-2b31639e=""
|
||||
data-v-d423551e=""
|
||||
id="caldavGenerateBirthdayCalendar"
|
||||
type="checkbox"
|
||||
value=""
|
||||
@@ -153,7 +153,7 @@ exports[`CalDavSettings interactions 1`] = `
|
||||
<span
|
||||
aria-hidden="true"
|
||||
class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon"
|
||||
data-v-2b31639e=""
|
||||
data-v-d423551e=""
|
||||
role="img"
|
||||
>
|
||||
<svg
|
||||
@@ -202,18 +202,18 @@ exports[`CalDavSettings interactions 1`] = `
|
||||
>
|
||||
<span
|
||||
class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked"
|
||||
data-v-2b31639e=""
|
||||
data-v-751c6bad=""
|
||||
data-v-d423551e=""
|
||||
style="--icon-size: 36px;"
|
||||
>
|
||||
<label
|
||||
class="checkbox-radio-switch__label"
|
||||
data-v-2b31639e=""
|
||||
data-v-d423551e=""
|
||||
for="caldavSendEventReminders"
|
||||
>
|
||||
<input
|
||||
class="checkbox-radio-switch__input"
|
||||
data-v-2b31639e=""
|
||||
data-v-d423551e=""
|
||||
id="caldavSendEventReminders"
|
||||
type="checkbox"
|
||||
value=""
|
||||
@@ -222,7 +222,7 @@ exports[`CalDavSettings interactions 1`] = `
|
||||
<span
|
||||
aria-hidden="true"
|
||||
class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon"
|
||||
data-v-2b31639e=""
|
||||
data-v-d423551e=""
|
||||
role="img"
|
||||
>
|
||||
<svg
|
||||
@@ -276,18 +276,18 @@ exports[`CalDavSettings interactions 1`] = `
|
||||
>
|
||||
<span
|
||||
class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked"
|
||||
data-v-2b31639e=""
|
||||
data-v-751c6bad=""
|
||||
data-v-d423551e=""
|
||||
style="--icon-size: 36px;"
|
||||
>
|
||||
<label
|
||||
class="checkbox-radio-switch__label"
|
||||
data-v-2b31639e=""
|
||||
data-v-d423551e=""
|
||||
for="caldavSendEventRemindersToSharedGroupMembers"
|
||||
>
|
||||
<input
|
||||
class="checkbox-radio-switch__input"
|
||||
data-v-2b31639e=""
|
||||
data-v-d423551e=""
|
||||
id="caldavSendEventRemindersToSharedGroupMembers"
|
||||
type="checkbox"
|
||||
value=""
|
||||
@@ -296,7 +296,7 @@ exports[`CalDavSettings interactions 1`] = `
|
||||
<span
|
||||
aria-hidden="true"
|
||||
class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon"
|
||||
data-v-2b31639e=""
|
||||
data-v-d423551e=""
|
||||
role="img"
|
||||
>
|
||||
<svg
|
||||
@@ -334,18 +334,18 @@ exports[`CalDavSettings interactions 1`] = `
|
||||
>
|
||||
<span
|
||||
class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked"
|
||||
data-v-2b31639e=""
|
||||
data-v-751c6bad=""
|
||||
data-v-d423551e=""
|
||||
style="--icon-size: 36px;"
|
||||
>
|
||||
<label
|
||||
class="checkbox-radio-switch__label"
|
||||
data-v-2b31639e=""
|
||||
data-v-d423551e=""
|
||||
for="caldavSendEventRemindersPush"
|
||||
>
|
||||
<input
|
||||
class="checkbox-radio-switch__input"
|
||||
data-v-2b31639e=""
|
||||
data-v-d423551e=""
|
||||
id="caldavSendEventRemindersPush"
|
||||
type="checkbox"
|
||||
value=""
|
||||
@@ -354,7 +354,7 @@ exports[`CalDavSettings interactions 1`] = `
|
||||
<span
|
||||
aria-hidden="true"
|
||||
class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon"
|
||||
data-v-2b31639e=""
|
||||
data-v-d423551e=""
|
||||
role="img"
|
||||
>
|
||||
<svg
|
||||
|
||||
@@ -65,6 +65,7 @@ class EmailProviderTest extends AbstractNotificationProviderTest {
|
||||
|
||||
public function testSendWithoutAttendees():void {
|
||||
[$user1, $user2, $user3, , $user5] = $users = $this->getUsers();
|
||||
$principalEmailAddresses = [$user1->getEmailAddress()];
|
||||
|
||||
$enL10N = $this->createMock(IL10N::class);
|
||||
$enL10N->method('t')
|
||||
@@ -170,11 +171,12 @@ class EmailProviderTest extends AbstractNotificationProviderTest {
|
||||
$this->setupURLGeneratorMock(2);
|
||||
|
||||
$vcalendar = $this->getNoAttendeeVCalendar();
|
||||
$this->provider->send($vcalendar->VEVENT, $this->calendarDisplayName, $users);
|
||||
$this->provider->send($vcalendar->VEVENT, $this->calendarDisplayName, $principalEmailAddresses, $users);
|
||||
}
|
||||
|
||||
public function testSendWithAttendees(): void {
|
||||
public function testSendWithAttendeesWhenOwnerIsOrganizer(): void {
|
||||
[$user1, $user2, $user3, , $user5] = $users = $this->getUsers();
|
||||
$principalEmailAddresses = [$user1->getEmailAddress()];
|
||||
|
||||
$enL10N = $this->createMock(IL10N::class);
|
||||
$enL10N->method('t')
|
||||
@@ -266,7 +268,81 @@ class EmailProviderTest extends AbstractNotificationProviderTest {
|
||||
$this->setupURLGeneratorMock(2);
|
||||
|
||||
$vcalendar = $this->getAttendeeVCalendar();
|
||||
$this->provider->send($vcalendar->VEVENT, $this->calendarDisplayName, $users);
|
||||
$this->provider->send($vcalendar->VEVENT, $this->calendarDisplayName, $principalEmailAddresses, $users);
|
||||
}
|
||||
|
||||
public function testSendWithAttendeesWhenOwnerIsAttendee(): void {
|
||||
[$user1, $user2, $user3] = $this->getUsers();
|
||||
$users = [$user2, $user3];
|
||||
$principalEmailAddresses = [$user2->getEmailAddress()];
|
||||
|
||||
$deL10N = $this->createMock(IL10N::class);
|
||||
$deL10N->method('t')
|
||||
->willReturnArgument(0);
|
||||
$deL10N->method('l')
|
||||
->willReturnArgument(0);
|
||||
|
||||
$this->l10nFactory
|
||||
->method('getUserLanguage')
|
||||
->willReturnMap([
|
||||
[$user2, 'de'],
|
||||
[$user3, 'de'],
|
||||
]);
|
||||
|
||||
$this->l10nFactory
|
||||
->method('findGenericLanguage')
|
||||
->willReturn('en');
|
||||
|
||||
$this->l10nFactory
|
||||
->method('languageExists')
|
||||
->willReturnMap([
|
||||
['dav', 'de', true],
|
||||
]);
|
||||
|
||||
$this->l10nFactory
|
||||
->method('get')
|
||||
->willReturnMap([
|
||||
['dav', 'de', null, $deL10N],
|
||||
]);
|
||||
|
||||
$template1 = $this->getTemplateMock();
|
||||
$message12 = $this->getMessageMock('uid2@example.com', $template1);
|
||||
$message13 = $this->getMessageMock('uid3@example.com', $template1);
|
||||
|
||||
$this->mailer->expects(self::once())
|
||||
->method('createEMailTemplate')
|
||||
->with('dav.calendarReminder')
|
||||
->willReturnOnConsecutiveCalls(
|
||||
$template1,
|
||||
);
|
||||
$this->mailer->expects($this->atLeastOnce())
|
||||
->method('validateMailAddress')
|
||||
->willReturnMap([
|
||||
['foo1@example.org', true],
|
||||
['foo3@example.org', true],
|
||||
['foo4@example.org', true],
|
||||
['uid1@example.com', true],
|
||||
['uid2@example.com', true],
|
||||
['uid3@example.com', true],
|
||||
['invalid', false],
|
||||
]);
|
||||
$this->mailer->expects($this->exactly(2))
|
||||
->method('createMessage')
|
||||
->with()
|
||||
->willReturnOnConsecutiveCalls(
|
||||
$message12,
|
||||
$message13,
|
||||
);
|
||||
$this->mailer->expects($this->exactly(2))
|
||||
->method('send')
|
||||
->withConsecutive(
|
||||
[$message12],
|
||||
[$message13],
|
||||
)->willReturn([]);
|
||||
$this->setupURLGeneratorMock(1);
|
||||
|
||||
$vcalendar = $this->getAttendeeVCalendar();
|
||||
$this->provider->send($vcalendar->VEVENT, $this->calendarDisplayName, $principalEmailAddresses, $users);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -376,6 +452,14 @@ class EmailProviderTest extends AbstractNotificationProviderTest {
|
||||
'DESCRIPTION' => 'DESCRIPTION 456',
|
||||
]);
|
||||
|
||||
$vcalendar->VEVENT->add(
|
||||
'ORGANIZER',
|
||||
'mailto:uid1@example.com',
|
||||
[
|
||||
'LANG' => 'en'
|
||||
]
|
||||
);
|
||||
|
||||
$vcalendar->VEVENT->add(
|
||||
'ATTENDEE',
|
||||
'mailto:foo1@example.org',
|
||||
|
||||
@@ -10,6 +10,7 @@ declare(strict_types=1);
|
||||
* @author Georg Ehrke <oc.list@georgehrke.com>
|
||||
* @author Roeland Jago Douma <roeland@famdouma.nl>
|
||||
* @author Thomas Citharel <nextcloud@tcit.fr>
|
||||
* @author Richard Steinmetz <richard@steinmetz.cloud>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
@@ -90,7 +91,7 @@ class PushProviderTest extends AbstractNotificationProviderTest {
|
||||
|
||||
$users = [$user1, $user2, $user3];
|
||||
|
||||
$this->provider->send($this->vcalendar->VEVENT, $this->calendarDisplayName, $users);
|
||||
$this->provider->send($this->vcalendar->VEVENT, $this->calendarDisplayName, [], $users);
|
||||
}
|
||||
|
||||
public function testSend(): void {
|
||||
@@ -143,7 +144,7 @@ class PushProviderTest extends AbstractNotificationProviderTest {
|
||||
->method('notify')
|
||||
->with($notification3);
|
||||
|
||||
$this->provider->send($this->vcalendar->VEVENT, $this->calendarDisplayName, $users);
|
||||
$this->provider->send($this->vcalendar->VEVENT, $this->calendarDisplayName, [], $users);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -9,6 +9,7 @@ declare(strict_types=1);
|
||||
* @author Georg Ehrke <oc.list@georgehrke.com>
|
||||
* @author Roeland Jago Douma <roeland@famdouma.nl>
|
||||
* @author Thomas Citharel <nextcloud@tcit.fr>
|
||||
* @author Richard Steinmetz <richard@steinmetz.cloud>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
@@ -33,6 +34,7 @@ use OCA\DAV\CalDAV\Reminder\Backend;
|
||||
use OCA\DAV\CalDAV\Reminder\INotificationProvider;
|
||||
use OCA\DAV\CalDAV\Reminder\NotificationProviderManager;
|
||||
use OCA\DAV\CalDAV\Reminder\ReminderService;
|
||||
use OCA\DAV\Connector\Sabre\Principal;
|
||||
use OCP\AppFramework\Utility\ITimeFactory;
|
||||
use OCP\IConfig;
|
||||
use OCP\IGroupManager;
|
||||
@@ -202,6 +204,7 @@ EOD;
|
||||
$this->timeFactory = $this->createMock(ITimeFactory::class);
|
||||
$this->config = $this->createMock(IConfig::class);
|
||||
$this->logger = $this->createMock(LoggerInterface::class);
|
||||
$this->principalConnector = $this->createMock(Principal::class);
|
||||
|
||||
$this->caldavBackend->method('getShares')->willReturn([]);
|
||||
|
||||
@@ -214,6 +217,7 @@ EOD;
|
||||
$this->timeFactory,
|
||||
$this->config,
|
||||
$this->logger,
|
||||
$this->principalConnector,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -1151,7 +1151,7 @@ class FileTest extends TestCase {
|
||||
|
||||
$info = new \OC\Files\FileInfo('/test.txt', $this->getMockStorage(), null, [
|
||||
'permissions' => \OCP\Constants::PERMISSION_ALL,
|
||||
'type' => FileInfo::TYPE_FOLDER,
|
||||
'type' => FileInfo::TYPE_FILE,
|
||||
], null);
|
||||
|
||||
$file = new \OCA\DAV\Connector\Sabre\File($view, $info);
|
||||
@@ -1172,7 +1172,7 @@ class FileTest extends TestCase {
|
||||
|
||||
$info = new \OC\Files\FileInfo('/test.txt', $this->getMockStorage(), null, [
|
||||
'permissions' => \OCP\Constants::PERMISSION_ALL,
|
||||
'type' => FileInfo::TYPE_FOLDER,
|
||||
'type' => FileInfo::TYPE_FILE,
|
||||
], null);
|
||||
|
||||
$file = new \OCA\DAV\Connector\Sabre\File($view, $info);
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
* @author Morris Jobke <hey@morrisjobke.de>
|
||||
* @author Roeland Jago Douma <roeland@famdouma.nl>
|
||||
* @author Thomas Müller <thomas.mueller@tmit.eu>
|
||||
* @author Richard Steinmetz <richard@steinmetz.cloud>
|
||||
*
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
@@ -974,4 +975,34 @@ class PrincipalTest extends TestCase {
|
||||
['mailto:user3@foo.bar', 'user3@foo.bar', 'principals/users/user3'],
|
||||
];
|
||||
}
|
||||
|
||||
public function testGetEmailAddressesOfPrincipal(): void {
|
||||
$principal = [
|
||||
'{http://sabredav.org/ns}email-address' => 'bar@company.org',
|
||||
'{DAV:}alternate-URI-set' => [
|
||||
'/some/url',
|
||||
'mailto:foo@bar.com',
|
||||
'mailto:duplicate@example.com',
|
||||
],
|
||||
'{urn:ietf:params:xml:ns:caldav}calendar-user-address-set' => [
|
||||
'mailto:bernard@example.com',
|
||||
'mailto:bernard.desruisseaux@example.com',
|
||||
],
|
||||
'{http://calendarserver.org/ns/}email-address-set' => [
|
||||
'mailto:duplicate@example.com',
|
||||
'mailto:user@some.org',
|
||||
],
|
||||
];
|
||||
|
||||
$expected = [
|
||||
'bar@company.org',
|
||||
'foo@bar.com',
|
||||
'duplicate@example.com',
|
||||
'bernard@example.com',
|
||||
'bernard.desruisseaux@example.com',
|
||||
'user@some.org',
|
||||
];
|
||||
$actual = $this->connector->getEmailAddressesOfPrincipal($principal);
|
||||
$this->assertEquals($expected, $actual);
|
||||
}
|
||||
}
|
||||
|
||||
+26
-21
@@ -4,40 +4,44 @@ OC.L10N.register(
|
||||
"Missing recovery key password" : "Falta la clau de recuperació de contrasenya",
|
||||
"Please repeat the recovery key password" : "Si us plau, repetiu la clau de recuperació de contrasenya",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "La contrasenya de la clau de recuperació repetida no coincideix amb la contrasenya de clau de recuperació proporcionada",
|
||||
"Recovery key successfully enabled" : "La clau de recuperació s'ha activat",
|
||||
"Could not enable recovery key. Please check your recovery key password!" : "No s'ha pogut activar la clau de recuperació. Comproveu contrasenya de la clau de recuperació!",
|
||||
"Recovery key successfully disabled" : "La clau de recuperació s'ha descativat",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "No s'ha pogut desactivar la clau de recuperació. Comproveu la contrasenya de la clau de recuperació!",
|
||||
"Recovery key successfully enabled" : "La clau de recuperació s'ha habilitat",
|
||||
"Could not enable recovery key. Please check your recovery key password!" : "No s'ha pogut habilitar la clau de recuperació. Comproveu contrasenya de la clau de recuperació!",
|
||||
"Recovery key successfully disabled" : "La clau de recuperació s'ha inhabilitat",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "No s'ha pogut inhabilitar la clau de recuperació. Comproveu la contrasenya de la clau de recuperació!",
|
||||
"Missing parameters" : "Falten paràmetres",
|
||||
"Please provide the old recovery password" : "Si us plau, proporcioneu la contrasenya de recuperació antiga",
|
||||
"Please provide a new recovery password" : "Si us plau, proporcioneu una nova contrasenya de recuperació",
|
||||
"Please repeat the new recovery password" : "Si us plau, repetiu la nova contrasenya de recuperació",
|
||||
"Password successfully changed." : "La contrasenya s'ha canviat.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "No s'ha pogut canviar la contrasenya. Potser la contrasenya anterior no era correcta.",
|
||||
"Recovery Key disabled" : "Clau de recuperació desactivada",
|
||||
"Recovery Key enabled" : "Clau de recuperació activada",
|
||||
"Could not enable the recovery key, please try again or contact your administrator" : "No es pot activar la clau de recuperació, torneu-ho a intentar o poseu-vos en contacte amb l'administrador",
|
||||
"Recovery Key disabled" : "Clau de recuperació inhabilitada",
|
||||
"Recovery Key enabled" : "Clau de recuperació habilitada",
|
||||
"Could not enable the recovery key, please try again or contact your administrator" : "No es pot habilitar la clau de recuperació, torneu-ho a provar o poseu-vos en contacte amb l'administrador",
|
||||
"Could not update the private key password." : "No s'ha pogut actualitzar la contrasenya de la clau privada.",
|
||||
"The old password was not correct, please try again." : "La contrasenya antiga no és correcta, si us plau torneu-ho a provar.",
|
||||
"The current log-in password was not correct, please try again." : "La contrasenya d'inici de sessió actual no era correcta, si us plau torneu-ho a provar.",
|
||||
"Private key password successfully updated." : "La contrasenya de la clau privada s'ha actualitzat.",
|
||||
"Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Clau privada no és vàlida per a l'aplicació de xifrat. Si us plau, actualitzeu la contrasenya de la clau privada a la vostra configuració personal per recuperar l'accés als vostres fitxers xifrats.",
|
||||
"Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "L'aplicació de xifrat està activada, però les vostres claus no s'han inicialitzat. Si us plau, tanqueu la sessió i torneu a iniciar la sessió.",
|
||||
"Please enable server side encryption in the admin settings in order to use the encryption module." : "Si us plau, activeu el xifratge del servidor a la configuració de l'administrador per poder fer servir el mòdul de xifratge.",
|
||||
"Encryption app is enabled and ready" : "L'aplicació de xifratge està activada i preparada",
|
||||
"Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Clau privada no és vàlida per a l'aplicació de xifratge. Si us plau, actualitzeu la contrasenya de la clau privada als vostrses paràmetres personalz per recuperar l'accés als vostres fitxers xifrats.",
|
||||
"Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "L'aplicació de xifratge està habilitada, però les vostres claus no s'han inicialitzat. Si us plau, tanqueu la sessió i torneu a iniciar la sessió.",
|
||||
"Please enable server side encryption in the admin settings in order to use the encryption module." : "Si us plau, activeu el xifratge del servidor als paràmetres de l'administrador per poder fer servir el mòdul de xifratge.",
|
||||
"Encryption app is enabled and ready" : "L'aplicació de xifratge està habilitada i preparada",
|
||||
"Bad Signature" : "Signatura incorrecta",
|
||||
"Missing Signature" : "Falta Signatura",
|
||||
"one-time password for server-side-encryption" : "contrasenya única per al xifrat de la banda del servidor",
|
||||
"Default encryption module" : "Mòdul de xifrat per defecte",
|
||||
"one-time password for server-side-encryption" : "contrasenya única per al xifratge en el servidor",
|
||||
"Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es pot desxifrar aquest fitxer, probablement és un fitxer compartit. Demaneu al propietari del fitxer que torni a compartir el fitxer amb vosaltres.",
|
||||
"Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es pot llegir aquest fitxer, probablement aquest sigui un fitxer compartit. Demana al propietari del fitxer que torni a compartir el fitxer amb tu.",
|
||||
"Default encryption module" : "Mòdul de xifratge per defecte",
|
||||
"Default encryption module for server-side encryption" : "Mòdul criptogràfic per defecte per a xifratge de servidor",
|
||||
"In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Per fer servir aquest mòdul criptogràfic s’ha de permetre encriptació\n\t\tal servidor a la configuració de l'administrador. Un cop activat, aquest mòdul xifrarà\n\t\ttots els vostres fitxers de forma transparent. L'encriptació està basada en claus de AES 256.\n\t\tEl mòdul no tocarà fitxers existents, només s'encriptaran els nous un cop s'hagi activat\n\t\tl'encriptació des del servidor. Tampoc no és possible desactivar\n\t\tl'encriptació i tornar a un sistema sense encriptació.\n\t\tSi us plau llegiu la documentació per saber totes les implicacions abans de decidir\n\t\tactivar l’encriptació des del servidor.",
|
||||
"The share will expire on %s." : "La compartició venç el %s.",
|
||||
"In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Per fer servir aquest mòdul criptogràfic s’ha de habilitar xifratge en el servidor\n\t\tals paràmetres de l'administrador. Un cop habilitat, aquest mòdul xifrarà\n\t\ttots els vostres fitxers de forma transparent. El xifratge està basada en claus de AES 256.\n\t\tEl mòdul no tocarà fitxers existents, només es xifraràn els nous un cop s'hagi activat\n\t\tel xifratge en el servidor. Tampoc no és possible inhabilitar\n\t\tel xifratge i tornar a un sistema no xifrat.\n\t\tSi us plau llegiu la documentació per saber totes les implicacions abans de decidir\n\t\tactivar el xifratge en el servidor.",
|
||||
"Hey there,\n\nThe administration enabled server-side-encryption. Your files were encrypted using the password \"%s\".\n\nPlease login to the web interface, go to the section \"Basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password.\n\n" : "Hola,\n\nL'administració ha habilitat el xifratge en el servidor. Els vostres fitxers s'han xifrat amb la contrasenya \"%s\".\n\nInicieu sessió a la interfície web, aneu a la secció \"Mòdul de xifratge bàsic\" dels vostres paràmetres personals i actualitzeu la vostra contrasenya de xifratge introduint aquesta contrasenya al camp \"Contrasenya d'inici de sessió antiga\" i la vostra contrasenya d'inici de sessió actual.\n\n",
|
||||
"The share will expire on %s." : "La compartició caduca el %s.",
|
||||
"Cheers!" : "Salut!",
|
||||
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació d'encriptació està activada però les claus no estan inicialitzades, tanqueu la sessió i inicieu-ne una de nova.",
|
||||
"Hey there,<br><br>The administration enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password.<br><br>" : "Hola,<br><br> L'administració ha habilitat el xifratge en el servidor. Els vostres fitxers s'han xifrat amb la contrasenya <strong>%s</strong>.<br><br>Si us plau, inicieu sessió a la interfície web, aneu a la secció \"Mòdul de xifratge bàsic\" dels vostres paràmetres personals i actualitzeu la vostra contrasenya de xifratge introduint aquesta contrasenya al camp \"Contrasenya d'inici de sessió antiga\" i la vostra contrasenya d'inici de sessió actual.<br><br>",
|
||||
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació de xifratge està activada però les claus no estan inicialitzades, tanqueu la sessió i inicieu-ne una de nova.",
|
||||
"Encrypt the home storage" : "Xifra l'emmagatzematge de casa",
|
||||
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Si activeu aquesta opció, es xifraran tots els fitxers emmagatzemats a l’emmagatzematge principal; en cas contrari, només es xifraran els fitxers d’emmagatzematge extern",
|
||||
"Enable recovery key" : "Habilita la clau de recuperació",
|
||||
"Disable recovery key" : "Desactiva la clau de recuperació",
|
||||
"Disable recovery key" : "Inhabilita la clau de recuperació",
|
||||
"The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "La clau de recuperació és una clau de xifratge addicional que s'utilitza per xifrar fitxers. Permet la recuperació dels fitxers d'un usuari si l'usuari oblida de la seva contrasenya.",
|
||||
"Recovery key password" : "Clau de recuperació de la contrasenya",
|
||||
"Repeat recovery key password" : "Repetiu la contrasenya de la clau de recuperació",
|
||||
@@ -46,17 +50,18 @@ OC.L10N.register(
|
||||
"New recovery key password" : "Nova contrasenya de clau de recuperació",
|
||||
"Repeat new recovery key password" : "Repetiu la contrasenya de la clau de recuperació nova",
|
||||
"Change Password" : "Canvia la contrasenya",
|
||||
"Basic encryption module" : "Mòdul bàsic d'encriptació",
|
||||
"Your private key password no longer matches your log-in password." : "La clau privada ja no es correspon amb la contrasenya d'accés:",
|
||||
"Basic encryption module" : "Mòdul de xifratge bàsic",
|
||||
"Your private key password no longer matches your log-in password." : "La clau privada ja no es correspon amb la contrasenya d'inici de sessió:",
|
||||
"Set your old private key password to your current log-in password:" : "Establiu la vostra antiga clau privada a l'actual contrasenya d'accés:",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Si no recordeu la contrasenya anterior podeu demanar a l'administrador que recuperi els vostres fitxers.",
|
||||
"Old log-in password" : "Contrasenya antiga d’inici de sessió",
|
||||
"Current log-in password" : "Contrasenya actual d’inici de sessió",
|
||||
"Update Private Key Password" : "Actualitza la contrasenya de clau privada",
|
||||
"Enable password recovery:" : "Activa la recuperació de contrasenya:",
|
||||
"Enable password recovery:" : "Habilita la recuperació de contrasenya:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Si activeu aquesta opció, podreu accedir als vostres fitxers encriptats en cas de pèrdua de contrasenya",
|
||||
"Enabled" : "Habilitat",
|
||||
"Disabled" : "Inhabilitat",
|
||||
"Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hola,<br><br>l'administrador ha activat l'encriptació des del servidor. Els vostres fitxers s'han encriptat fent servir la contrasenya <strong>%s</strong>. <br><br>Si us plau, inicieu la sessió a la interfície web, aneu a la secció \"mòdul bàsic d’encriptació\" de la vostra configuració personal i actualitzeu la contrasenya de xifrat introduint-hi aquesta contrasenya al camp \"antiga contrasenya d’inici de sessió\" i la vostra contrasenya actual.<br><br>"
|
||||
"Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password \"%s\".\n\nPlease login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.\n\n" : "Hola,\n\nl'administrador ha habilitat el xifratge en el servidor. Els vostres fitxers s'han xifrat amb la contrasenya \"%s\".\n\nSi us plau, inicieu sessió a la interfície web, aneu a la secció \"Mòdul de xifratge bàsic\" dels vostres paràmetres personals i actualitzeu la vostra contrasenya de xifratge introduint aquesta contrasenya al camp \"antiga contrasenya d'inici de sessió\" i la vostra contrasenya d'inici de sessió actual.\n\n",
|
||||
"Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hola,<br><br>l'administrador ha activat el xifratge en el servidor. Els vostres fitxers s'han encriptat fent servir la contrasenya <strong>%s</strong>. <br><br>Si us plau, inicieu la sessió a la interfície web, aneu a la secció \"Mòdul de xifratge bàsic\" dels vostres paràmetres personals i actualitzeu la contrasenya de xifrat introduint-hi aquesta contrasenya al camp \"antiga contrasenya d’inici de sessió\" i la vostra contrasenya actual.<br><br>"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
@@ -2,40 +2,44 @@
|
||||
"Missing recovery key password" : "Falta la clau de recuperació de contrasenya",
|
||||
"Please repeat the recovery key password" : "Si us plau, repetiu la clau de recuperació de contrasenya",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "La contrasenya de la clau de recuperació repetida no coincideix amb la contrasenya de clau de recuperació proporcionada",
|
||||
"Recovery key successfully enabled" : "La clau de recuperació s'ha activat",
|
||||
"Could not enable recovery key. Please check your recovery key password!" : "No s'ha pogut activar la clau de recuperació. Comproveu contrasenya de la clau de recuperació!",
|
||||
"Recovery key successfully disabled" : "La clau de recuperació s'ha descativat",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "No s'ha pogut desactivar la clau de recuperació. Comproveu la contrasenya de la clau de recuperació!",
|
||||
"Recovery key successfully enabled" : "La clau de recuperació s'ha habilitat",
|
||||
"Could not enable recovery key. Please check your recovery key password!" : "No s'ha pogut habilitar la clau de recuperació. Comproveu contrasenya de la clau de recuperació!",
|
||||
"Recovery key successfully disabled" : "La clau de recuperació s'ha inhabilitat",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "No s'ha pogut inhabilitar la clau de recuperació. Comproveu la contrasenya de la clau de recuperació!",
|
||||
"Missing parameters" : "Falten paràmetres",
|
||||
"Please provide the old recovery password" : "Si us plau, proporcioneu la contrasenya de recuperació antiga",
|
||||
"Please provide a new recovery password" : "Si us plau, proporcioneu una nova contrasenya de recuperació",
|
||||
"Please repeat the new recovery password" : "Si us plau, repetiu la nova contrasenya de recuperació",
|
||||
"Password successfully changed." : "La contrasenya s'ha canviat.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "No s'ha pogut canviar la contrasenya. Potser la contrasenya anterior no era correcta.",
|
||||
"Recovery Key disabled" : "Clau de recuperació desactivada",
|
||||
"Recovery Key enabled" : "Clau de recuperació activada",
|
||||
"Could not enable the recovery key, please try again or contact your administrator" : "No es pot activar la clau de recuperació, torneu-ho a intentar o poseu-vos en contacte amb l'administrador",
|
||||
"Recovery Key disabled" : "Clau de recuperació inhabilitada",
|
||||
"Recovery Key enabled" : "Clau de recuperació habilitada",
|
||||
"Could not enable the recovery key, please try again or contact your administrator" : "No es pot habilitar la clau de recuperació, torneu-ho a provar o poseu-vos en contacte amb l'administrador",
|
||||
"Could not update the private key password." : "No s'ha pogut actualitzar la contrasenya de la clau privada.",
|
||||
"The old password was not correct, please try again." : "La contrasenya antiga no és correcta, si us plau torneu-ho a provar.",
|
||||
"The current log-in password was not correct, please try again." : "La contrasenya d'inici de sessió actual no era correcta, si us plau torneu-ho a provar.",
|
||||
"Private key password successfully updated." : "La contrasenya de la clau privada s'ha actualitzat.",
|
||||
"Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Clau privada no és vàlida per a l'aplicació de xifrat. Si us plau, actualitzeu la contrasenya de la clau privada a la vostra configuració personal per recuperar l'accés als vostres fitxers xifrats.",
|
||||
"Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "L'aplicació de xifrat està activada, però les vostres claus no s'han inicialitzat. Si us plau, tanqueu la sessió i torneu a iniciar la sessió.",
|
||||
"Please enable server side encryption in the admin settings in order to use the encryption module." : "Si us plau, activeu el xifratge del servidor a la configuració de l'administrador per poder fer servir el mòdul de xifratge.",
|
||||
"Encryption app is enabled and ready" : "L'aplicació de xifratge està activada i preparada",
|
||||
"Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Clau privada no és vàlida per a l'aplicació de xifratge. Si us plau, actualitzeu la contrasenya de la clau privada als vostrses paràmetres personalz per recuperar l'accés als vostres fitxers xifrats.",
|
||||
"Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "L'aplicació de xifratge està habilitada, però les vostres claus no s'han inicialitzat. Si us plau, tanqueu la sessió i torneu a iniciar la sessió.",
|
||||
"Please enable server side encryption in the admin settings in order to use the encryption module." : "Si us plau, activeu el xifratge del servidor als paràmetres de l'administrador per poder fer servir el mòdul de xifratge.",
|
||||
"Encryption app is enabled and ready" : "L'aplicació de xifratge està habilitada i preparada",
|
||||
"Bad Signature" : "Signatura incorrecta",
|
||||
"Missing Signature" : "Falta Signatura",
|
||||
"one-time password for server-side-encryption" : "contrasenya única per al xifrat de la banda del servidor",
|
||||
"Default encryption module" : "Mòdul de xifrat per defecte",
|
||||
"one-time password for server-side-encryption" : "contrasenya única per al xifratge en el servidor",
|
||||
"Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es pot desxifrar aquest fitxer, probablement és un fitxer compartit. Demaneu al propietari del fitxer que torni a compartir el fitxer amb vosaltres.",
|
||||
"Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es pot llegir aquest fitxer, probablement aquest sigui un fitxer compartit. Demana al propietari del fitxer que torni a compartir el fitxer amb tu.",
|
||||
"Default encryption module" : "Mòdul de xifratge per defecte",
|
||||
"Default encryption module for server-side encryption" : "Mòdul criptogràfic per defecte per a xifratge de servidor",
|
||||
"In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Per fer servir aquest mòdul criptogràfic s’ha de permetre encriptació\n\t\tal servidor a la configuració de l'administrador. Un cop activat, aquest mòdul xifrarà\n\t\ttots els vostres fitxers de forma transparent. L'encriptació està basada en claus de AES 256.\n\t\tEl mòdul no tocarà fitxers existents, només s'encriptaran els nous un cop s'hagi activat\n\t\tl'encriptació des del servidor. Tampoc no és possible desactivar\n\t\tl'encriptació i tornar a un sistema sense encriptació.\n\t\tSi us plau llegiu la documentació per saber totes les implicacions abans de decidir\n\t\tactivar l’encriptació des del servidor.",
|
||||
"The share will expire on %s." : "La compartició venç el %s.",
|
||||
"In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Per fer servir aquest mòdul criptogràfic s’ha de habilitar xifratge en el servidor\n\t\tals paràmetres de l'administrador. Un cop habilitat, aquest mòdul xifrarà\n\t\ttots els vostres fitxers de forma transparent. El xifratge està basada en claus de AES 256.\n\t\tEl mòdul no tocarà fitxers existents, només es xifraràn els nous un cop s'hagi activat\n\t\tel xifratge en el servidor. Tampoc no és possible inhabilitar\n\t\tel xifratge i tornar a un sistema no xifrat.\n\t\tSi us plau llegiu la documentació per saber totes les implicacions abans de decidir\n\t\tactivar el xifratge en el servidor.",
|
||||
"Hey there,\n\nThe administration enabled server-side-encryption. Your files were encrypted using the password \"%s\".\n\nPlease login to the web interface, go to the section \"Basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password.\n\n" : "Hola,\n\nL'administració ha habilitat el xifratge en el servidor. Els vostres fitxers s'han xifrat amb la contrasenya \"%s\".\n\nInicieu sessió a la interfície web, aneu a la secció \"Mòdul de xifratge bàsic\" dels vostres paràmetres personals i actualitzeu la vostra contrasenya de xifratge introduint aquesta contrasenya al camp \"Contrasenya d'inici de sessió antiga\" i la vostra contrasenya d'inici de sessió actual.\n\n",
|
||||
"The share will expire on %s." : "La compartició caduca el %s.",
|
||||
"Cheers!" : "Salut!",
|
||||
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació d'encriptació està activada però les claus no estan inicialitzades, tanqueu la sessió i inicieu-ne una de nova.",
|
||||
"Hey there,<br><br>The administration enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password.<br><br>" : "Hola,<br><br> L'administració ha habilitat el xifratge en el servidor. Els vostres fitxers s'han xifrat amb la contrasenya <strong>%s</strong>.<br><br>Si us plau, inicieu sessió a la interfície web, aneu a la secció \"Mòdul de xifratge bàsic\" dels vostres paràmetres personals i actualitzeu la vostra contrasenya de xifratge introduint aquesta contrasenya al camp \"Contrasenya d'inici de sessió antiga\" i la vostra contrasenya d'inici de sessió actual.<br><br>",
|
||||
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació de xifratge està activada però les claus no estan inicialitzades, tanqueu la sessió i inicieu-ne una de nova.",
|
||||
"Encrypt the home storage" : "Xifra l'emmagatzematge de casa",
|
||||
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Si activeu aquesta opció, es xifraran tots els fitxers emmagatzemats a l’emmagatzematge principal; en cas contrari, només es xifraran els fitxers d’emmagatzematge extern",
|
||||
"Enable recovery key" : "Habilita la clau de recuperació",
|
||||
"Disable recovery key" : "Desactiva la clau de recuperació",
|
||||
"Disable recovery key" : "Inhabilita la clau de recuperació",
|
||||
"The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "La clau de recuperació és una clau de xifratge addicional que s'utilitza per xifrar fitxers. Permet la recuperació dels fitxers d'un usuari si l'usuari oblida de la seva contrasenya.",
|
||||
"Recovery key password" : "Clau de recuperació de la contrasenya",
|
||||
"Repeat recovery key password" : "Repetiu la contrasenya de la clau de recuperació",
|
||||
@@ -44,17 +48,18 @@
|
||||
"New recovery key password" : "Nova contrasenya de clau de recuperació",
|
||||
"Repeat new recovery key password" : "Repetiu la contrasenya de la clau de recuperació nova",
|
||||
"Change Password" : "Canvia la contrasenya",
|
||||
"Basic encryption module" : "Mòdul bàsic d'encriptació",
|
||||
"Your private key password no longer matches your log-in password." : "La clau privada ja no es correspon amb la contrasenya d'accés:",
|
||||
"Basic encryption module" : "Mòdul de xifratge bàsic",
|
||||
"Your private key password no longer matches your log-in password." : "La clau privada ja no es correspon amb la contrasenya d'inici de sessió:",
|
||||
"Set your old private key password to your current log-in password:" : "Establiu la vostra antiga clau privada a l'actual contrasenya d'accés:",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Si no recordeu la contrasenya anterior podeu demanar a l'administrador que recuperi els vostres fitxers.",
|
||||
"Old log-in password" : "Contrasenya antiga d’inici de sessió",
|
||||
"Current log-in password" : "Contrasenya actual d’inici de sessió",
|
||||
"Update Private Key Password" : "Actualitza la contrasenya de clau privada",
|
||||
"Enable password recovery:" : "Activa la recuperació de contrasenya:",
|
||||
"Enable password recovery:" : "Habilita la recuperació de contrasenya:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Si activeu aquesta opció, podreu accedir als vostres fitxers encriptats en cas de pèrdua de contrasenya",
|
||||
"Enabled" : "Habilitat",
|
||||
"Disabled" : "Inhabilitat",
|
||||
"Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hola,<br><br>l'administrador ha activat l'encriptació des del servidor. Els vostres fitxers s'han encriptat fent servir la contrasenya <strong>%s</strong>. <br><br>Si us plau, inicieu la sessió a la interfície web, aneu a la secció \"mòdul bàsic d’encriptació\" de la vostra configuració personal i actualitzeu la contrasenya de xifrat introduint-hi aquesta contrasenya al camp \"antiga contrasenya d’inici de sessió\" i la vostra contrasenya actual.<br><br>"
|
||||
"Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password \"%s\".\n\nPlease login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.\n\n" : "Hola,\n\nl'administrador ha habilitat el xifratge en el servidor. Els vostres fitxers s'han xifrat amb la contrasenya \"%s\".\n\nSi us plau, inicieu sessió a la interfície web, aneu a la secció \"Mòdul de xifratge bàsic\" dels vostres paràmetres personals i actualitzeu la vostra contrasenya de xifratge introduint aquesta contrasenya al camp \"antiga contrasenya d'inici de sessió\" i la vostra contrasenya d'inici de sessió actual.\n\n",
|
||||
"Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hola,<br><br>l'administrador ha activat el xifratge en el servidor. Els vostres fitxers s'han encriptat fent servir la contrasenya <strong>%s</strong>. <br><br>Si us plau, inicieu la sessió a la interfície web, aneu a la secció \"Mòdul de xifratge bàsic\" dels vostres paràmetres personals i actualitzeu la contrasenya de xifrat introduint-hi aquesta contrasenya al camp \"antiga contrasenya d’inici de sessió\" i la vostra contrasenya actual.<br><br>"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -54,8 +54,8 @@ OC.L10N.register(
|
||||
"Your private key password no longer matches your log-in password." : "Dit private nøglekodeord stemmer ikke længere overens med dit login-kodeord.",
|
||||
"Set your old private key password to your current log-in password:" : "Sæt dit gamle, private nøglekodeord til at være dit nuværende login-kodeord. ",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Hvis du ikke kan huske dit gamle kodeord kan du bede din administrator om at gendanne dine filer.",
|
||||
"Old log-in password" : "Gammelt login kodeord",
|
||||
"Current log-in password" : "Nuvrende login kodeord",
|
||||
"Old log-in password" : "Gammel adgangskode",
|
||||
"Current log-in password" : "Nuværende adgangskode",
|
||||
"Update Private Key Password" : "Opdater Privat Nøgle Kodeord",
|
||||
"Enable password recovery:" : "Aktiver kodeord gendannelse:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aktivering af denne valgmulighed tillader dig at generhverve adgang til dine krypterede filer i tilfælde af tab af kodeord",
|
||||
|
||||
@@ -52,8 +52,8 @@
|
||||
"Your private key password no longer matches your log-in password." : "Dit private nøglekodeord stemmer ikke længere overens med dit login-kodeord.",
|
||||
"Set your old private key password to your current log-in password:" : "Sæt dit gamle, private nøglekodeord til at være dit nuværende login-kodeord. ",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Hvis du ikke kan huske dit gamle kodeord kan du bede din administrator om at gendanne dine filer.",
|
||||
"Old log-in password" : "Gammelt login kodeord",
|
||||
"Current log-in password" : "Nuvrende login kodeord",
|
||||
"Old log-in password" : "Gammel adgangskode",
|
||||
"Current log-in password" : "Nuværende adgangskode",
|
||||
"Update Private Key Password" : "Opdater Privat Nøgle Kodeord",
|
||||
"Enable password recovery:" : "Aktiver kodeord gendannelse:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aktivering af denne valgmulighed tillader dig at generhverve adgang til dine krypterede filer i tilfælde af tab af kodeord",
|
||||
|
||||
@@ -33,8 +33,10 @@ OC.L10N.register(
|
||||
"Default encryption module" : "Module de chiffrement par défaut",
|
||||
"Default encryption module for server-side encryption" : "Module de chiffrement par défaut pour le chiffrement côté serveur",
|
||||
"In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Pour utiliser ce module de chiffrement, vous devez activer le chiffrement côté serveur dans les paramètres d'administration. Une fois activé, ce module chiffrera tous vos fichiers de manière transparente. Le chiffrement est basé sur des clés AES 256 bits.\nLe module ne touchera pas les fichiers existants, seuls les nouveaux fichiers seront chiffrés. Une fois le chiffrement côté serveur activé, il n'est pas possible de désactiver le chiffrement et de revenir à un système non chiffré.\n\t\tVeuillez lire la documentation pour connaître toutes les implications avant de vous décider à activer le chiffrement côté serveur.",
|
||||
"Hey there,\n\nThe administration enabled server-side-encryption. Your files were encrypted using the password \"%s\".\n\nPlease login to the web interface, go to the section \"Basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password.\n\n" : "Bonjour,\n\nL'administration a activé le chiffrement côté serveur. Vos fichiers ont été chiffrés avec le mot de passe \"%s\".\n\nVeuillez vous connecter à l'interface web, vous rendre à la section \"Module de chiffrement de base\" de vos paramètres personnels et mettre à jour votre mot de passe de chiffrement en insérant ce mot de passe dans le champ \"Ancien mot de passe de connexion\" ainsi que votre mot de passe actuel.\n\n",
|
||||
"The share will expire on %s." : "Le partage expirera le %s.",
|
||||
"Cheers!" : "À bientôt !",
|
||||
"Hey there,<br><br>The administration enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password.<br><br>" : "Hé là, <br><br>L'administration a activé le chiffrement côté serveur. Vos fichiers ont été cryptés avec le mot de passe <strong>%s</strong>.<br><br>Veuillez-vous connecter à l'interface Web, vous rendre à la section \"Module de chiffrement de base\" de vos paramètres personnels et mettre à jour votre mot de passe en entrant celui fournit ci-dessus dans le champ \"Ancien mot de passe de connexion\", ainsi que votre mot de passe actuel.<br><br>",
|
||||
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'application de chiffrement est activée mais vos clefs ne sont pas initialisées. Veuillez vous déconnecter et ensuite vous reconnecter.",
|
||||
"Encrypt the home storage" : "Chiffrer l'espace de stockage principal",
|
||||
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "L'activation de cette option chiffre tous les fichiers du stockage principal, sinon seuls les espaces de stockage externes seront chiffrés",
|
||||
|
||||
@@ -31,8 +31,10 @@
|
||||
"Default encryption module" : "Module de chiffrement par défaut",
|
||||
"Default encryption module for server-side encryption" : "Module de chiffrement par défaut pour le chiffrement côté serveur",
|
||||
"In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Pour utiliser ce module de chiffrement, vous devez activer le chiffrement côté serveur dans les paramètres d'administration. Une fois activé, ce module chiffrera tous vos fichiers de manière transparente. Le chiffrement est basé sur des clés AES 256 bits.\nLe module ne touchera pas les fichiers existants, seuls les nouveaux fichiers seront chiffrés. Une fois le chiffrement côté serveur activé, il n'est pas possible de désactiver le chiffrement et de revenir à un système non chiffré.\n\t\tVeuillez lire la documentation pour connaître toutes les implications avant de vous décider à activer le chiffrement côté serveur.",
|
||||
"Hey there,\n\nThe administration enabled server-side-encryption. Your files were encrypted using the password \"%s\".\n\nPlease login to the web interface, go to the section \"Basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password.\n\n" : "Bonjour,\n\nL'administration a activé le chiffrement côté serveur. Vos fichiers ont été chiffrés avec le mot de passe \"%s\".\n\nVeuillez vous connecter à l'interface web, vous rendre à la section \"Module de chiffrement de base\" de vos paramètres personnels et mettre à jour votre mot de passe de chiffrement en insérant ce mot de passe dans le champ \"Ancien mot de passe de connexion\" ainsi que votre mot de passe actuel.\n\n",
|
||||
"The share will expire on %s." : "Le partage expirera le %s.",
|
||||
"Cheers!" : "À bientôt !",
|
||||
"Hey there,<br><br>The administration enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password.<br><br>" : "Hé là, <br><br>L'administration a activé le chiffrement côté serveur. Vos fichiers ont été cryptés avec le mot de passe <strong>%s</strong>.<br><br>Veuillez-vous connecter à l'interface Web, vous rendre à la section \"Module de chiffrement de base\" de vos paramètres personnels et mettre à jour votre mot de passe en entrant celui fournit ci-dessus dans le champ \"Ancien mot de passe de connexion\", ainsi que votre mot de passe actuel.<br><br>",
|
||||
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'application de chiffrement est activée mais vos clefs ne sont pas initialisées. Veuillez vous déconnecter et ensuite vous reconnecter.",
|
||||
"Encrypt the home storage" : "Chiffrer l'espace de stockage principal",
|
||||
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "L'activation de cette option chiffre tous les fichiers du stockage principal, sinon seuls les espaces de stockage externes seront chiffrés",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user