mirror of
https://github.com/nextcloud/server.git
synced 2026-06-08 16:26:59 -04:00
Merge remote-tracking branch 'upstream/master' into feat-federatedfilesharing-logging
This commit is contained in:
commit
2dac72ddea
131 changed files with 2062 additions and 2804 deletions
|
|
@ -14,4 +14,5 @@ $CONFIG = [
|
|||
|
||||
if($cloudEnvironmentId !== true) {
|
||||
$CONFIG['overwritehost'] = $cloudEnvironmentId . '-80.apps.codespaces.githubusercontent.com';
|
||||
$CONFIG['overwriteprotocol'] = 'https';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,9 @@
|
|||
$color-main-text: #d8d8d8;
|
||||
$color-main-background: #181818;
|
||||
|
||||
$color-background-dark: lighten($color-main-background, 4%);
|
||||
$color-background-darker: lighten($color-main-background, 8%);
|
||||
$color-background-hover: lighten($color-main-background, 4%);
|
||||
$color-background-dark: lighten($color-main-background, 7%);
|
||||
$color-background-darker: lighten($color-main-background, 14%);
|
||||
|
||||
$color-placeholder-light: lighten($color-main-background, 10%);
|
||||
$color-placeholder-dark: lighten($color-main-background, 20%);
|
||||
|
|
@ -32,8 +33,8 @@ $color-border-dark: lighten($color-main-background, 14%);
|
|||
}
|
||||
|
||||
#navigation #apps li a,
|
||||
#body-settings #content.app-settings .app-image-icon,
|
||||
#body-settings #content.app-settings #app-sidebar #app-details-view h2 {
|
||||
#body-settings #content-vue.app-settings .app-image-icon,
|
||||
#body-settings #content-vue.app-settings #app-sidebar #app-details-view h2 {
|
||||
svg {
|
||||
filter: invert(100%);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
OC.L10N.register(
|
||||
"accessibility",
|
||||
{
|
||||
"Dark theme" : "Тъмна тема",
|
||||
"Dark theme" : "Активиране на тъмна тема",
|
||||
"Enable dark theme" : "Активиране на тъмна тема",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Тъмна тема, която облекчава очите ви, като намалява яркостта. Все още е в процес на разработка, затова, моля, докладвайте за всички проблеми, които откриете.",
|
||||
"High contrast mode" : "Висок контраст",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{ "translations": {
|
||||
"Dark theme" : "Тъмна тема",
|
||||
"Dark theme" : "Активиране на тъмна тема",
|
||||
"Enable dark theme" : "Активиране на тъмна тема",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Тъмна тема, която облекчава очите ви, като намалява яркостта. Все още е в процес на разработка, затова, моля, докладвайте за всички проблеми, които откриете.",
|
||||
"High contrast mode" : "Висок контраст",
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@ OC.L10N.register(
|
|||
"accessibility",
|
||||
{
|
||||
"Dark theme" : "Tem teñval",
|
||||
"Enable dark theme" : "Enaouiñ an tem teñval",
|
||||
"Enable dark theme" : "Aotren an tem teñval",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Un tem teñval evit distanañ ho taoulagad en ur vihanaat ar sklêrijenn. War ziorren emañ c'hoazh, setu ma c'hallit kas deomp hoc'h evezhiadennoù.",
|
||||
"High contrast mode" : "Mod dargemm uhel",
|
||||
"Enable high contrast mode" : "Enaouiñ an dargemm uhel",
|
||||
"Enable high contrast mode" : "Aotren mod an dargemm uhel",
|
||||
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Ur mod dargemm uhel evit aesaat ho merdeiñ. Bihanaet e vo ar c'halite met brasaet e vo ar spisder eta.",
|
||||
"Dyslexia font" : "Font a-enep an dislegiezh",
|
||||
"Enable dyslexia font" : "Aotren ar font a-enep an dislegiezh",
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
{ "translations": {
|
||||
"Dark theme" : "Tem teñval",
|
||||
"Enable dark theme" : "Enaouiñ an tem teñval",
|
||||
"Enable dark theme" : "Aotren an tem teñval",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Un tem teñval evit distanañ ho taoulagad en ur vihanaat ar sklêrijenn. War ziorren emañ c'hoazh, setu ma c'hallit kas deomp hoc'h evezhiadennoù.",
|
||||
"High contrast mode" : "Mod dargemm uhel",
|
||||
"Enable high contrast mode" : "Enaouiñ an dargemm uhel",
|
||||
"Enable high contrast mode" : "Aotren mod an dargemm uhel",
|
||||
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Ur mod dargemm uhel evit aesaat ho merdeiñ. Bihanaet e vo ar c'halite met brasaet e vo ar spisder eta.",
|
||||
"Dyslexia font" : "Font a-enep an dislegiezh",
|
||||
"Enable dyslexia font" : "Aotren ar font a-enep an dislegiezh",
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@ class ConfigController extends OCSController {
|
|||
$highcontrast = [$this->accessibilityProvider->getHighContrast()];
|
||||
$fonts = $this->accessibilityProvider->getFonts();
|
||||
|
||||
$availableOptions = array_map(function ($option) {
|
||||
$availableOptions = array_map(function ($option): string {
|
||||
return $option['id'];
|
||||
}, array_merge($themes, $highcontrast, $fonts));
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
OC.L10N.register(
|
||||
"admin_audit",
|
||||
{
|
||||
"Auditing / Logging" : "Одитиране/създаване на регистри"
|
||||
"Auditing / Logging" : "Одитиране/създаване на регистри",
|
||||
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Предоставя възможности за регистриране в Nextcloud, като например достъп до файлове за регистриране или други чувствителни действия."
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{ "translations": {
|
||||
"Auditing / Logging" : "Одитиране/създаване на регистри"
|
||||
"Auditing / Logging" : "Одитиране/създаване на регистри",
|
||||
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Предоставя възможности за регистриране в Nextcloud, като например достъп до файлове за регистриране или други чувствителни действия."
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
8
apps/cloud_federation_api/l10n/ro.js
Normal file
8
apps/cloud_federation_api/l10n/ro.js
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
OC.L10N.register(
|
||||
"cloud_federation_api",
|
||||
{
|
||||
"Cloud Federation API" : "API-ul Cloud Federation",
|
||||
"Enable clouds to communicate with each other and exchange data" : "Permiteți serviciilor de cloud să comunice între ele și să facă schimb de date",
|
||||
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "API-ul Cloud Federation permite diferitelor instanțe Nextcloud să comunice între ele și să facă schimb de date."
|
||||
},
|
||||
"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));");
|
||||
6
apps/cloud_federation_api/l10n/ro.json
Normal file
6
apps/cloud_federation_api/l10n/ro.json
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{ "translations": {
|
||||
"Cloud Federation API" : "API-ul Cloud Federation",
|
||||
"Enable clouds to communicate with each other and exchange data" : "Permiteți serviciilor de cloud să comunice între ele și să facă schimb de date",
|
||||
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "API-ul Cloud Federation permite diferitelor instanțe Nextcloud să comunice între ele și să facă schimb de date."
|
||||
},"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"
|
||||
}
|
||||
|
|
@ -12,12 +12,22 @@ OC.L10N.register(
|
|||
"<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" : "Изтрий коментар",
|
||||
"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 непрочетени коментари"],
|
||||
"_1 new comment_::_{unread} new comments_" : ["{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" : "Възникна грешка при опит за създаване на коментар",
|
||||
"New comment …" : "Нов коментар...",
|
||||
"Post" : "Публикация",
|
||||
"Cancel" : "Отказ",
|
||||
|
|
@ -25,6 +35,7 @@ OC.L10N.register(
|
|||
"More comments …" : "Още коментари...",
|
||||
"Save" : "Запазване",
|
||||
"Allowed characters {count} of {max}" : "Позволени символи {count} от {max}",
|
||||
"Error occurred while retrieving comment with ID {id}" : "Възникна грешка по време на извличане на коментар с ID {id}",
|
||||
"Error occurred while updating comment with id {id}" : "Възникна грешка по време на обновяване на коментар с код {id}",
|
||||
"Error occurred while posting comment" : "Възникна грешка по време на изпращане на коментар"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -10,12 +10,22 @@
|
|||
"<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" : "Изтрий коментар",
|
||||
"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 непрочетени коментари"],
|
||||
"_1 new comment_::_{unread} new comments_" : ["{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" : "Възникна грешка при опит за създаване на коментар",
|
||||
"New comment …" : "Нов коментар...",
|
||||
"Post" : "Публикация",
|
||||
"Cancel" : "Отказ",
|
||||
|
|
@ -23,6 +33,7 @@
|
|||
"More comments …" : "Още коментари...",
|
||||
"Save" : "Запазване",
|
||||
"Allowed characters {count} of {max}" : "Позволени символи {count} от {max}",
|
||||
"Error occurred while retrieving comment with ID {id}" : "Възникна грешка по време на извличане на коментар с ID {id}",
|
||||
"Error occurred while updating comment with id {id}" : "Възникна грешка по време на обновяване на коментар с код {id}",
|
||||
"Error occurred while posting comment" : "Възникна грешка по време на изпращане на коментар"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
|
|
|
|||
|
|
@ -15,11 +15,19 @@ OC.L10N.register(
|
|||
"Files app plugin to add comments to files" : "Plugin pentru aplicația de fișiere pentru adăugarea de comentarii",
|
||||
"Edit comment" : "Editează comentariul",
|
||||
"Delete comment" : "Șterge comentariul",
|
||||
"Cancel edit" : "Anulați editarea",
|
||||
"Post comment" : "Postează comentariu",
|
||||
"No comments yet, start the conversation!" : "Nici un comentariu încă, începe conversația!",
|
||||
"No more messages" : "Nu mai sunt mesaje",
|
||||
"Retry" : "Reîncearcă",
|
||||
"Unable to load the comments list" : "Lista de comentarii nu poate fi încărcată",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentariu necitit","%n comentarii necitite","%n comentarii necitite"],
|
||||
"_1 new comment_::_{unread} new comments_" : ["1 nou comentariu","{unread} noi comentarii","{unread} comentarii noi"],
|
||||
"Comment" : "Comentariu",
|
||||
"An error occurred while trying to edit the comment" : "A apărut o eroare la încercarea de a edita comentariul",
|
||||
"Comment deleted" : "Comentariul a fost șters",
|
||||
"An error occurred while trying to delete the comment" : "A apărut o eroare la încercarea de a șterge comentariul",
|
||||
"An error occurred while trying to create the comment" : "A apărut o eroare la încercarea de a crea comentariul",
|
||||
"New comment …" : "Comentariu nou...",
|
||||
"Post" : "Postează",
|
||||
"Cancel" : "Anulează",
|
||||
|
|
|
|||
|
|
@ -13,11 +13,19 @@
|
|||
"Files app plugin to add comments to files" : "Plugin pentru aplicația de fișiere pentru adăugarea de comentarii",
|
||||
"Edit comment" : "Editează comentariul",
|
||||
"Delete comment" : "Șterge comentariul",
|
||||
"Cancel edit" : "Anulați editarea",
|
||||
"Post comment" : "Postează comentariu",
|
||||
"No comments yet, start the conversation!" : "Nici un comentariu încă, începe conversația!",
|
||||
"No more messages" : "Nu mai sunt mesaje",
|
||||
"Retry" : "Reîncearcă",
|
||||
"Unable to load the comments list" : "Lista de comentarii nu poate fi încărcată",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentariu necitit","%n comentarii necitite","%n comentarii necitite"],
|
||||
"_1 new comment_::_{unread} new comments_" : ["1 nou comentariu","{unread} noi comentarii","{unread} comentarii noi"],
|
||||
"Comment" : "Comentariu",
|
||||
"An error occurred while trying to edit the comment" : "A apărut o eroare la încercarea de a edita comentariul",
|
||||
"Comment deleted" : "Comentariul a fost șters",
|
||||
"An error occurred while trying to delete the comment" : "A apărut o eroare la încercarea de a șterge comentariul",
|
||||
"An error occurred while trying to create the comment" : "A apărut o eroare la încercarea de a crea comentariul",
|
||||
"New comment …" : "Comentariu nou...",
|
||||
"Post" : "Postează",
|
||||
"Cancel" : "Anulează",
|
||||
|
|
|
|||
9
apps/contactsinteraction/l10n/ro.js
Normal file
9
apps/contactsinteraction/l10n/ro.js
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
OC.L10N.register(
|
||||
"contactsinteraction",
|
||||
{
|
||||
"Recently contacted" : "Contactat recent",
|
||||
"Contacts Interaction" : "Interacțiunea contactelor",
|
||||
"Manages interaction between users and contacts" : "Gestionează interacțiunea dintre utilizatori și contacte",
|
||||
"Collect data about user and contacts interactions and provide an address book for the data" : "Colectați date despre interacțiunile dintre utilizatori și contacte și furnizați o agendă pentru date"
|
||||
},
|
||||
"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));");
|
||||
7
apps/contactsinteraction/l10n/ro.json
Normal file
7
apps/contactsinteraction/l10n/ro.json
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
{ "translations": {
|
||||
"Recently contacted" : "Contactat recent",
|
||||
"Contacts Interaction" : "Interacțiunea contactelor",
|
||||
"Manages interaction between users and contacts" : "Gestionează interacțiunea dintre utilizatori și contacte",
|
||||
"Collect data about user and contacts interactions and provide an address book for the data" : "Colectați date despre interacțiunile dintre utilizatori și contacte și furnizați o agendă pentru date"
|
||||
},"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"
|
||||
}
|
||||
34
apps/dashboard/l10n/bg.js
Normal file
34
apps/dashboard/l10n/bg.js
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
OC.L10N.register(
|
||||
"dashboard",
|
||||
{
|
||||
"Dashboard" : "Табло",
|
||||
"Dashboard app" : "Приложение за Табло",
|
||||
"Show something" : "Покажи нещо",
|
||||
"Customize" : "Персонизиране",
|
||||
"Edit widgets" : "Редактиране на изпълнимите модули",
|
||||
"Get more widgets from the app store" : "Вземете повече приспособления от app store",
|
||||
"Change background image" : "Промяна на фоновото изображение",
|
||||
"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" : "Добро утро",
|
||||
"Good morning, {name}" : "Добро утро, {name}",
|
||||
"Good afternoon" : "Добър ден",
|
||||
"Good afternoon, {name}" : "Добър ден, {name}",
|
||||
"Good evening" : "Добър вечер",
|
||||
"Good evening, {name}" : "Добър вечер, {name}",
|
||||
"Hello" : "Здравейте",
|
||||
"Hello, {name}" : "Здравейте, {name}",
|
||||
"Pick from Files" : "Избери от Файловете",
|
||||
"Default images" : "Изображения по подразбиране",
|
||||
"Plain background" : "Обикновен фон",
|
||||
"Insert from {productName}" : "Вмъкване от {productName}",
|
||||
"Good night, {name}" : "Лека нощ, {name}",
|
||||
"Good night" : "Лека нощ",
|
||||
"Pick from files" : "Избери от Файловете"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
32
apps/dashboard/l10n/bg.json
Normal file
32
apps/dashboard/l10n/bg.json
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
{ "translations": {
|
||||
"Dashboard" : "Табло",
|
||||
"Dashboard app" : "Приложение за Табло",
|
||||
"Show something" : "Покажи нещо",
|
||||
"Customize" : "Персонизиране",
|
||||
"Edit widgets" : "Редактиране на изпълнимите модули",
|
||||
"Get more widgets from the app store" : "Вземете повече приспособления от app store",
|
||||
"Change background image" : "Промяна на фоновото изображение",
|
||||
"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" : "Добро утро",
|
||||
"Good morning, {name}" : "Добро утро, {name}",
|
||||
"Good afternoon" : "Добър ден",
|
||||
"Good afternoon, {name}" : "Добър ден, {name}",
|
||||
"Good evening" : "Добър вечер",
|
||||
"Good evening, {name}" : "Добър вечер, {name}",
|
||||
"Hello" : "Здравейте",
|
||||
"Hello, {name}" : "Здравейте, {name}",
|
||||
"Pick from Files" : "Избери от Файловете",
|
||||
"Default images" : "Изображения по подразбиране",
|
||||
"Plain background" : "Обикновен фон",
|
||||
"Insert from {productName}" : "Вмъкване от {productName}",
|
||||
"Good night, {name}" : "Лека нощ, {name}",
|
||||
"Good night" : "Лека нощ",
|
||||
"Pick from files" : "Избери от Файловете"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
|
|
@ -5,7 +5,7 @@
|
|||
<name>WebDAV</name>
|
||||
<summary>WebDAV endpoint</summary>
|
||||
<description>WebDAV endpoint</description>
|
||||
<version>1.17.1</version>
|
||||
<version>1.17.2</version>
|
||||
<licence>agpl</licence>
|
||||
<author>owncloud.org</author>
|
||||
<namespace>DAV</namespace>
|
||||
|
|
|
|||
|
|
@ -25,6 +25,8 @@ declare(strict_types=1);
|
|||
*
|
||||
*/
|
||||
|
||||
use \OCA\DAV\Direct\ServerFactory;
|
||||
|
||||
// no php execution timeout for webdav
|
||||
if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) {
|
||||
@set_time_limit(0);
|
||||
|
|
@ -36,7 +38,8 @@ ignore_user_abort(true);
|
|||
|
||||
$requestUri = \OC::$server->getRequest()->getRequestUri();
|
||||
|
||||
$serverFactory = new \OCA\DAV\Direct\ServerFactory(\OC::$server->getConfig(), \OC::$server->getL10N('dav'));
|
||||
/** @var ServerFactory $serverFactory */
|
||||
$serverFactory = \OC::$server->query(ServerFactory::class);
|
||||
$server = $serverFactory->createServer(
|
||||
$baseuri,
|
||||
$requestUri,
|
||||
|
|
|
|||
|
|
@ -176,6 +176,7 @@ return array(
|
|||
'OCA\\DAV\\Events\\AddressBookDeletedEvent' => $baseDir . '/../lib/Events/AddressBookDeletedEvent.php',
|
||||
'OCA\\DAV\\Events\\AddressBookShareUpdatedEvent' => $baseDir . '/../lib/Events/AddressBookShareUpdatedEvent.php',
|
||||
'OCA\\DAV\\Events\\AddressBookUpdatedEvent' => $baseDir . '/../lib/Events/AddressBookUpdatedEvent.php',
|
||||
'OCA\\DAV\\Events\\BeforeFileDirectDownloadedEvent' => $baseDir . '/../lib/Events/BeforeFileDirectDownloadedEvent.php',
|
||||
'OCA\\DAV\\Events\\CachedCalendarObjectCreatedEvent' => $baseDir . '/../lib/Events/CachedCalendarObjectCreatedEvent.php',
|
||||
'OCA\\DAV\\Events\\CachedCalendarObjectDeletedEvent' => $baseDir . '/../lib/Events/CachedCalendarObjectDeletedEvent.php',
|
||||
'OCA\\DAV\\Events\\CachedCalendarObjectUpdatedEvent' => $baseDir . '/../lib/Events/CachedCalendarObjectUpdatedEvent.php',
|
||||
|
|
@ -235,6 +236,7 @@ return array(
|
|||
'OCA\\DAV\\Migration\\Version1011Date20190806104428' => $baseDir . '/../lib/Migration/Version1011Date20190806104428.php',
|
||||
'OCA\\DAV\\Migration\\Version1012Date20190808122342' => $baseDir . '/../lib/Migration/Version1012Date20190808122342.php',
|
||||
'OCA\\DAV\\Migration\\Version1016Date20201109085907' => $baseDir . '/../lib/Migration/Version1016Date20201109085907.php',
|
||||
'OCA\\DAV\\Migration\\Version1017Date20210216083742' => $baseDir . '/../lib/Migration/Version1017Date20210216083742.php',
|
||||
'OCA\\DAV\\Provisioning\\Apple\\AppleProvisioningNode' => $baseDir . '/../lib/Provisioning/Apple/AppleProvisioningNode.php',
|
||||
'OCA\\DAV\\Provisioning\\Apple\\AppleProvisioningPlugin' => $baseDir . '/../lib/Provisioning/Apple/AppleProvisioningPlugin.php',
|
||||
'OCA\\DAV\\RootCollection' => $baseDir . '/../lib/RootCollection.php',
|
||||
|
|
|
|||
|
|
@ -191,6 +191,7 @@ class ComposerStaticInitDAV
|
|||
'OCA\\DAV\\Events\\AddressBookDeletedEvent' => __DIR__ . '/..' . '/../lib/Events/AddressBookDeletedEvent.php',
|
||||
'OCA\\DAV\\Events\\AddressBookShareUpdatedEvent' => __DIR__ . '/..' . '/../lib/Events/AddressBookShareUpdatedEvent.php',
|
||||
'OCA\\DAV\\Events\\AddressBookUpdatedEvent' => __DIR__ . '/..' . '/../lib/Events/AddressBookUpdatedEvent.php',
|
||||
'OCA\\DAV\\Events\\BeforeFileDirectDownloadedEvent' => __DIR__ . '/..' . '/../lib/Events/BeforeFileDirectDownloadedEvent.php',
|
||||
'OCA\\DAV\\Events\\CachedCalendarObjectCreatedEvent' => __DIR__ . '/..' . '/../lib/Events/CachedCalendarObjectCreatedEvent.php',
|
||||
'OCA\\DAV\\Events\\CachedCalendarObjectDeletedEvent' => __DIR__ . '/..' . '/../lib/Events/CachedCalendarObjectDeletedEvent.php',
|
||||
'OCA\\DAV\\Events\\CachedCalendarObjectUpdatedEvent' => __DIR__ . '/..' . '/../lib/Events/CachedCalendarObjectUpdatedEvent.php',
|
||||
|
|
@ -250,6 +251,7 @@ class ComposerStaticInitDAV
|
|||
'OCA\\DAV\\Migration\\Version1011Date20190806104428' => __DIR__ . '/..' . '/../lib/Migration/Version1011Date20190806104428.php',
|
||||
'OCA\\DAV\\Migration\\Version1012Date20190808122342' => __DIR__ . '/..' . '/../lib/Migration/Version1012Date20190808122342.php',
|
||||
'OCA\\DAV\\Migration\\Version1016Date20201109085907' => __DIR__ . '/..' . '/../lib/Migration/Version1016Date20201109085907.php',
|
||||
'OCA\\DAV\\Migration\\Version1017Date20210216083742' => __DIR__ . '/..' . '/../lib/Migration/Version1017Date20210216083742.php',
|
||||
'OCA\\DAV\\Provisioning\\Apple\\AppleProvisioningNode' => __DIR__ . '/..' . '/../lib/Provisioning/Apple/AppleProvisioningNode.php',
|
||||
'OCA\\DAV\\Provisioning\\Apple\\AppleProvisioningPlugin' => __DIR__ . '/..' . '/../lib/Provisioning/Apple/AppleProvisioningPlugin.php',
|
||||
'OCA\\DAV\\RootCollection' => __DIR__ . '/..' . '/../lib/RootCollection.php',
|
||||
|
|
|
|||
|
|
@ -22,8 +22,23 @@ OC.L10N.register(
|
|||
"You shared calendar {calendar} with group {group}" : "您與群組 {group} 分享了日曆 {calendar}",
|
||||
"{actor} shared calendar {calendar} with group {group}" : "{actor} 與群組 {group} 分享了日曆 {calendar}",
|
||||
"You unshared calendar {calendar} from group {group}" : "您已停止與群組 {group} 分享日曆 {calendar}",
|
||||
"{actor} unshared calendar {calendar} from group {group}" : "{actor} 從 {group} 群組中取消了分享日曆 {calendar}",
|
||||
"{actor} created event {event} in calendar {calendar}" : "{actor} 新增了日曆 {calendar} 中的活動 {event}",
|
||||
"You created event {event} in calendar {calendar}" : "您新增了日曆 {calendar} 中的活動 {event}",
|
||||
"{actor} deleted event {event} from calendar {calendar}" : "{actor} 從日曆 {calendar} 中刪除了活動 {event}",
|
||||
"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}",
|
||||
"Busy" : "忙碌中",
|
||||
"{actor} created todo {todo} in list {calendar}" : "{actor} 在任務列表 {calendar} 中建立了待辦事項 {todo}",
|
||||
"You created todo {todo} in list {calendar}" : "您在任務列表 {calendar} 中建立了待辦事項 {todo}",
|
||||
"{actor} deleted todo {todo} from list {calendar}" : "{actor} 從任務列表 {calendar} 中刪除了待辦事項 {todo}",
|
||||
"You deleted todo {todo} from list {calendar}" : "您從任務列表 {calendar} 中刪除了待辦事項 {todo}",
|
||||
"{actor} updated todo {todo} in list {calendar}" : "{actor} 從任務列表 {calendar} 中更新了待辦事項 {todo}",
|
||||
"You updated todo {todo} in list {calendar}" : "您在任務列表 {calendar} 中更新了待辦事項 {todo}",
|
||||
"{actor} solved todo {todo} in list {calendar}" : "{actor} 解决了任務列表 {calendar} 中的代辦事項 {todo}",
|
||||
"You solved todo {todo} in list {calendar}" : "您解决了任務列表 {calendar} 中的代辦事項 {todo}",
|
||||
"{actor} reopened todo {todo} in list {calendar}" : "{actor} 重新開啟了任務列表 {calendar} 中的代辦事項 {todo}",
|
||||
"You reopened todo {todo} in list {calendar}" : "你重新開啟了 {calendar} 清單中的代辦事項 {todo}",
|
||||
"Calendar and tasks" : "日曆和任務",
|
||||
"A <strong>calendar</strong> was modified" : "<strong>日曆</strong>被修改",
|
||||
|
|
@ -41,6 +56,7 @@ OC.L10N.register(
|
|||
"_%n day_::_%n days_" : ["%n 天"],
|
||||
"_%n hour_::_%n hours_" : ["%n 小時"],
|
||||
"_%n minute_::_%n minutes_" : ["%n 分鐘"],
|
||||
"%s (in %s)" : "%s(共 %s)",
|
||||
"%s (%s ago)" : "%s(%s 前)",
|
||||
"Calendar: %s" : "日曆:%s",
|
||||
"Date: %s" : "日期:%s",
|
||||
|
|
@ -81,11 +97,15 @@ OC.L10N.register(
|
|||
"Save" : "儲存",
|
||||
"Your attendance was updated successfully." : "您的參與狀況成功更新",
|
||||
"Calendar server" : "日曆伺服器",
|
||||
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "也安裝 {calendarappstoreopen}日曆 app{linkclose}或{calendardocopen}連接到您的桌面電腦和流動裝置進行同步↗{linkclose}。",
|
||||
"Send invitations to attendees" : "發送邀請函給參加者",
|
||||
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "請確保正確設置{emailopen}電郵伺服器{linkclose}。",
|
||||
"Automatically generate a birthday calendar" : "自動建立生日日曆",
|
||||
"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." : "因此,它們在啟用後不會立即可用,但會在一段時間後顯示出来。",
|
||||
"Send notifications for events" : "發送活動通知",
|
||||
"Notifications are sent via background jobs, so these must occur often enough." : "通告將透過後台任務發送,所以任務的頻率要足夠高。",
|
||||
"Enable notifications for events via push" : "啟用推送事件通知",
|
||||
"Hello %s," : "%s您好,",
|
||||
"The meeting »%1$s« with %2$s was canceled." : "與 %2$s 的會議 %1$s 取消了。",
|
||||
"The meeting »%1$s« with %2$s was updated." : "與 %2$s 的會議 %1$s 有變動。",
|
||||
|
|
|
|||
|
|
@ -20,8 +20,23 @@
|
|||
"You shared calendar {calendar} with group {group}" : "您與群組 {group} 分享了日曆 {calendar}",
|
||||
"{actor} shared calendar {calendar} with group {group}" : "{actor} 與群組 {group} 分享了日曆 {calendar}",
|
||||
"You unshared calendar {calendar} from group {group}" : "您已停止與群組 {group} 分享日曆 {calendar}",
|
||||
"{actor} unshared calendar {calendar} from group {group}" : "{actor} 從 {group} 群組中取消了分享日曆 {calendar}",
|
||||
"{actor} created event {event} in calendar {calendar}" : "{actor} 新增了日曆 {calendar} 中的活動 {event}",
|
||||
"You created event {event} in calendar {calendar}" : "您新增了日曆 {calendar} 中的活動 {event}",
|
||||
"{actor} deleted event {event} from calendar {calendar}" : "{actor} 從日曆 {calendar} 中刪除了活動 {event}",
|
||||
"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}",
|
||||
"Busy" : "忙碌中",
|
||||
"{actor} created todo {todo} in list {calendar}" : "{actor} 在任務列表 {calendar} 中建立了待辦事項 {todo}",
|
||||
"You created todo {todo} in list {calendar}" : "您在任務列表 {calendar} 中建立了待辦事項 {todo}",
|
||||
"{actor} deleted todo {todo} from list {calendar}" : "{actor} 從任務列表 {calendar} 中刪除了待辦事項 {todo}",
|
||||
"You deleted todo {todo} from list {calendar}" : "您從任務列表 {calendar} 中刪除了待辦事項 {todo}",
|
||||
"{actor} updated todo {todo} in list {calendar}" : "{actor} 從任務列表 {calendar} 中更新了待辦事項 {todo}",
|
||||
"You updated todo {todo} in list {calendar}" : "您在任務列表 {calendar} 中更新了待辦事項 {todo}",
|
||||
"{actor} solved todo {todo} in list {calendar}" : "{actor} 解决了任務列表 {calendar} 中的代辦事項 {todo}",
|
||||
"You solved todo {todo} in list {calendar}" : "您解决了任務列表 {calendar} 中的代辦事項 {todo}",
|
||||
"{actor} reopened todo {todo} in list {calendar}" : "{actor} 重新開啟了任務列表 {calendar} 中的代辦事項 {todo}",
|
||||
"You reopened todo {todo} in list {calendar}" : "你重新開啟了 {calendar} 清單中的代辦事項 {todo}",
|
||||
"Calendar and tasks" : "日曆和任務",
|
||||
"A <strong>calendar</strong> was modified" : "<strong>日曆</strong>被修改",
|
||||
|
|
@ -39,6 +54,7 @@
|
|||
"_%n day_::_%n days_" : ["%n 天"],
|
||||
"_%n hour_::_%n hours_" : ["%n 小時"],
|
||||
"_%n minute_::_%n minutes_" : ["%n 分鐘"],
|
||||
"%s (in %s)" : "%s(共 %s)",
|
||||
"%s (%s ago)" : "%s(%s 前)",
|
||||
"Calendar: %s" : "日曆:%s",
|
||||
"Date: %s" : "日期:%s",
|
||||
|
|
@ -79,11 +95,15 @@
|
|||
"Save" : "儲存",
|
||||
"Your attendance was updated successfully." : "您的參與狀況成功更新",
|
||||
"Calendar server" : "日曆伺服器",
|
||||
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "也安裝 {calendarappstoreopen}日曆 app{linkclose}或{calendardocopen}連接到您的桌面電腦和流動裝置進行同步↗{linkclose}。",
|
||||
"Send invitations to attendees" : "發送邀請函給參加者",
|
||||
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "請確保正確設置{emailopen}電郵伺服器{linkclose}。",
|
||||
"Automatically generate a birthday calendar" : "自動建立生日日曆",
|
||||
"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." : "因此,它們在啟用後不會立即可用,但會在一段時間後顯示出来。",
|
||||
"Send notifications for events" : "發送活動通知",
|
||||
"Notifications are sent via background jobs, so these must occur often enough." : "通告將透過後台任務發送,所以任務的頻率要足夠高。",
|
||||
"Enable notifications for events via push" : "啟用推送事件通知",
|
||||
"Hello %s," : "%s您好,",
|
||||
"The meeting »%1$s« with %2$s was canceled." : "與 %2$s 的會議 %1$s 取消了。",
|
||||
"The meeting »%1$s« with %2$s was updated." : "與 %2$s 的會議 %1$s 有變動。",
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ class Application extends App implements IBootstrap {
|
|||
}
|
||||
});
|
||||
|
||||
$birthdayListener = function ($event) use ($container) {
|
||||
$birthdayListener = function ($event) use ($container): void {
|
||||
if ($event instanceof GenericEvent) {
|
||||
/** @var BirthdayService $b */
|
||||
$b = $container->query(BirthdayService::class);
|
||||
|
|
@ -168,7 +168,7 @@ class Application extends App implements IBootstrap {
|
|||
}
|
||||
});
|
||||
|
||||
$clearPhotoCache = function ($event) use ($container) {
|
||||
$clearPhotoCache = function ($event) use ($container): void {
|
||||
if ($event instanceof GenericEvent) {
|
||||
/** @var PhotoCache $p */
|
||||
$p = $container->query(PhotoCache::class);
|
||||
|
|
@ -240,7 +240,7 @@ class Application extends App implements IBootstrap {
|
|||
);
|
||||
});
|
||||
|
||||
$listener = function (GenericEvent $event, $eventName) use ($container) {
|
||||
$listener = function (GenericEvent $event, $eventName) use ($container): void {
|
||||
/** @var Backend $backend */
|
||||
$backend = $container->query(Backend::class);
|
||||
|
||||
|
|
@ -336,7 +336,7 @@ class Application extends App implements IBootstrap {
|
|||
}
|
||||
);
|
||||
|
||||
$eventHandler = function () use ($container, $serverContainer) {
|
||||
$eventHandler = function () use ($container, $serverContainer): void {
|
||||
try {
|
||||
/** @var UpdateCalendarResourcesRoomsBackgroundJob $job */
|
||||
$job = $container->query(UpdateCalendarResourcesRoomsBackgroundJob::class);
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@ use OCA\DAV\CalDAV\Integration\ICalendarProvider;
|
|||
use OCA\DAV\CardDAV\Integration\IAddressBookProvider;
|
||||
use OCP\App\IAppManager;
|
||||
use OCP\AppFramework\QueryException;
|
||||
use Sabre\DAV\Collection;
|
||||
use Sabre\DAV\ServerPlugin;
|
||||
use function array_map;
|
||||
use function class_exists;
|
||||
use function is_array;
|
||||
|
|
@ -57,30 +59,33 @@ class PluginManager {
|
|||
/**
|
||||
* App plugins
|
||||
*
|
||||
* @var array
|
||||
* @var ServerPlugin[]
|
||||
*/
|
||||
private $plugins = null;
|
||||
private $plugins = [];
|
||||
|
||||
/**
|
||||
* App collections
|
||||
*
|
||||
* @var array
|
||||
* @var Collection[]
|
||||
*/
|
||||
private $collections = null;
|
||||
private $collections = [];
|
||||
|
||||
/**
|
||||
* Address book plugins
|
||||
*
|
||||
* @var IAddressBookProvider[]|null
|
||||
* @var IAddressBookProvider[]
|
||||
*/
|
||||
private $addressBookPlugins = null;
|
||||
private $addressBookPlugins = [];
|
||||
|
||||
/**
|
||||
* Calendar plugins
|
||||
*
|
||||
* @var array
|
||||
* @var ICalendarProvider[]
|
||||
*/
|
||||
private $calendarPlugins = null;
|
||||
private $calendarPlugins = [];
|
||||
|
||||
/** @var bool */
|
||||
private $populated = false;
|
||||
|
||||
/**
|
||||
* Contstruct a PluginManager
|
||||
|
|
@ -96,12 +101,10 @@ class PluginManager {
|
|||
/**
|
||||
* Returns an array of app-registered plugins
|
||||
*
|
||||
* @return array
|
||||
* @return ServerPlugin[]
|
||||
*/
|
||||
public function getAppPlugins() {
|
||||
if (null === $this->plugins) {
|
||||
$this->populate();
|
||||
}
|
||||
$this->populate();
|
||||
return $this->plugins;
|
||||
}
|
||||
|
||||
|
|
@ -111,9 +114,7 @@ class PluginManager {
|
|||
* @return array
|
||||
*/
|
||||
public function getAppCollections() {
|
||||
if (null === $this->collections) {
|
||||
$this->populate();
|
||||
}
|
||||
$this->populate();
|
||||
return $this->collections;
|
||||
}
|
||||
|
||||
|
|
@ -121,46 +122,62 @@ class PluginManager {
|
|||
* @return IAddressBookProvider[]
|
||||
*/
|
||||
public function getAddressBookPlugins(): array {
|
||||
if ($this->addressBookPlugins === null) {
|
||||
$this->populate();
|
||||
}
|
||||
$this->populate();
|
||||
return $this->addressBookPlugins;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of app-registered calendar plugins
|
||||
*
|
||||
* @return array
|
||||
* @return ICalendarProvider[]
|
||||
*/
|
||||
public function getCalendarPlugins():array {
|
||||
if (null === $this->calendarPlugins) {
|
||||
$this->populate();
|
||||
}
|
||||
$this->populate();
|
||||
return $this->calendarPlugins;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve plugin and collection list and populate attributes
|
||||
*/
|
||||
private function populate() {
|
||||
$this->plugins = [];
|
||||
$this->addressBookPlugins = [];
|
||||
$this->calendarPlugins = [];
|
||||
$this->collections = [];
|
||||
private function populate(): void {
|
||||
if ($this->populated) {
|
||||
return;
|
||||
}
|
||||
$this->populated = true;
|
||||
|
||||
foreach ($this->appManager->getInstalledApps() as $app) {
|
||||
// load plugins and collections from info.xml
|
||||
$info = $this->appManager->getAppInfo($app);
|
||||
if (!isset($info['types']) || !in_array('dav', $info['types'], true)) {
|
||||
continue;
|
||||
}
|
||||
$this->loadSabrePluginsFromInfoXml($this->extractPluginList($info));
|
||||
$this->loadSabreCollectionsFromInfoXml($this->extractCollectionList($info));
|
||||
$this->loadSabreAddressBookPluginsFromInfoXml($this->extractAddressBookPluginList($info));
|
||||
$this->loadSabreCalendarPluginsFromInfoXml($this->extractCalendarPluginList($info));
|
||||
$plugins = $this->loadSabrePluginsFromInfoXml($this->extractPluginList($info));
|
||||
foreach ($plugins as $plugin) {
|
||||
$this->plugins[] = $plugin;
|
||||
}
|
||||
|
||||
$collections = $this->loadSabreCollectionsFromInfoXml($this->extractCollectionList($info));
|
||||
foreach ($collections as $collection) {
|
||||
$this->collections[] = $collection;
|
||||
}
|
||||
|
||||
$addresbookPlugins = $this->loadSabreAddressBookPluginsFromInfoXml($this->extractAddressBookPluginList($info));
|
||||
foreach ($addresbookPlugins as $addresbookPlugin) {
|
||||
$this->addressBookPlugins[] = $addresbookPlugin;
|
||||
}
|
||||
|
||||
$calendarPlugins = $this->loadSabreCalendarPluginsFromInfoXml($this->extractCalendarPluginList($info));
|
||||
foreach ($calendarPlugins as $calendarPlugin) {
|
||||
$this->calendarPlugins[] = $calendarPlugin;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function extractPluginList(array $array) {
|
||||
/**
|
||||
* @param array $array
|
||||
* @return string[]
|
||||
*/
|
||||
private function extractPluginList(array $array): array {
|
||||
if (isset($array['sabre']) && is_array($array['sabre'])) {
|
||||
if (isset($array['sabre']['plugins']) && is_array($array['sabre']['plugins'])) {
|
||||
if (isset($array['sabre']['plugins']['plugin'])) {
|
||||
|
|
@ -175,7 +192,11 @@ class PluginManager {
|
|||
return [];
|
||||
}
|
||||
|
||||
private function extractCollectionList(array $array) {
|
||||
/**
|
||||
* @param array $array
|
||||
* @return string[]
|
||||
*/
|
||||
private function extractCollectionList(array $array): array {
|
||||
if (isset($array['sabre']) && is_array($array['sabre'])) {
|
||||
if (isset($array['sabre']['collections']) && is_array($array['sabre']['collections'])) {
|
||||
if (isset($array['sabre']['collections']['collection'])) {
|
||||
|
|
@ -192,7 +213,6 @@ class PluginManager {
|
|||
|
||||
/**
|
||||
* @param array $array
|
||||
*
|
||||
* @return string[]
|
||||
*/
|
||||
private function extractAddressBookPluginList(array $array): array {
|
||||
|
|
@ -213,7 +233,11 @@ class PluginManager {
|
|||
return $items;
|
||||
}
|
||||
|
||||
private function extractCalendarPluginList(array $array):array {
|
||||
/**
|
||||
* @param array $array
|
||||
* @return string[]
|
||||
*/
|
||||
private function extractCalendarPluginList(array $array): array {
|
||||
if (isset($array['sabre']) && is_array($array['sabre'])) {
|
||||
if (isset($array['sabre']['calendar-plugins']) && is_array($array['sabre']['calendar-plugins'])) {
|
||||
if (isset($array['sabre']['calendar-plugins']['plugin'])) {
|
||||
|
|
@ -228,35 +252,7 @@ class PluginManager {
|
|||
return [];
|
||||
}
|
||||
|
||||
private function loadSabrePluginsFromInfoXml(array $plugins) {
|
||||
foreach ($plugins as $plugin) {
|
||||
try {
|
||||
$this->plugins[] = $this->container->query($plugin);
|
||||
} catch (QueryException $e) {
|
||||
if (class_exists($plugin)) {
|
||||
$this->plugins[] = new $plugin();
|
||||
} else {
|
||||
throw new \Exception("Sabre plugin class '$plugin' is unknown and could not be loaded");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function loadSabreCollectionsFromInfoXml(array $collections) {
|
||||
foreach ($collections as $collection) {
|
||||
try {
|
||||
$this->collections[] = $this->container->query($collection);
|
||||
} catch (QueryException $e) {
|
||||
if (class_exists($collection)) {
|
||||
$this->collections[] = new $collection();
|
||||
} else {
|
||||
throw new \Exception("Sabre collection class '$collection' is unknown and could not be loaded");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function createPluginInstance(string $className) {
|
||||
private function createClass(string $className): object {
|
||||
try {
|
||||
return $this->container->query($className);
|
||||
} catch (QueryException $e) {
|
||||
|
|
@ -265,42 +261,64 @@ class PluginManager {
|
|||
}
|
||||
}
|
||||
|
||||
throw new \Exception("Sabre plugin class '$className' is unknown and could not be loaded");
|
||||
throw new \Exception('Could not load ' . $className, 0, $e);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string[] $classes
|
||||
* @return ServerPlugin[]
|
||||
* @throws \Exception
|
||||
*/
|
||||
private function loadSabrePluginsFromInfoXml(array $classes): array {
|
||||
return array_map(function (string $className): ServerPlugin {
|
||||
$instance = $this->createClass($className);
|
||||
if (!($instance instanceof ServerPlugin)) {
|
||||
throw new \Exception('Sabre server plugin ' . $className . ' does not implement the ' . ServerPlugin::class . ' interface');
|
||||
}
|
||||
return $instance;
|
||||
}, $classes);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string[] $plugin
|
||||
* @param string[] $classes
|
||||
* @return Collection[]
|
||||
*/
|
||||
private function loadSabreAddressBookPluginsFromInfoXml(array $plugins): void {
|
||||
$providers = array_map(function (string $className): IAddressBookProvider {
|
||||
$instance = $this->createPluginInstance($className);
|
||||
if (!($instance instanceof IAddressBookProvider)) {
|
||||
throw new \Exception("Sabre address book plugin class '$className' does not implement the \OCA\DAV\CardDAV\Integration\IAddressBookProvider interface");
|
||||
private function loadSabreCollectionsFromInfoXml(array $classes): array {
|
||||
return array_map(function (string $className): Collection {
|
||||
$instance = $this->createClass($className);
|
||||
if (!($instance instanceof Collection)) {
|
||||
throw new \Exception('Sabre collection plugin ' . $className . ' does not implement the ' . Collection::class . ' interface');
|
||||
}
|
||||
return $instance;
|
||||
}, $plugins);
|
||||
foreach ($providers as $provider) {
|
||||
$this->addressBookPlugins[] = $provider;
|
||||
}
|
||||
}, $classes);
|
||||
}
|
||||
|
||||
private function loadSabreCalendarPluginsFromInfoXml(array $calendarPlugins):void {
|
||||
foreach ($calendarPlugins as $calendarPlugin) {
|
||||
try {
|
||||
$instantiatedCalendarPlugin = $this->container->query($calendarPlugin);
|
||||
} catch (QueryException $e) {
|
||||
if (class_exists($calendarPlugin)) {
|
||||
$instantiatedCalendarPlugin = new $calendarPlugin();
|
||||
} else {
|
||||
throw new \Exception("Sabre calendar-plugin class '$calendarPlugin' is unknown and could not be loaded");
|
||||
}
|
||||
/**
|
||||
* @param string[] $classes
|
||||
* @return IAddressBookProvider[]
|
||||
*/
|
||||
private function loadSabreAddressBookPluginsFromInfoXml(array $classes): array {
|
||||
return array_map(function (string $className): IAddressBookProvider {
|
||||
$instance = $this->createClass($className);
|
||||
if (!($instance instanceof IAddressBookProvider)) {
|
||||
throw new \Exception('Sabre address book plugin class ' . $className . ' does not implement the ' . IAddressBookProvider::class . ' interface');
|
||||
}
|
||||
return $instance;
|
||||
}, $classes);
|
||||
}
|
||||
|
||||
if (!($instantiatedCalendarPlugin instanceof ICalendarProvider)) {
|
||||
throw new \Exception("Sabre calendar-plugin class '$calendarPlugin' does not implement ICalendarProvider interface");
|
||||
/**
|
||||
* @param string[] $classes
|
||||
* @return ICalendarProvider[]
|
||||
*/
|
||||
private function loadSabreCalendarPluginsFromInfoXml(array $classes): array {
|
||||
return array_map(function (string $className): ICalendarProvider {
|
||||
$instance = $this->createClass($className);
|
||||
if (!($instance instanceof ICalendarProvider)) {
|
||||
throw new \Exception('Sabre calendar plugin class ' . $className . ' does not implement the ' . ICalendarProvider::class . ' interface');
|
||||
}
|
||||
|
||||
$this->calendarPlugins[] = $instantiatedCalendarPlugin;
|
||||
}
|
||||
return $instance;
|
||||
}, $classes);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -399,7 +399,7 @@ class UpdateCalendarResourcesRoomsBackgroundJob extends TimedJob {
|
|||
->where($query->expr()->eq('backend_id', $query->createNamedParameter($backendId)));
|
||||
$stmt = $query->execute();
|
||||
|
||||
return array_map(function ($row) {
|
||||
return array_map(function ($row): string {
|
||||
return $row['resource_id'];
|
||||
}, $stmt->fetchAll());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1955,17 +1955,22 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
|
|||
* @param string $calendarId
|
||||
* @param string $syncToken
|
||||
* @param int $syncLevel
|
||||
* @param int $limit
|
||||
* @param int|null $limit
|
||||
* @param int $calendarType
|
||||
* @return array
|
||||
*/
|
||||
public function getChangesForCalendar($calendarId, $syncToken, $syncLevel, $limit = null, $calendarType = self::CALENDAR_TYPE_CALENDAR) {
|
||||
// Current synctoken
|
||||
$stmt = $this->db->prepare('SELECT `synctoken` FROM `*PREFIX*calendars` WHERE `id` = ?');
|
||||
$stmt->execute([ $calendarId ]);
|
||||
$qb = $this->db->getQueryBuilder();
|
||||
$qb->select('synctoken')
|
||||
->from('calendars')
|
||||
->where(
|
||||
$qb->expr()->eq('id', $qb->createNamedParameter($calendarId))
|
||||
);
|
||||
$stmt = $qb->execute();
|
||||
$currentToken = $stmt->fetchOne();
|
||||
|
||||
if (is_null($currentToken)) {
|
||||
if ($currentToken === false) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
@ -1977,14 +1982,24 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
|
|||
];
|
||||
|
||||
if ($syncToken) {
|
||||
$query = "SELECT `uri`, `operation` FROM `*PREFIX*calendarchanges` WHERE `synctoken` >= ? AND `synctoken` < ? AND `calendarid` = ? AND `calendartype` = ? ORDER BY `synctoken`";
|
||||
if ($limit > 0) {
|
||||
$query .= " LIMIT " . (int)$limit;
|
||||
$qb = $this->db->getQueryBuilder();
|
||||
|
||||
$qb->select('uri', 'operation')
|
||||
->from('calendarchanges')
|
||||
->where(
|
||||
$qb->expr()->andX(
|
||||
$qb->expr()->gte('synctoken', $qb->createNamedParameter($syncToken)),
|
||||
$qb->expr()->lt('synctoken', $qb->createNamedParameter($currentToken)),
|
||||
$qb->expr()->eq('calendarid', $qb->createNamedParameter($calendarId)),
|
||||
$qb->expr()->eq('calendartype', $qb->createNamedParameter($calendarType))
|
||||
)
|
||||
)->orderBy('synctoken');
|
||||
if (is_int($limit) && $limit > 0) {
|
||||
$qb->setMaxResults($limit);
|
||||
}
|
||||
|
||||
// Fetching all changes
|
||||
$stmt = $this->db->prepare($query);
|
||||
$stmt->execute([$syncToken, $currentToken, $calendarId, $calendarType]);
|
||||
$stmt = $qb->execute();
|
||||
|
||||
$changes = [];
|
||||
|
||||
|
|
@ -2009,10 +2024,16 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
|
|||
}
|
||||
} else {
|
||||
// No synctoken supplied, this is the initial sync.
|
||||
$query = "SELECT `uri` FROM `*PREFIX*calendarobjects` WHERE `calendarid` = ? AND `calendartype` = ?";
|
||||
$stmt = $this->db->prepare($query);
|
||||
$stmt->execute([$calendarId, $calendarType]);
|
||||
|
||||
$qb = $this->db->getQueryBuilder();
|
||||
$qb->select('uri')
|
||||
->from('calendarobjects')
|
||||
->where(
|
||||
$qb->expr()->andX(
|
||||
$qb->expr()->eq('calendarid', $qb->createNamedParameter($calendarId)),
|
||||
$qb->expr()->eq('calendartype', $qb->createNamedParameter($calendarType))
|
||||
)
|
||||
);
|
||||
$stmt = $qb->execute();
|
||||
$result['added'] = $stmt->fetchAll(\PDO::FETCH_COLUMN);
|
||||
}
|
||||
return $result;
|
||||
|
|
@ -2137,10 +2158,10 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
|
|||
->values($valuesToInsert)
|
||||
->execute();
|
||||
|
||||
$subscriptionId = $this->db->lastInsertId('*PREFIX*calendarsubscriptions');
|
||||
$subscriptionId = $query->getLastInsertId();
|
||||
|
||||
$subscriptionRow = $this->getSubscriptionById($subscriptionId);
|
||||
$this->dispatcher->dispatchTyped(new SubscriptionCreatedEvent((int)$subscriptionId, $subscriptionRow));
|
||||
$this->dispatcher->dispatchTyped(new SubscriptionCreatedEvent($subscriptionId, $subscriptionRow));
|
||||
$this->legacyDispatcher->dispatch('\OCA\DAV\CalDAV\CalDavBackend::createSubscription', new GenericEvent(
|
||||
'\OCA\DAV\CalDAV\CalDavBackend::createSubscription',
|
||||
[
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ class CalendarHome extends \Sabre\CalDAV\CalendarHome {
|
|||
return new Outbox($this->config, $this->principalInfo['uri']);
|
||||
}
|
||||
if ($name === 'notifications' && $this->caldavBackend instanceof NotificationSupport) {
|
||||
return new \Sabre\CalDAv\Notifications\Collection($this->caldavBackend, $this->principalInfo['uri']);
|
||||
return new \Sabre\CalDAV\Notifications\Collection($this->caldavBackend, $this->principalInfo['uri']);
|
||||
}
|
||||
|
||||
// Calendars
|
||||
|
|
|
|||
|
|
@ -202,7 +202,7 @@ class EmailProvider extends AbstractProvider {
|
|||
|
||||
$organizerEMail = substr($organizer->getValue(), 7);
|
||||
|
||||
if (!$this->mailer->validateMailAddress($organizerEMail)) {
|
||||
if ($organizerEMail === false || !$this->mailer->validateMailAddress($organizerEMail)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -309,7 +309,7 @@ abstract class AbstractPrincipalBackend implements BackendInterface {
|
|||
return $this->isAllowedToAccessResource($row, $usersGroups);
|
||||
});
|
||||
|
||||
$results[] = array_map(function ($row) {
|
||||
$results[] = array_map(function ($row): string {
|
||||
return $row['uri'];
|
||||
}, $filteredRows);
|
||||
|
||||
|
|
|
|||
|
|
@ -178,6 +178,11 @@ class IMipPlugin extends SabreIMipPlugin {
|
|||
// Strip off mailto:
|
||||
$sender = substr($iTipMessage->sender, 7);
|
||||
$recipient = substr($iTipMessage->recipient, 7);
|
||||
if ($recipient === false || !$this->mailer->validateMailAddress($recipient)) {
|
||||
// Nothing to send if the recipient doesn't have a valid email address
|
||||
$iTipMessage->scheduleStatus = '5.0; EMail delivery failed';
|
||||
return;
|
||||
}
|
||||
|
||||
$senderName = $iTipMessage->senderName ?: null;
|
||||
$recipientName = $iTipMessage->recipientName ?: null;
|
||||
|
|
@ -234,9 +239,12 @@ class IMipPlugin extends SabreIMipPlugin {
|
|||
|
||||
$message = $this->mailer->createMessage()
|
||||
->setFrom([$fromEMail => $fromName])
|
||||
->setReplyTo([$sender => $senderName])
|
||||
->setTo([$recipient => $recipientName]);
|
||||
|
||||
if ($sender !== false) {
|
||||
$message->setReplyTo([$sender => $senderName]);
|
||||
}
|
||||
|
||||
$template = $this->mailer->createEMailTemplate('dav.calendarInvite.' . $method, $data);
|
||||
$template->addHeader();
|
||||
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ declare(strict_types=1);
|
|||
namespace OCA\DAV\Direct;
|
||||
|
||||
use OCA\DAV\Db\Direct;
|
||||
use OCA\DAV\Events\BeforeFileDirectDownloadedEvent;
|
||||
use OCP\EventDispatcher\IEventDispatcher;
|
||||
use OCP\Files\File;
|
||||
use OCP\Files\IRootFolder;
|
||||
use Sabre\DAV\Exception\Forbidden;
|
||||
|
|
@ -43,9 +45,12 @@ class DirectFile implements IFile {
|
|||
/** @var File */
|
||||
private $file;
|
||||
|
||||
public function __construct(Direct $direct, IRootFolder $rootFolder) {
|
||||
private $eventDispatcher;
|
||||
|
||||
public function __construct(Direct $direct, IRootFolder $rootFolder, IEventDispatcher $eventDispatcher) {
|
||||
$this->direct = $direct;
|
||||
$this->rootFolder = $rootFolder;
|
||||
$this->eventDispatcher = $eventDispatcher;
|
||||
}
|
||||
|
||||
public function put($data) {
|
||||
|
|
@ -55,6 +60,8 @@ class DirectFile implements IFile {
|
|||
public function get() {
|
||||
$this->getFile();
|
||||
|
||||
$this->eventDispatcher->dispatchTyped(new BeforeFileDirectDownloadedEvent($this->file));
|
||||
|
||||
return $this->file->fopen('rb');
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ use OC\Security\Bruteforce\Throttler;
|
|||
use OCA\DAV\Db\DirectMapper;
|
||||
use OCP\AppFramework\Db\DoesNotExistException;
|
||||
use OCP\AppFramework\Utility\ITimeFactory;
|
||||
use OCP\EventDispatcher\IEventDispatcher;
|
||||
use OCP\Files\IRootFolder;
|
||||
use OCP\IRequest;
|
||||
use Sabre\DAV\Exception\Forbidden;
|
||||
|
|
@ -53,17 +54,22 @@ class DirectHome implements ICollection {
|
|||
|
||||
/** @var IRequest */
|
||||
private $request;
|
||||
private $eventDispatcher;
|
||||
|
||||
public function __construct(IRootFolder $rootFolder,
|
||||
DirectMapper $mapper,
|
||||
ITimeFactory $timeFactory,
|
||||
Throttler $throttler,
|
||||
IRequest $request) {
|
||||
public function __construct(
|
||||
IRootFolder $rootFolder,
|
||||
DirectMapper $mapper,
|
||||
ITimeFactory $timeFactory,
|
||||
Throttler $throttler,
|
||||
IRequest $request,
|
||||
IEventDispatcher $eventDispatcher
|
||||
) {
|
||||
$this->rootFolder = $rootFolder;
|
||||
$this->mapper = $mapper;
|
||||
$this->timeFactory = $timeFactory;
|
||||
$this->throttler = $throttler;
|
||||
$this->request = $request;
|
||||
$this->eventDispatcher = $eventDispatcher;
|
||||
}
|
||||
|
||||
public function createFile($name, $data = null) {
|
||||
|
|
@ -83,7 +89,7 @@ class DirectHome implements ICollection {
|
|||
throw new NotFound();
|
||||
}
|
||||
|
||||
return new DirectFile($direct, $this->rootFolder);
|
||||
return new DirectFile($direct, $this->rootFolder, $this->eventDispatcher);
|
||||
} catch (DoesNotExistException $e) {
|
||||
// Since the token space is so huge only throttle on non exsisting token
|
||||
$this->throttler->registerAttempt('directlink', $this->request->getRemoteAddress());
|
||||
|
|
|
|||
|
|
@ -28,22 +28,27 @@ declare(strict_types=1);
|
|||
namespace OCA\DAV\Direct;
|
||||
|
||||
use OC\Security\Bruteforce\Throttler;
|
||||
use OCA\DAV\Connector\Sabre\MaintenancePlugin;
|
||||
use OCA\DAV\Db\DirectMapper;
|
||||
use OCP\AppFramework\Utility\ITimeFactory;
|
||||
use OCP\EventDispatcher\IEventDispatcher;
|
||||
use OCP\Files\IRootFolder;
|
||||
use OCP\IConfig;
|
||||
use OCP\IL10N;
|
||||
use OCP\IRequest;
|
||||
use OCP\L10N\IFactory;
|
||||
|
||||
class ServerFactory {
|
||||
/** @var IConfig */
|
||||
private $config;
|
||||
/** @var IL10N */
|
||||
private $l10n;
|
||||
private $eventDispatcher;
|
||||
|
||||
public function __construct(IConfig $config, IL10N $l10n) {
|
||||
public function __construct(IConfig $config, IFactory $l10nFactory, IEventDispatcher $eventDispatcher) {
|
||||
$this->config = $config;
|
||||
$this->l10n = $l10n;
|
||||
$this->l10n = $l10nFactory->get('dav');
|
||||
$this->eventDispatcher = $eventDispatcher;
|
||||
}
|
||||
|
||||
public function createServer(string $baseURI,
|
||||
|
|
@ -53,13 +58,13 @@ class ServerFactory {
|
|||
ITimeFactory $timeFactory,
|
||||
Throttler $throttler,
|
||||
IRequest $request): Server {
|
||||
$home = new DirectHome($rootFolder, $mapper, $timeFactory, $throttler, $request);
|
||||
$home = new DirectHome($rootFolder, $mapper, $timeFactory, $throttler, $request, $this->eventDispatcher);
|
||||
$server = new Server($home);
|
||||
|
||||
$server->httpRequest->setUrl($requestURI);
|
||||
$server->setBaseUri($baseURI);
|
||||
|
||||
$server->addPlugin(new \OCA\DAV\Connector\Sabre\MaintenancePlugin($this->config, $this->l10n));
|
||||
$server->addPlugin(new MaintenancePlugin($this->config, $this->l10n));
|
||||
|
||||
return $server;
|
||||
}
|
||||
|
|
|
|||
47
apps/dav/lib/Events/BeforeFileDirectDownloadedEvent.php
Normal file
47
apps/dav/lib/Events/BeforeFileDirectDownloadedEvent.php
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* @copyright Copyright (c) 2021 Robin Appelman <robin@icewind.nl>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\DAV\Events;
|
||||
|
||||
use OCP\EventDispatcher\Event;
|
||||
use OCP\Files\File;
|
||||
|
||||
/**
|
||||
* @since 22.0.0
|
||||
*/
|
||||
class BeforeFileDirectDownloadedEvent extends Event {
|
||||
private $file;
|
||||
|
||||
public function __construct(File $file) {
|
||||
parent::__construct();
|
||||
$this->file = $file;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return File
|
||||
* @since 22.0.0
|
||||
*/
|
||||
public function getFile(): File {
|
||||
return $this->file;
|
||||
}
|
||||
}
|
||||
|
|
@ -71,7 +71,6 @@ class Version1011Date20190806104428 extends SimpleMigrationStep {
|
|||
|
||||
$table->setPrimaryKey(['id']);
|
||||
$table->addUniqueIndex(['owner_id', 'proxy_id', 'permissions'], 'dav_cal_proxy_uidx');
|
||||
$table->addIndex(['owner_id'], 'dav_cal_proxy_ioid');
|
||||
$table->addIndex(['proxy_id'], 'dav_cal_proxy_ipid');
|
||||
|
||||
return $schema;
|
||||
|
|
|
|||
55
apps/dav/lib/Migration/Version1017Date20210216083742.php
Normal file
55
apps/dav/lib/Migration/Version1017Date20210216083742.php
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* @copyright Copyright (c) 2021 Roeland Jago Douma <roeland@famdouma.nl>
|
||||
*
|
||||
* @author Roeland Jago Douma <roeland@famdouma.nl>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\DAV\Migration;
|
||||
|
||||
use Closure;
|
||||
use OCP\DB\ISchemaWrapper;
|
||||
use OCP\Migration\IOutput;
|
||||
use OCP\Migration\SimpleMigrationStep;
|
||||
|
||||
/**
|
||||
* Auto-generated migration step: Please modify to your needs!
|
||||
*/
|
||||
class Version1017Date20210216083742 extends SimpleMigrationStep {
|
||||
/**
|
||||
* @param IOutput $output
|
||||
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
|
||||
* @param array $options
|
||||
* @return null|ISchemaWrapper
|
||||
*/
|
||||
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
|
||||
/** @var ISchemaWrapper $schema */
|
||||
$schema = $schemaClosure();
|
||||
|
||||
$table = $schema->getTable('dav_cal_proxy');
|
||||
if ($table->hasIndex('dav_cal_proxy_ioid')) {
|
||||
$table->dropIndex('dav_cal_proxy_ioid');
|
||||
}
|
||||
|
||||
return $schema;
|
||||
}
|
||||
}
|
||||
|
|
@ -130,7 +130,7 @@ class AppleProvisioningPlugin extends ServerPlugin {
|
|||
$absoluteURL = $this->urlGenerator->getBaseUrl();
|
||||
$parsedUrl = parse_url($absoluteURL);
|
||||
if (isset($parsedUrl['port'])) {
|
||||
$serverPort = (int) $parsedUrl['port'];
|
||||
$serverPort = $parsedUrl['port'];
|
||||
} else {
|
||||
$serverPort = 443;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ use OC\App\AppManager;
|
|||
use OC\ServerContainer;
|
||||
use OCA\DAV\AppInfo\PluginManager;
|
||||
use OCA\DAV\CalDAV\Integration\ICalendarProvider;
|
||||
use Sabre\DAV\Collection;
|
||||
use Sabre\DAV\ServerPlugin;
|
||||
use Test\TestCase;
|
||||
|
||||
/**
|
||||
|
|
@ -97,23 +99,31 @@ class PluginManagerTest extends TestCase {
|
|||
$calendarPlugin2 = $this->createMock(ICalendarProvider::class);
|
||||
$calendarPlugin3 = $this->createMock(ICalendarProvider::class);
|
||||
|
||||
$dummyPlugin1 = $this->createMock(ServerPlugin::class);
|
||||
$dummyPlugin2 = $this->createMock(ServerPlugin::class);
|
||||
$dummy2Plugin1 = $this->createMock(ServerPlugin::class);
|
||||
|
||||
$dummyCollection1 = $this->createMock(Collection::class);
|
||||
$dummyCollection2 = $this->createMock(Collection::class);
|
||||
$dummy2Collection1 = $this->createMock(Collection::class);
|
||||
|
||||
$server->method('query')
|
||||
->willReturnMap([
|
||||
['\OCA\DAV\ADavApp\PluginOne', true, 'dummyplugin1'],
|
||||
['\OCA\DAV\ADavApp\PluginTwo', true, 'dummyplugin2'],
|
||||
['\OCA\DAV\ADavApp\PluginOne', true, $dummyPlugin1],
|
||||
['\OCA\DAV\ADavApp\PluginTwo', true, $dummyPlugin2],
|
||||
['\OCA\DAV\ADavApp\CalendarPluginOne', true, $calendarPlugin1],
|
||||
['\OCA\DAV\ADavApp\CalendarPluginTwo', true, $calendarPlugin2],
|
||||
['\OCA\DAV\ADavApp\CollectionOne', true, 'dummycollection1'],
|
||||
['\OCA\DAV\ADavApp\CollectionTwo', true, 'dummycollection2'],
|
||||
['\OCA\DAV\ADavApp2\PluginOne', true, 'dummy2plugin1'],
|
||||
['\OCA\DAV\ADavApp\CollectionOne', true, $dummyCollection1],
|
||||
['\OCA\DAV\ADavApp\CollectionTwo', true, $dummyCollection2],
|
||||
['\OCA\DAV\ADavApp2\PluginOne', true, $dummy2Plugin1],
|
||||
['\OCA\DAV\ADavApp2\CalendarPluginOne', true, $calendarPlugin3],
|
||||
['\OCA\DAV\ADavApp2\CollectionOne', true, 'dummy2collection1'],
|
||||
['\OCA\DAV\ADavApp2\CollectionOne', true, $dummy2Collection1],
|
||||
]);
|
||||
|
||||
$expectedPlugins = [
|
||||
'dummyplugin1',
|
||||
'dummyplugin2',
|
||||
'dummy2plugin1',
|
||||
$dummyPlugin1,
|
||||
$dummyPlugin2,
|
||||
$dummy2Plugin1,
|
||||
];
|
||||
$expectedCalendarPlugins = [
|
||||
$calendarPlugin1,
|
||||
|
|
@ -121,9 +131,9 @@ class PluginManagerTest extends TestCase {
|
|||
$calendarPlugin3,
|
||||
];
|
||||
$expectedCollections = [
|
||||
'dummycollection1',
|
||||
'dummycollection2',
|
||||
'dummy2collection1',
|
||||
$dummyCollection1,
|
||||
$dummyCollection2,
|
||||
$dummy2Collection1,
|
||||
];
|
||||
|
||||
$this->assertEquals($expectedPlugins, $pluginManager->getAppPlugins());
|
||||
|
|
|
|||
|
|
@ -140,6 +140,7 @@ class IMipPluginTest extends TestCase {
|
|||
->method('getAppValue')
|
||||
->with('dav', 'invitation_link_recipients', 'yes')
|
||||
->willReturn('yes');
|
||||
$this->mailer->method('validateMailAddress')->willReturn(true);
|
||||
|
||||
$message = $this->_testMessage();
|
||||
$this->_expectSend();
|
||||
|
|
@ -153,6 +154,7 @@ class IMipPluginTest extends TestCase {
|
|||
->method('getAppValue')
|
||||
->with('dav', 'invitation_link_recipients', 'yes')
|
||||
->willReturn('yes');
|
||||
$this->mailer->method('validateMailAddress')->willReturn(true);
|
||||
|
||||
$message = $this->_testMessage();
|
||||
$this->mailer
|
||||
|
|
@ -163,12 +165,21 @@ class IMipPluginTest extends TestCase {
|
|||
$this->assertEquals('5.0', $message->getScheduleStatus());
|
||||
}
|
||||
|
||||
public function testInvalidEmailDelivery() {
|
||||
$this->mailer->method('validateMailAddress')->willReturn(false);
|
||||
|
||||
$message = $this->_testMessage();
|
||||
$this->plugin->schedule($message);
|
||||
$this->assertEquals('5.0', $message->getScheduleStatus());
|
||||
}
|
||||
|
||||
public function testDeliveryWithNoCommonName() {
|
||||
$this->config
|
||||
->expects($this->at(1))
|
||||
->method('getAppValue')
|
||||
->with('dav', 'invitation_link_recipients', 'yes')
|
||||
->willReturn('yes');
|
||||
$this->mailer->method('validateMailAddress')->willReturn(true);
|
||||
|
||||
$message = $this->_testMessage();
|
||||
$message->senderName = null;
|
||||
|
|
@ -193,6 +204,7 @@ class IMipPluginTest extends TestCase {
|
|||
$this->config
|
||||
->method('getAppValue')
|
||||
->willReturn('yes');
|
||||
$this->mailer->method('validateMailAddress')->willReturn(true);
|
||||
|
||||
$message = $this->_testMessage($veventParams);
|
||||
|
||||
|
|
@ -227,6 +239,7 @@ class IMipPluginTest extends TestCase {
|
|||
*/
|
||||
public function testIncludeResponseButtons(string $config_setting, string $recipient, bool $has_buttons) {
|
||||
$message = $this->_testMessage([],$recipient);
|
||||
$this->mailer->method('validateMailAddress')->willReturn(true);
|
||||
|
||||
$this->_expectSend($recipient, true, $has_buttons);
|
||||
$this->config
|
||||
|
|
@ -256,6 +269,7 @@ class IMipPluginTest extends TestCase {
|
|||
$this->config
|
||||
->method('getAppValue')
|
||||
->willReturn('yes');
|
||||
$this->mailer->method('validateMailAddress')->willReturn(true);
|
||||
|
||||
$message = $this->_testMessage(['SUMMARY' => '']);
|
||||
$this->_expectSend('frodo@hobb.it', true, true,'Invitation: Untitled event');
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ namespace OCA\DAV\Tests\Unit\Direct;
|
|||
|
||||
use OCA\DAV\Db\Direct;
|
||||
use OCA\DAV\Direct\DirectFile;
|
||||
use OCP\EventDispatcher\IEventDispatcher;
|
||||
use OCP\Files\File;
|
||||
use OCP\Files\Folder;
|
||||
use OCP\Files\IRootFolder;
|
||||
|
|
@ -52,6 +53,9 @@ class DirectFileTest extends TestCase {
|
|||
/** @var DirectFile */
|
||||
private $directFile;
|
||||
|
||||
/** @var IEventDispatcher */
|
||||
private $eventDispatcher;
|
||||
|
||||
protected function setUp(): void {
|
||||
parent::setUp();
|
||||
|
||||
|
|
@ -73,7 +77,9 @@ class DirectFileTest extends TestCase {
|
|||
->with(42)
|
||||
->willReturn([$this->file]);
|
||||
|
||||
$this->directFile = new DirectFile($this->direct, $this->rootFolder);
|
||||
$this->eventDispatcher = $this->createMock(IEventDispatcher::class);
|
||||
|
||||
$this->directFile = new DirectFile($this->direct, $this->rootFolder, $this->eventDispatcher);
|
||||
}
|
||||
|
||||
public function testPut() {
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ use OCA\DAV\Direct\DirectFile;
|
|||
use OCA\DAV\Direct\DirectHome;
|
||||
use OCP\AppFramework\Db\DoesNotExistException;
|
||||
use OCP\AppFramework\Utility\ITimeFactory;
|
||||
use OCP\EventDispatcher\IEventDispatcher;
|
||||
use OCP\Files\IRootFolder;
|
||||
use OCP\IRequest;
|
||||
use Sabre\DAV\Exception\Forbidden;
|
||||
|
|
@ -61,6 +62,9 @@ class DirectHomeTest extends TestCase {
|
|||
/** @var DirectHome */
|
||||
private $directHome;
|
||||
|
||||
/** @var IEventDispatcher */
|
||||
private $eventDispatcher;
|
||||
|
||||
protected function setUp(): void {
|
||||
parent::setUp();
|
||||
|
||||
|
|
@ -69,6 +73,7 @@ class DirectHomeTest extends TestCase {
|
|||
$this->timeFactory = $this->createMock(ITimeFactory::class);
|
||||
$this->throttler = $this->createMock(Throttler::class);
|
||||
$this->request = $this->createMock(IRequest::class);
|
||||
$this->eventDispatcher = $this->createMock(IEventDispatcher::class);
|
||||
|
||||
$this->timeFactory->method('getTime')
|
||||
->willReturn(42);
|
||||
|
|
@ -76,12 +81,14 @@ class DirectHomeTest extends TestCase {
|
|||
$this->request->method('getRemoteAddress')
|
||||
->willReturn('1.2.3.4');
|
||||
|
||||
|
||||
$this->directHome = new DirectHome(
|
||||
$this->rootFolder,
|
||||
$this->directMapper,
|
||||
$this->timeFactory,
|
||||
$this->throttler,
|
||||
$this->request
|
||||
$this->request,
|
||||
$this->eventDispatcher
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -417,7 +417,7 @@ class EncryptAll {
|
|||
$recipientDisplayName = $recipient->getDisplayName();
|
||||
$to = $recipient->getEMailAddress();
|
||||
|
||||
if ($to === '') {
|
||||
if ($to === '' || $to === null) {
|
||||
$noMail[] = $uid;
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ OC.L10N.register(
|
|||
"Federated Cloud Sharing" : "Federatutako Hodei Partekatzea",
|
||||
"Open documentation" : "Ireki dokumentazioa",
|
||||
"Adjust how people can share between servers." : "Pertsonen zerbitzarien arteko partekatzea konfiguratu",
|
||||
"Allow users on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Baimendu erabiltzaileei zerbitzari honetan beste zerbitzari batzuetarako partekatzeak (aukera honek WebDAV sarbidea ere partekatze publikoetara baimentzen du )",
|
||||
"Allow users on this server to receive shares from other servers" : "Baimendu zerbitzari honetako erabiltzaileak beste zerbitzarietatik partekatutakoak jasotzen",
|
||||
"Allow users on this server to send shares to groups on other servers" : "Baimendu zerbitzari honetako erabiltzaileei beste zerbitzari batzuetako taldeei elementuak partekatzen.",
|
||||
"Allow users on this server to receive group shares from other servers" : "Baimendu zerbitzari honetako erabiltzaileek beste zerbitzari batzuetako talde-partekatzeak jasotzen.",
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@
|
|||
"Federated Cloud Sharing" : "Federatutako Hodei Partekatzea",
|
||||
"Open documentation" : "Ireki dokumentazioa",
|
||||
"Adjust how people can share between servers." : "Pertsonen zerbitzarien arteko partekatzea konfiguratu",
|
||||
"Allow users on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Baimendu erabiltzaileei zerbitzari honetan beste zerbitzari batzuetarako partekatzeak (aukera honek WebDAV sarbidea ere partekatze publikoetara baimentzen du )",
|
||||
"Allow users on this server to receive shares from other servers" : "Baimendu zerbitzari honetako erabiltzaileak beste zerbitzarietatik partekatutakoak jasotzen",
|
||||
"Allow users on this server to send shares to groups on other servers" : "Baimendu zerbitzari honetako erabiltzaileei beste zerbitzari batzuetako taldeei elementuak partekatzen.",
|
||||
"Allow users on this server to receive group shares from other servers" : "Baimendu zerbitzari honetako erabiltzaileek beste zerbitzari batzuetako talde-partekatzeak jasotzen.",
|
||||
|
|
|
|||
|
|
@ -5,33 +5,52 @@ OC.L10N.register(
|
|||
"Remote share" : "遠端分享",
|
||||
"Remote share password" : "遠端分享密碼",
|
||||
"Cancel" : "取消",
|
||||
"Add remote share" : "加入遠端分享",
|
||||
"Add remote share" : "添加遠端分享",
|
||||
"Copy" : "複製",
|
||||
"Copied!" : "已複製",
|
||||
"Copied!" : "已複製!",
|
||||
"Not supported!" : "不支援!",
|
||||
"Press ⌘-C to copy." : "按下 ⌘-C 來複製",
|
||||
"Press Ctrl-C to copy." : "按下 Ctrl-C 來複製",
|
||||
"Invalid Federated Cloud ID" : "無效的雲端聯盟 ID",
|
||||
"Server to server sharing is not enabled on this server" : "伺服器對伺服器共享在這台伺服器上面並未啟用",
|
||||
"Press ⌘-C to copy." : "請按 ⌘-C 來複製",
|
||||
"Press Ctrl-C to copy." : "請按 Ctrl-C 來複製",
|
||||
"Invalid Federated Cloud ID" : "雲端聯盟 ID 不正確",
|
||||
"Server to server sharing is not enabled on this server" : "此伺服器未啟用伺服器到伺服器分享功能",
|
||||
"Couldn't establish a federated share." : "無法建立聯盟式分享",
|
||||
"Couldn't establish a federated share, maybe the password was wrong." : "無法建立聯盟式分享,可能是密碼錯誤",
|
||||
"Not allowed to create a federated share with the same user" : "不允許與同一個使用者建立聯盟式分享",
|
||||
"Couldn't establish a federated share, maybe the password was wrong." : "無法建立聯盟式分享,可能是密碼錯誤。",
|
||||
"Federated Share request sent, you will receive an invitation. Check your notifications." : "聯合雲分享 請求發送成功!您將收到邀請。注意您的通知提醒。",
|
||||
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "無法建立聯合雲分享 ,可能是要聯合的伺服器版本太舊(Nextcloud <= 9)。",
|
||||
"It is not allowed to send federated group shares from this server." : "不允許從此伺服器發送聯盟式群組分享 。",
|
||||
"Sharing %1$s failed, because this item is already shared with %2$s" : "分享 %1$s 失敗,此項目已經與 %2$s 分享",
|
||||
"Not allowed to create a federated share with the same user" : "不允許與同一個用戶建立聯盟式分享",
|
||||
"File is already shared with %s" : "檔案已和 %s 分享",
|
||||
"Could not find share" : "找不到分享",
|
||||
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "%1$s 分享失敗,無法找到 %2$s,可能該伺服器當前無法訪問或者使用了自簽名證書。",
|
||||
"Could not find share" : "沒有發現分享 ",
|
||||
"Federated sharing" : "聯盟式分享",
|
||||
"You received \"%3$s\" as a remote share from %4$s (%1$s) (on behalf of %5$s (%2$s))" : "您收到了來自%4$s(%1$s)的作為遠程分享 的\"%3$s\"(代表%5$s(%2$s))",
|
||||
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "您得到 {share} 是從 {user} 的遠程分享(代替 {behalf})",
|
||||
"You received \"%3$s\" as a remote share from %4$s (%1$s)" : "您收到了來自%4$s(%1$s)作為遠程分享的\"%3$s\"",
|
||||
"You received {share} as a remote share from {user}" : "您從 {user} 收到了 {share} 作為遠程分享 ",
|
||||
"Accept" : "接受",
|
||||
"Decline" : "拒絕",
|
||||
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "可透過我的 #Nextcloud 聯盟雲端 ID,與我分享,請看 %s",
|
||||
"Share with me through my #Nextcloud Federated Cloud ID" : "可透過我的 #Nextcloud 聯盟雲端 ID,與我分享",
|
||||
"Sharing" : "分享",
|
||||
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "可透過我的 #Nextcloud 聯盟雲端 ID 與我分享,請看 %s",
|
||||
"Share with me through my #Nextcloud Federated Cloud ID" : "可透過我的 #Nextcloud 聯盟雲端 ID 與我分享",
|
||||
"Sharing" : "分享 ",
|
||||
"Federated file sharing" : "聯合雲文件分享",
|
||||
"Provide federated file sharing across servers" : "在伺服器間提供聯盟式檔案分享 ",
|
||||
"Federated Cloud Sharing" : "聯盟式雲端分享",
|
||||
"Open documentation" : "開啟說明文件",
|
||||
"Allow users on this server to receive shares from other servers" : "允許這台伺服器上的使用者發送接收來自其他伺服器的分享",
|
||||
"Adjust how people can share between servers." : "調整人們如何在伺服器之間分享。",
|
||||
"Allow users on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "允許此伺服器上的用戶將分享發送到其他伺服器(此選項還允許 WebDAV 訪問公共分享 )",
|
||||
"Allow users on this server to receive shares from other servers" : "允許用戶從其他伺服器接收分享 ",
|
||||
"Allow users on this server to send shares to groups on other servers" : "允許此伺服器上的用戶向其他伺服器上的群組發送分享 ",
|
||||
"Allow users on this server to receive group shares from other servers" : "允許此伺服器上的用戶接收其他伺服器的群組分享",
|
||||
"Search global and public address book for users" : "在全局和公共通訊錄中尋找用戶",
|
||||
"Allow users to publish their data to a global and public address book" : "允許用戶將其數據發佈到全球和公共通訊錄",
|
||||
"Federated Cloud" : "聯盟式雲端",
|
||||
"You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "您可以和使用了 Nextcloud 服務器或其他兼容 Open Cloud Mesh(OCM)的伺服器和服務的任何人分享 !只需將他們的聯盟式雲端 ID 放在分享對話框中。聯盟式雲端 ID 看起來像 person@cloud.example.com",
|
||||
"Your Federated Cloud ID:" : "您的雲端聯盟 ID:",
|
||||
"Share it so your friends can share files with you:" : "使用分享以便您的朋友可以與您分享文件:",
|
||||
"Add to your website" : "新增至您的網站",
|
||||
"Share with me via Nextcloud" : "透過 Nextcloud 與我分享",
|
||||
"HTML Code:" : "HTML Code:",
|
||||
"Allow users on this server to send shares to other servers" : "允許這台伺服器上的使用者發送分享給其他伺服器"
|
||||
"HTML Code:" : "HTML 代碼:",
|
||||
"Allow users on this server to send shares to other servers" : "允許這伺服器上的用戶發送分享給其他伺服器"
|
||||
},
|
||||
"nplurals=1; plural=0;");
|
||||
|
|
|
|||
|
|
@ -3,33 +3,52 @@
|
|||
"Remote share" : "遠端分享",
|
||||
"Remote share password" : "遠端分享密碼",
|
||||
"Cancel" : "取消",
|
||||
"Add remote share" : "加入遠端分享",
|
||||
"Add remote share" : "添加遠端分享",
|
||||
"Copy" : "複製",
|
||||
"Copied!" : "已複製",
|
||||
"Copied!" : "已複製!",
|
||||
"Not supported!" : "不支援!",
|
||||
"Press ⌘-C to copy." : "按下 ⌘-C 來複製",
|
||||
"Press Ctrl-C to copy." : "按下 Ctrl-C 來複製",
|
||||
"Invalid Federated Cloud ID" : "無效的雲端聯盟 ID",
|
||||
"Server to server sharing is not enabled on this server" : "伺服器對伺服器共享在這台伺服器上面並未啟用",
|
||||
"Press ⌘-C to copy." : "請按 ⌘-C 來複製",
|
||||
"Press Ctrl-C to copy." : "請按 Ctrl-C 來複製",
|
||||
"Invalid Federated Cloud ID" : "雲端聯盟 ID 不正確",
|
||||
"Server to server sharing is not enabled on this server" : "此伺服器未啟用伺服器到伺服器分享功能",
|
||||
"Couldn't establish a federated share." : "無法建立聯盟式分享",
|
||||
"Couldn't establish a federated share, maybe the password was wrong." : "無法建立聯盟式分享,可能是密碼錯誤",
|
||||
"Not allowed to create a federated share with the same user" : "不允許與同一個使用者建立聯盟式分享",
|
||||
"Couldn't establish a federated share, maybe the password was wrong." : "無法建立聯盟式分享,可能是密碼錯誤。",
|
||||
"Federated Share request sent, you will receive an invitation. Check your notifications." : "聯合雲分享 請求發送成功!您將收到邀請。注意您的通知提醒。",
|
||||
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "無法建立聯合雲分享 ,可能是要聯合的伺服器版本太舊(Nextcloud <= 9)。",
|
||||
"It is not allowed to send federated group shares from this server." : "不允許從此伺服器發送聯盟式群組分享 。",
|
||||
"Sharing %1$s failed, because this item is already shared with %2$s" : "分享 %1$s 失敗,此項目已經與 %2$s 分享",
|
||||
"Not allowed to create a federated share with the same user" : "不允許與同一個用戶建立聯盟式分享",
|
||||
"File is already shared with %s" : "檔案已和 %s 分享",
|
||||
"Could not find share" : "找不到分享",
|
||||
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "%1$s 分享失敗,無法找到 %2$s,可能該伺服器當前無法訪問或者使用了自簽名證書。",
|
||||
"Could not find share" : "沒有發現分享 ",
|
||||
"Federated sharing" : "聯盟式分享",
|
||||
"You received \"%3$s\" as a remote share from %4$s (%1$s) (on behalf of %5$s (%2$s))" : "您收到了來自%4$s(%1$s)的作為遠程分享 的\"%3$s\"(代表%5$s(%2$s))",
|
||||
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "您得到 {share} 是從 {user} 的遠程分享(代替 {behalf})",
|
||||
"You received \"%3$s\" as a remote share from %4$s (%1$s)" : "您收到了來自%4$s(%1$s)作為遠程分享的\"%3$s\"",
|
||||
"You received {share} as a remote share from {user}" : "您從 {user} 收到了 {share} 作為遠程分享 ",
|
||||
"Accept" : "接受",
|
||||
"Decline" : "拒絕",
|
||||
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "可透過我的 #Nextcloud 聯盟雲端 ID,與我分享,請看 %s",
|
||||
"Share with me through my #Nextcloud Federated Cloud ID" : "可透過我的 #Nextcloud 聯盟雲端 ID,與我分享",
|
||||
"Sharing" : "分享",
|
||||
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "可透過我的 #Nextcloud 聯盟雲端 ID 與我分享,請看 %s",
|
||||
"Share with me through my #Nextcloud Federated Cloud ID" : "可透過我的 #Nextcloud 聯盟雲端 ID 與我分享",
|
||||
"Sharing" : "分享 ",
|
||||
"Federated file sharing" : "聯合雲文件分享",
|
||||
"Provide federated file sharing across servers" : "在伺服器間提供聯盟式檔案分享 ",
|
||||
"Federated Cloud Sharing" : "聯盟式雲端分享",
|
||||
"Open documentation" : "開啟說明文件",
|
||||
"Allow users on this server to receive shares from other servers" : "允許這台伺服器上的使用者發送接收來自其他伺服器的分享",
|
||||
"Adjust how people can share between servers." : "調整人們如何在伺服器之間分享。",
|
||||
"Allow users on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "允許此伺服器上的用戶將分享發送到其他伺服器(此選項還允許 WebDAV 訪問公共分享 )",
|
||||
"Allow users on this server to receive shares from other servers" : "允許用戶從其他伺服器接收分享 ",
|
||||
"Allow users on this server to send shares to groups on other servers" : "允許此伺服器上的用戶向其他伺服器上的群組發送分享 ",
|
||||
"Allow users on this server to receive group shares from other servers" : "允許此伺服器上的用戶接收其他伺服器的群組分享",
|
||||
"Search global and public address book for users" : "在全局和公共通訊錄中尋找用戶",
|
||||
"Allow users to publish their data to a global and public address book" : "允許用戶將其數據發佈到全球和公共通訊錄",
|
||||
"Federated Cloud" : "聯盟式雲端",
|
||||
"You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "您可以和使用了 Nextcloud 服務器或其他兼容 Open Cloud Mesh(OCM)的伺服器和服務的任何人分享 !只需將他們的聯盟式雲端 ID 放在分享對話框中。聯盟式雲端 ID 看起來像 person@cloud.example.com",
|
||||
"Your Federated Cloud ID:" : "您的雲端聯盟 ID:",
|
||||
"Share it so your friends can share files with you:" : "使用分享以便您的朋友可以與您分享文件:",
|
||||
"Add to your website" : "新增至您的網站",
|
||||
"Share with me via Nextcloud" : "透過 Nextcloud 與我分享",
|
||||
"HTML Code:" : "HTML Code:",
|
||||
"Allow users on this server to send shares to other servers" : "允許這台伺服器上的使用者發送分享給其他伺服器"
|
||||
"HTML Code:" : "HTML 代碼:",
|
||||
"Allow users on this server to send shares to other servers" : "允許這伺服器上的用戶發送分享給其他伺服器"
|
||||
},"pluralForm" :"nplurals=1; plural=0;"
|
||||
}
|
||||
|
|
@ -142,12 +142,12 @@ OC.L10N.register(
|
|||
"Upload (max. %s)" : "上傳(至多 %s)",
|
||||
"Accept" : "接受",
|
||||
"Reject" : "拒絕",
|
||||
"Incoming ownership transfer from {user}" : "來自 {user} 的所有權轉移",
|
||||
"Incoming ownership transfer from {user}" : "來自 {user} 的擁有權轉移",
|
||||
"Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "您想要接收 \"{path}\" 嗎?\n\n註:所有權轉移的流程最多需要一小時",
|
||||
"Ownership transfer failed" : "所有權轉讓失敗",
|
||||
"Your ownership transfer of {path} to {user} failed." : "您將 \"{path}\" 的所有權轉移給 {user} 失敗",
|
||||
"The ownership transfer of {path} from {user} failed." : "來自 {user} 的 \"{path}\" 所有權轉移失敗",
|
||||
"Ownership transfer done" : "所有權轉移完成",
|
||||
"Ownership transfer failed" : "擁有權轉讓失敗",
|
||||
"Your ownership transfer of {path} to {user} failed." : "您將 \"{path}\" 的擁有權轉移給 {user} 失敗",
|
||||
"The ownership transfer of {path} from {user} failed." : "來自 {user} 的 \"{path}\" 擁有權轉移失敗",
|
||||
"Ownership transfer done" : "擁有權轉移完成",
|
||||
"Your ownership transfer of {path} to {user} has completed." : "您將 \"{path}\" 的所有權轉移給 {user} 已經完成",
|
||||
"The ownership transfer of {path} from {user} has completed." : "來自 {user} 的 \"{path}\" 所有權轉移已經完成",
|
||||
"in %s" : "在 %s",
|
||||
|
|
@ -161,7 +161,7 @@ OC.L10N.register(
|
|||
"Transfer" : "轉移",
|
||||
"Transfer {path} to {userid}" : "轉移 \"{path}\" 給 {userid}",
|
||||
"Invalid path selected" : "所選的路徑無效",
|
||||
"Ownership transfer request sent" : "已送出所有權轉移的請求",
|
||||
"Ownership transfer request sent" : "已送出擁有權轉移的請求",
|
||||
"Cannot transfer ownership of a file or folder you don't own" : "無法轉移您未擁有的檔案或是資料夾所有權。",
|
||||
"Tags" : "標籤",
|
||||
"Unable to change the favourite state of the file" : "無法更改檔案的最愛狀態",
|
||||
|
|
|
|||
|
|
@ -140,12 +140,12 @@
|
|||
"Upload (max. %s)" : "上傳(至多 %s)",
|
||||
"Accept" : "接受",
|
||||
"Reject" : "拒絕",
|
||||
"Incoming ownership transfer from {user}" : "來自 {user} 的所有權轉移",
|
||||
"Incoming ownership transfer from {user}" : "來自 {user} 的擁有權轉移",
|
||||
"Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "您想要接收 \"{path}\" 嗎?\n\n註:所有權轉移的流程最多需要一小時",
|
||||
"Ownership transfer failed" : "所有權轉讓失敗",
|
||||
"Your ownership transfer of {path} to {user} failed." : "您將 \"{path}\" 的所有權轉移給 {user} 失敗",
|
||||
"The ownership transfer of {path} from {user} failed." : "來自 {user} 的 \"{path}\" 所有權轉移失敗",
|
||||
"Ownership transfer done" : "所有權轉移完成",
|
||||
"Ownership transfer failed" : "擁有權轉讓失敗",
|
||||
"Your ownership transfer of {path} to {user} failed." : "您將 \"{path}\" 的擁有權轉移給 {user} 失敗",
|
||||
"The ownership transfer of {path} from {user} failed." : "來自 {user} 的 \"{path}\" 擁有權轉移失敗",
|
||||
"Ownership transfer done" : "擁有權轉移完成",
|
||||
"Your ownership transfer of {path} to {user} has completed." : "您將 \"{path}\" 的所有權轉移給 {user} 已經完成",
|
||||
"The ownership transfer of {path} from {user} has completed." : "來自 {user} 的 \"{path}\" 所有權轉移已經完成",
|
||||
"in %s" : "在 %s",
|
||||
|
|
@ -159,7 +159,7 @@
|
|||
"Transfer" : "轉移",
|
||||
"Transfer {path} to {userid}" : "轉移 \"{path}\" 給 {userid}",
|
||||
"Invalid path selected" : "所選的路徑無效",
|
||||
"Ownership transfer request sent" : "已送出所有權轉移的請求",
|
||||
"Ownership transfer request sent" : "已送出擁有權轉移的請求",
|
||||
"Cannot transfer ownership of a file or folder you don't own" : "無法轉移您未擁有的檔案或是資料夾所有權。",
|
||||
"Tags" : "標籤",
|
||||
"Unable to change the favourite state of the file" : "無法更改檔案的最愛狀態",
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ This application enables administrators to configure connections to external sto
|
|||
|
||||
External storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation.
|
||||
</description>
|
||||
<version>1.12.0</version>
|
||||
<version>1.12.1</version>
|
||||
<licence>agpl</licence>
|
||||
<author>Robin Appelman</author>
|
||||
<author>Michael Gapczynski</author>
|
||||
|
|
|
|||
|
|
@ -96,7 +96,6 @@ class Version1011Date20200630192246 extends SimpleMigrationStep {
|
|||
]);
|
||||
$table->setPrimaryKey(['applicable_id']);
|
||||
$table->addIndex(['mount_id'], 'applicable_mount');
|
||||
$table->addIndex(['type', 'value'], 'applicable_type_value');
|
||||
$table->addUniqueIndex(['type', 'value', 'mount_id'], 'applicable_type_value_mount');
|
||||
}
|
||||
|
||||
|
|
@ -120,7 +119,6 @@ class Version1011Date20200630192246 extends SimpleMigrationStep {
|
|||
'length' => 4096,
|
||||
]);
|
||||
$table->setPrimaryKey(['config_id']);
|
||||
$table->addIndex(['mount_id'], 'config_mount');
|
||||
$table->addUniqueIndex(['mount_id', 'key'], 'config_mount_key');
|
||||
} else {
|
||||
$table = $schema->getTable('external_config');
|
||||
|
|
@ -150,7 +148,6 @@ class Version1011Date20200630192246 extends SimpleMigrationStep {
|
|||
'length' => 256,
|
||||
]);
|
||||
$table->setPrimaryKey(['option_id']);
|
||||
$table->addIndex(['mount_id'], 'option_mount');
|
||||
$table->addUniqueIndex(['mount_id', 'key'], 'option_mount_key');
|
||||
}
|
||||
return $schema;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,65 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* @copyright Copyright (c) 2021 Roeland Jago Douma <roeland@famdouma.nl>
|
||||
*
|
||||
* @author Roeland Jago Douma <roeland@famdouma.nl>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Files_External\Migration;
|
||||
|
||||
use Closure;
|
||||
use OCP\DB\ISchemaWrapper;
|
||||
use OCP\Migration\IOutput;
|
||||
use OCP\Migration\SimpleMigrationStep;
|
||||
|
||||
/**
|
||||
* Auto-generated migration step: Please modify to your needs!
|
||||
*/
|
||||
class Version22000Date20210216084416 extends SimpleMigrationStep {
|
||||
/**
|
||||
* @param IOutput $output
|
||||
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
|
||||
* @param array $options
|
||||
* @return null|ISchemaWrapper
|
||||
*/
|
||||
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
|
||||
/** @var ISchemaWrapper $schema */
|
||||
$schema = $schemaClosure();
|
||||
|
||||
$table = $schema->getTable('external_applicable');
|
||||
if ($table->hasIndex('applicable_type_value')) {
|
||||
$table->dropIndex('applicable_type_value');
|
||||
}
|
||||
|
||||
$table = $schema->getTable('external_config');
|
||||
if ($table->hasIndex('config_mount')) {
|
||||
$table->dropIndex('config_mount');
|
||||
}
|
||||
|
||||
$table = $schema->getTable('external_options');
|
||||
if ($table->hasIndex('option_mount')) {
|
||||
$table->dropIndex('option_mount');
|
||||
}
|
||||
|
||||
return $schema;
|
||||
}
|
||||
}
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
Turning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation.
|
||||
|
||||
</description>
|
||||
<version>1.13.1</version>
|
||||
<version>1.13.2</version>
|
||||
<licence>agpl</licence>
|
||||
<author>Michael Gapczynski</author>
|
||||
<author>Bjoern Schiessle</author>
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ return array(
|
|||
'OCA\\Files_Sharing\\Migration\\SetPasswordColumn' => $baseDir . '/../lib/Migration/SetPasswordColumn.php',
|
||||
'OCA\\Files_Sharing\\Migration\\Version11300Date20201120141438' => $baseDir . '/../lib/Migration/Version11300Date20201120141438.php',
|
||||
'OCA\\Files_Sharing\\Migration\\Version21000Date20201223143245' => $baseDir . '/../lib/Migration/Version21000Date20201223143245.php',
|
||||
'OCA\\Files_Sharing\\Migration\\Version22000Date20210216084241' => $baseDir . '/../lib/Migration/Version22000Date20210216084241.php',
|
||||
'OCA\\Files_Sharing\\MountProvider' => $baseDir . '/../lib/MountProvider.php',
|
||||
'OCA\\Files_Sharing\\Notification\\Listener' => $baseDir . '/../lib/Notification/Listener.php',
|
||||
'OCA\\Files_Sharing\\Notification\\Notifier' => $baseDir . '/../lib/Notification/Notifier.php',
|
||||
|
|
|
|||
|
|
@ -80,6 +80,7 @@ class ComposerStaticInitFiles_Sharing
|
|||
'OCA\\Files_Sharing\\Migration\\SetPasswordColumn' => __DIR__ . '/..' . '/../lib/Migration/SetPasswordColumn.php',
|
||||
'OCA\\Files_Sharing\\Migration\\Version11300Date20201120141438' => __DIR__ . '/..' . '/../lib/Migration/Version11300Date20201120141438.php',
|
||||
'OCA\\Files_Sharing\\Migration\\Version21000Date20201223143245' => __DIR__ . '/..' . '/../lib/Migration/Version21000Date20201223143245.php',
|
||||
'OCA\\Files_Sharing\\Migration\\Version22000Date20210216084241' => __DIR__ . '/..' . '/../lib/Migration/Version22000Date20210216084241.php',
|
||||
'OCA\\Files_Sharing\\MountProvider' => __DIR__ . '/..' . '/../lib/MountProvider.php',
|
||||
'OCA\\Files_Sharing\\Notification\\Listener' => __DIR__ . '/..' . '/../lib/Notification/Listener.php',
|
||||
'OCA\\Files_Sharing\\Notification\\Notifier' => __DIR__ . '/..' . '/../lib/Notification/Notifier.php',
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -210,7 +210,7 @@ OC.L10N.register(
|
|||
"Shared" : "Geteilt",
|
||||
"Share" : "Teilen",
|
||||
"Shared with" : "Geteilt mit",
|
||||
"Shared with you and the group {group} by {owner}" : "{owner} hat dies mit Dir und der Gruppe {group} geteilt",
|
||||
"Shared with you and the group {group} by {owner}" : "{owner} hat dies mit Ihnen und der Gruppe {group} geteilt",
|
||||
"Shared with you and {circle} by {owner}" : "{owner} hat dies mit Dir und dem Kreis {circle} geteilt",
|
||||
"Shared with you and the conversation {conversation} by {owner}" : "{owner} hat diese mit Ihnen und der Unterhaltung {conversation} geteilt",
|
||||
"Shared with you in a conversation by {owner}" : "{owner} hat diese mit Ihnen in einer Unterhaltung geteilt",
|
||||
|
|
|
|||
|
|
@ -208,7 +208,7 @@
|
|||
"Shared" : "Geteilt",
|
||||
"Share" : "Teilen",
|
||||
"Shared with" : "Geteilt mit",
|
||||
"Shared with you and the group {group} by {owner}" : "{owner} hat dies mit Dir und der Gruppe {group} geteilt",
|
||||
"Shared with you and the group {group} by {owner}" : "{owner} hat dies mit Ihnen und der Gruppe {group} geteilt",
|
||||
"Shared with you and {circle} by {owner}" : "{owner} hat dies mit Dir und dem Kreis {circle} geteilt",
|
||||
"Shared with you and the conversation {conversation} by {owner}" : "{owner} hat diese mit Ihnen und der Unterhaltung {conversation} geteilt",
|
||||
"Shared with you in a conversation by {owner}" : "{owner} hat diese mit Ihnen in einer Unterhaltung geteilt",
|
||||
|
|
|
|||
|
|
@ -197,7 +197,7 @@ OC.L10N.register(
|
|||
"Sorry, this link doesn’t seem to work anymore." : "抱歉,此連結已經失效",
|
||||
"Reasons might be:" : "可能的原因:",
|
||||
"the item was removed" : "項目已經移除",
|
||||
"the link expired" : "連結過期",
|
||||
"the link expired" : "連結已過期",
|
||||
"sharing is disabled" : "分享功能已停用",
|
||||
"For more info, please ask the person who sent this link." : "請詢問告訴您此連結的人以瞭解更多",
|
||||
"Toggle grid view" : "切換網格檢視",
|
||||
|
|
|
|||
|
|
@ -195,7 +195,7 @@
|
|||
"Sorry, this link doesn’t seem to work anymore." : "抱歉,此連結已經失效",
|
||||
"Reasons might be:" : "可能的原因:",
|
||||
"the item was removed" : "項目已經移除",
|
||||
"the link expired" : "連結過期",
|
||||
"the link expired" : "連結已過期",
|
||||
"sharing is disabled" : "分享功能已停用",
|
||||
"For more info, please ask the person who sent this link." : "請詢問告訴您此連結的人以瞭解更多",
|
||||
"Toggle grid view" : "切換網格檢視",
|
||||
|
|
|
|||
|
|
@ -105,7 +105,6 @@ class Version11300Date20201120141438 extends SimpleMigrationStep {
|
|||
'default' => 0,
|
||||
]);
|
||||
$table->setPrimaryKey(['id']);
|
||||
$table->addIndex(['user'], 'sh_external_user');
|
||||
$table->addUniqueIndex(['user', 'mountpoint_hash'], 'sh_external_mp');
|
||||
} else {
|
||||
$table = $schema->getTable('share_external');
|
||||
|
|
|
|||
|
|
@ -0,0 +1,55 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* @copyright Copyright (c) 2021 Roeland Jago Douma <roeland@famdouma.nl>
|
||||
*
|
||||
* @author Roeland Jago Douma <roeland@famdouma.nl>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Files_Sharing\Migration;
|
||||
|
||||
use Closure;
|
||||
use OCP\DB\ISchemaWrapper;
|
||||
use OCP\Migration\IOutput;
|
||||
use OCP\Migration\SimpleMigrationStep;
|
||||
|
||||
/**
|
||||
* Auto-generated migration step: Please modify to your needs!
|
||||
*/
|
||||
class Version22000Date20210216084241 extends SimpleMigrationStep {
|
||||
/**
|
||||
* @param IOutput $output
|
||||
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
|
||||
* @param array $options
|
||||
* @return null|ISchemaWrapper
|
||||
*/
|
||||
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
|
||||
/** @var ISchemaWrapper $schema */
|
||||
$schema = $schemaClosure();
|
||||
|
||||
$table = $schema->getTable('share_external');
|
||||
if ($table->hasIndex('sh_external_user')) {
|
||||
$table->dropIndex('sh_external_user');
|
||||
}
|
||||
|
||||
return $schema;
|
||||
}
|
||||
}
|
||||
|
|
@ -207,7 +207,7 @@ export default {
|
|||
// todo: strong or italic?
|
||||
// but the t function escape any html from the data :/
|
||||
user: this.share.shareWithDisplayName,
|
||||
owner: this.share.owner,
|
||||
owner: this.share.ownerDisplayName,
|
||||
}
|
||||
|
||||
if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {
|
||||
|
|
|
|||
17
apps/oauth2/l10n/si.js
Normal file
17
apps/oauth2/l10n/si.js
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
OC.L10N.register(
|
||||
"oauth2",
|
||||
{
|
||||
"Your client is not authorized to connect. Please inform the administrator of your client." : "ඔබගේ අනුග්රාහකය සම්බන්ධ කිරීමට අවසර නැත. කරුණාකර අනුග්රාහකයේ පරිපාලක ට දන්වන්න.",
|
||||
"Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "ඔබ සම්පූර්ණ ආපසු හරවා යැවීමේ ඒ.ස.නි.(URL) ක් භාවිතා කළ යුතුය උදා: https://yourdomain.lk/maga",
|
||||
"OAuth 2.0" : "OAuth 2.0",
|
||||
"Allows OAuth2 compatible authentication from other web applications." : "වෙනත් වියමන යෙදුම් වලින් OAuth2 අනුකූල සත්යාපනය සඳහා ඉඩ ලබා දේ.",
|
||||
"OAuth 2.0 clients" : "OAuth 2.0 අනුග්රාහකයින්",
|
||||
"OAuth 2.0 allows external services to request access to {instanceName}." : "OAuth 2.0 බාහිර සේවාවන්ට {instanceName} වෙත ප්රවේශය ඉල්ලීමට ඉඩ දෙයි.",
|
||||
"Add client" : "අනුග්රාහකයක් එකතු කරන්න",
|
||||
"Name" : "නම",
|
||||
"Add" : "එකතු කරන්න",
|
||||
"Client Identifier" : "අනුග්රාහක හඳුන්වනය",
|
||||
"Secret" : "රහස",
|
||||
"Show client secret" : "අනුග්රාහකයේ රහස්යතාව පෙන්වන්න"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
15
apps/oauth2/l10n/si.json
Normal file
15
apps/oauth2/l10n/si.json
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{ "translations": {
|
||||
"Your client is not authorized to connect. Please inform the administrator of your client." : "ඔබගේ අනුග්රාහකය සම්බන්ධ කිරීමට අවසර නැත. කරුණාකර අනුග්රාහකයේ පරිපාලක ට දන්වන්න.",
|
||||
"Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "ඔබ සම්පූර්ණ ආපසු හරවා යැවීමේ ඒ.ස.නි.(URL) ක් භාවිතා කළ යුතුය උදා: https://yourdomain.lk/maga",
|
||||
"OAuth 2.0" : "OAuth 2.0",
|
||||
"Allows OAuth2 compatible authentication from other web applications." : "වෙනත් වියමන යෙදුම් වලින් OAuth2 අනුකූල සත්යාපනය සඳහා ඉඩ ලබා දේ.",
|
||||
"OAuth 2.0 clients" : "OAuth 2.0 අනුග්රාහකයින්",
|
||||
"OAuth 2.0 allows external services to request access to {instanceName}." : "OAuth 2.0 බාහිර සේවාවන්ට {instanceName} වෙත ප්රවේශය ඉල්ලීමට ඉඩ දෙයි.",
|
||||
"Add client" : "අනුග්රාහකයක් එකතු කරන්න",
|
||||
"Name" : "නම",
|
||||
"Add" : "එකතු කරන්න",
|
||||
"Client Identifier" : "අනුග්රාහක හඳුන්වනය",
|
||||
"Secret" : "රහස",
|
||||
"Show client secret" : "අනුග්රාහකයේ රහස්යතාව පෙන්වන්න"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
|
|
@ -24,28 +24,28 @@ OC.L10N.register(
|
|||
"An error occurred while changing your language. Please reload the page and try again." : "變更語言時發生錯誤,請重新整理頁面後重試",
|
||||
"An error occurred while changing your locale. Please reload the page and try again." : "變更慣用地區時發生錯誤,請重新整理頁面後重試",
|
||||
"Select a profile picture" : "選擇個人檔案圖片",
|
||||
"Week starts on {fdow}" : "一週開始於 {fdow}",
|
||||
"Week starts on {fdow}" : "日曆週從{fdow}開始",
|
||||
"Groups" : "群組",
|
||||
"Group list is empty" : "群組列表為空",
|
||||
"Unable to retrieve the group list" : "無法擷取群組列表",
|
||||
"{actor} added you to group {group}" : "{actor} 將您加入群組 {group}",
|
||||
"You added {user} to group {group}" : "您已將 {user} 加入至群組 {group}",
|
||||
"{actor} added {user} to group {group}" : "{actor} 將 {user} 加入至群組 {group}",
|
||||
"An administrator added you to group {group}" : "管理員已將您新增至群組 {group}",
|
||||
"An administrator added {user} to group {group}" : "管理員已將 {user} 新增至群組 {group}",
|
||||
"An administrator added you to group {group}" : "管理員已將您加入至群組 {group}",
|
||||
"An administrator added {user} to group {group}" : "管理員已將 {user} 加入至群組 {group}",
|
||||
"{actor} removed you from group {group}" : "{actor} 將您從 {group} 群組中移除",
|
||||
"You removed {user} from group {group}" : "您已從群組 {group} 移除 {user}",
|
||||
"{actor} removed {user} from group {group}" : "{actor} 已從群組 {group} 移除 {user}",
|
||||
"An administrator removed you from group {group}" : "管理員已將您從 {group} 群組移除",
|
||||
"An administrator removed {user} from group {group}" : "管理員已將 {user} 從 {group} 群組移除",
|
||||
"Your <strong>group memberships</strong> were modified" : "您的<strong>群組成員資格</strong>已被修改",
|
||||
"{actor} changed your password" : "{actor} 變更了您的密碼",
|
||||
"You changed your password" : "您已變更您的密碼",
|
||||
"{actor} changed your password" : "{actor} 更改了您的密碼",
|
||||
"You changed your password" : "您更改了您的密碼",
|
||||
"Your password was reset by an administrator" : "您的密碼已被管理員重設",
|
||||
"Your password was reset" : "您的密碼已重設",
|
||||
"{actor} changed your email address" : "{actor} 變更了您的電子郵件地址",
|
||||
"You changed your email address" : "您已更改您的電子郵件地址",
|
||||
"Your email address was changed by an administrator" : "您的電子郵件已被管理員變更",
|
||||
"{actor} changed your email address" : "{actor} 更改了您的電郵地址",
|
||||
"You changed your email address" : "您已更改您的電郵地址",
|
||||
"Your email address was changed by an administrator" : "管理員已更改您的電郵地址",
|
||||
"You created app password \"{token}\"" : "您建立了應用程式密碼「{token}」",
|
||||
"You deleted app password \"{token}\"" : "您刪除了應用程式密碼「{token}」",
|
||||
"You renamed app password \"{token}\" to \"{newToken}\"" : "您已將應用程式密碼「{token}」重新命名為「{newToken}」",
|
||||
|
|
@ -60,11 +60,11 @@ OC.L10N.register(
|
|||
"Couldn't remove app." : "無法移除應用程式。",
|
||||
"Couldn't update app." : "無法更新應用程式。",
|
||||
"Wrong password" : "密碼錯誤",
|
||||
"No user supplied" : "未提供使用者",
|
||||
"No user supplied" : "未提供用戶",
|
||||
"Authentication error" : "認證錯誤",
|
||||
"Please provide an admin recovery password; otherwise, all user data will be lost." : "請提供管理員還原密碼;否則所有使用者資料將會遺失。",
|
||||
"Please provide an admin recovery password; otherwise, all user data will be lost." : "請提供管理員還原密碼;否則所有用戶資料將會遺失。",
|
||||
"Wrong admin recovery password. Please check the password and try again." : "錯誤的管理員還原密碼。請檢查密碼並再試一次。",
|
||||
"Backend doesn't support password change, but the user's encryption key was updated." : "後端不支援變更密碼,但使用者加密金鑰已更新。",
|
||||
"Backend doesn't support password change, but the user's encryption key was updated." : "後端不支援變更密碼,但用戶加密密鑰已更新。",
|
||||
"installing and updating apps via the app store or Federated Cloud Sharing" : "透過應用程式中心或是聯盟式雲端分享來安裝、更新應用程式",
|
||||
"Federated Cloud Sharing" : "聯盟式雲端分享",
|
||||
"cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL 使用的版本 %1$s 過舊 (%2$s)。請更新您的作業系統,否則如 %3$s 等功能可能無法正常運作。",
|
||||
|
|
@ -76,35 +76,35 @@ OC.L10N.register(
|
|||
"Email could not be sent. Check your mail server log" : "無法傳送郵件。請檢查您的郵件伺服器紀錄檔",
|
||||
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "傳送郵件時發生問題。請檢查您的設定。(錯誤:%s)",
|
||||
"You need to set your user email before being able to send test emails." : "您必須先設定您的使用者電子郵件,然後才能傳送測試郵件。",
|
||||
"Invalid mail address" : "無效的電子郵件地址",
|
||||
"Invalid mail address" : "無效的電郵地址",
|
||||
"Settings saved" : "設定已儲存",
|
||||
"Unable to change full name" : "無法變更全名",
|
||||
"Unable to change email address" : "無法變更電子郵件地址",
|
||||
"Unable to change full name" : "無法更改全名",
|
||||
"Unable to change email address" : "無法更改電郵地址",
|
||||
"Unable to set invalid phone number" : "無法設定無效的電話號碼",
|
||||
"Some account data was invalid" : "某些帳號資料無效",
|
||||
"In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "為了驗證您的推特帳號,請在推特上發佈下列推文(請確認推文內容沒有斷行):",
|
||||
"In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "為了驗證您的網站,請將下列內容存至您網站的根目錄下路徑為「.well-known/CloudIdVerificationCode.txt」的檔案(請確保全文以一行的格式儲存)",
|
||||
"%1$s changed your password on %2$s." : "%1$s 在 %2$s 時更改了您的密碼。",
|
||||
"Your password on %s was changed." : "你在 %s 的密碼已變更。",
|
||||
"Your password on %s was reset by an administrator." : "您在 %s 的密碼已被管理員重設。",
|
||||
"Your password on %s was reset." : "您在 %s 的密碼已重設。",
|
||||
"Password for %1$s changed on %2$s" : "%1$s 在 %2$s 的密碼已變更",
|
||||
"Password changed for %s" : "%s 的密碼已變更",
|
||||
"%1$s changed your password on %2$s." : "%1$s 於 %2$s 更改了您的密碼。",
|
||||
"Your password on %s was changed." : "你 %s 的密碼已更改。",
|
||||
"Your password on %s was reset by an administrator." : "您 %s 的密碼已被管理員重設。",
|
||||
"Your password on %s was reset." : "您 %s 的密碼已重設。",
|
||||
"Password for %1$s changed on %2$s" : "%1$s 的密碼於 %2$s 已更改",
|
||||
"Password changed for %s" : "%s 的密碼已更改",
|
||||
"If you did not request this, please contact an administrator." : "如果你未發送此請求 ,請聯絡系統管理員",
|
||||
"Your email address on %s was changed." : "您在 %s 的電子郵件地址已變更",
|
||||
"Your email address on %s was changed by an administrator." : "您在 %s 的電子郵件地址已被管理員變更",
|
||||
"Email address for %1$s changed on %2$s" : "%1$s 的電子郵件地址在 %2$s 變更",
|
||||
"Email address changed for %s" : "%s 的電子郵件地址已變更",
|
||||
"The new email address is %s" : "新的電子郵件地址為 %s",
|
||||
"Your email address on %s was changed." : "您 %s 的電郵地址已更改",
|
||||
"Your email address on %s was changed by an administrator." : "您 %s 的電郵地址已被管理員更改。",
|
||||
"Email address for %1$s changed on %2$s" : "%1$s 的電郵地址於 %2$s 已更改",
|
||||
"Email address changed for %s" : "%s 的電郵地址已更改",
|
||||
"The new email address is %s" : "新的電郵地址為 %s",
|
||||
"Your %s account was created" : "您的 %s 帳號已經建立",
|
||||
"Welcome aboard" : "歡迎加入",
|
||||
"Welcome aboard %s" : "歡迎加入 %s",
|
||||
"Welcome to your %s account, you can add, protect, and share your data." : "歡迎使用您的 %s 帳號,您可以新增、保護並分享您的資料。",
|
||||
"Your username is: %s" : "您的使用者名稱為:%s",
|
||||
"Your username is: %s" : "您的用戶名稱為:%s",
|
||||
"Set your password" : "設定您的密碼",
|
||||
"Go to %s" : "前往 %s",
|
||||
"Install Client" : "安裝客戶端程式",
|
||||
"Logged in user must be a subadmin" : "登入使用者必須為子管理員",
|
||||
"Logged in user must be a subadmin" : "登入用戶必須為子管理員",
|
||||
"Apps" : "應用程式",
|
||||
"Settings" : "設定",
|
||||
"Personal" : "個人",
|
||||
|
|
@ -115,15 +115,15 @@ OC.L10N.register(
|
|||
"Basic settings" : "基本設定",
|
||||
"Sharing" : "分享",
|
||||
"Personal info" : "個人資訊",
|
||||
"Mobile & desktop" : "行動裝置及桌面",
|
||||
"Mobile & desktop" : "手提電話及電腦",
|
||||
"Create" : "建立",
|
||||
"Change" : "更改",
|
||||
"Delete" : "刪除",
|
||||
"Reshare" : "重新分享",
|
||||
"Unlimited" : "無限制",
|
||||
"Verifying" : "正在驗證",
|
||||
"A background job is pending that checks for user imported SSL certificates. Please check back later." : "背景作業正在檢查使用者匯入的 SSL 證書。請稍後再檢查。",
|
||||
"There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "有一些使用者匯入的 SSL 證書,這些在 Nextcloud 21 不再能運作。它們可以透過命令列執行 \"occ security:certificates:import\" 指令來匯入。它們在資料目錄中的路徑如下所示。",
|
||||
"A background job is pending that checks for user imported SSL certificates. Please check back later." : "背景作業正在檢查用戶匯入的SSL證書。請稍後再檢查。",
|
||||
"There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "存在一些用戶匯入的SSL證書,這些在Nextcloud 21中不再使用。可以通過“ occ security:certificates:import”命令在命令行上將其導入。 它們在數據目錄中的路徑如下所示。",
|
||||
"The old server-side-encryption format is enabled. We recommend disabling this." : "啟用了舊的伺服器端加密格式。我們建議停用它。",
|
||||
"MariaDB version \"%s\" is used. Nextcloud 21 will no longer support this version and requires MariaDB 10.2 or higher." : "正在使用 MariaDB 版本「%s」。Nextcloud 21 不再支援此版本,並需要 MariaDB 10.2 或更新版本。",
|
||||
"MySQL version \"%s\" is used. Nextcloud 21 will no longer support this version and requires MySQL 8 or higher." : "正在使用 MySQL 版本「%s」。Nextcloud 21 不再支援此版本,並需要 MySQL 8 或更新版本。",
|
||||
|
|
@ -151,9 +151,9 @@ OC.L10N.register(
|
|||
"View in store" : "在商店中檢視",
|
||||
"Visit website" : "造訪網站",
|
||||
"Report a bug" : "回報錯誤",
|
||||
"User documentation" : "使用者說明文件",
|
||||
"Admin documentation" : "管理員說明文件",
|
||||
"Developer documentation" : "開發者說明文件",
|
||||
"User documentation" : "用戶使用手冊",
|
||||
"Admin documentation" : "管理員使用手冊",
|
||||
"Developer documentation" : "開發人員使用手冊",
|
||||
"This app is supported via your current Nextcloud subscription." : "您目前的 Nextcloud 訂閱支援此應用程式。",
|
||||
"Supported" : "支援",
|
||||
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "精選應用程式是由社群開發的。它們提供了相當重要的功能,並已準備好在正式環境使用。",
|
||||
|
|
@ -185,11 +185,11 @@ OC.L10N.register(
|
|||
"Nextcloud Talk for iOS" : "iOS 版 Nextcloud Talk",
|
||||
"Nextcloud Talk for Android" : "Android 版 Nextcloud Talk",
|
||||
"Sync client - {os}" : "同步客戶端 - {os}",
|
||||
"This session" : "此工作階段",
|
||||
"This session" : "此節",
|
||||
"Device" : "裝置",
|
||||
"Last activity" : "上次活動",
|
||||
"Devices & sessions" : "裝置和工作階段",
|
||||
"Web, desktop and mobile clients currently logged in to your account." : "目前登入您的帳號的網頁、桌面和行動裝置客戶端。",
|
||||
"Devices & sessions" : "裝置和時段",
|
||||
"Web, desktop and mobile clients currently logged in to your account." : "目前登入您帳號的網絡、桌面和流動裝置客戶端。",
|
||||
"Do you really want to wipe your data from this device?" : "您真的想要從此裝置抹除您的資料嗎?",
|
||||
"Confirm wipe" : "確認抹除",
|
||||
"Error while creating device token" : "建立裝置權杖時發生錯誤",
|
||||
|
|
@ -208,17 +208,17 @@ OC.L10N.register(
|
|||
"Copied!" : "已複製!",
|
||||
"Copy" : "複製",
|
||||
"Could not copy app password. Please copy it manually." : "無法複製應用程式密碼。請手動複製。",
|
||||
"You do not have permissions to see the details of this user" : "您沒有檢視此使用者詳細資料的權限",
|
||||
"You do not have permissions to see the details of this user" : "您沒有檢視此用戶詳細資料的權限",
|
||||
"Add new password" : "新增密碼",
|
||||
"Add new email address" : "新增電子郵件",
|
||||
"Add user in group" : "在群組中新增使用者",
|
||||
"Set user as admin for" : "將使用者設定為管理員",
|
||||
"Select user quota" : "選取使用者配額",
|
||||
"Add new email address" : "新增電郵地址",
|
||||
"Add user in group" : "在群組中新增用戶",
|
||||
"Set user as admin for" : "將用戶設定為管理員",
|
||||
"Select user quota" : "選取用戶配額",
|
||||
"No language set" : "未設定語言",
|
||||
"Delete user" : "刪除使用者",
|
||||
"Delete user" : "刪除用戶",
|
||||
"Wipe all devices" : "抹除所有裝置",
|
||||
"Disable user" : "停用使用者",
|
||||
"Enable user" : "啟用使用者",
|
||||
"Disable user" : "停用用戶",
|
||||
"Enable user" : "啟用用戶",
|
||||
"Resend welcome email" : "重新傳送歡迎電子郵件",
|
||||
"In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet." : "如果遺失裝置或退出組織,這可以從與 {userid} 相關的所有裝置遠端抹除 Nextcloud 資料。僅當裝置連線到網際網路時才有效。",
|
||||
"Remote wipe of devices" : "遠端抹除裝置",
|
||||
|
|
@ -228,26 +228,26 @@ OC.L10N.register(
|
|||
"Account deletion" : "帳號刪除",
|
||||
"Delete {userid}'s account" : "刪除 {userid} 的帳號",
|
||||
"Welcome mail sent!" : "已傳送歡迎郵件!",
|
||||
"Edit User" : "編輯使用者",
|
||||
"Toggle user actions menu" : "切換使用者動作選單",
|
||||
"Edit User" : "編輯用戶",
|
||||
"Toggle user actions menu" : "切換用戶動作選單",
|
||||
"{size} used" : "已使用 {size}",
|
||||
"Will be autogenerated" : "將自動生成",
|
||||
"Display name" : "顯示名稱",
|
||||
"Email" : "信箱",
|
||||
"Email" : "電郵地址",
|
||||
"Default language" : "預設語言",
|
||||
"Add a new user" : "新增使用者",
|
||||
"Add a new user" : "新增用戶",
|
||||
"Close" : "關閉",
|
||||
"Group admin for" : "群組管理員",
|
||||
"Quota" : "容量限制",
|
||||
"Language" : "語言",
|
||||
"User backend" : "使用者資料後端",
|
||||
"Storage location" : "儲存位址",
|
||||
"User backend" : "用戶資料後端",
|
||||
"Storage location" : "儲存位置",
|
||||
"Last login" : "最後登入",
|
||||
"No users in here" : "這裡沒有使用者",
|
||||
"No users in here" : "這裡沒有用戶",
|
||||
"Default quota" : "預設儲存容量限制",
|
||||
"Common languages" : "常用語言",
|
||||
"All languages" : "全部語言",
|
||||
"Password change is disabled because the master key is disabled" : "已停用密碼變更,因為主控金鑰已停用",
|
||||
"Password change is disabled because the master key is disabled" : "已停用密碼變更,因為主控密鑰已停用",
|
||||
"Passwordless authentication requires a secure connection." : "無密碼身份驗證需要安全連線。",
|
||||
"Add WebAuthn device" : "新增 WebAuthn 裝置",
|
||||
"Please authorize your WebAuthn device." : "請驗證您的 WebAuthn 裝置。",
|
||||
|
|
@ -272,12 +272,12 @@ OC.L10N.register(
|
|||
"Details" : "詳細資料",
|
||||
"Changelog" : "變更紀錄",
|
||||
"by {author}\n{license}" : "作者為 {author}\n{license}",
|
||||
"New user" : "新使用者",
|
||||
"New user" : "新用戶",
|
||||
"Enter group name" : "輸入群組名稱",
|
||||
"Add group" : "新增群組",
|
||||
"Everyone" : "所有人",
|
||||
"Admins" : "管理者",
|
||||
"Disabled users" : "已停用使用者",
|
||||
"Admins" : "管理員",
|
||||
"Disabled users" : "已停用用戶",
|
||||
"Remove group" : "移除群組",
|
||||
"Default quota:" : "預設容量限制:",
|
||||
"Select default quota" : "選取預設容量限制",
|
||||
|
|
@ -285,8 +285,8 @@ OC.L10N.register(
|
|||
"Show last login" : "顯示上次登入時間",
|
||||
"Show user backend" : "顯示使用者資料後端",
|
||||
"Show storage path" : "顯示儲存路徑",
|
||||
"Send email to new user" : "傳送電子郵件給新使用者",
|
||||
"You are about to remove the group {group}. The users will NOT be deleted." : "您將要移除群組 {group}。使用者將不會被刪除。",
|
||||
"Send email to new user" : "傳送電子郵件給新用戶",
|
||||
"You are about to remove the group {group}. The users will NOT be deleted." : "您將要移除群組 {group}。用戶將不會被刪除。",
|
||||
"Please confirm the group removal " : "請確認移除群組",
|
||||
"Download and enable" : "下載並啟用",
|
||||
"Enable" : "啟用",
|
||||
|
|
@ -298,8 +298,8 @@ OC.L10N.register(
|
|||
"The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "應用程式已啟用但是需要更新。您將會在5秒內被重新導向至更新頁面。",
|
||||
"App update" : "應用程式更新",
|
||||
"Error: This app can not be enabled because it makes the server unstable" : "錯誤:此應用程序無法啟用,因為它造成伺服器不穩定",
|
||||
"Administrator documentation" : "管理員說明文件",
|
||||
"Documentation" : "說明文件",
|
||||
"Administrator documentation" : "管理員使用手冊",
|
||||
"Documentation" : "使用手冊",
|
||||
"Forum" : "論壇",
|
||||
"None" : "無",
|
||||
"Login" : "登入",
|
||||
|
|
@ -307,24 +307,24 @@ OC.L10N.register(
|
|||
"NT LAN Manager" : "NT LAN 管理程式",
|
||||
"SSL/TLS" : "SSL/TLS",
|
||||
"STARTTLS" : "STARTTLS",
|
||||
"Email server" : "電子郵件伺服器",
|
||||
"Open documentation" : "開啟說明文件",
|
||||
"It is important to set up this server to be able to send emails, like for password reset and notifications." : "設定伺服器可以寄送電子郵件非常重要,使用者通知和密碼重設將會需要。",
|
||||
"Email server" : "電郵伺服器",
|
||||
"Open documentation" : "開啟使用手冊",
|
||||
"It is important to set up this server to be able to send emails, like for password reset and notifications." : "設置此伺服器以使其能夠發送電郵以進行密碼重置,通知等。",
|
||||
"Send mode" : "傳送模式",
|
||||
"Encryption" : "加密",
|
||||
"Sendmail mode" : "Sendmail 模式",
|
||||
"From address" : "寄件地址",
|
||||
"mail" : "電子郵件",
|
||||
"mail" : "電郵地址",
|
||||
"Authentication method" : "認證方式",
|
||||
"Authentication required" : "需要認證",
|
||||
"Server address" : "伺服器位址",
|
||||
"Port" : "連接埠",
|
||||
"Credentials" : "憑證",
|
||||
"SMTP Username" : "SMTP 使用者名稱",
|
||||
"Credentials" : "身份驗證",
|
||||
"SMTP Username" : "SMTP 用戶名稱",
|
||||
"SMTP Password" : "SMTP 密碼",
|
||||
"Save" : "儲存",
|
||||
"Test email settings" : "測試電子郵件設定",
|
||||
"Send email" : "傳送電子郵件",
|
||||
"Send email" : "傳送測試電郵",
|
||||
"Security & setup warnings" : "安全及設定警告",
|
||||
"It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "正確設定每樣東西對您的站台的安全性與效能來說非常重要。為了協助您,我們正在進行一些自動檢查。請參閱連結資訊以取得更多資訊。",
|
||||
"All checks passed." : "所有檢查皆通過。",
|
||||
|
|
@ -371,16 +371,16 @@ OC.L10N.register(
|
|||
"Enforce expiration date" : "強制設定到期日",
|
||||
"Allow users to share via link" : "允許使用者透過連結分享",
|
||||
"Allow public uploads" : "允許公開上傳",
|
||||
"Always ask for a password" : "總是詢問密碼",
|
||||
"Always ask for a password" : "要求輸入密碼",
|
||||
"Enforce password protection" : "強制密碼保護",
|
||||
"Set default expiration date for link shares" : "設定連結分享的預設到期日",
|
||||
"Allow resharing" : "允許轉分享",
|
||||
"Allow sharing with groups" : "允許與群組分享",
|
||||
"Restrict users to only share with users in their groups" : "限制使用者僅能與他們群組中的其他使用者分享",
|
||||
"Restrict users to only share with users in their groups" : "限制用戶僅能與他們群組中的其他用戶分享",
|
||||
"Exclude groups from sharing" : "禁止特定群組分享檔案",
|
||||
"These groups will still be able to receive shares, but not to initiate them." : "這些群組仍然能接受其他人的分享,但是沒有辦法發起分享。",
|
||||
"Allow username autocompletion in share dialog (if this is disabled the full username or email address needs to be entered)" : "在分享對話框中允許使用者名稱自動完成(如果停用此選項,則必須輸入完整的使用者名稱或電子郵件地址)",
|
||||
"Restrict username autocompletion to users within the same groups" : "將使用者名稱限制為僅相同群組的使用者可使用",
|
||||
"Allow username autocompletion in share dialog (if this is disabled the full username or email address needs to be entered)" : "在分享對話框中允許用戶名稱自動完成(如果停用此選項,則必須輸入完整的用戶名稱或電郵地址)",
|
||||
"Restrict username autocompletion to users within the same groups" : "將使用戶名稱限制為僅相同群組的用戶可使用",
|
||||
"Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "在公開的檔案連結和上傳頁面顯示免責聲明(僅在檔案列表隱藏的時候才會顯示)",
|
||||
"This text will be shown on the public link upload page when the file list is hidden." : "這段文字會在公開檔案上傳頁面檔案列表被隱藏的時候顯示。",
|
||||
"Default share permissions" : "預設分享權限",
|
||||
|
|
@ -403,9 +403,9 @@ OC.L10N.register(
|
|||
"You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "您已使用 <strong>%2$s</strong> 中的 <strong>%1$s</strong> (<strong>%3$s %%</strong>)",
|
||||
"Full name" : "全名",
|
||||
"No display name set" : "未設定顯示名稱",
|
||||
"Your email address" : "您的電子郵件信箱",
|
||||
"No email address set" : "未設定電子郵件信箱",
|
||||
"For password reset and notifications" : "用於密碼重設和通知信件",
|
||||
"Your email address" : "您的電郵地址",
|
||||
"No email address set" : "未設定電郵地址",
|
||||
"For password reset and notifications" : "用於密碼重設和通告信件",
|
||||
"Phone number" : "電話號碼",
|
||||
"Your phone number" : "您的電話號碼",
|
||||
"Address" : "地址",
|
||||
|
|
|
|||
|
|
@ -22,28 +22,28 @@
|
|||
"An error occurred while changing your language. Please reload the page and try again." : "變更語言時發生錯誤,請重新整理頁面後重試",
|
||||
"An error occurred while changing your locale. Please reload the page and try again." : "變更慣用地區時發生錯誤,請重新整理頁面後重試",
|
||||
"Select a profile picture" : "選擇個人檔案圖片",
|
||||
"Week starts on {fdow}" : "一週開始於 {fdow}",
|
||||
"Week starts on {fdow}" : "日曆週從{fdow}開始",
|
||||
"Groups" : "群組",
|
||||
"Group list is empty" : "群組列表為空",
|
||||
"Unable to retrieve the group list" : "無法擷取群組列表",
|
||||
"{actor} added you to group {group}" : "{actor} 將您加入群組 {group}",
|
||||
"You added {user} to group {group}" : "您已將 {user} 加入至群組 {group}",
|
||||
"{actor} added {user} to group {group}" : "{actor} 將 {user} 加入至群組 {group}",
|
||||
"An administrator added you to group {group}" : "管理員已將您新增至群組 {group}",
|
||||
"An administrator added {user} to group {group}" : "管理員已將 {user} 新增至群組 {group}",
|
||||
"An administrator added you to group {group}" : "管理員已將您加入至群組 {group}",
|
||||
"An administrator added {user} to group {group}" : "管理員已將 {user} 加入至群組 {group}",
|
||||
"{actor} removed you from group {group}" : "{actor} 將您從 {group} 群組中移除",
|
||||
"You removed {user} from group {group}" : "您已從群組 {group} 移除 {user}",
|
||||
"{actor} removed {user} from group {group}" : "{actor} 已從群組 {group} 移除 {user}",
|
||||
"An administrator removed you from group {group}" : "管理員已將您從 {group} 群組移除",
|
||||
"An administrator removed {user} from group {group}" : "管理員已將 {user} 從 {group} 群組移除",
|
||||
"Your <strong>group memberships</strong> were modified" : "您的<strong>群組成員資格</strong>已被修改",
|
||||
"{actor} changed your password" : "{actor} 變更了您的密碼",
|
||||
"You changed your password" : "您已變更您的密碼",
|
||||
"{actor} changed your password" : "{actor} 更改了您的密碼",
|
||||
"You changed your password" : "您更改了您的密碼",
|
||||
"Your password was reset by an administrator" : "您的密碼已被管理員重設",
|
||||
"Your password was reset" : "您的密碼已重設",
|
||||
"{actor} changed your email address" : "{actor} 變更了您的電子郵件地址",
|
||||
"You changed your email address" : "您已更改您的電子郵件地址",
|
||||
"Your email address was changed by an administrator" : "您的電子郵件已被管理員變更",
|
||||
"{actor} changed your email address" : "{actor} 更改了您的電郵地址",
|
||||
"You changed your email address" : "您已更改您的電郵地址",
|
||||
"Your email address was changed by an administrator" : "管理員已更改您的電郵地址",
|
||||
"You created app password \"{token}\"" : "您建立了應用程式密碼「{token}」",
|
||||
"You deleted app password \"{token}\"" : "您刪除了應用程式密碼「{token}」",
|
||||
"You renamed app password \"{token}\" to \"{newToken}\"" : "您已將應用程式密碼「{token}」重新命名為「{newToken}」",
|
||||
|
|
@ -58,11 +58,11 @@
|
|||
"Couldn't remove app." : "無法移除應用程式。",
|
||||
"Couldn't update app." : "無法更新應用程式。",
|
||||
"Wrong password" : "密碼錯誤",
|
||||
"No user supplied" : "未提供使用者",
|
||||
"No user supplied" : "未提供用戶",
|
||||
"Authentication error" : "認證錯誤",
|
||||
"Please provide an admin recovery password; otherwise, all user data will be lost." : "請提供管理員還原密碼;否則所有使用者資料將會遺失。",
|
||||
"Please provide an admin recovery password; otherwise, all user data will be lost." : "請提供管理員還原密碼;否則所有用戶資料將會遺失。",
|
||||
"Wrong admin recovery password. Please check the password and try again." : "錯誤的管理員還原密碼。請檢查密碼並再試一次。",
|
||||
"Backend doesn't support password change, but the user's encryption key was updated." : "後端不支援變更密碼,但使用者加密金鑰已更新。",
|
||||
"Backend doesn't support password change, but the user's encryption key was updated." : "後端不支援變更密碼,但用戶加密密鑰已更新。",
|
||||
"installing and updating apps via the app store or Federated Cloud Sharing" : "透過應用程式中心或是聯盟式雲端分享來安裝、更新應用程式",
|
||||
"Federated Cloud Sharing" : "聯盟式雲端分享",
|
||||
"cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL 使用的版本 %1$s 過舊 (%2$s)。請更新您的作業系統,否則如 %3$s 等功能可能無法正常運作。",
|
||||
|
|
@ -74,35 +74,35 @@
|
|||
"Email could not be sent. Check your mail server log" : "無法傳送郵件。請檢查您的郵件伺服器紀錄檔",
|
||||
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "傳送郵件時發生問題。請檢查您的設定。(錯誤:%s)",
|
||||
"You need to set your user email before being able to send test emails." : "您必須先設定您的使用者電子郵件,然後才能傳送測試郵件。",
|
||||
"Invalid mail address" : "無效的電子郵件地址",
|
||||
"Invalid mail address" : "無效的電郵地址",
|
||||
"Settings saved" : "設定已儲存",
|
||||
"Unable to change full name" : "無法變更全名",
|
||||
"Unable to change email address" : "無法變更電子郵件地址",
|
||||
"Unable to change full name" : "無法更改全名",
|
||||
"Unable to change email address" : "無法更改電郵地址",
|
||||
"Unable to set invalid phone number" : "無法設定無效的電話號碼",
|
||||
"Some account data was invalid" : "某些帳號資料無效",
|
||||
"In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "為了驗證您的推特帳號,請在推特上發佈下列推文(請確認推文內容沒有斷行):",
|
||||
"In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "為了驗證您的網站,請將下列內容存至您網站的根目錄下路徑為「.well-known/CloudIdVerificationCode.txt」的檔案(請確保全文以一行的格式儲存)",
|
||||
"%1$s changed your password on %2$s." : "%1$s 在 %2$s 時更改了您的密碼。",
|
||||
"Your password on %s was changed." : "你在 %s 的密碼已變更。",
|
||||
"Your password on %s was reset by an administrator." : "您在 %s 的密碼已被管理員重設。",
|
||||
"Your password on %s was reset." : "您在 %s 的密碼已重設。",
|
||||
"Password for %1$s changed on %2$s" : "%1$s 在 %2$s 的密碼已變更",
|
||||
"Password changed for %s" : "%s 的密碼已變更",
|
||||
"%1$s changed your password on %2$s." : "%1$s 於 %2$s 更改了您的密碼。",
|
||||
"Your password on %s was changed." : "你 %s 的密碼已更改。",
|
||||
"Your password on %s was reset by an administrator." : "您 %s 的密碼已被管理員重設。",
|
||||
"Your password on %s was reset." : "您 %s 的密碼已重設。",
|
||||
"Password for %1$s changed on %2$s" : "%1$s 的密碼於 %2$s 已更改",
|
||||
"Password changed for %s" : "%s 的密碼已更改",
|
||||
"If you did not request this, please contact an administrator." : "如果你未發送此請求 ,請聯絡系統管理員",
|
||||
"Your email address on %s was changed." : "您在 %s 的電子郵件地址已變更",
|
||||
"Your email address on %s was changed by an administrator." : "您在 %s 的電子郵件地址已被管理員變更",
|
||||
"Email address for %1$s changed on %2$s" : "%1$s 的電子郵件地址在 %2$s 變更",
|
||||
"Email address changed for %s" : "%s 的電子郵件地址已變更",
|
||||
"The new email address is %s" : "新的電子郵件地址為 %s",
|
||||
"Your email address on %s was changed." : "您 %s 的電郵地址已更改",
|
||||
"Your email address on %s was changed by an administrator." : "您 %s 的電郵地址已被管理員更改。",
|
||||
"Email address for %1$s changed on %2$s" : "%1$s 的電郵地址於 %2$s 已更改",
|
||||
"Email address changed for %s" : "%s 的電郵地址已更改",
|
||||
"The new email address is %s" : "新的電郵地址為 %s",
|
||||
"Your %s account was created" : "您的 %s 帳號已經建立",
|
||||
"Welcome aboard" : "歡迎加入",
|
||||
"Welcome aboard %s" : "歡迎加入 %s",
|
||||
"Welcome to your %s account, you can add, protect, and share your data." : "歡迎使用您的 %s 帳號,您可以新增、保護並分享您的資料。",
|
||||
"Your username is: %s" : "您的使用者名稱為:%s",
|
||||
"Your username is: %s" : "您的用戶名稱為:%s",
|
||||
"Set your password" : "設定您的密碼",
|
||||
"Go to %s" : "前往 %s",
|
||||
"Install Client" : "安裝客戶端程式",
|
||||
"Logged in user must be a subadmin" : "登入使用者必須為子管理員",
|
||||
"Logged in user must be a subadmin" : "登入用戶必須為子管理員",
|
||||
"Apps" : "應用程式",
|
||||
"Settings" : "設定",
|
||||
"Personal" : "個人",
|
||||
|
|
@ -113,15 +113,15 @@
|
|||
"Basic settings" : "基本設定",
|
||||
"Sharing" : "分享",
|
||||
"Personal info" : "個人資訊",
|
||||
"Mobile & desktop" : "行動裝置及桌面",
|
||||
"Mobile & desktop" : "手提電話及電腦",
|
||||
"Create" : "建立",
|
||||
"Change" : "更改",
|
||||
"Delete" : "刪除",
|
||||
"Reshare" : "重新分享",
|
||||
"Unlimited" : "無限制",
|
||||
"Verifying" : "正在驗證",
|
||||
"A background job is pending that checks for user imported SSL certificates. Please check back later." : "背景作業正在檢查使用者匯入的 SSL 證書。請稍後再檢查。",
|
||||
"There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "有一些使用者匯入的 SSL 證書,這些在 Nextcloud 21 不再能運作。它們可以透過命令列執行 \"occ security:certificates:import\" 指令來匯入。它們在資料目錄中的路徑如下所示。",
|
||||
"A background job is pending that checks for user imported SSL certificates. Please check back later." : "背景作業正在檢查用戶匯入的SSL證書。請稍後再檢查。",
|
||||
"There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "存在一些用戶匯入的SSL證書,這些在Nextcloud 21中不再使用。可以通過“ occ security:certificates:import”命令在命令行上將其導入。 它們在數據目錄中的路徑如下所示。",
|
||||
"The old server-side-encryption format is enabled. We recommend disabling this." : "啟用了舊的伺服器端加密格式。我們建議停用它。",
|
||||
"MariaDB version \"%s\" is used. Nextcloud 21 will no longer support this version and requires MariaDB 10.2 or higher." : "正在使用 MariaDB 版本「%s」。Nextcloud 21 不再支援此版本,並需要 MariaDB 10.2 或更新版本。",
|
||||
"MySQL version \"%s\" is used. Nextcloud 21 will no longer support this version and requires MySQL 8 or higher." : "正在使用 MySQL 版本「%s」。Nextcloud 21 不再支援此版本,並需要 MySQL 8 或更新版本。",
|
||||
|
|
@ -149,9 +149,9 @@
|
|||
"View in store" : "在商店中檢視",
|
||||
"Visit website" : "造訪網站",
|
||||
"Report a bug" : "回報錯誤",
|
||||
"User documentation" : "使用者說明文件",
|
||||
"Admin documentation" : "管理員說明文件",
|
||||
"Developer documentation" : "開發者說明文件",
|
||||
"User documentation" : "用戶使用手冊",
|
||||
"Admin documentation" : "管理員使用手冊",
|
||||
"Developer documentation" : "開發人員使用手冊",
|
||||
"This app is supported via your current Nextcloud subscription." : "您目前的 Nextcloud 訂閱支援此應用程式。",
|
||||
"Supported" : "支援",
|
||||
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "精選應用程式是由社群開發的。它們提供了相當重要的功能,並已準備好在正式環境使用。",
|
||||
|
|
@ -183,11 +183,11 @@
|
|||
"Nextcloud Talk for iOS" : "iOS 版 Nextcloud Talk",
|
||||
"Nextcloud Talk for Android" : "Android 版 Nextcloud Talk",
|
||||
"Sync client - {os}" : "同步客戶端 - {os}",
|
||||
"This session" : "此工作階段",
|
||||
"This session" : "此節",
|
||||
"Device" : "裝置",
|
||||
"Last activity" : "上次活動",
|
||||
"Devices & sessions" : "裝置和工作階段",
|
||||
"Web, desktop and mobile clients currently logged in to your account." : "目前登入您的帳號的網頁、桌面和行動裝置客戶端。",
|
||||
"Devices & sessions" : "裝置和時段",
|
||||
"Web, desktop and mobile clients currently logged in to your account." : "目前登入您帳號的網絡、桌面和流動裝置客戶端。",
|
||||
"Do you really want to wipe your data from this device?" : "您真的想要從此裝置抹除您的資料嗎?",
|
||||
"Confirm wipe" : "確認抹除",
|
||||
"Error while creating device token" : "建立裝置權杖時發生錯誤",
|
||||
|
|
@ -206,17 +206,17 @@
|
|||
"Copied!" : "已複製!",
|
||||
"Copy" : "複製",
|
||||
"Could not copy app password. Please copy it manually." : "無法複製應用程式密碼。請手動複製。",
|
||||
"You do not have permissions to see the details of this user" : "您沒有檢視此使用者詳細資料的權限",
|
||||
"You do not have permissions to see the details of this user" : "您沒有檢視此用戶詳細資料的權限",
|
||||
"Add new password" : "新增密碼",
|
||||
"Add new email address" : "新增電子郵件",
|
||||
"Add user in group" : "在群組中新增使用者",
|
||||
"Set user as admin for" : "將使用者設定為管理員",
|
||||
"Select user quota" : "選取使用者配額",
|
||||
"Add new email address" : "新增電郵地址",
|
||||
"Add user in group" : "在群組中新增用戶",
|
||||
"Set user as admin for" : "將用戶設定為管理員",
|
||||
"Select user quota" : "選取用戶配額",
|
||||
"No language set" : "未設定語言",
|
||||
"Delete user" : "刪除使用者",
|
||||
"Delete user" : "刪除用戶",
|
||||
"Wipe all devices" : "抹除所有裝置",
|
||||
"Disable user" : "停用使用者",
|
||||
"Enable user" : "啟用使用者",
|
||||
"Disable user" : "停用用戶",
|
||||
"Enable user" : "啟用用戶",
|
||||
"Resend welcome email" : "重新傳送歡迎電子郵件",
|
||||
"In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet." : "如果遺失裝置或退出組織,這可以從與 {userid} 相關的所有裝置遠端抹除 Nextcloud 資料。僅當裝置連線到網際網路時才有效。",
|
||||
"Remote wipe of devices" : "遠端抹除裝置",
|
||||
|
|
@ -226,26 +226,26 @@
|
|||
"Account deletion" : "帳號刪除",
|
||||
"Delete {userid}'s account" : "刪除 {userid} 的帳號",
|
||||
"Welcome mail sent!" : "已傳送歡迎郵件!",
|
||||
"Edit User" : "編輯使用者",
|
||||
"Toggle user actions menu" : "切換使用者動作選單",
|
||||
"Edit User" : "編輯用戶",
|
||||
"Toggle user actions menu" : "切換用戶動作選單",
|
||||
"{size} used" : "已使用 {size}",
|
||||
"Will be autogenerated" : "將自動生成",
|
||||
"Display name" : "顯示名稱",
|
||||
"Email" : "信箱",
|
||||
"Email" : "電郵地址",
|
||||
"Default language" : "預設語言",
|
||||
"Add a new user" : "新增使用者",
|
||||
"Add a new user" : "新增用戶",
|
||||
"Close" : "關閉",
|
||||
"Group admin for" : "群組管理員",
|
||||
"Quota" : "容量限制",
|
||||
"Language" : "語言",
|
||||
"User backend" : "使用者資料後端",
|
||||
"Storage location" : "儲存位址",
|
||||
"User backend" : "用戶資料後端",
|
||||
"Storage location" : "儲存位置",
|
||||
"Last login" : "最後登入",
|
||||
"No users in here" : "這裡沒有使用者",
|
||||
"No users in here" : "這裡沒有用戶",
|
||||
"Default quota" : "預設儲存容量限制",
|
||||
"Common languages" : "常用語言",
|
||||
"All languages" : "全部語言",
|
||||
"Password change is disabled because the master key is disabled" : "已停用密碼變更,因為主控金鑰已停用",
|
||||
"Password change is disabled because the master key is disabled" : "已停用密碼變更,因為主控密鑰已停用",
|
||||
"Passwordless authentication requires a secure connection." : "無密碼身份驗證需要安全連線。",
|
||||
"Add WebAuthn device" : "新增 WebAuthn 裝置",
|
||||
"Please authorize your WebAuthn device." : "請驗證您的 WebAuthn 裝置。",
|
||||
|
|
@ -270,12 +270,12 @@
|
|||
"Details" : "詳細資料",
|
||||
"Changelog" : "變更紀錄",
|
||||
"by {author}\n{license}" : "作者為 {author}\n{license}",
|
||||
"New user" : "新使用者",
|
||||
"New user" : "新用戶",
|
||||
"Enter group name" : "輸入群組名稱",
|
||||
"Add group" : "新增群組",
|
||||
"Everyone" : "所有人",
|
||||
"Admins" : "管理者",
|
||||
"Disabled users" : "已停用使用者",
|
||||
"Admins" : "管理員",
|
||||
"Disabled users" : "已停用用戶",
|
||||
"Remove group" : "移除群組",
|
||||
"Default quota:" : "預設容量限制:",
|
||||
"Select default quota" : "選取預設容量限制",
|
||||
|
|
@ -283,8 +283,8 @@
|
|||
"Show last login" : "顯示上次登入時間",
|
||||
"Show user backend" : "顯示使用者資料後端",
|
||||
"Show storage path" : "顯示儲存路徑",
|
||||
"Send email to new user" : "傳送電子郵件給新使用者",
|
||||
"You are about to remove the group {group}. The users will NOT be deleted." : "您將要移除群組 {group}。使用者將不會被刪除。",
|
||||
"Send email to new user" : "傳送電子郵件給新用戶",
|
||||
"You are about to remove the group {group}. The users will NOT be deleted." : "您將要移除群組 {group}。用戶將不會被刪除。",
|
||||
"Please confirm the group removal " : "請確認移除群組",
|
||||
"Download and enable" : "下載並啟用",
|
||||
"Enable" : "啟用",
|
||||
|
|
@ -296,8 +296,8 @@
|
|||
"The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "應用程式已啟用但是需要更新。您將會在5秒內被重新導向至更新頁面。",
|
||||
"App update" : "應用程式更新",
|
||||
"Error: This app can not be enabled because it makes the server unstable" : "錯誤:此應用程序無法啟用,因為它造成伺服器不穩定",
|
||||
"Administrator documentation" : "管理員說明文件",
|
||||
"Documentation" : "說明文件",
|
||||
"Administrator documentation" : "管理員使用手冊",
|
||||
"Documentation" : "使用手冊",
|
||||
"Forum" : "論壇",
|
||||
"None" : "無",
|
||||
"Login" : "登入",
|
||||
|
|
@ -305,24 +305,24 @@
|
|||
"NT LAN Manager" : "NT LAN 管理程式",
|
||||
"SSL/TLS" : "SSL/TLS",
|
||||
"STARTTLS" : "STARTTLS",
|
||||
"Email server" : "電子郵件伺服器",
|
||||
"Open documentation" : "開啟說明文件",
|
||||
"It is important to set up this server to be able to send emails, like for password reset and notifications." : "設定伺服器可以寄送電子郵件非常重要,使用者通知和密碼重設將會需要。",
|
||||
"Email server" : "電郵伺服器",
|
||||
"Open documentation" : "開啟使用手冊",
|
||||
"It is important to set up this server to be able to send emails, like for password reset and notifications." : "設置此伺服器以使其能夠發送電郵以進行密碼重置,通知等。",
|
||||
"Send mode" : "傳送模式",
|
||||
"Encryption" : "加密",
|
||||
"Sendmail mode" : "Sendmail 模式",
|
||||
"From address" : "寄件地址",
|
||||
"mail" : "電子郵件",
|
||||
"mail" : "電郵地址",
|
||||
"Authentication method" : "認證方式",
|
||||
"Authentication required" : "需要認證",
|
||||
"Server address" : "伺服器位址",
|
||||
"Port" : "連接埠",
|
||||
"Credentials" : "憑證",
|
||||
"SMTP Username" : "SMTP 使用者名稱",
|
||||
"Credentials" : "身份驗證",
|
||||
"SMTP Username" : "SMTP 用戶名稱",
|
||||
"SMTP Password" : "SMTP 密碼",
|
||||
"Save" : "儲存",
|
||||
"Test email settings" : "測試電子郵件設定",
|
||||
"Send email" : "傳送電子郵件",
|
||||
"Send email" : "傳送測試電郵",
|
||||
"Security & setup warnings" : "安全及設定警告",
|
||||
"It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "正確設定每樣東西對您的站台的安全性與效能來說非常重要。為了協助您,我們正在進行一些自動檢查。請參閱連結資訊以取得更多資訊。",
|
||||
"All checks passed." : "所有檢查皆通過。",
|
||||
|
|
@ -369,16 +369,16 @@
|
|||
"Enforce expiration date" : "強制設定到期日",
|
||||
"Allow users to share via link" : "允許使用者透過連結分享",
|
||||
"Allow public uploads" : "允許公開上傳",
|
||||
"Always ask for a password" : "總是詢問密碼",
|
||||
"Always ask for a password" : "要求輸入密碼",
|
||||
"Enforce password protection" : "強制密碼保護",
|
||||
"Set default expiration date for link shares" : "設定連結分享的預設到期日",
|
||||
"Allow resharing" : "允許轉分享",
|
||||
"Allow sharing with groups" : "允許與群組分享",
|
||||
"Restrict users to only share with users in their groups" : "限制使用者僅能與他們群組中的其他使用者分享",
|
||||
"Restrict users to only share with users in their groups" : "限制用戶僅能與他們群組中的其他用戶分享",
|
||||
"Exclude groups from sharing" : "禁止特定群組分享檔案",
|
||||
"These groups will still be able to receive shares, but not to initiate them." : "這些群組仍然能接受其他人的分享,但是沒有辦法發起分享。",
|
||||
"Allow username autocompletion in share dialog (if this is disabled the full username or email address needs to be entered)" : "在分享對話框中允許使用者名稱自動完成(如果停用此選項,則必須輸入完整的使用者名稱或電子郵件地址)",
|
||||
"Restrict username autocompletion to users within the same groups" : "將使用者名稱限制為僅相同群組的使用者可使用",
|
||||
"Allow username autocompletion in share dialog (if this is disabled the full username or email address needs to be entered)" : "在分享對話框中允許用戶名稱自動完成(如果停用此選項,則必須輸入完整的用戶名稱或電郵地址)",
|
||||
"Restrict username autocompletion to users within the same groups" : "將使用戶名稱限制為僅相同群組的用戶可使用",
|
||||
"Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "在公開的檔案連結和上傳頁面顯示免責聲明(僅在檔案列表隱藏的時候才會顯示)",
|
||||
"This text will be shown on the public link upload page when the file list is hidden." : "這段文字會在公開檔案上傳頁面檔案列表被隱藏的時候顯示。",
|
||||
"Default share permissions" : "預設分享權限",
|
||||
|
|
@ -401,9 +401,9 @@
|
|||
"You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "您已使用 <strong>%2$s</strong> 中的 <strong>%1$s</strong> (<strong>%3$s %%</strong>)",
|
||||
"Full name" : "全名",
|
||||
"No display name set" : "未設定顯示名稱",
|
||||
"Your email address" : "您的電子郵件信箱",
|
||||
"No email address set" : "未設定電子郵件信箱",
|
||||
"For password reset and notifications" : "用於密碼重設和通知信件",
|
||||
"Your email address" : "您的電郵地址",
|
||||
"No email address set" : "未設定電郵地址",
|
||||
"For password reset and notifications" : "用於密碼重設和通告信件",
|
||||
"Phone number" : "電話號碼",
|
||||
"Your phone number" : "您的電話號碼",
|
||||
"Address" : "地址",
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ class HelpController extends Controller {
|
|||
public function help(string $mode = 'user'): TemplateResponse {
|
||||
$this->navigationManager->setActiveEntry('help');
|
||||
|
||||
if (!isset($mode) || $mode !== 'admin') {
|
||||
if ($mode !== 'admin') {
|
||||
$mode = 'user';
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -172,9 +172,16 @@ class NewUserMailHelper {
|
|||
* @throws \Exception If mail could not be sent
|
||||
*/
|
||||
public function sendMail(IUser $user,
|
||||
IEMailTemplate $emailTemplate) {
|
||||
IEMailTemplate $emailTemplate): void {
|
||||
|
||||
// Be sure to never try to send to an empty e-mail
|
||||
$email = $user->getEMailAddress();
|
||||
if ($email === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
$message = $this->mailer->createMessage();
|
||||
$message->setTo([$user->getEMailAddress() => $user->getDisplayName()]);
|
||||
$message->setTo([$email => $user->getDisplayName()]);
|
||||
$message->setFrom([$this->fromAddress => $this->themingDefaults->getName()]);
|
||||
$message->useTemplate($emailTemplate);
|
||||
$this->mailer->send($message);
|
||||
|
|
|
|||
54
apps/sharebymail/l10n/zh_HK.js
Normal file
54
apps/sharebymail/l10n/zh_HK.js
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
OC.L10N.register(
|
||||
"sharebymail",
|
||||
{
|
||||
"Shared with %1$s" : "與 %1$s 分享",
|
||||
"Shared with {email}" : "用 {email} 分享",
|
||||
"Shared with %1$s by %2$s" : "由 %2$s 分享給 %1$s",
|
||||
"Shared with {email} by {actor}" : "由 {actor} 通過 {email} 分享",
|
||||
"Unshared from %1$s" : "%1$s 取消了分享",
|
||||
"Unshared from {email}" : "通過 {email} 取消了分享",
|
||||
"Unshared from %1$s by %2$s" : "%1$s 通過 %2$s 取消了分享",
|
||||
"Unshared from {email} by {actor}" : "{actor} 通過 {email} 取消了分享",
|
||||
"Password for mail share sent to %1$s" : "發送給%1$s的郵件分享的密碼",
|
||||
"Password for mail share sent to {email}" : "郵件分享的密碼已發送給 {email}",
|
||||
"Password for mail share sent to you" : "發送給您的郵件分享的密碼",
|
||||
"You shared %1$s with %2$s by mail" : "您通過郵件把 %1$s 分享給了 %2$s",
|
||||
"You shared {file} with {email} by mail" : "您通過電郵 {email} 分享了 {file} ",
|
||||
"%3$s shared %1$s with %2$s by mail" : "%3$s 通過電郵將 %1$s 分享給了 %2$s",
|
||||
"{actor} shared {file} with {email} by mail" : "{actor} 通過電郵於 {email} 分享 {file}",
|
||||
"You unshared %1$s from %2$s by mail" : "你通過電郵取消了 %2$s 分享的 %1$s",
|
||||
"You unshared {file} from {email} by mail" : "您通過電郵 {email} 取消了 {file} 的共享。",
|
||||
"%3$s unshared %1$s from %2$s by mail" : "%2$s 通過電郵取消了 %3$s 共享的 %1$s",
|
||||
"{actor} unshared {file} from {email} by mail" : "{email} 通過郵件取消了 {actor} 共享的 {file}",
|
||||
"Password to access %1$s was sent to %2s" : "訪問 %1$s 的密碼已發送給 %2s",
|
||||
"Password to access {file} was sent to {email}" : "訪問 {file} 的密碼已發送給 {email}",
|
||||
"Password to access %1$s was sent to you" : "訪問 %1$s 的密碼已發送給您",
|
||||
"Password to access {file} was sent to you" : "訪問 {file} 的密碼已發送給您",
|
||||
"Sharing %1$s failed, this item is already shared with %2$s" : "分享 %1$s 失敗,此項目已經與 %2$s 分享",
|
||||
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "我們無法將自動生成的密碼發送與您。請在您的個人設置中提供有效的電郵地址後重試。",
|
||||
"Failed to send share by email" : "通過電郵發送分享失敗",
|
||||
"%1$s shared »%2$s« with you" : "%1$s 與您分享了 »%2$s«",
|
||||
"%1$s shared »%2$s« with you." : "%1$s 與您分享了 »%2$s«。",
|
||||
"Click the button below to open it." : "點擊下面的按鈕打開它。",
|
||||
"Open »%s«" : "打開 »%s«",
|
||||
"%1$s via %2$s" : "%1$s 透過 %2$s",
|
||||
"%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s 與您分享了 »%2$s«。\n訪問鏈接已另外以郵件方式發送到您的郵箱。\n",
|
||||
"%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s 與您分享了 »%2$s«。訪問鏈接已另外以郵件方式發送到您的郵箱。",
|
||||
"Password to access »%1$s« shared to you by %2$s" : "%2$s 與您分享了的訪問 »%1$s« 的密碼",
|
||||
"Password to access »%s«" : "訪問 »%s« 的密碼",
|
||||
"It is protected with the following password:" : "其已被以下密碼保護:",
|
||||
"%1$s shared »%2$s« with you and wants to add:" : "%1$s 與您分享了 »%2$s« 並希望添加:",
|
||||
"%1$s shared »%2$s« with you and wants to add" : "%1$s 與您分享了 »%2$s« 並希望添加",
|
||||
"»%s« added a note to a file shared with you" : "»%s« 在與您分享的檔案中添加了備註",
|
||||
"You just shared »%1$s« with %2$s. The share was already sent to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "您剛剛與 %2$s 分享了 »%1$s«。此共享已發送給收件人。根據管理員定義的安全策略 %3$s,每個共享都需要受密碼保護,並且不允許直接向收件人發送密碼。因此,您需要將密碼手動轉發給收件人。",
|
||||
"Password to access »%1$s« shared by you with %2$s" : "您與 %2$s 分享了的訪問 »%1$s« 的密碼",
|
||||
"This is the password:" : "這是密碼:",
|
||||
"You can choose a different password at any time in the share dialog." : "您可以隨時在分享對話框中選擇不同的密碼。",
|
||||
"Could not find share" : "沒有發現分享",
|
||||
"Share by mail" : "通過郵件分享",
|
||||
"Share provider which allows you to share files by mail" : "分享提供程序,可讓您通過郵件分享文件",
|
||||
"Allows users to share a personalized link to a file or folder by putting in an email address." : "允許用戶通過輸入電郵地址來分享指向檔案或資料夾的個性化連結。",
|
||||
"Send password by mail" : "通過電郵發送密碼",
|
||||
"Enforce password protection" : "強制密碼保護"
|
||||
},
|
||||
"nplurals=1; plural=0;");
|
||||
52
apps/sharebymail/l10n/zh_HK.json
Normal file
52
apps/sharebymail/l10n/zh_HK.json
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
{ "translations": {
|
||||
"Shared with %1$s" : "與 %1$s 分享",
|
||||
"Shared with {email}" : "用 {email} 分享",
|
||||
"Shared with %1$s by %2$s" : "由 %2$s 分享給 %1$s",
|
||||
"Shared with {email} by {actor}" : "由 {actor} 通過 {email} 分享",
|
||||
"Unshared from %1$s" : "%1$s 取消了分享",
|
||||
"Unshared from {email}" : "通過 {email} 取消了分享",
|
||||
"Unshared from %1$s by %2$s" : "%1$s 通過 %2$s 取消了分享",
|
||||
"Unshared from {email} by {actor}" : "{actor} 通過 {email} 取消了分享",
|
||||
"Password for mail share sent to %1$s" : "發送給%1$s的郵件分享的密碼",
|
||||
"Password for mail share sent to {email}" : "郵件分享的密碼已發送給 {email}",
|
||||
"Password for mail share sent to you" : "發送給您的郵件分享的密碼",
|
||||
"You shared %1$s with %2$s by mail" : "您通過郵件把 %1$s 分享給了 %2$s",
|
||||
"You shared {file} with {email} by mail" : "您通過電郵 {email} 分享了 {file} ",
|
||||
"%3$s shared %1$s with %2$s by mail" : "%3$s 通過電郵將 %1$s 分享給了 %2$s",
|
||||
"{actor} shared {file} with {email} by mail" : "{actor} 通過電郵於 {email} 分享 {file}",
|
||||
"You unshared %1$s from %2$s by mail" : "你通過電郵取消了 %2$s 分享的 %1$s",
|
||||
"You unshared {file} from {email} by mail" : "您通過電郵 {email} 取消了 {file} 的共享。",
|
||||
"%3$s unshared %1$s from %2$s by mail" : "%2$s 通過電郵取消了 %3$s 共享的 %1$s",
|
||||
"{actor} unshared {file} from {email} by mail" : "{email} 通過郵件取消了 {actor} 共享的 {file}",
|
||||
"Password to access %1$s was sent to %2s" : "訪問 %1$s 的密碼已發送給 %2s",
|
||||
"Password to access {file} was sent to {email}" : "訪問 {file} 的密碼已發送給 {email}",
|
||||
"Password to access %1$s was sent to you" : "訪問 %1$s 的密碼已發送給您",
|
||||
"Password to access {file} was sent to you" : "訪問 {file} 的密碼已發送給您",
|
||||
"Sharing %1$s failed, this item is already shared with %2$s" : "分享 %1$s 失敗,此項目已經與 %2$s 分享",
|
||||
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "我們無法將自動生成的密碼發送與您。請在您的個人設置中提供有效的電郵地址後重試。",
|
||||
"Failed to send share by email" : "通過電郵發送分享失敗",
|
||||
"%1$s shared »%2$s« with you" : "%1$s 與您分享了 »%2$s«",
|
||||
"%1$s shared »%2$s« with you." : "%1$s 與您分享了 »%2$s«。",
|
||||
"Click the button below to open it." : "點擊下面的按鈕打開它。",
|
||||
"Open »%s«" : "打開 »%s«",
|
||||
"%1$s via %2$s" : "%1$s 透過 %2$s",
|
||||
"%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s 與您分享了 »%2$s«。\n訪問鏈接已另外以郵件方式發送到您的郵箱。\n",
|
||||
"%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s 與您分享了 »%2$s«。訪問鏈接已另外以郵件方式發送到您的郵箱。",
|
||||
"Password to access »%1$s« shared to you by %2$s" : "%2$s 與您分享了的訪問 »%1$s« 的密碼",
|
||||
"Password to access »%s«" : "訪問 »%s« 的密碼",
|
||||
"It is protected with the following password:" : "其已被以下密碼保護:",
|
||||
"%1$s shared »%2$s« with you and wants to add:" : "%1$s 與您分享了 »%2$s« 並希望添加:",
|
||||
"%1$s shared »%2$s« with you and wants to add" : "%1$s 與您分享了 »%2$s« 並希望添加",
|
||||
"»%s« added a note to a file shared with you" : "»%s« 在與您分享的檔案中添加了備註",
|
||||
"You just shared »%1$s« with %2$s. The share was already sent to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "您剛剛與 %2$s 分享了 »%1$s«。此共享已發送給收件人。根據管理員定義的安全策略 %3$s,每個共享都需要受密碼保護,並且不允許直接向收件人發送密碼。因此,您需要將密碼手動轉發給收件人。",
|
||||
"Password to access »%1$s« shared by you with %2$s" : "您與 %2$s 分享了的訪問 »%1$s« 的密碼",
|
||||
"This is the password:" : "這是密碼:",
|
||||
"You can choose a different password at any time in the share dialog." : "您可以隨時在分享對話框中選擇不同的密碼。",
|
||||
"Could not find share" : "沒有發現分享",
|
||||
"Share by mail" : "通過郵件分享",
|
||||
"Share provider which allows you to share files by mail" : "分享提供程序,可讓您通過郵件分享文件",
|
||||
"Allows users to share a personalized link to a file or folder by putting in an email address." : "允許用戶通過輸入電郵地址來分享指向檔案或資料夾的個性化連結。",
|
||||
"Send password by mail" : "通過電郵發送密碼",
|
||||
"Enforce password protection" : "強制密碼保護"
|
||||
},"pluralForm" :"nplurals=1; plural=0;"
|
||||
}
|
||||
|
|
@ -26,17 +26,32 @@ OC.L10N.register(
|
|||
"You updated system tag %2$s to %1$s" : "您更新了系統標籤 %2$s 為 %1$s",
|
||||
"You updated system tag {oldsystemtag} to {newsystemtag}" : "您更新了系統標籤 {oldsystemtag} 為 {newsystemtag}",
|
||||
"%1$s updated system tag %3$s to %2$s" : "%1$s 更新了系統標籤 %3$s 為 %2$s",
|
||||
"{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} 更新了系統標籤 {oldsystemtag} 為 {newsystemtag}",
|
||||
"System tag %2$s was added to %1$s by the system" : "系統已將系統標籤%2$s添加到%1$s",
|
||||
"System tag {systemtag} was added to {file} by the system" : "系統已將系統標籤 {systemtag} 添加到 {file}",
|
||||
"You added system tag %2$s to %1$s" : "您已將系統標籤 %2$s 添加到 %1$s",
|
||||
"You added system tag {systemtag} to {file}" : "系統已將系統標籤 {systemtag} 添加到 {file}",
|
||||
"%1$s added system tag %3$s to %2$s" : "%1$s 添加了系統標籤 %3$s 到 %2$s",
|
||||
"{actor} added system tag {systemtag} to {file}" : "{actor} 已將系統標籤 {systemtag} 添加到 {file}",
|
||||
"System tag %2$s was removed from %1$s by the system" : "系統標籤 %2$s 已被系統從 %1$s 移除",
|
||||
"System tag {systemtag} was removed from {file} by the system" : "系統標籤 {systemtag} 已被系統從 {file} 移除",
|
||||
"You removed system tag %2$s from %1$s" : "系統標籤 %2$s 已被您從 %1$s 移除",
|
||||
"You removed system tag {systemtag} from {file}" : "系統標籤 {systemtag} 已被您從 {file} 移除",
|
||||
"%1$s removed system tag %3$s from %2$s" : "系統標籤 %3$s 已被 %1$s 從 %2$s 移除",
|
||||
"{actor} removed system tag {systemtag} from {file}" : "系統標籤 {systemtag} 已被 {actor} 從 {file} 移除",
|
||||
"%s (restricted)" : "%s (受限)",
|
||||
"%s (invisible)" : "%s (隱藏)",
|
||||
"<strong>System tags</strong> for a file have been modified" : "一個檔案的<strong>系統標籤</strong>已經被修改",
|
||||
"Tags" : "標籤",
|
||||
"Collaborative tags" : "協作標籤",
|
||||
"Collaborative tagging functionality which shares tags among users." : "協作標記允許用戶分享標記。",
|
||||
"Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "協作標記允許用戶分享標記。適合團隊使用。\n\t(如果您是多租戶安裝的提供商,由於標籤是共享的,因此建議您停用此應用程序。)",
|
||||
"Tagged files" : "已標籤檔案",
|
||||
"Select tags to filter by" : "依照選擇的標籤篩選",
|
||||
"No tags found" : "找不到標籤",
|
||||
"Please select tags to filter by" : "請選擇標籤以篩選",
|
||||
"No files found for the selected tags" : "沒有與選擇的標籤相符的檔案",
|
||||
"Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "協作標籤可以被所有用戶使用。受限標籤是可見的,但用戶無法分配它們。 不可見標籤僅供內部使用,用戶既看不到也無法分配它們。 ",
|
||||
"Select tag …" : "選擇標籤…",
|
||||
"Create a new tag" : "建立新標籤",
|
||||
"Name" : "名稱",
|
||||
|
|
|
|||
|
|
@ -24,17 +24,32 @@
|
|||
"You updated system tag %2$s to %1$s" : "您更新了系統標籤 %2$s 為 %1$s",
|
||||
"You updated system tag {oldsystemtag} to {newsystemtag}" : "您更新了系統標籤 {oldsystemtag} 為 {newsystemtag}",
|
||||
"%1$s updated system tag %3$s to %2$s" : "%1$s 更新了系統標籤 %3$s 為 %2$s",
|
||||
"{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} 更新了系統標籤 {oldsystemtag} 為 {newsystemtag}",
|
||||
"System tag %2$s was added to %1$s by the system" : "系統已將系統標籤%2$s添加到%1$s",
|
||||
"System tag {systemtag} was added to {file} by the system" : "系統已將系統標籤 {systemtag} 添加到 {file}",
|
||||
"You added system tag %2$s to %1$s" : "您已將系統標籤 %2$s 添加到 %1$s",
|
||||
"You added system tag {systemtag} to {file}" : "系統已將系統標籤 {systemtag} 添加到 {file}",
|
||||
"%1$s added system tag %3$s to %2$s" : "%1$s 添加了系統標籤 %3$s 到 %2$s",
|
||||
"{actor} added system tag {systemtag} to {file}" : "{actor} 已將系統標籤 {systemtag} 添加到 {file}",
|
||||
"System tag %2$s was removed from %1$s by the system" : "系統標籤 %2$s 已被系統從 %1$s 移除",
|
||||
"System tag {systemtag} was removed from {file} by the system" : "系統標籤 {systemtag} 已被系統從 {file} 移除",
|
||||
"You removed system tag %2$s from %1$s" : "系統標籤 %2$s 已被您從 %1$s 移除",
|
||||
"You removed system tag {systemtag} from {file}" : "系統標籤 {systemtag} 已被您從 {file} 移除",
|
||||
"%1$s removed system tag %3$s from %2$s" : "系統標籤 %3$s 已被 %1$s 從 %2$s 移除",
|
||||
"{actor} removed system tag {systemtag} from {file}" : "系統標籤 {systemtag} 已被 {actor} 從 {file} 移除",
|
||||
"%s (restricted)" : "%s (受限)",
|
||||
"%s (invisible)" : "%s (隱藏)",
|
||||
"<strong>System tags</strong> for a file have been modified" : "一個檔案的<strong>系統標籤</strong>已經被修改",
|
||||
"Tags" : "標籤",
|
||||
"Collaborative tags" : "協作標籤",
|
||||
"Collaborative tagging functionality which shares tags among users." : "協作標記允許用戶分享標記。",
|
||||
"Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "協作標記允許用戶分享標記。適合團隊使用。\n\t(如果您是多租戶安裝的提供商,由於標籤是共享的,因此建議您停用此應用程序。)",
|
||||
"Tagged files" : "已標籤檔案",
|
||||
"Select tags to filter by" : "依照選擇的標籤篩選",
|
||||
"No tags found" : "找不到標籤",
|
||||
"Please select tags to filter by" : "請選擇標籤以篩選",
|
||||
"No files found for the selected tags" : "沒有與選擇的標籤相符的檔案",
|
||||
"Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "協作標籤可以被所有用戶使用。受限標籤是可見的,但用戶無法分配它們。 不可見標籤僅供內部使用,用戶既看不到也無法分配它們。 ",
|
||||
"Select tag …" : "選擇標籤…",
|
||||
"Create a new tag" : "建立新標籤",
|
||||
"Name" : "名稱",
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ OC.L10N.register(
|
|||
"Remove background image" : "移除背景圖片",
|
||||
"Advanced options" : "進階選項",
|
||||
"Legal notice link" : "法律聲明連結",
|
||||
"Privacy policy link" : "隱私權政策連結",
|
||||
"Privacy policy link" : "私隱政策連結",
|
||||
"Header logo" : "頁首圖示",
|
||||
"Upload new header logo" : "上傳新的頁首圖示",
|
||||
"Favicon" : "Favicon",
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@
|
|||
"Remove background image" : "移除背景圖片",
|
||||
"Advanced options" : "進階選項",
|
||||
"Legal notice link" : "法律聲明連結",
|
||||
"Privacy policy link" : "隱私權政策連結",
|
||||
"Privacy policy link" : "私隱政策連結",
|
||||
"Header logo" : "頁首圖示",
|
||||
"Upload new header logo" : "上傳新的頁首圖示",
|
||||
"Favicon" : "Favicon",
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ OC.L10N.register(
|
|||
"Test Base DN" : "Probar o DN base",
|
||||
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita as solicitudes LDAP automáticas. E o mellor para as configuracións máis grandes, mais require algúns coñecementos de LDAP.",
|
||||
"Manually enter LDAP filters (recommended for large directories)" : "Introduza manualmente os filtros LDAP (recomendado para directorios grandes)",
|
||||
"Listing and searching for users is constrained by these criteria:" : "O listado e a busca de usuarios están restrinxidos por estes criterios:",
|
||||
"Listing and searching for users is constrained by these criteria:" : "A listaxe e a busca de usuarios están restrinxidos por estes criterios:",
|
||||
"The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "As clases de obxecto máis comúns para os usuarios son «organizationalPerson», «person», «user» e «inetOrgPerson». Se non está seguro de que clase de obxecto ten que seleccionar, consulte co administrador de directorios.",
|
||||
"The filter specifies which LDAP users shall have access to the %s instance." : "O filtro especifica que usuarios LDAP teñen acceso á instancia %s.",
|
||||
"Verify settings and count users" : "Verificar os axustes e contar os usuarios",
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@
|
|||
"Test Base DN" : "Probar o DN base",
|
||||
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita as solicitudes LDAP automáticas. E o mellor para as configuracións máis grandes, mais require algúns coñecementos de LDAP.",
|
||||
"Manually enter LDAP filters (recommended for large directories)" : "Introduza manualmente os filtros LDAP (recomendado para directorios grandes)",
|
||||
"Listing and searching for users is constrained by these criteria:" : "O listado e a busca de usuarios están restrinxidos por estes criterios:",
|
||||
"Listing and searching for users is constrained by these criteria:" : "A listaxe e a busca de usuarios están restrinxidos por estes criterios:",
|
||||
"The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "As clases de obxecto máis comúns para os usuarios son «organizationalPerson», «person», «user» e «inetOrgPerson». Se non está seguro de que clase de obxecto ten que seleccionar, consulte co administrador de directorios.",
|
||||
"The filter specifies which LDAP users shall have access to the %s instance." : "O filtro especifica que usuarios LDAP teñen acceso á instancia %s.",
|
||||
"Verify settings and count users" : "Verificar os axustes e contar os usuarios",
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ OC.L10N.register(
|
|||
"{nthServer}. Server" : "{nthServer}. 伺服器",
|
||||
"No object found in the given Base DN. Please revise." : "在Base DN中找不到物件,請重新修改",
|
||||
"More than 1,000 directory entries available." : "目前有超過 1,000 個資料夾項目是可以使用的",
|
||||
"_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["{objectsFound} 基礎DN中的可用條目"],
|
||||
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "產生錯誤,請檢查Base DN,以及連線設定和驗證",
|
||||
"Do you really want to delete the current Server Configuration?" : "您真的要刪除現在的伺服器設定嗎?",
|
||||
"Confirm Deletion" : "確認刪除",
|
||||
|
|
@ -43,11 +44,16 @@ OC.L10N.register(
|
|||
"Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "切換模式會使LDAP自動抓取資訊,抓取資訊的時間依您的LDAP大小而定,可能會花一點時間,您確定要切換模式?",
|
||||
"Mode switch" : "模式切換",
|
||||
"Select attributes" : "選擇屬性",
|
||||
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "找不到用戶。請檢查您的登錄屬性和用戶名。有效過濾(複製和粘貼命令行驗證):<br/>",
|
||||
"User found and settings verified." : "使用者存在,設定值正確",
|
||||
"Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "如返回結果太多可考慮進一步縮小搜尋範圍,僅返回的第一個用戶可以登入。",
|
||||
"An unspecified error occurred. Please check log and settings." : "發生一個不明的錯誤‧請檢查日誌和設定。",
|
||||
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "搜尋過濾器無效,可能是由於語法問題引起的,例如,方括號的數量不均勻。 請修改。",
|
||||
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "連線到 LDAP/AD出現錯誤,請檢查主機,連接阜和驗證資訊",
|
||||
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "“%uid”佔位符丟失。查詢LDAP/AD時,它將替換為登入名稱。",
|
||||
"Please provide a login name to test against" : "請提供登入姓名以便再次測試",
|
||||
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "群組盒已經停用,LDAP/AD 伺服器並不支援",
|
||||
"Password change rejected. Hint: " : "密碼更改被拒絕。提示:",
|
||||
"Please login with the new password" : "請登入並使用新的密碼",
|
||||
"LDAP User backend" : "LDAP 用戶後端系統",
|
||||
"Your password will expire tomorrow." : "您的密碼將於明天過期",
|
||||
|
|
@ -56,11 +62,15 @@ OC.L10N.register(
|
|||
"LDAP / AD integration" : "LDAP /AD 整合",
|
||||
"_%s group found_::_%s groups found_" : ["找到 %s 群組"],
|
||||
"_%s user found_::_%s users found_" : ["找到 %s 用戶"],
|
||||
"Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "無法檢測到用戶顯示名稱屬性。請在高級LDAP設置中自行指定。",
|
||||
"Could not find the desired feature" : "無法找到所需的功能",
|
||||
"Invalid Host" : "無效的Host",
|
||||
"LDAP user and group backend" : "LDAP 用戶和群組後端系統",
|
||||
"This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "該應用程序使管理員可以將Nextcloud連接到基於LDAP的用戶目錄。",
|
||||
"This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "本應用啟用功能使管理員可將 Nextcloud 與基於 LDAP 的用戶目錄連接,進行身份驗證以及提供用戶、群組和用戶屬性。管理員可配置此程序通過 LDAP 接口連接至一個或多個 LDAP 或 Active Directory 目錄。通過適當的查詢和篩選,可將以下屬性從目錄導入 Nextcloud:用戶磁盤配額、電子郵箱、頭像、所屬群組以及更多。 用戶可以用其LDAP或AD中的身份登錄 Nextcloud, 並根據 LDAP 或 AD 服務的身份驗證獲得訪問權限。Nextcloud 僅使用身份驗證隨後為用戶身份使用會話,但不會儲存LDAP或AD的密碼。您可從 LDAP 用戶及群組後台文檔中獲取更多信息。",
|
||||
"Test Configuration" : "測試此配置",
|
||||
"Help" : "說明",
|
||||
"Groups meeting these criteria are available in %s:" : "滿足這些條件的群組在%s中可用:",
|
||||
"Only these object classes:" : "只有這些物件類別:",
|
||||
"Only from these groups:" : "只從這些群組:",
|
||||
"Search groups" : "搜尋群組",
|
||||
|
|
@ -83,8 +93,8 @@ OC.L10N.register(
|
|||
"Host" : "主機",
|
||||
"Port" : "連接埠",
|
||||
"Detect Port" : "偵測連接埠",
|
||||
"User DN" : "User DN",
|
||||
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "客戶端使用者的DN與特定字詞的連結需要完善,例如:uid=agent,dc=example,dc=com。若是匿名連接,則將DN與密碼欄位留白。",
|
||||
"User DN" : "用戶 DN",
|
||||
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "客戶端用戶的DN與特定字詞的連結需要完善,例如:uid=agent,dc=example,dc=com。若是匿名連接,則將DN與密碼欄位留白。",
|
||||
"Password" : "密碼",
|
||||
"For anonymous access, leave DN and Password empty." : "匿名連接時請將 DN 與密碼欄位留白",
|
||||
"Save Credentials" : "保存憑證",
|
||||
|
|
@ -148,12 +158,14 @@ OC.L10N.register(
|
|||
"Email Field" : "電郵地址欄位",
|
||||
"User Home Folder Naming Rule" : "使用者家目錄的命名規則",
|
||||
"Internal Username" : "內部用戶名稱",
|
||||
"By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "默認情況下調試UUID屬性創建內部用戶名。將確保用戶名是唯一的字符,並且不需要轉換。內部用戶名,只允許使用這些字符:[ a-zA-Z0-9_.@- ]。其他字符被替換為它們的ASCII對應或簡單地被忽略。如果出現重複,將添加或增加一個數字。內部用戶名用作在內部標識用戶。它是用戶主文件夾的替代名稱。它也是遠端URL的一部分,例如對於所有 *DAV 服務。使用此設置,可以覆蓋預設行為。將其保留為空以保留默認行為。更改僅對新映射(添加)的LDAP用戶有效。",
|
||||
"Internal Username Attribute:" : "內部用戶名稱屬性:",
|
||||
"Override UUID detection" : "偵測覆寫UUID",
|
||||
"By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "預設情況下,UUID 屬性會自動偵測。UUID 屬性用來準確識別 LDAP 使用者及群組。此外,如果未在上方指定,內部使用者名稱會基於 UUID 建立。您能覆蓋設定並直接指定屬性,但一定要確保指定的屬性能被使用者及群組取得且唯一。留空則執行預設行為。變更只會對新映射 (加入) 的 LDAP 使用者及群組生效。",
|
||||
"UUID Attribute for Users:" : "用戶的UUID值:",
|
||||
"UUID Attribute for Groups:" : "群組的UUID值:",
|
||||
"Username-LDAP User Mapping" : "用戶名-LDAP 用戶 Mapping",
|
||||
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "用戶名用於存儲和分配元數據。為了精確地區分和識別用戶,每個LDAP用戶都會有一個內部的用戶名。這要求建立一個用戶名到LDAP用戶的映射。創建的用戶名會被映射到 LDAP用戶的UUID。另外為了節省LDAP連接開銷,DN會被緩存,但不會使用識別。如果DN變了,這些變化會被識別到。在Nextcloud各個頁面會使用內部用戶名。清除映射會造成 系統裡面有大量的殘留信息。清除映射會影響所有的LDAP配置,同時進行雙向配置。不要在生產環境裡面應用可變映射,請僅用於測試環境或早期驗證步驟。",
|
||||
"Clear Username-LDAP User Mapping" : "清除 用戶名-LDAP 用戶 Mapping",
|
||||
"Clear Groupname-LDAP Group Mapping" : "清除 群組名稱-LDAP 群組 Mapping"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
"{nthServer}. Server" : "{nthServer}. 伺服器",
|
||||
"No object found in the given Base DN. Please revise." : "在Base DN中找不到物件,請重新修改",
|
||||
"More than 1,000 directory entries available." : "目前有超過 1,000 個資料夾項目是可以使用的",
|
||||
"_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["{objectsFound} 基礎DN中的可用條目"],
|
||||
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "產生錯誤,請檢查Base DN,以及連線設定和驗證",
|
||||
"Do you really want to delete the current Server Configuration?" : "您真的要刪除現在的伺服器設定嗎?",
|
||||
"Confirm Deletion" : "確認刪除",
|
||||
|
|
@ -41,11 +42,16 @@
|
|||
"Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "切換模式會使LDAP自動抓取資訊,抓取資訊的時間依您的LDAP大小而定,可能會花一點時間,您確定要切換模式?",
|
||||
"Mode switch" : "模式切換",
|
||||
"Select attributes" : "選擇屬性",
|
||||
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "找不到用戶。請檢查您的登錄屬性和用戶名。有效過濾(複製和粘貼命令行驗證):<br/>",
|
||||
"User found and settings verified." : "使用者存在,設定值正確",
|
||||
"Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "如返回結果太多可考慮進一步縮小搜尋範圍,僅返回的第一個用戶可以登入。",
|
||||
"An unspecified error occurred. Please check log and settings." : "發生一個不明的錯誤‧請檢查日誌和設定。",
|
||||
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "搜尋過濾器無效,可能是由於語法問題引起的,例如,方括號的數量不均勻。 請修改。",
|
||||
"A connection error to LDAP / AD occurred, please check host, port and credentials." : "連線到 LDAP/AD出現錯誤,請檢查主機,連接阜和驗證資訊",
|
||||
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "“%uid”佔位符丟失。查詢LDAP/AD時,它將替換為登入名稱。",
|
||||
"Please provide a login name to test against" : "請提供登入姓名以便再次測試",
|
||||
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "群組盒已經停用,LDAP/AD 伺服器並不支援",
|
||||
"Password change rejected. Hint: " : "密碼更改被拒絕。提示:",
|
||||
"Please login with the new password" : "請登入並使用新的密碼",
|
||||
"LDAP User backend" : "LDAP 用戶後端系統",
|
||||
"Your password will expire tomorrow." : "您的密碼將於明天過期",
|
||||
|
|
@ -54,11 +60,15 @@
|
|||
"LDAP / AD integration" : "LDAP /AD 整合",
|
||||
"_%s group found_::_%s groups found_" : ["找到 %s 群組"],
|
||||
"_%s user found_::_%s users found_" : ["找到 %s 用戶"],
|
||||
"Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "無法檢測到用戶顯示名稱屬性。請在高級LDAP設置中自行指定。",
|
||||
"Could not find the desired feature" : "無法找到所需的功能",
|
||||
"Invalid Host" : "無效的Host",
|
||||
"LDAP user and group backend" : "LDAP 用戶和群組後端系統",
|
||||
"This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "該應用程序使管理員可以將Nextcloud連接到基於LDAP的用戶目錄。",
|
||||
"This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "本應用啟用功能使管理員可將 Nextcloud 與基於 LDAP 的用戶目錄連接,進行身份驗證以及提供用戶、群組和用戶屬性。管理員可配置此程序通過 LDAP 接口連接至一個或多個 LDAP 或 Active Directory 目錄。通過適當的查詢和篩選,可將以下屬性從目錄導入 Nextcloud:用戶磁盤配額、電子郵箱、頭像、所屬群組以及更多。 用戶可以用其LDAP或AD中的身份登錄 Nextcloud, 並根據 LDAP 或 AD 服務的身份驗證獲得訪問權限。Nextcloud 僅使用身份驗證隨後為用戶身份使用會話,但不會儲存LDAP或AD的密碼。您可從 LDAP 用戶及群組後台文檔中獲取更多信息。",
|
||||
"Test Configuration" : "測試此配置",
|
||||
"Help" : "說明",
|
||||
"Groups meeting these criteria are available in %s:" : "滿足這些條件的群組在%s中可用:",
|
||||
"Only these object classes:" : "只有這些物件類別:",
|
||||
"Only from these groups:" : "只從這些群組:",
|
||||
"Search groups" : "搜尋群組",
|
||||
|
|
@ -81,8 +91,8 @@
|
|||
"Host" : "主機",
|
||||
"Port" : "連接埠",
|
||||
"Detect Port" : "偵測連接埠",
|
||||
"User DN" : "User DN",
|
||||
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "客戶端使用者的DN與特定字詞的連結需要完善,例如:uid=agent,dc=example,dc=com。若是匿名連接,則將DN與密碼欄位留白。",
|
||||
"User DN" : "用戶 DN",
|
||||
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "客戶端用戶的DN與特定字詞的連結需要完善,例如:uid=agent,dc=example,dc=com。若是匿名連接,則將DN與密碼欄位留白。",
|
||||
"Password" : "密碼",
|
||||
"For anonymous access, leave DN and Password empty." : "匿名連接時請將 DN 與密碼欄位留白",
|
||||
"Save Credentials" : "保存憑證",
|
||||
|
|
@ -146,12 +156,14 @@
|
|||
"Email Field" : "電郵地址欄位",
|
||||
"User Home Folder Naming Rule" : "使用者家目錄的命名規則",
|
||||
"Internal Username" : "內部用戶名稱",
|
||||
"By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "默認情況下調試UUID屬性創建內部用戶名。將確保用戶名是唯一的字符,並且不需要轉換。內部用戶名,只允許使用這些字符:[ a-zA-Z0-9_.@- ]。其他字符被替換為它們的ASCII對應或簡單地被忽略。如果出現重複,將添加或增加一個數字。內部用戶名用作在內部標識用戶。它是用戶主文件夾的替代名稱。它也是遠端URL的一部分,例如對於所有 *DAV 服務。使用此設置,可以覆蓋預設行為。將其保留為空以保留默認行為。更改僅對新映射(添加)的LDAP用戶有效。",
|
||||
"Internal Username Attribute:" : "內部用戶名稱屬性:",
|
||||
"Override UUID detection" : "偵測覆寫UUID",
|
||||
"By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "預設情況下,UUID 屬性會自動偵測。UUID 屬性用來準確識別 LDAP 使用者及群組。此外,如果未在上方指定,內部使用者名稱會基於 UUID 建立。您能覆蓋設定並直接指定屬性,但一定要確保指定的屬性能被使用者及群組取得且唯一。留空則執行預設行為。變更只會對新映射 (加入) 的 LDAP 使用者及群組生效。",
|
||||
"UUID Attribute for Users:" : "用戶的UUID值:",
|
||||
"UUID Attribute for Groups:" : "群組的UUID值:",
|
||||
"Username-LDAP User Mapping" : "用戶名-LDAP 用戶 Mapping",
|
||||
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "用戶名用於存儲和分配元數據。為了精確地區分和識別用戶,每個LDAP用戶都會有一個內部的用戶名。這要求建立一個用戶名到LDAP用戶的映射。創建的用戶名會被映射到 LDAP用戶的UUID。另外為了節省LDAP連接開銷,DN會被緩存,但不會使用識別。如果DN變了,這些變化會被識別到。在Nextcloud各個頁面會使用內部用戶名。清除映射會造成 系統裡面有大量的殘留信息。清除映射會影響所有的LDAP配置,同時進行雙向配置。不要在生產環境裡面應用可變映射,請僅用於測試環境或早期驗證步驟。",
|
||||
"Clear Username-LDAP User Mapping" : "清除 用戶名-LDAP 用戶 Mapping",
|
||||
"Clear Groupname-LDAP Group Mapping" : "清除 群組名稱-LDAP 群組 Mapping"
|
||||
},"pluralForm" :"nplurals=1; plural=0;"
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ class OfflineUser {
|
|||
* @return string
|
||||
*/
|
||||
public function getUID() {
|
||||
if (!isset($this->uid)) {
|
||||
if ($this->uid === null) {
|
||||
$this->fetchDetails();
|
||||
}
|
||||
return $this->uid;
|
||||
|
|
@ -145,7 +145,7 @@ class OfflineUser {
|
|||
* @return string
|
||||
*/
|
||||
public function getDN() {
|
||||
if (!isset($this->dn)) {
|
||||
if ($this->dn === null) {
|
||||
$this->fetchDetails();
|
||||
}
|
||||
return $this->dn;
|
||||
|
|
@ -156,7 +156,7 @@ class OfflineUser {
|
|||
* @return string
|
||||
*/
|
||||
public function getDisplayName() {
|
||||
if (!isset($this->displayName)) {
|
||||
if ($this->displayName === null) {
|
||||
$this->fetchDetails();
|
||||
}
|
||||
return $this->displayName;
|
||||
|
|
@ -167,7 +167,7 @@ class OfflineUser {
|
|||
* @return string
|
||||
*/
|
||||
public function getEmail() {
|
||||
if (!isset($this->email)) {
|
||||
if ($this->email === null) {
|
||||
$this->fetchDetails();
|
||||
}
|
||||
return $this->email;
|
||||
|
|
@ -178,7 +178,7 @@ class OfflineUser {
|
|||
* @return string
|
||||
*/
|
||||
public function getHomePath() {
|
||||
if (!isset($this->homePath)) {
|
||||
if ($this->homePath === null) {
|
||||
$this->fetchDetails();
|
||||
}
|
||||
return $this->homePath;
|
||||
|
|
@ -189,7 +189,7 @@ class OfflineUser {
|
|||
* @return int
|
||||
*/
|
||||
public function getLastLogin() {
|
||||
if (!isset($this->lastLogin)) {
|
||||
if ($this->lastLogin === null) {
|
||||
$this->fetchDetails();
|
||||
}
|
||||
return (int)$this->lastLogin;
|
||||
|
|
@ -200,7 +200,7 @@ class OfflineUser {
|
|||
* @return int
|
||||
*/
|
||||
public function getDetectedOn() {
|
||||
if (!isset($this->foundDeleted)) {
|
||||
if ($this->foundDeleted === null) {
|
||||
$this->fetchDetails();
|
||||
}
|
||||
return (int)$this->foundDeleted;
|
||||
|
|
@ -211,7 +211,7 @@ class OfflineUser {
|
|||
* @return bool
|
||||
*/
|
||||
public function getHasActiveShares() {
|
||||
if (!isset($this->hasActiveShares)) {
|
||||
if ($this->hasActiveShares === null) {
|
||||
$this->fetchDetails();
|
||||
}
|
||||
return $this->hasActiveShares;
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ OC.L10N.register(
|
|||
"There was an error saving the status" : "儲存狀態時發生錯誤",
|
||||
"There was an error clearing the status" : "變更狀態時發生錯誤",
|
||||
"No recent status changes" : "最近沒有狀態變更",
|
||||
"Away" : "外出",
|
||||
"Away" : "離開",
|
||||
"Do not disturb" : "請勿打擾",
|
||||
"{status}, {timestamp}" : "{status},{timestamp}",
|
||||
"Don't clear" : "不要清空",
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
"There was an error saving the status" : "儲存狀態時發生錯誤",
|
||||
"There was an error clearing the status" : "變更狀態時發生錯誤",
|
||||
"No recent status changes" : "最近沒有狀態變更",
|
||||
"Away" : "外出",
|
||||
"Away" : "離開",
|
||||
"Do not disturb" : "請勿打擾",
|
||||
"{status}, {timestamp}" : "{status},{timestamp}",
|
||||
"Don't clear" : "不要清空",
|
||||
|
|
|
|||
|
|
@ -72,9 +72,6 @@ class WeatherStatusService {
|
|||
/** @var IAppManager */
|
||||
private $appManager;
|
||||
|
||||
/** @var ICacheFactory */
|
||||
private $cacheFactory;
|
||||
|
||||
/** @var ICache */
|
||||
private $cache;
|
||||
|
||||
|
|
@ -116,9 +113,7 @@ class WeatherStatusService {
|
|||
$this->version = $appManager->getAppVersion(Application::APP_ID);
|
||||
$this->clientService = $clientService;
|
||||
$this->client = $clientService->newClient();
|
||||
if ($cacheFactory->isAvailable()) {
|
||||
$this->cache = $cacheFactory->createDistributed();
|
||||
}
|
||||
$this->cache = $cacheFactory->createDistributed('weatherstatus');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -397,12 +392,12 @@ class WeatherStatusService {
|
|||
* @return array which contains the error message or the parsed JSON result
|
||||
*/
|
||||
private function requestJSON(string $url, array $params = []): array {
|
||||
if (isset($this->cache)) {
|
||||
$cacheKey = $url . '|' . implode(',', $params) . '|' . implode(',', array_keys($params));
|
||||
if ($this->cache->hasKey($cacheKey)) {
|
||||
return $this->cache->get($cacheKey);
|
||||
}
|
||||
$cacheKey = $url . '|' . implode(',', $params) . '|' . implode(',', array_keys($params));
|
||||
$cacheValue = $this->cache->get($cacheKey);
|
||||
if ($cacheValue !== null) {
|
||||
return $cacheValue;
|
||||
}
|
||||
|
||||
try {
|
||||
$options = [
|
||||
'headers' => [
|
||||
|
|
@ -425,20 +420,20 @@ class WeatherStatusService {
|
|||
return ['error' => $this->l10n->t('Error')];
|
||||
} else {
|
||||
$json = json_decode($body, true);
|
||||
if (isset($this->cache)) {
|
||||
// default cache duration is one hour
|
||||
$cacheDuration = 60 * 60;
|
||||
if (isset($headers['Expires']) && count($headers['Expires']) > 0) {
|
||||
// if the Expires response header is set, use it to define cache duration
|
||||
$expireTs = (new \Datetime($headers['Expires'][0]))->getTimestamp();
|
||||
$nowTs = (new \Datetime())->getTimestamp();
|
||||
$duration = $expireTs - $nowTs;
|
||||
if ($duration > $cacheDuration) {
|
||||
$cacheDuration = $duration;
|
||||
}
|
||||
|
||||
// default cache duration is one hour
|
||||
$cacheDuration = 60 * 60;
|
||||
if (isset($headers['Expires']) && count($headers['Expires']) > 0) {
|
||||
// if the Expires response header is set, use it to define cache duration
|
||||
$expireTs = (new \Datetime($headers['Expires'][0]))->getTimestamp();
|
||||
$nowTs = (new \Datetime())->getTimestamp();
|
||||
$duration = $expireTs - $nowTs;
|
||||
if ($duration > $cacheDuration) {
|
||||
$cacheDuration = $duration;
|
||||
}
|
||||
$this->cache->set($cacheKey, $json, $cacheDuration);
|
||||
}
|
||||
$this->cache->set($cacheKey, $json, $cacheDuration);
|
||||
|
||||
return $json;
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -227,15 +227,11 @@
|
|||
</UndefinedFunction>
|
||||
</file>
|
||||
<file src="apps/dav/lib/CalDAV/CalendarHome.php">
|
||||
<InvalidClass occurrences="1">
|
||||
<code>\Sabre\CalDAv\Notifications\Collection</code>
|
||||
</InvalidClass>
|
||||
<InvalidReturnStatement occurrences="5">
|
||||
<code>$calendarPlugin->getCalendarInCalendarHome($this->principalInfo['uri'], $calendarUri)</code>
|
||||
<code>new Inbox($this->caldavBackend, $this->principalInfo['uri'])</code>
|
||||
<code>new Outbox($this->config, $this->principalInfo['uri'])</code>
|
||||
<code>new Subscription($this->caldavBackend, $subscription)</code>
|
||||
<code>new \Sabre\CalDAv\Notifications\Collection($this->caldavBackend, $this->principalInfo['uri'])</code>
|
||||
</InvalidReturnStatement>
|
||||
<InvalidReturnType occurrences="1">
|
||||
<code>getChild</code>
|
||||
|
|
@ -287,15 +283,13 @@
|
|||
<code>$l10n->l('time', $dt, ['width' => 'short'])</code>
|
||||
<code>$l10n->l('weekdayName', $dt, ['width' => 'abbreviated'])</code>
|
||||
</FalsableReturnStatement>
|
||||
<InvalidReturnStatement occurrences="5">
|
||||
<InvalidReturnStatement occurrences="4">
|
||||
<code>$l10n->l('date', $dt, ['width' => 'medium'])</code>
|
||||
<code>$l10n->l('datetime', $dt, ['width' => 'medium|short'])</code>
|
||||
<code>$l10n->l('time', $dt, ['width' => 'short'])</code>
|
||||
<code>$l10n->l('weekdayName', $dt, ['width' => 'abbreviated'])</code>
|
||||
<code>[$organizerEMail => $name]</code>
|
||||
</InvalidReturnStatement>
|
||||
<InvalidReturnType occurrences="5">
|
||||
<code>array|null</code>
|
||||
<InvalidReturnType occurrences="4">
|
||||
<code>string</code>
|
||||
<code>string</code>
|
||||
<code>string</code>
|
||||
|
|
@ -367,10 +361,6 @@
|
|||
<InvalidNullableReturnType occurrences="1">
|
||||
<code>string</code>
|
||||
</InvalidNullableReturnType>
|
||||
<InvalidScalarArgument occurrences="2">
|
||||
<code>[$recipient => $recipientName]</code>
|
||||
<code>[$sender => $senderName]</code>
|
||||
</InvalidScalarArgument>
|
||||
<NullableReturnStatement occurrences="1">
|
||||
<code>$lang->getValue()</code>
|
||||
</NullableReturnStatement>
|
||||
|
|
@ -1954,11 +1944,6 @@
|
|||
<code>[$user->getEMailAddress() => $user->getDisplayName()]</code>
|
||||
</InvalidArgument>
|
||||
</file>
|
||||
<file src="apps/settings/lib/Mailer/NewUserMailHelper.php">
|
||||
<InvalidArgument occurrences="1">
|
||||
<code>[$user->getEMailAddress() => $user->getDisplayName()]</code>
|
||||
</InvalidArgument>
|
||||
</file>
|
||||
<file src="apps/settings/lib/Settings/Admin/Security.php">
|
||||
<UndefinedInterfaceMethod occurrences="1">
|
||||
<code>isReady</code>
|
||||
|
|
@ -2514,9 +2499,6 @@
|
|||
<code>$this->manager->isUserScopeEnabled() ? 'workflow' : null</code>
|
||||
</NullableReturnStatement>
|
||||
</file>
|
||||
<file src="core/Command/App/CheckCode.php">
|
||||
<InvalidScalarArgument occurrences="1"/>
|
||||
</file>
|
||||
<file src="core/Command/App/GetPath.php">
|
||||
<ImplementedReturnTypeMismatch occurrences="1">
|
||||
<code>null|int</code>
|
||||
|
|
@ -2830,17 +2812,6 @@
|
|||
<code>fetch</code>
|
||||
</TooManyArguments>
|
||||
</file>
|
||||
<file src="lib/private/App/CodeChecker/MigrationSchemaChecker.php">
|
||||
<InvalidPropertyAssignmentValue occurrences="2">
|
||||
<code>$this->tableVariableNames</code>
|
||||
<code>$this->tableVariableNames</code>
|
||||
</InvalidPropertyAssignmentValue>
|
||||
</file>
|
||||
<file src="lib/private/App/CodeChecker/NodeVisitor.php">
|
||||
<ImplicitToStringCast occurrences="1">
|
||||
<code>$node->alias</code>
|
||||
</ImplicitToStringCast>
|
||||
</file>
|
||||
<file src="lib/private/App/DependencyAnalyzer.php">
|
||||
<InvalidNullableReturnType occurrences="1">
|
||||
<code>bool</code>
|
||||
|
|
|
|||
|
|
@ -27,28 +27,14 @@
|
|||
|
||||
namespace OC\Core\Command\App;
|
||||
|
||||
use OC\App\CodeChecker\CodeChecker;
|
||||
use OC\App\CodeChecker\DatabaseSchemaChecker;
|
||||
use OC\App\CodeChecker\DeprecationCheck;
|
||||
use OC\App\CodeChecker\EmptyCheck;
|
||||
use OC\App\CodeChecker\InfoChecker;
|
||||
use OC\App\CodeChecker\LanguageParseChecker;
|
||||
use OC\App\CodeChecker\PrivateCheck;
|
||||
use OC\App\CodeChecker\StrongComparisonCheck;
|
||||
use Stecman\Component\Symfony\Console\BashCompletion\Completion\CompletionAwareInterface;
|
||||
use Stecman\Component\Symfony\Console\BashCompletion\CompletionContext;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\InputArgument;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
class CheckCode extends Command implements CompletionAwareInterface {
|
||||
protected $checkers = [
|
||||
'private' => PrivateCheck::class,
|
||||
'deprecation' => DeprecationCheck::class,
|
||||
'strong-comparison' => StrongComparisonCheck::class,
|
||||
];
|
||||
class CheckCode extends Command {
|
||||
protected $checkers = [];
|
||||
|
||||
protected function configure() {
|
||||
$this
|
||||
|
|
@ -81,112 +67,8 @@ class CheckCode extends Command implements CompletionAwareInterface {
|
|||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output): int {
|
||||
$appId = $input->getArgument('app-id');
|
||||
$output->writeln('<error>The app code checker doesn\t check anything and this command will be removed in Nextcloud 23</error>');
|
||||
|
||||
$checkList = new EmptyCheck();
|
||||
foreach ($input->getOption('checker') as $checker) {
|
||||
if (!isset($this->checkers[$checker])) {
|
||||
throw new \InvalidArgumentException('Invalid checker: '.$checker);
|
||||
}
|
||||
$checkerClass = $this->checkers[$checker];
|
||||
$checkList = new $checkerClass($checkList);
|
||||
}
|
||||
|
||||
$codeChecker = new CodeChecker($checkList, !$input->getOption('skip-validate-info'));
|
||||
|
||||
$codeChecker->listen('CodeChecker', 'analyseFileBegin', function ($params) use ($output) {
|
||||
if (OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) {
|
||||
$output->writeln("<info>Analysing {$params}</info>");
|
||||
}
|
||||
});
|
||||
$codeChecker->listen('CodeChecker', 'analyseFileFinished', function ($filename, $errors) use ($output) {
|
||||
$count = count($errors);
|
||||
|
||||
// show filename if the verbosity is low, but there are errors in a file
|
||||
if ($count > 0 && OutputInterface::VERBOSITY_VERBOSE > $output->getVerbosity()) {
|
||||
$output->writeln("<info>Analysing {$filename}</info>");
|
||||
}
|
||||
|
||||
// show error count if there are errors present or the verbosity is high
|
||||
if ($count > 0 || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) {
|
||||
$output->writeln(" {$count} errors");
|
||||
}
|
||||
usort($errors, function ($a, $b) {
|
||||
return $a['line'] > $b['line'];
|
||||
});
|
||||
|
||||
foreach ($errors as $p) {
|
||||
$line = sprintf("%' 4d", $p['line']);
|
||||
$output->writeln(" <error>line $line: {$p['disallowedToken']} - {$p['reason']}</error>");
|
||||
}
|
||||
});
|
||||
$errors = [];
|
||||
if (!$input->getOption('skip-checkers')) {
|
||||
$errors = $codeChecker->analyse($appId);
|
||||
}
|
||||
|
||||
if (!$input->getOption('skip-validate-info')) {
|
||||
$infoChecker = new InfoChecker();
|
||||
$infoChecker->listen('InfoChecker', 'parseError', function ($error) use ($output) {
|
||||
$output->writeln("<error>Invalid appinfo.xml file found: $error</error>");
|
||||
});
|
||||
|
||||
$infoErrors = $infoChecker->analyse($appId);
|
||||
|
||||
$errors = array_merge($errors, $infoErrors);
|
||||
|
||||
$languageParser = new LanguageParseChecker();
|
||||
$languageErrors = $languageParser->analyse($appId);
|
||||
|
||||
foreach ($languageErrors as $languageError) {
|
||||
$output->writeln("<error>$languageError</error>");
|
||||
}
|
||||
|
||||
$errors = array_merge($errors, $languageErrors);
|
||||
|
||||
$databaseSchema = new DatabaseSchemaChecker();
|
||||
$schemaErrors = $databaseSchema->analyse($appId);
|
||||
|
||||
foreach ($schemaErrors['errors'] as $schemaError) {
|
||||
$output->writeln("<error>$schemaError</error>");
|
||||
}
|
||||
foreach ($schemaErrors['warnings'] as $schemaWarning) {
|
||||
$output->writeln("<comment>$schemaWarning</comment>");
|
||||
}
|
||||
|
||||
$errors = array_merge($errors, $schemaErrors['errors']);
|
||||
}
|
||||
|
||||
if (empty($errors)) {
|
||||
$output->writeln('<info>App is compliant - awesome job!</info>');
|
||||
return 0;
|
||||
} else {
|
||||
$output->writeln('<error>App is not compliant</error>');
|
||||
return 101;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $optionName
|
||||
* @param CompletionContext $context
|
||||
* @return string[]
|
||||
*/
|
||||
public function completeOptionValues($optionName, CompletionContext $context) {
|
||||
if ($optionName === 'checker') {
|
||||
return ['private', 'deprecation', 'strong-comparison'];
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $argumentName
|
||||
* @param CompletionContext $context
|
||||
* @return string[]
|
||||
*/
|
||||
public function completeArgumentValues($argumentName, CompletionContext $context) {
|
||||
if ($argumentName === 'app-id') {
|
||||
return \OC_App::getAllApps();
|
||||
}
|
||||
return [];
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -115,10 +115,10 @@ class AutoCompleteController extends Controller {
|
|||
$output[] = [
|
||||
'id' => (string) $result['value']['shareWith'],
|
||||
'label' => $result['label'],
|
||||
'icon' => $result['icon'],
|
||||
'icon' => $result['icon'] ?? '',
|
||||
'source' => $type,
|
||||
'status' => $result['status'],
|
||||
'subline' => $result['subline']
|
||||
'status' => $result['status'] ?? '',
|
||||
'subline' => $result['subline'] ?? '',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
65
core/Migrations/Version22000Date20210216080825.php
Normal file
65
core/Migrations/Version22000Date20210216080825.php
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* @copyright Copyright (c) 2021 Roeland Jago Douma <roeland@famdouma.nl>
|
||||
*
|
||||
* @author Roeland Jago Douma <roeland@famdouma.nl>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OC\Core\Migrations;
|
||||
|
||||
use Closure;
|
||||
use OCP\DB\ISchemaWrapper;
|
||||
use OCP\Migration\IOutput;
|
||||
use OCP\Migration\SimpleMigrationStep;
|
||||
|
||||
/**
|
||||
* Auto-generated migration step: Please modify to your needs!
|
||||
*/
|
||||
class Version22000Date20210216080825 extends SimpleMigrationStep {
|
||||
/**
|
||||
* @param IOutput $output
|
||||
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
|
||||
* @param array $options
|
||||
* @return null|ISchemaWrapper
|
||||
*/
|
||||
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
|
||||
/** @var ISchemaWrapper $schema */
|
||||
$schema = $schemaClosure();
|
||||
|
||||
$table = $schema->getTable('appconfig');
|
||||
if ($table->hasIndex('appconfig_appid_key')) {
|
||||
$table->dropIndex('appconfig_appid_key');
|
||||
}
|
||||
|
||||
$table = $schema->getTable('collres_accesscache');
|
||||
if ($table->hasIndex('collres_user_coll')) {
|
||||
$table->dropIndex('collres_user_coll');
|
||||
}
|
||||
|
||||
$table = $schema->getTable('mounts');
|
||||
if ($table->hasIndex('mounts_user_index')) {
|
||||
$table->dropIndex('mounts_user_index');
|
||||
}
|
||||
|
||||
return $schema;
|
||||
}
|
||||
}
|
||||
138
core/l10n/bg.js
138
core/l10n/bg.js
|
|
@ -14,16 +14,29 @@ OC.L10N.register(
|
|||
"No crop data provided" : "Липсват данни за изрязването",
|
||||
"No valid crop data provided" : "Данни за изрязването са невалидни",
|
||||
"Crop is not square" : "Областта не е квадратна",
|
||||
"State token does not match" : "Маркер на състояние не съвпада",
|
||||
"Invalid app password" : "Невалидна парола за приложението",
|
||||
"Could not complete login" : "Не може да завърши влизането",
|
||||
"Your login token is invalid or has expired" : "Вашият маркер за вход е невалиден или е изтекъл",
|
||||
"Password reset is disabled" : "Възстановяването на пароли е забранено",
|
||||
"Couldn't reset password because the token is invalid" : "Възстановяването на паролата е невъзможно, защото връзката за удостоверение е невалидна",
|
||||
"Couldn't reset password because the token is expired" : "Възстановяването на паролата е невъзможно, защото връзката за удостоверение е с изтекла валидност",
|
||||
"%s password reset" : "%s възстановяване на парола",
|
||||
"Password reset" : "Възстановяване на парола",
|
||||
"Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Кликнете върху следния бутон, за да възстановите паролата си. Ако не сте поискали възстановяване на паролата, игнорирайте този имейл.",
|
||||
"Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Кликнете върху следната връзка, за да възстановите паролата си. Ако не сте поискали възстановяване на паролата, игнорирайте този имейл.",
|
||||
"Reset your password" : "Възстановяване на вашата парола",
|
||||
"Nextcloud Server" : "Nextcloud сървър",
|
||||
"Some of your link shares have been removed" : "Някои от вашите споделяния на връзки са премахнати",
|
||||
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Поради грешка в сигурността трябваше да премахнем някои от вашите споделяния на връзки. Моля, вижте връзката за повече информация.",
|
||||
"The user limit of this instance is reached." : " Достигнат е потребителският лимит на този екземпляр.",
|
||||
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Въведете абонаментния си ключ, за да увеличите потребителския си лимит. За повече информация относно Nextcloud Enterprise вижте нашия уеб сайт.",
|
||||
"Preparing update" : "Подготовка за актуализиране",
|
||||
"[%d / %d]: %s" : "[%d / %d]: %s",
|
||||
"Repair step:" : "Стъпка на поправка:",
|
||||
"Repair info:" : "Информация за поправка:",
|
||||
"Repair warning:" : "Предупреждение при поправка:",
|
||||
"Repair error:" : "Грешка при поправка:",
|
||||
"Please use the command line updater because automatic updating is disabled in the config.php." : "Моля използвайте съветникът за актуализиране в командния ред, защото автоматичният е забранен в config.php.",
|
||||
"[%d / %d]: Checking table %s" : "[%d / %d]: Проверяване на таблица %s",
|
||||
"Turned on maintenance mode" : "Режимът за поддръжка е включен",
|
||||
|
|
@ -36,26 +49,76 @@ OC.L10N.register(
|
|||
"Checking updates of apps" : "Проверка за актуализации на приложенията",
|
||||
"Checking for update of app \"%s\" in appstore" : "Проверка за актуализация на \"%s\"",
|
||||
"Update app \"%s\" from appstore" : "Актуализиране на \"%s\"",
|
||||
"Checked for update of app \"%s\" in appstore" : "Проверено за актуализация на приложението %s в appstore",
|
||||
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Проверка дали схемата на базата данни %s може да бъде актуализирана (това може да отнеме повече време в зависимост от големината на базата данни)",
|
||||
"Checked database schema update for apps" : "Обновяването на схемата на базата данни за приложения е проверено",
|
||||
"Updated \"%1$s\" to %2$s" : "Актуализиран \"%1$s\" до %2$s",
|
||||
"Set log level to debug" : "Промени ниво на лог на дебъг",
|
||||
"Reset log level" : "Възстанови ниво на лог",
|
||||
"Starting code integrity check" : "Стартиране на проверка за цялостта на кода",
|
||||
"Finished code integrity check" : "Приключена проверка за цялостта на кода",
|
||||
"%s (incompatible)" : "%s (несъвместим)",
|
||||
"The following apps have been disabled: %s" : "Следните приложения са изключени: %s",
|
||||
"Already up to date" : "Актуално",
|
||||
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Вашият уеб сървър все още не е удачно настроен да позволява синхронизация на файлове, защото WebDAV интерфейсът не работи.",
|
||||
"Your web server is not properly set up to resolve \"{url}\". Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Вашият уеб сървър не е настроен правилно за да анализира\"{url}\". Допълнителна информация може да бъде намерена в <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документацията</a>.",
|
||||
"Your web server is not properly set up to resolve \"{url}\". This is most likely related to a web server configuration that was not updated to deliver this folder directly. Please compare your configuration against the shipped rewrite rules in \".htaccess\" for Apache or the provided one in the documentation for Nginx at it's <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation page</a>. On Nginx those are typically the lines starting with \"location ~\" that need an update." : "Вашият уеб сървър не е правилно настроен да анализира „{url}“. Това най-вероятно е свързано с конфигурация на уеб сървър, която не е била актуализирана за директна доставка на тази папка. Моля, сравнете вашата конфигурация с изпратените правила за пренаписване в \".htaccess\" за Apache или предоставената в документацията за Nginx на <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">страницата с документация</a>. В Nginx това обикновено са редовете, започващи с \"местоположение ~\", които се нуждаят от актуализация.",
|
||||
"Your web server is not properly set up to deliver .woff2 files. This is typically an issue with the Nginx configuration. For Nextcloud 15 it needs an adjustement to also deliver .woff2 files. Compare your Nginx configuration to the recommended configuration in our <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Вашият уеб сървър не е правилно настроен да доставя .woff2 файлове. Това обикновено е проблем с конфигурацията на Nginx. За Nextcloud 15 се нуждае от настройка, за да доставя и .woff2 файлове. Сравнете вашата конфигурация на Nginx с препоръчаната конфигурация в нашата <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документация</a>.",
|
||||
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "Изглежда, че PHP не е настроен правилно за заявки за променливи на системната среда. Тестът с getenv (\"ПЪТ\") връща само празен отговор.",
|
||||
"Please check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Моля, проверете <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документацията за инсталиране ↗</a> за PHP бележки за конфигурацията и PHP конфигурацията на вашия сървър, особено когато използвате php-fpm.",
|
||||
"The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : " Активирана е конфигурацията само за четене. Това предотвратява настройването на някои конфигурации чрез уеб интерфейса. Освен това файлът трябва ръчно да се направи записваем за всяка актуализация.",
|
||||
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Вашата база данни не се изпълнява с ниво на изолация на транзакциите „АНГАЖИРАНО ЧЕТЕНЕ . Това може да създаде проблеми при паралелно изпълнение на множество действия.",
|
||||
"The PHP module \"fileinfo\" is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "PHP модулът 'fileinfo' липсва. Силно се препоръчва този модул да бъде добавен, за да се постигнат най-добри резултати при MIME тип откриване.",
|
||||
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation ↗</a> for more information." : "Заключването на транзакционни файлове е деактивирано, това може да доведе до проблеми с условията на състезанието. Активирайте \"filelocking.enabled\" в config.php, за да избегнете тези проблеми. Вижте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документацията ↗</a> за повече информация.",
|
||||
"If your installation is not installed at the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (suggestion: \"{suggestedOverwriteCliURL}\")" : "Ако инсталацията не е инсталирана в основата на вашия домейн и използва системния cron, могат да възникнат проблеми с генерирането на URL. За избягване на тези проблеми, моля настройте \"overwrite.cli.url\" опцията в config.php файла с мрежовия път към вашята инсталация (Вероятно : \"{suggestedOverwriteCliURL}\")",
|
||||
"Your installation has no default phone region set. This is required to validate phone numbers in the profile settings without a country code. To allow numbers without a country code, please add \"default_phone_region\" with the respective {linkstart}ISO 3166-1 code ↗{linkend} of the region to your config file." : "Вашата инсталация няма зададен регион на телефона по подразбиране. Това е нужно за проверка на телефонните номера в настройките на профила без код на държава. За да разрешите номера без код на държава, моля, добавете \"default_phone_region\" със съответния {linkstart} ISO 3166-1 код ↗ {linkend} на региона към вашия конфигурационен файл.",
|
||||
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Не беше възможно да се изпълни заданието cron чрез командния интерфейс CLI. Появиха се следните технически грешки:",
|
||||
"Last background job execution ran {relativeTime}. Something seems wrong." : "За последно задача е стартирала {relativeTime}. Изглежда, че има проблем.",
|
||||
"Check the background job settings" : "Проверете настройките на заданието на заден план",
|
||||
"This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "Сървърът няма работеща интернет връзка: Множество крайни точки не могат да бъдат достигнати. Това означава, че някои от функциите като монтиране на външно хранилище, известия за актуализации или инсталиране на приложения на трети страни няма да работят. Достъпът до файлове от разстояние и изпращането на имейли с известия също може да не работят. Установете връзка от този сървър с Интернет, за да се насладите на всички функции.",
|
||||
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Не е настроен кеш за паметта. За да повишите ефективността, моля настройте кеш за паметта ако е възможно. Допълнителна информация може да бъде намерена в нашата <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документация</a>.",
|
||||
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Не е открит подходящ източник за случайност от PHP, което е силно обезкуражително от съображения за сигурност. Допълнителна информация може да се намери в <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документацията</a>.",
|
||||
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "В момента използвате PHP {version}. Актуализирайте версията на PHP за да се възползвате от <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">подобренията в производителността и сигурността, предоставени от PHP Group</a> колкото можете по-скоро.",
|
||||
"Nextcloud 20 is the last release supporting PHP 7.2. Nextcloud 21 requires at least PHP 7.3." : "Nextcloud 20 е последното издание, поддържащо PHP 7.2. Nextcloud 21 изисква поне PHP 7.3.",
|
||||
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Хедърът за обратно прокси е невалиден, или достъпвате Nextcloud от доверено прокси. Ако не е така, то това е проблем в сигурността и може да позволи на хакер да прикрие IP адреса си в Nextcloud. Допълнителна информация може да бъде намерена в <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документация</a>.",
|
||||
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Кеширането на паметта е настроено като разпределена кеш, но е инсталиран грешен PHP модул \"memcache\". \\OC\\Memcache\\Memcached поддържа само \"memcached\", и не \"memcache\". Прегледайте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">memcached wiki относно двата модула</a>.",
|
||||
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Някой от файловете не преминаха проверката за цялост на кода. Допълнителна информация за това как да разрешите този проблем може да се намери в <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документация</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Списък с невалидни файлове…</a> / <a href=\"{rescanEndpoint}\">Сканиране отново…</a>)",
|
||||
"The PHP OPcache module is not loaded. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to load it into your PHP installation." : "Модулът PHca OPcache не е зареден. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">За по-добра производителност се препоръчва</a> да го заредите във вашата PHP инсталация.",
|
||||
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "Модула PHP OPcache не е настроен правилно. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">За по-добра производителност е препоръчително</a> да ползвате следните настройки във файла <code>php.ini</code>:",
|
||||
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "Функцията PHP \"set_time_limit\" не е налична. Това може да доведе до спиране на скриптове в средата на изпълнение, което ще повреди вашата инсталация. Активирането на тази функция е силно препоръчително.",
|
||||
"Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Вашият PHP не поддържа FreeType, в резулта това ще доведе до неправилното показване на профилните снимки и настройките на интерфейса",
|
||||
"Missing index \"{indexName}\" in table \"{tableName}\"." : "Липсва индекс „{indexName}“ в таблица „{tableName}“.",
|
||||
"The database is missing some indexes. Due to the fact that adding indexes on big tables could take some time they were not added automatically. By running \"occ db:add-missing-indices\" those missing indexes could be added manually while the instance keeps running. Once the indexes are added queries to those tables are usually much faster." : "Някои индекси липсват в базата данни. Не са добавени защото процеса може да отнеме доста време. Можете да стартирате процеса ръчно като изпълните командата \"occ db:add-missing-indices\". След добавянето на индексите заявките към изброените таблици ще минават много по-бързо.",
|
||||
"Missing primary key on table \"{tableName}\"." : "Липсва първичен ключ в таблица „{tableName}“.",
|
||||
"The database is missing some primary keys. Due to the fact that adding primary keys on big tables could take some time they were not added automatically. By running \"occ db:add-missing-primary-keys\" those missing primary keys could be added manually while the instance keeps running." : "В базата данни липсват някои първични ключове. Поради факта, че добавянето на първични ключове на големи маси може да отнеме известно време, те не бяха добавени автоматично. Чрез стартиране на \"occ db: add-missing-primary-keys\" тези липсващи първични ключове могат да бъдат добавени ръчно, докато екземплярът продължава да работи.",
|
||||
"Missing optional column \"{columnName}\" in table \"{tableName}\"." : "Липсва изборна колона „{columnName}“ в таблица „{tableName}“.",
|
||||
"The database is missing some optional columns. Due to the fact that adding columns on big tables could take some time they were not added automatically when they can be optional. By running \"occ db:add-missing-columns\" those missing columns could be added manually while the instance keeps running. Once the columns are added some features might improve responsiveness or usability." : "В базата данни липсват някои изборни колони. Поради факта, че добавянето на колони в големи таблици може да отнеме известно време, те не се добавят автоматично, когато могат да бъдат по избор. Чрез стартиране на \"occ db: add-missing-колони\" тези липсващи колони могат да бъдат добавени ръчно, докато екземплярът продължава да работи. След като колоните бъдат добавени, някои функции могат да подобрят отзивчивостта или използваемостта.",
|
||||
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "В този екземпляр липсват някои препоръчани PHP модули. За подобрена производителност и по-добра съвместимост е силно препоръчително да ги инсталирате.",
|
||||
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Модулът php-imagick в този случай няма поддръжка на SVG. За по-добра съвместимост се препоръчва да го инсталирате.",
|
||||
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running 'occ db:convert-filecache-bigint' those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">the documentation page about this</a>." : "Някои колони от базата данни не са конвертирани към \"big int\". Конвертирането не е осъществено защото може да отнеме доста време. Можете да стартирате процеса ръчно като изпълните командата \"occ db:convert-filecache-bigint\". Но преди това инсталацията трябва да бъде в \"maintenance\" режим. За допълнителна информация <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">прочетете документацията</a>.",
|
||||
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Понастоящем SQLite се използва като вътрешна база данни. За по-големи инсталации ви препоръчваме да превключите към друг сървър на базата данни.",
|
||||
"This is particularly recommended when using the desktop client for file synchronisation." : "Препоръчително, особено ако ползвате клиента за настолен компютър.",
|
||||
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation ↗</a>." : "За да мигрирате към друга база данни, използвайте инструмента за команден ред: 'occ db: convert-type' или вижте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документацията ↗</a>.",
|
||||
"The PHP memory limit is below the recommended value of 512MB." : "Ограничението на PHP паметта е под препоръчителната стойност от 512MB.",
|
||||
"Some app directories are owned by a different user than the web server one. This may be the case if apps have been installed manually. Check the permissions of the following app directories:" : "Някои директории на приложения се притежават от потребител, различен от този на уеб сървъра. Това може да се случи, ако приложенията са инсталирани ръчно. Проверете правата на следните директории на приложения:",
|
||||
"MySQL is used as database but does not support 4-byte characters. To be able to handle 4-byte characters (like emojis) without issues in filenames or comments for example it is recommended to enable the 4-byte support in MySQL. For further details read <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">the documentation page about this</a>." : "MySQL се използва като база данни, но не поддържа 4-байтови символи. За да можете да обработвате 4-байтови символи (като емотикони) без проблеми в имената на файлове или коментари, например се препоръчва да активирате 4-байтовата поддръжка в MySQL. За повече подробности прочетете <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">страницата с документация за това</a>.",
|
||||
"This instance uses an S3 based object store as primary storage. The uploaded files are stored temporarily on the server and thus it is recommended to have 50 GB of free space available in the temp directory of PHP. Check the logs for full details about the path and the available space. To improve this please change the temporary directory in the php.ini or make more space available in that path." : "Този екземпляр използва базирано на S3 хранилище на обекти като основно съхранение. Качените файлове се съхраняват временно на сървъра и затова се препоръчва да имате 50 GB свободно място във временната директория на PHP. Проверете дневниците за пълни подробности за пътя и наличното пространство. За да подобрите това, моля, променете временната директория в php.ini или направете повече място в този път.",
|
||||
"You are accessing your instance over a secure connection, however your instance is generating insecure URLs. This most likely means that you are behind a reverse proxy and the overwrite config variables are not set correctly. Please read <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">the documentation page about this</a>." : "Имате достъп до своя екземпляр през защитена връзка, но вашият екземпляр генерира несигурни URL адреси. Това най-вероятно означава, че сте зад обратен прокси и променливите за конфигуриране на презапис не са зададени правилно. Моля, прочетете <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">страницата с документация за това</a>.",
|
||||
"Error occurred while checking server setup" : "Възникна грешка при проверката на настройките на сървъра",
|
||||
"For more details see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "За повече подробности вижте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документацията</a>.",
|
||||
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Най-вероятно вашите данни и файлове са достъпни от интернет. .htaccess файлът не функционира. Силно се препоръчва да настроите уеб сървъра по такъв начин, че директорията за данни да не бъде достъпна или я преместете извън началната директория на уеб сървъра.",
|
||||
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP заглавката „{header}“ не е зададена на „{expected}“. Това е потенциален риск за сигурността или поверителността, като се препоръчва да настроите по подходящ начин тази настройка.",
|
||||
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "HTTP заглавката „{header}“ не е зададена на „{expected}“. Някои функции може да не работят правилно, тъй като се препоръчва да настроите по подходящ начин тази настройка.",
|
||||
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP заглавката „{header}“ не съдържа „{expected}“. Това е потенциален риск за сигурността или поверителността, като се препоръчва да настроитепо подходящ начин тази настройка.",
|
||||
"The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "HTTP заглавката „{header}“ не е зададена на „{val1}“, „{val2}“, „{val3}“, „{val4}“ или „{val5}“. Така може да изтече информация за референт. Вижте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">препоръката на W3C ↗</a>.",
|
||||
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "HTTP хедъра на \"Strict-Transport-Security\" не е конфигуриран за най-малко \"{seconds}\" секунди. За по-голяма сигурност Ви препоръчваме да активирате HSTS, както е описано в <a href=\"{docUrl}\" rel=\"noreferrer noopener\">съвети за сигурност↗</a>.",
|
||||
"Accessing site insecurely via HTTP. You are strongly advised to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Достъпвате сайта чрез HTTP. Силно се препоръчва да настроите сървъра си да изисква HTTPS вместо това, както е описано в <a href=\"{docUrl}\">съветите за сигурност ↗</a>",
|
||||
"unknown text" : "непознат текст",
|
||||
"Hello world!" : "Здравей Свят!",
|
||||
"sunny" : "слънчево",
|
||||
"Hello {name}, the weather is {weather}" : "Здравейте {name}, времето е {weather}",
|
||||
"Hello {name}" : "Здравейте, {name}",
|
||||
"<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Това са вашите резултати от търсенето<script>сигнал (1)</script></strong>",
|
||||
"new" : "нов",
|
||||
"_download %n file_::_download %n files_" : ["изтегли %n файл","изтегли %n файла"],
|
||||
"The update is in progress, leaving this page might interrupt the process in some environments." : "Актуализирането е в процес, в някой среди - напускането на тази страница може да прекъсне процеса.",
|
||||
|
|
@ -65,6 +128,7 @@ OC.L10N.register(
|
|||
"The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Актуализацията беше неуспешна. За допълнителна информация <a href=\"{url}\">прегледайте темата</a> относно този проблем.",
|
||||
"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Актуализирането беше неуспешно. Моля отнесете този проблем към <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\"> Nextcloud общността</a>.",
|
||||
"Continue to Nextcloud" : "Продължете към Nextcloud",
|
||||
"_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Актуализацията беше успешна. Пренасочване към Nextcloud след %n секунди.","Актуализацията беше успешна. Пренасочване към Nextcloud след %n секунди."],
|
||||
"Log in" : "Вписване",
|
||||
"Logging in …" : "Вписване ...",
|
||||
"Server side authentication failed!" : "Неуспешно удостоверяването от страна на сървъра!",
|
||||
|
|
@ -75,23 +139,54 @@ OC.L10N.register(
|
|||
"Password" : "Парола",
|
||||
"Wrong username or password." : "Грешен потребител или парола",
|
||||
"User disabled" : "Потребителят е деактивиран",
|
||||
"We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "Открихме множество невалидни опити за влизане от вашия IP. Следователно следващото ви влизане се ограничава за 30 секунди.",
|
||||
"Your account is not setup for passwordless login." : "Вашият профил не е настроен за влизане без парола.",
|
||||
"Passwordless authentication is not supported in your browser." : "Удостоверяването без парола не се поддържа във вашия браузър.",
|
||||
"Passwordless authentication is only available over a secure connection." : "Удостоверяването без парола е достъпно само чрез защитена връзка.",
|
||||
"Reset password" : "Възстановяване на паролата",
|
||||
"A password reset message has been sent to the e-mail address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help." : "На имейл адреса на този профил е изпратено съобщение за нулиране на парола. Ако не го получите, проверете папките си за нежелана поща / отпадъци или попитайте местния администратор за помощ.",
|
||||
"If it is not there ask your local administrator." : "Ако не е там, попитайте местния администратор.",
|
||||
"Couldn't send reset email. Please contact your administrator." : "Неуспешно изпращане на имейл за възстановяване на паролата. Моля, свържете се с вашия администратор.",
|
||||
"Password can not be changed. Please contact your administrator." : "Паролата не може да бъде промена. Моля, свържете се с администратора.",
|
||||
"Back to login" : "Обратно към вписване",
|
||||
"New password" : "Нова парола",
|
||||
"Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Вашите файлове са криптирани. След като паролата ви бъде нулирана, няма да можете да си върнете данните. Ако не сте сигурни какво да правите, моля, свържете се с вашия администратор, преди да продължите. Наистина ли искате да продължите?",
|
||||
"I know what I'm doing" : "Знам какво правя",
|
||||
"Resetting password" : "Възстановяване на паролата",
|
||||
"Recommended apps" : "Препоръчани приложения",
|
||||
"Loading apps …" : "Зареждане на приложения ...",
|
||||
"Could not fetch list of apps from the app store." : "Списъкът с приложения не можа да се извлече от app store.",
|
||||
"Installing apps …" : "Инсталиране на приложения ...",
|
||||
"App download or installation failed" : "Изтеглянето или инсталирането на приложението беше неуспешно",
|
||||
"Can't install this app because it is not compatible" : "Това приложение не може да се инсталира, защото е несъвместимо",
|
||||
"Can't install this app" : "Това приложение не може да се инсталира",
|
||||
"Cancel" : "Отказ",
|
||||
"Schedule work & meetings, synced with all your devices." : "Планирайте работа и срещи, синхронизирано с всичките ви устройства.",
|
||||
"Keep your colleagues and friends in one place without leaking their private info." : "Бъдете с колегите и приятелите си на едно място, без да изтича тяхната лична информация.",
|
||||
"Simple email app nicely integrated with Files, Contacts and Calendar." : "Просто приложение за електронна поща, добре интегрирано с файлове, контакти и календар.",
|
||||
"Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Чат, видео разговори, споделяне на екрана, онлайн срещи и уеб конферентни връзки - във вашия браузър и с мобилни приложения.",
|
||||
"Collaboratively edit office documents." : "Съвместно редактиране на офис документи.",
|
||||
"Local document editing back-end used by the Collabora Online app." : "Местно фоново редактиране на документи, чрез използване на приложението Collabora Online.",
|
||||
"Forgot password?" : "Забравена парола?",
|
||||
"Log in with a device" : "Вписване с устройство",
|
||||
"Back" : "Назад",
|
||||
"Reset search" : "Рестартирай търсенето",
|
||||
"Search for {name} only" : "Търсене само за {name}",
|
||||
"No results for {query}" : "Няма резултати за {query}",
|
||||
"Start typing to search" : "Започнете да пишете, за търсене",
|
||||
"Loading more results …" : "Зарежда още резултати…",
|
||||
"Load more results" : "Зареждане на още резултати",
|
||||
"An error occurred while searching for {type}" : "Възникна грешка при търсенето на {type}",
|
||||
"_Please enter {minSearchLength} character or more to search_::_Please enter {minSearchLength} characters or more to search_" : ["Моля, въведете {minSearchLength} знака или повече, за да търсите","Моля, въведете {minSearchLength} знака или повече, за да търсите"],
|
||||
"Search {types} …" : "Търсене на {types} ...",
|
||||
"Settings" : "Настройки",
|
||||
"Could not load your contacts" : "Контактите не могат да бъдат заредени",
|
||||
"Search contacts …" : "Търсене в контактите ...",
|
||||
"No contacts found" : "Няма намерени контакти",
|
||||
"Show all contacts …" : "Покажи всички контакти ...",
|
||||
"Install the Contacts app" : "Инсталиране на приложението за Контакти ",
|
||||
"Loading your contacts …" : "Зареждане на контактите ...",
|
||||
"Looking for {term} …" : "Търси се {term} …",
|
||||
"No" : "Не",
|
||||
"Yes" : "Да",
|
||||
"No files in here" : "Няма файлове",
|
||||
|
|
@ -133,7 +228,15 @@ OC.L10N.register(
|
|||
"seconds ago" : "преди секунди",
|
||||
"Connection to server lost" : "Няма връзка със сървъра",
|
||||
"_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Проблем при зареждането на страницата, презареждане след %n секунда","Проблем при зареждането на страницата, презареждане след %n секунди"],
|
||||
"Add to a project" : "Добавяне към проект",
|
||||
"Show details" : "Показване на подробности",
|
||||
"Hide details" : "Скриване на подробностите",
|
||||
"Rename project" : "Преименуване на проект",
|
||||
"Failed to rename the project" : "Неуспешно преименуване на проект",
|
||||
"Failed to create a project" : "Неуспешно създаване на проект",
|
||||
"Failed to add the item to the project" : "Неуспешно добавяне на елемент към проекта",
|
||||
"Connect items to a project to make them easier to find" : "Свързване на елементи към проект, за да станат лесни за намиране",
|
||||
"Type to search for existing projects" : "Въведете, за търсене на съществуващи проекти",
|
||||
"New in" : "Ново в",
|
||||
"View changelog" : "Преглед на списъка с промени",
|
||||
"Very weak password" : "Много проста парола",
|
||||
|
|
@ -142,6 +245,7 @@ OC.L10N.register(
|
|||
"Good password" : "Добра парола",
|
||||
"Strong password" : "Сложна парола",
|
||||
"No action available" : "Няма налични действия",
|
||||
"Error fetching contact actions" : "Грешка при извличането на действия за контакт",
|
||||
"Non-existing tag #{tag}" : "Несъществуващ етикет #{tag}",
|
||||
"restricted" : "ограничен",
|
||||
"invisible" : "невидим",
|
||||
|
|
@ -156,7 +260,12 @@ OC.L10N.register(
|
|||
"Help" : "Помощ",
|
||||
"Access forbidden" : "Достъпът е забранен",
|
||||
"File not found" : "Файлът не е открит",
|
||||
"The document could not be found on the server. Maybe the share was deleted or has expired?" : "Документът не можа да бъде намерен на сървъра. Може би споделянето е изтрито или е изтекло?",
|
||||
"Back to %s" : "Обратно към %s",
|
||||
"Too many requests" : "Твърде много заявки",
|
||||
"There were too many requests from your network. Retry later or contact your administrator if this is an error." : "Имаше твърде много заявки от вашата мрежа. Опитайте отново по-късно или се свържете с вашия администратор, ако това е грешка.",
|
||||
"Error" : "Грешка",
|
||||
"Previous" : "Предишен ",
|
||||
"Internal Server Error" : "Вътрешно сървърна грешка",
|
||||
"The server was unable to complete your request." : "Сървърът не можа да изпълни заявката ви.",
|
||||
"If this happens again, please send the technical details below to the server administrator." : "Ако грешката се повтори, моля изпратете техническите данни на администратора.",
|
||||
|
|
@ -187,37 +296,61 @@ OC.L10N.register(
|
|||
"Database name" : "Име на базата данни",
|
||||
"Database tablespace" : "Tablespace на базата данни",
|
||||
"Database host" : "Хост",
|
||||
"Please specify the port number along with the host name (e.g., localhost:5432)." : "Моля, посочете номера на порта заедно с името на хоста (напр. Localhost: 5432).",
|
||||
"Performance warning" : "Предупреждение за производителността",
|
||||
"You chose SQLite as database." : "Избрахте база данни SQLite.",
|
||||
"SQLite should only be used for minimal and development instances. For production we recommend a different database backend." : "SQLite трябва да се използва само за минимални екземпляри и екземпляри за разработка. За производство препоръчваме различен сървър на базата данни.",
|
||||
"If you use clients for file syncing, the use of SQLite is highly discouraged." : "Ако използвате клиенти за синхронизиране на файлове, използването на SQLite не се препоръчва.",
|
||||
"Install recommended apps" : "Инсталиране на препоръчаните приложения ",
|
||||
"Calendar, Contacts, Talk, Mail & Collaborative editing" : "Календар, Контакти, Разговор, Поща и Съвместно редактиране",
|
||||
"Finish setup" : "Завършване на инсталацията",
|
||||
"Finishing …" : "Завършване...",
|
||||
"Need help?" : "Нуждаете се от помощ?",
|
||||
"See the documentation" : "Прегледайте документацията",
|
||||
"It looks like you are trying to reinstall your Nextcloud. However the file CAN_INSTALL is missing from your config directory. Please create the file CAN_INSTALL in your config folder to continue." : "Изглежда, че се опитвате да преинсталирате Nextcloud. Файлът CAN_INSTALL обаче липсва във вашата конфигурационна директория. Моля, създайте файла CAN_INSTALL във вашата конфигурационна папка, за да продължите.",
|
||||
"Could not remove CAN_INSTALL from the config folder. Please remove this file manually." : "CAN_INSTALL не можа да се премахне от конфигурационната папка. Моля, премахнете този файл ръчно.",
|
||||
"This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Приложението изисква JavaScript. Моля, {linkstart}включете JavaScript{linkend} и презаредете страницата.",
|
||||
"Get your own free account" : "Вземете свой собствен безплатен профил",
|
||||
"Skip to main content" : "Преминаване към основното съдържание",
|
||||
"Skip to navigation of app" : "Преминаване към навигация на приложението",
|
||||
"More apps" : "Още приложения",
|
||||
"More" : "Още",
|
||||
"More apps menu" : "Още от меню за приложения",
|
||||
"Contacts" : "Контакти",
|
||||
"Contacts menu" : "Контакти",
|
||||
"Settings menu" : "Настройки",
|
||||
"Confirm your password" : "Потвърдете паролата си",
|
||||
"Connect to your account" : "Свързване към вашия профил",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Необходимо е да се впишете, преди да дадете достъп на %1$s до вашия %2$s профил.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Ако не се опитвате да настроите ново устройство или приложение, някой се опитва да ви подмами, за да му предоставите достъп до вашите данни. В този случай не продължавайте и вместо това се свържете със системния си администратор.",
|
||||
"App token" : "Парола за приложението",
|
||||
"Grant access" : "Разреши достъпa",
|
||||
"Alternative log in using app token" : "Алтернативен метод за вписване с парола за приложение",
|
||||
"Account access" : "Достъп до профил",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Ще разрешите на %1$s да ползва вашия %2$s профил.",
|
||||
"Account connected" : "Профилът е свързан",
|
||||
"Your client should now be connected!" : "Клиентът ви вече трябва да е свързан!",
|
||||
"You can close this window." : "Можеш да затвориш този прозорец.",
|
||||
"This share is password-protected" : "Тази зона е защитена с парола.",
|
||||
"The password is wrong. Try again." : "Паролата е грешна. Опитайте отново.",
|
||||
"Two-factor authentication" : "Двустепенно удостоверяване",
|
||||
"Enhanced security is enabled for your account. Choose a second factor for authentication:" : "Повишената сигурност е активирана за вашия профил. Изберете втори фактор за удостоверяване .",
|
||||
"Could not load at least one of your enabled two-factor auth methods. Please contact your admin." : "Невъзможно да се зареди поне един от вашите активирани двустепенни методи за удостоверяване. Моля, свържете се с вашия администратор.",
|
||||
"Two-factor authentication is enforced but has not been configured on your account. Contact your admin for assistance." : "Двустепенното удостоверяване е приложено, но не е конфигурирано във вашия профил. Свържете се с вашия администратор за съдействие.",
|
||||
"Two-factor authentication is enforced but has not been configured on your account. Please continue to setup two-factor authentication." : "Двустепенното удостоверяване е приложено, но не е конфигурирано във вашия профил. Свържете се с вашия администратор за съдействие.",
|
||||
"Set up two-factor authentication" : "Двустепенно удостоверяване",
|
||||
"Two-factor authentication is enforced but has not been configured on your account. Use one of your backup codes to log in or contact your admin for assistance." : "Двустепенното удостоверяване е приложено, но не е конфигурирано във вашия профил. Използвайте един от резервните си кодове, за да влезете или се свържете с вашия администратор за съдействие.",
|
||||
"Use backup code" : "Използвай код за възстановяване",
|
||||
"Cancel login" : "Откажи вписване",
|
||||
"Setup two-factor authentication" : "Свържи двустепенно удостоверяване",
|
||||
"Enhanced security is enforced for your account. Choose which provider to set up:" : "Повишената сигурност е активирана за вашия профил. Изберете кой доставчик да настроите: ",
|
||||
"Error while validating your second factor" : "Грешка при валидиране на втория ви фактор",
|
||||
"Access through untrusted domain" : "Достъп през недоверен домейн",
|
||||
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Моля, свържете се с администратора. Ако сте администратор на текущата инстанция, конфигурирайте \"trusted_domains\" настройките в config/config.php. Примерна конфигурация е предоставена в config/config.sample.php.",
|
||||
"Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Допълнителна информация как да конфигурирате това можете да намерите в %1$sдокументацията%2$s.",
|
||||
"App update required" : "Изисква се актуализиране на приложението",
|
||||
"%1$s will be updated to version %2$s" : "%1$s ще бъде актуализирана до версия %2$s",
|
||||
"The following apps will be updated:" : "Следните приложения ще бъдат актуализирани:",
|
||||
"These incompatible apps will be disabled:" : "Следните несъвместими добавки ще бъдат деактивирани:",
|
||||
"The theme %s has been disabled." : "Темата %s е изключена.",
|
||||
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Моля, уверете се, че сте направили копия на базата данни, папките с настройки и данните, преди да продължите.",
|
||||
|
|
@ -225,15 +358,20 @@ OC.L10N.register(
|
|||
"To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "За да избегнеш таймаутове при по-големи инсталации, можеш да изпълниш следните команди в инсталанционната директория:",
|
||||
"Detailed logs" : "Подробни журнали",
|
||||
"Update needed" : "Нужно е актуализиране",
|
||||
"Please use the command line updater because you have a big instance with more than 50 users." : "Моля, използвайте актуализатора на командния ред, защото имате голям екземпляр с повече от 50 потребители.",
|
||||
"For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "За помощ, прегледайте <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документацията</a>.",
|
||||
"I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Знам, че ако продължа да правя актуализацията чрез уеб потребителски интерфейсUI , има риск заявката временно да се прекъсне и може да доведе до загуба на данни, но имам резервно копие и знам как да възстановя своя екземпляр в случай на повреда.",
|
||||
"Upgrade via web on my own risk" : "Актуализиране чрез интернет на собствен риск",
|
||||
"Maintenance mode" : "Режим на поддръжка",
|
||||
"This %s instance is currently in maintenance mode, which may take a while." : "В момента се извършва профилактика на %s, може да продължи дълго.",
|
||||
"This page will refresh itself when the instance is available again." : "Страницата ще се зареди автоматично, когато е отново на линия.",
|
||||
"Contact your system administrator if this message persists or appeared unexpectedly." : "Свържете се със системния администратор ако това съобщение се задържи твърде дълго или се е появило неочаквано.",
|
||||
"Following apps have been disabled: %s" : "Следните приложения са изключени: %s",
|
||||
"Use of the the built in php mailer is no longer supported. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Please update your email server settings ↗<a/>." : "Използването на вградения php мейл вече не се поддържа. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Моля, актуализирайте настройките на вашия имейл сървър ↗<a/>.",
|
||||
"Searching other places" : "Търсене на друго място",
|
||||
"No search results in other folders for {tag}{filter}{endtag}" : "Няма резултати от търсенето в други папки за {tag}{filter}{endtag}",
|
||||
"_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} търсен резултат в друга папка","{count} търсени резултати в други папки"],
|
||||
"Nextcloud {app}" : "Nextcloud {app}",
|
||||
"Search" : "Търсене",
|
||||
"These apps will be updated:" : "Следните добавки ще бъдат актуализирани:"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -12,16 +12,29 @@
|
|||
"No crop data provided" : "Липсват данни за изрязването",
|
||||
"No valid crop data provided" : "Данни за изрязването са невалидни",
|
||||
"Crop is not square" : "Областта не е квадратна",
|
||||
"State token does not match" : "Маркер на състояние не съвпада",
|
||||
"Invalid app password" : "Невалидна парола за приложението",
|
||||
"Could not complete login" : "Не може да завърши влизането",
|
||||
"Your login token is invalid or has expired" : "Вашият маркер за вход е невалиден или е изтекъл",
|
||||
"Password reset is disabled" : "Възстановяването на пароли е забранено",
|
||||
"Couldn't reset password because the token is invalid" : "Възстановяването на паролата е невъзможно, защото връзката за удостоверение е невалидна",
|
||||
"Couldn't reset password because the token is expired" : "Възстановяването на паролата е невъзможно, защото връзката за удостоверение е с изтекла валидност",
|
||||
"%s password reset" : "%s възстановяване на парола",
|
||||
"Password reset" : "Възстановяване на парола",
|
||||
"Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Кликнете върху следния бутон, за да възстановите паролата си. Ако не сте поискали възстановяване на паролата, игнорирайте този имейл.",
|
||||
"Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Кликнете върху следната връзка, за да възстановите паролата си. Ако не сте поискали възстановяване на паролата, игнорирайте този имейл.",
|
||||
"Reset your password" : "Възстановяване на вашата парола",
|
||||
"Nextcloud Server" : "Nextcloud сървър",
|
||||
"Some of your link shares have been removed" : "Някои от вашите споделяния на връзки са премахнати",
|
||||
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Поради грешка в сигурността трябваше да премахнем някои от вашите споделяния на връзки. Моля, вижте връзката за повече информация.",
|
||||
"The user limit of this instance is reached." : " Достигнат е потребителският лимит на този екземпляр.",
|
||||
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Въведете абонаментния си ключ, за да увеличите потребителския си лимит. За повече информация относно Nextcloud Enterprise вижте нашия уеб сайт.",
|
||||
"Preparing update" : "Подготовка за актуализиране",
|
||||
"[%d / %d]: %s" : "[%d / %d]: %s",
|
||||
"Repair step:" : "Стъпка на поправка:",
|
||||
"Repair info:" : "Информация за поправка:",
|
||||
"Repair warning:" : "Предупреждение при поправка:",
|
||||
"Repair error:" : "Грешка при поправка:",
|
||||
"Please use the command line updater because automatic updating is disabled in the config.php." : "Моля използвайте съветникът за актуализиране в командния ред, защото автоматичният е забранен в config.php.",
|
||||
"[%d / %d]: Checking table %s" : "[%d / %d]: Проверяване на таблица %s",
|
||||
"Turned on maintenance mode" : "Режимът за поддръжка е включен",
|
||||
|
|
@ -34,26 +47,76 @@
|
|||
"Checking updates of apps" : "Проверка за актуализации на приложенията",
|
||||
"Checking for update of app \"%s\" in appstore" : "Проверка за актуализация на \"%s\"",
|
||||
"Update app \"%s\" from appstore" : "Актуализиране на \"%s\"",
|
||||
"Checked for update of app \"%s\" in appstore" : "Проверено за актуализация на приложението %s в appstore",
|
||||
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Проверка дали схемата на базата данни %s може да бъде актуализирана (това може да отнеме повече време в зависимост от големината на базата данни)",
|
||||
"Checked database schema update for apps" : "Обновяването на схемата на базата данни за приложения е проверено",
|
||||
"Updated \"%1$s\" to %2$s" : "Актуализиран \"%1$s\" до %2$s",
|
||||
"Set log level to debug" : "Промени ниво на лог на дебъг",
|
||||
"Reset log level" : "Възстанови ниво на лог",
|
||||
"Starting code integrity check" : "Стартиране на проверка за цялостта на кода",
|
||||
"Finished code integrity check" : "Приключена проверка за цялостта на кода",
|
||||
"%s (incompatible)" : "%s (несъвместим)",
|
||||
"The following apps have been disabled: %s" : "Следните приложения са изключени: %s",
|
||||
"Already up to date" : "Актуално",
|
||||
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Вашият уеб сървър все още не е удачно настроен да позволява синхронизация на файлове, защото WebDAV интерфейсът не работи.",
|
||||
"Your web server is not properly set up to resolve \"{url}\". Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Вашият уеб сървър не е настроен правилно за да анализира\"{url}\". Допълнителна информация може да бъде намерена в <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документацията</a>.",
|
||||
"Your web server is not properly set up to resolve \"{url}\". This is most likely related to a web server configuration that was not updated to deliver this folder directly. Please compare your configuration against the shipped rewrite rules in \".htaccess\" for Apache or the provided one in the documentation for Nginx at it's <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation page</a>. On Nginx those are typically the lines starting with \"location ~\" that need an update." : "Вашият уеб сървър не е правилно настроен да анализира „{url}“. Това най-вероятно е свързано с конфигурация на уеб сървър, която не е била актуализирана за директна доставка на тази папка. Моля, сравнете вашата конфигурация с изпратените правила за пренаписване в \".htaccess\" за Apache или предоставената в документацията за Nginx на <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">страницата с документация</a>. В Nginx това обикновено са редовете, започващи с \"местоположение ~\", които се нуждаят от актуализация.",
|
||||
"Your web server is not properly set up to deliver .woff2 files. This is typically an issue with the Nginx configuration. For Nextcloud 15 it needs an adjustement to also deliver .woff2 files. Compare your Nginx configuration to the recommended configuration in our <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Вашият уеб сървър не е правилно настроен да доставя .woff2 файлове. Това обикновено е проблем с конфигурацията на Nginx. За Nextcloud 15 се нуждае от настройка, за да доставя и .woff2 файлове. Сравнете вашата конфигурация на Nginx с препоръчаната конфигурация в нашата <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документация</a>.",
|
||||
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "Изглежда, че PHP не е настроен правилно за заявки за променливи на системната среда. Тестът с getenv (\"ПЪТ\") връща само празен отговор.",
|
||||
"Please check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Моля, проверете <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документацията за инсталиране ↗</a> за PHP бележки за конфигурацията и PHP конфигурацията на вашия сървър, особено когато използвате php-fpm.",
|
||||
"The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : " Активирана е конфигурацията само за четене. Това предотвратява настройването на някои конфигурации чрез уеб интерфейса. Освен това файлът трябва ръчно да се направи записваем за всяка актуализация.",
|
||||
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Вашата база данни не се изпълнява с ниво на изолация на транзакциите „АНГАЖИРАНО ЧЕТЕНЕ . Това може да създаде проблеми при паралелно изпълнение на множество действия.",
|
||||
"The PHP module \"fileinfo\" is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "PHP модулът 'fileinfo' липсва. Силно се препоръчва този модул да бъде добавен, за да се постигнат най-добри резултати при MIME тип откриване.",
|
||||
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation ↗</a> for more information." : "Заключването на транзакционни файлове е деактивирано, това може да доведе до проблеми с условията на състезанието. Активирайте \"filelocking.enabled\" в config.php, за да избегнете тези проблеми. Вижте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документацията ↗</a> за повече информация.",
|
||||
"If your installation is not installed at the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (suggestion: \"{suggestedOverwriteCliURL}\")" : "Ако инсталацията не е инсталирана в основата на вашия домейн и използва системния cron, могат да възникнат проблеми с генерирането на URL. За избягване на тези проблеми, моля настройте \"overwrite.cli.url\" опцията в config.php файла с мрежовия път към вашята инсталация (Вероятно : \"{suggestedOverwriteCliURL}\")",
|
||||
"Your installation has no default phone region set. This is required to validate phone numbers in the profile settings without a country code. To allow numbers without a country code, please add \"default_phone_region\" with the respective {linkstart}ISO 3166-1 code ↗{linkend} of the region to your config file." : "Вашата инсталация няма зададен регион на телефона по подразбиране. Това е нужно за проверка на телефонните номера в настройките на профила без код на държава. За да разрешите номера без код на държава, моля, добавете \"default_phone_region\" със съответния {linkstart} ISO 3166-1 код ↗ {linkend} на региона към вашия конфигурационен файл.",
|
||||
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Не беше възможно да се изпълни заданието cron чрез командния интерфейс CLI. Появиха се следните технически грешки:",
|
||||
"Last background job execution ran {relativeTime}. Something seems wrong." : "За последно задача е стартирала {relativeTime}. Изглежда, че има проблем.",
|
||||
"Check the background job settings" : "Проверете настройките на заданието на заден план",
|
||||
"This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "Сървърът няма работеща интернет връзка: Множество крайни точки не могат да бъдат достигнати. Това означава, че някои от функциите като монтиране на външно хранилище, известия за актуализации или инсталиране на приложения на трети страни няма да работят. Достъпът до файлове от разстояние и изпращането на имейли с известия също може да не работят. Установете връзка от този сървър с Интернет, за да се насладите на всички функции.",
|
||||
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Не е настроен кеш за паметта. За да повишите ефективността, моля настройте кеш за паметта ако е възможно. Допълнителна информация може да бъде намерена в нашата <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документация</a>.",
|
||||
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Не е открит подходящ източник за случайност от PHP, което е силно обезкуражително от съображения за сигурност. Допълнителна информация може да се намери в <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документацията</a>.",
|
||||
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "В момента използвате PHP {version}. Актуализирайте версията на PHP за да се възползвате от <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">подобренията в производителността и сигурността, предоставени от PHP Group</a> колкото можете по-скоро.",
|
||||
"Nextcloud 20 is the last release supporting PHP 7.2. Nextcloud 21 requires at least PHP 7.3." : "Nextcloud 20 е последното издание, поддържащо PHP 7.2. Nextcloud 21 изисква поне PHP 7.3.",
|
||||
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Хедърът за обратно прокси е невалиден, или достъпвате Nextcloud от доверено прокси. Ако не е така, то това е проблем в сигурността и може да позволи на хакер да прикрие IP адреса си в Nextcloud. Допълнителна информация може да бъде намерена в <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документация</a>.",
|
||||
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Кеширането на паметта е настроено като разпределена кеш, но е инсталиран грешен PHP модул \"memcache\". \\OC\\Memcache\\Memcached поддържа само \"memcached\", и не \"memcache\". Прегледайте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">memcached wiki относно двата модула</a>.",
|
||||
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Някой от файловете не преминаха проверката за цялост на кода. Допълнителна информация за това как да разрешите този проблем може да се намери в <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документация</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Списък с невалидни файлове…</a> / <a href=\"{rescanEndpoint}\">Сканиране отново…</a>)",
|
||||
"The PHP OPcache module is not loaded. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to load it into your PHP installation." : "Модулът PHca OPcache не е зареден. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">За по-добра производителност се препоръчва</a> да го заредите във вашата PHP инсталация.",
|
||||
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "Модула PHP OPcache не е настроен правилно. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">За по-добра производителност е препоръчително</a> да ползвате следните настройки във файла <code>php.ini</code>:",
|
||||
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "Функцията PHP \"set_time_limit\" не е налична. Това може да доведе до спиране на скриптове в средата на изпълнение, което ще повреди вашата инсталация. Активирането на тази функция е силно препоръчително.",
|
||||
"Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Вашият PHP не поддържа FreeType, в резулта това ще доведе до неправилното показване на профилните снимки и настройките на интерфейса",
|
||||
"Missing index \"{indexName}\" in table \"{tableName}\"." : "Липсва индекс „{indexName}“ в таблица „{tableName}“.",
|
||||
"The database is missing some indexes. Due to the fact that adding indexes on big tables could take some time they were not added automatically. By running \"occ db:add-missing-indices\" those missing indexes could be added manually while the instance keeps running. Once the indexes are added queries to those tables are usually much faster." : "Някои индекси липсват в базата данни. Не са добавени защото процеса може да отнеме доста време. Можете да стартирате процеса ръчно като изпълните командата \"occ db:add-missing-indices\". След добавянето на индексите заявките към изброените таблици ще минават много по-бързо.",
|
||||
"Missing primary key on table \"{tableName}\"." : "Липсва първичен ключ в таблица „{tableName}“.",
|
||||
"The database is missing some primary keys. Due to the fact that adding primary keys on big tables could take some time they were not added automatically. By running \"occ db:add-missing-primary-keys\" those missing primary keys could be added manually while the instance keeps running." : "В базата данни липсват някои първични ключове. Поради факта, че добавянето на първични ключове на големи маси може да отнеме известно време, те не бяха добавени автоматично. Чрез стартиране на \"occ db: add-missing-primary-keys\" тези липсващи първични ключове могат да бъдат добавени ръчно, докато екземплярът продължава да работи.",
|
||||
"Missing optional column \"{columnName}\" in table \"{tableName}\"." : "Липсва изборна колона „{columnName}“ в таблица „{tableName}“.",
|
||||
"The database is missing some optional columns. Due to the fact that adding columns on big tables could take some time they were not added automatically when they can be optional. By running \"occ db:add-missing-columns\" those missing columns could be added manually while the instance keeps running. Once the columns are added some features might improve responsiveness or usability." : "В базата данни липсват някои изборни колони. Поради факта, че добавянето на колони в големи таблици може да отнеме известно време, те не се добавят автоматично, когато могат да бъдат по избор. Чрез стартиране на \"occ db: add-missing-колони\" тези липсващи колони могат да бъдат добавени ръчно, докато екземплярът продължава да работи. След като колоните бъдат добавени, някои функции могат да подобрят отзивчивостта или използваемостта.",
|
||||
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "В този екземпляр липсват някои препоръчани PHP модули. За подобрена производителност и по-добра съвместимост е силно препоръчително да ги инсталирате.",
|
||||
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Модулът php-imagick в този случай няма поддръжка на SVG. За по-добра съвместимост се препоръчва да го инсталирате.",
|
||||
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running 'occ db:convert-filecache-bigint' those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">the documentation page about this</a>." : "Някои колони от базата данни не са конвертирани към \"big int\". Конвертирането не е осъществено защото може да отнеме доста време. Можете да стартирате процеса ръчно като изпълните командата \"occ db:convert-filecache-bigint\". Но преди това инсталацията трябва да бъде в \"maintenance\" режим. За допълнителна информация <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">прочетете документацията</a>.",
|
||||
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Понастоящем SQLite се използва като вътрешна база данни. За по-големи инсталации ви препоръчваме да превключите към друг сървър на базата данни.",
|
||||
"This is particularly recommended when using the desktop client for file synchronisation." : "Препоръчително, особено ако ползвате клиента за настолен компютър.",
|
||||
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation ↗</a>." : "За да мигрирате към друга база данни, използвайте инструмента за команден ред: 'occ db: convert-type' или вижте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документацията ↗</a>.",
|
||||
"The PHP memory limit is below the recommended value of 512MB." : "Ограничението на PHP паметта е под препоръчителната стойност от 512MB.",
|
||||
"Some app directories are owned by a different user than the web server one. This may be the case if apps have been installed manually. Check the permissions of the following app directories:" : "Някои директории на приложения се притежават от потребител, различен от този на уеб сървъра. Това може да се случи, ако приложенията са инсталирани ръчно. Проверете правата на следните директории на приложения:",
|
||||
"MySQL is used as database but does not support 4-byte characters. To be able to handle 4-byte characters (like emojis) without issues in filenames or comments for example it is recommended to enable the 4-byte support in MySQL. For further details read <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">the documentation page about this</a>." : "MySQL се използва като база данни, но не поддържа 4-байтови символи. За да можете да обработвате 4-байтови символи (като емотикони) без проблеми в имената на файлове или коментари, например се препоръчва да активирате 4-байтовата поддръжка в MySQL. За повече подробности прочетете <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">страницата с документация за това</a>.",
|
||||
"This instance uses an S3 based object store as primary storage. The uploaded files are stored temporarily on the server and thus it is recommended to have 50 GB of free space available in the temp directory of PHP. Check the logs for full details about the path and the available space. To improve this please change the temporary directory in the php.ini or make more space available in that path." : "Този екземпляр използва базирано на S3 хранилище на обекти като основно съхранение. Качените файлове се съхраняват временно на сървъра и затова се препоръчва да имате 50 GB свободно място във временната директория на PHP. Проверете дневниците за пълни подробности за пътя и наличното пространство. За да подобрите това, моля, променете временната директория в php.ini или направете повече място в този път.",
|
||||
"You are accessing your instance over a secure connection, however your instance is generating insecure URLs. This most likely means that you are behind a reverse proxy and the overwrite config variables are not set correctly. Please read <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">the documentation page about this</a>." : "Имате достъп до своя екземпляр през защитена връзка, но вашият екземпляр генерира несигурни URL адреси. Това най-вероятно означава, че сте зад обратен прокси и променливите за конфигуриране на презапис не са зададени правилно. Моля, прочетете <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">страницата с документация за това</a>.",
|
||||
"Error occurred while checking server setup" : "Възникна грешка при проверката на настройките на сървъра",
|
||||
"For more details see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "За повече подробности вижте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документацията</a>.",
|
||||
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Най-вероятно вашите данни и файлове са достъпни от интернет. .htaccess файлът не функционира. Силно се препоръчва да настроите уеб сървъра по такъв начин, че директорията за данни да не бъде достъпна или я преместете извън началната директория на уеб сървъра.",
|
||||
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP заглавката „{header}“ не е зададена на „{expected}“. Това е потенциален риск за сигурността или поверителността, като се препоръчва да настроите по подходящ начин тази настройка.",
|
||||
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "HTTP заглавката „{header}“ не е зададена на „{expected}“. Някои функции може да не работят правилно, тъй като се препоръчва да настроите по подходящ начин тази настройка.",
|
||||
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP заглавката „{header}“ не съдържа „{expected}“. Това е потенциален риск за сигурността или поверителността, като се препоръчва да настроитепо подходящ начин тази настройка.",
|
||||
"The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "HTTP заглавката „{header}“ не е зададена на „{val1}“, „{val2}“, „{val3}“, „{val4}“ или „{val5}“. Така може да изтече информация за референт. Вижте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">препоръката на W3C ↗</a>.",
|
||||
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "HTTP хедъра на \"Strict-Transport-Security\" не е конфигуриран за най-малко \"{seconds}\" секунди. За по-голяма сигурност Ви препоръчваме да активирате HSTS, както е описано в <a href=\"{docUrl}\" rel=\"noreferrer noopener\">съвети за сигурност↗</a>.",
|
||||
"Accessing site insecurely via HTTP. You are strongly advised to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Достъпвате сайта чрез HTTP. Силно се препоръчва да настроите сървъра си да изисква HTTPS вместо това, както е описано в <a href=\"{docUrl}\">съветите за сигурност ↗</a>",
|
||||
"unknown text" : "непознат текст",
|
||||
"Hello world!" : "Здравей Свят!",
|
||||
"sunny" : "слънчево",
|
||||
"Hello {name}, the weather is {weather}" : "Здравейте {name}, времето е {weather}",
|
||||
"Hello {name}" : "Здравейте, {name}",
|
||||
"<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Това са вашите резултати от търсенето<script>сигнал (1)</script></strong>",
|
||||
"new" : "нов",
|
||||
"_download %n file_::_download %n files_" : ["изтегли %n файл","изтегли %n файла"],
|
||||
"The update is in progress, leaving this page might interrupt the process in some environments." : "Актуализирането е в процес, в някой среди - напускането на тази страница може да прекъсне процеса.",
|
||||
|
|
@ -63,6 +126,7 @@
|
|||
"The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Актуализацията беше неуспешна. За допълнителна информация <a href=\"{url}\">прегледайте темата</a> относно този проблем.",
|
||||
"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Актуализирането беше неуспешно. Моля отнесете този проблем към <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\"> Nextcloud общността</a>.",
|
||||
"Continue to Nextcloud" : "Продължете към Nextcloud",
|
||||
"_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Актуализацията беше успешна. Пренасочване към Nextcloud след %n секунди.","Актуализацията беше успешна. Пренасочване към Nextcloud след %n секунди."],
|
||||
"Log in" : "Вписване",
|
||||
"Logging in …" : "Вписване ...",
|
||||
"Server side authentication failed!" : "Неуспешно удостоверяването от страна на сървъра!",
|
||||
|
|
@ -73,23 +137,54 @@
|
|||
"Password" : "Парола",
|
||||
"Wrong username or password." : "Грешен потребител или парола",
|
||||
"User disabled" : "Потребителят е деактивиран",
|
||||
"We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "Открихме множество невалидни опити за влизане от вашия IP. Следователно следващото ви влизане се ограничава за 30 секунди.",
|
||||
"Your account is not setup for passwordless login." : "Вашият профил не е настроен за влизане без парола.",
|
||||
"Passwordless authentication is not supported in your browser." : "Удостоверяването без парола не се поддържа във вашия браузър.",
|
||||
"Passwordless authentication is only available over a secure connection." : "Удостоверяването без парола е достъпно само чрез защитена връзка.",
|
||||
"Reset password" : "Възстановяване на паролата",
|
||||
"A password reset message has been sent to the e-mail address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help." : "На имейл адреса на този профил е изпратено съобщение за нулиране на парола. Ако не го получите, проверете папките си за нежелана поща / отпадъци или попитайте местния администратор за помощ.",
|
||||
"If it is not there ask your local administrator." : "Ако не е там, попитайте местния администратор.",
|
||||
"Couldn't send reset email. Please contact your administrator." : "Неуспешно изпращане на имейл за възстановяване на паролата. Моля, свържете се с вашия администратор.",
|
||||
"Password can not be changed. Please contact your administrator." : "Паролата не може да бъде промена. Моля, свържете се с администратора.",
|
||||
"Back to login" : "Обратно към вписване",
|
||||
"New password" : "Нова парола",
|
||||
"Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Вашите файлове са криптирани. След като паролата ви бъде нулирана, няма да можете да си върнете данните. Ако не сте сигурни какво да правите, моля, свържете се с вашия администратор, преди да продължите. Наистина ли искате да продължите?",
|
||||
"I know what I'm doing" : "Знам какво правя",
|
||||
"Resetting password" : "Възстановяване на паролата",
|
||||
"Recommended apps" : "Препоръчани приложения",
|
||||
"Loading apps …" : "Зареждане на приложения ...",
|
||||
"Could not fetch list of apps from the app store." : "Списъкът с приложения не можа да се извлече от app store.",
|
||||
"Installing apps …" : "Инсталиране на приложения ...",
|
||||
"App download or installation failed" : "Изтеглянето или инсталирането на приложението беше неуспешно",
|
||||
"Can't install this app because it is not compatible" : "Това приложение не може да се инсталира, защото е несъвместимо",
|
||||
"Can't install this app" : "Това приложение не може да се инсталира",
|
||||
"Cancel" : "Отказ",
|
||||
"Schedule work & meetings, synced with all your devices." : "Планирайте работа и срещи, синхронизирано с всичките ви устройства.",
|
||||
"Keep your colleagues and friends in one place without leaking their private info." : "Бъдете с колегите и приятелите си на едно място, без да изтича тяхната лична информация.",
|
||||
"Simple email app nicely integrated with Files, Contacts and Calendar." : "Просто приложение за електронна поща, добре интегрирано с файлове, контакти и календар.",
|
||||
"Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Чат, видео разговори, споделяне на екрана, онлайн срещи и уеб конферентни връзки - във вашия браузър и с мобилни приложения.",
|
||||
"Collaboratively edit office documents." : "Съвместно редактиране на офис документи.",
|
||||
"Local document editing back-end used by the Collabora Online app." : "Местно фоново редактиране на документи, чрез използване на приложението Collabora Online.",
|
||||
"Forgot password?" : "Забравена парола?",
|
||||
"Log in with a device" : "Вписване с устройство",
|
||||
"Back" : "Назад",
|
||||
"Reset search" : "Рестартирай търсенето",
|
||||
"Search for {name} only" : "Търсене само за {name}",
|
||||
"No results for {query}" : "Няма резултати за {query}",
|
||||
"Start typing to search" : "Започнете да пишете, за търсене",
|
||||
"Loading more results …" : "Зарежда още резултати…",
|
||||
"Load more results" : "Зареждане на още резултати",
|
||||
"An error occurred while searching for {type}" : "Възникна грешка при търсенето на {type}",
|
||||
"_Please enter {minSearchLength} character or more to search_::_Please enter {minSearchLength} characters or more to search_" : ["Моля, въведете {minSearchLength} знака или повече, за да търсите","Моля, въведете {minSearchLength} знака или повече, за да търсите"],
|
||||
"Search {types} …" : "Търсене на {types} ...",
|
||||
"Settings" : "Настройки",
|
||||
"Could not load your contacts" : "Контактите не могат да бъдат заредени",
|
||||
"Search contacts …" : "Търсене в контактите ...",
|
||||
"No contacts found" : "Няма намерени контакти",
|
||||
"Show all contacts …" : "Покажи всички контакти ...",
|
||||
"Install the Contacts app" : "Инсталиране на приложението за Контакти ",
|
||||
"Loading your contacts …" : "Зареждане на контактите ...",
|
||||
"Looking for {term} …" : "Търси се {term} …",
|
||||
"No" : "Не",
|
||||
"Yes" : "Да",
|
||||
"No files in here" : "Няма файлове",
|
||||
|
|
@ -131,7 +226,15 @@
|
|||
"seconds ago" : "преди секунди",
|
||||
"Connection to server lost" : "Няма връзка със сървъра",
|
||||
"_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Проблем при зареждането на страницата, презареждане след %n секунда","Проблем при зареждането на страницата, презареждане след %n секунди"],
|
||||
"Add to a project" : "Добавяне към проект",
|
||||
"Show details" : "Показване на подробности",
|
||||
"Hide details" : "Скриване на подробностите",
|
||||
"Rename project" : "Преименуване на проект",
|
||||
"Failed to rename the project" : "Неуспешно преименуване на проект",
|
||||
"Failed to create a project" : "Неуспешно създаване на проект",
|
||||
"Failed to add the item to the project" : "Неуспешно добавяне на елемент към проекта",
|
||||
"Connect items to a project to make them easier to find" : "Свързване на елементи към проект, за да станат лесни за намиране",
|
||||
"Type to search for existing projects" : "Въведете, за търсене на съществуващи проекти",
|
||||
"New in" : "Ново в",
|
||||
"View changelog" : "Преглед на списъка с промени",
|
||||
"Very weak password" : "Много проста парола",
|
||||
|
|
@ -140,6 +243,7 @@
|
|||
"Good password" : "Добра парола",
|
||||
"Strong password" : "Сложна парола",
|
||||
"No action available" : "Няма налични действия",
|
||||
"Error fetching contact actions" : "Грешка при извличането на действия за контакт",
|
||||
"Non-existing tag #{tag}" : "Несъществуващ етикет #{tag}",
|
||||
"restricted" : "ограничен",
|
||||
"invisible" : "невидим",
|
||||
|
|
@ -154,7 +258,12 @@
|
|||
"Help" : "Помощ",
|
||||
"Access forbidden" : "Достъпът е забранен",
|
||||
"File not found" : "Файлът не е открит",
|
||||
"The document could not be found on the server. Maybe the share was deleted or has expired?" : "Документът не можа да бъде намерен на сървъра. Може би споделянето е изтрито или е изтекло?",
|
||||
"Back to %s" : "Обратно към %s",
|
||||
"Too many requests" : "Твърде много заявки",
|
||||
"There were too many requests from your network. Retry later or contact your administrator if this is an error." : "Имаше твърде много заявки от вашата мрежа. Опитайте отново по-късно или се свържете с вашия администратор, ако това е грешка.",
|
||||
"Error" : "Грешка",
|
||||
"Previous" : "Предишен ",
|
||||
"Internal Server Error" : "Вътрешно сървърна грешка",
|
||||
"The server was unable to complete your request." : "Сървърът не можа да изпълни заявката ви.",
|
||||
"If this happens again, please send the technical details below to the server administrator." : "Ако грешката се повтори, моля изпратете техническите данни на администратора.",
|
||||
|
|
@ -185,37 +294,61 @@
|
|||
"Database name" : "Име на базата данни",
|
||||
"Database tablespace" : "Tablespace на базата данни",
|
||||
"Database host" : "Хост",
|
||||
"Please specify the port number along with the host name (e.g., localhost:5432)." : "Моля, посочете номера на порта заедно с името на хоста (напр. Localhost: 5432).",
|
||||
"Performance warning" : "Предупреждение за производителността",
|
||||
"You chose SQLite as database." : "Избрахте база данни SQLite.",
|
||||
"SQLite should only be used for minimal and development instances. For production we recommend a different database backend." : "SQLite трябва да се използва само за минимални екземпляри и екземпляри за разработка. За производство препоръчваме различен сървър на базата данни.",
|
||||
"If you use clients for file syncing, the use of SQLite is highly discouraged." : "Ако използвате клиенти за синхронизиране на файлове, използването на SQLite не се препоръчва.",
|
||||
"Install recommended apps" : "Инсталиране на препоръчаните приложения ",
|
||||
"Calendar, Contacts, Talk, Mail & Collaborative editing" : "Календар, Контакти, Разговор, Поща и Съвместно редактиране",
|
||||
"Finish setup" : "Завършване на инсталацията",
|
||||
"Finishing …" : "Завършване...",
|
||||
"Need help?" : "Нуждаете се от помощ?",
|
||||
"See the documentation" : "Прегледайте документацията",
|
||||
"It looks like you are trying to reinstall your Nextcloud. However the file CAN_INSTALL is missing from your config directory. Please create the file CAN_INSTALL in your config folder to continue." : "Изглежда, че се опитвате да преинсталирате Nextcloud. Файлът CAN_INSTALL обаче липсва във вашата конфигурационна директория. Моля, създайте файла CAN_INSTALL във вашата конфигурационна папка, за да продължите.",
|
||||
"Could not remove CAN_INSTALL from the config folder. Please remove this file manually." : "CAN_INSTALL не можа да се премахне от конфигурационната папка. Моля, премахнете този файл ръчно.",
|
||||
"This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Приложението изисква JavaScript. Моля, {linkstart}включете JavaScript{linkend} и презаредете страницата.",
|
||||
"Get your own free account" : "Вземете свой собствен безплатен профил",
|
||||
"Skip to main content" : "Преминаване към основното съдържание",
|
||||
"Skip to navigation of app" : "Преминаване към навигация на приложението",
|
||||
"More apps" : "Още приложения",
|
||||
"More" : "Още",
|
||||
"More apps menu" : "Още от меню за приложения",
|
||||
"Contacts" : "Контакти",
|
||||
"Contacts menu" : "Контакти",
|
||||
"Settings menu" : "Настройки",
|
||||
"Confirm your password" : "Потвърдете паролата си",
|
||||
"Connect to your account" : "Свързване към вашия профил",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Необходимо е да се впишете, преди да дадете достъп на %1$s до вашия %2$s профил.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Ако не се опитвате да настроите ново устройство или приложение, някой се опитва да ви подмами, за да му предоставите достъп до вашите данни. В този случай не продължавайте и вместо това се свържете със системния си администратор.",
|
||||
"App token" : "Парола за приложението",
|
||||
"Grant access" : "Разреши достъпa",
|
||||
"Alternative log in using app token" : "Алтернативен метод за вписване с парола за приложение",
|
||||
"Account access" : "Достъп до профил",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Ще разрешите на %1$s да ползва вашия %2$s профил.",
|
||||
"Account connected" : "Профилът е свързан",
|
||||
"Your client should now be connected!" : "Клиентът ви вече трябва да е свързан!",
|
||||
"You can close this window." : "Можеш да затвориш този прозорец.",
|
||||
"This share is password-protected" : "Тази зона е защитена с парола.",
|
||||
"The password is wrong. Try again." : "Паролата е грешна. Опитайте отново.",
|
||||
"Two-factor authentication" : "Двустепенно удостоверяване",
|
||||
"Enhanced security is enabled for your account. Choose a second factor for authentication:" : "Повишената сигурност е активирана за вашия профил. Изберете втори фактор за удостоверяване .",
|
||||
"Could not load at least one of your enabled two-factor auth methods. Please contact your admin." : "Невъзможно да се зареди поне един от вашите активирани двустепенни методи за удостоверяване. Моля, свържете се с вашия администратор.",
|
||||
"Two-factor authentication is enforced but has not been configured on your account. Contact your admin for assistance." : "Двустепенното удостоверяване е приложено, но не е конфигурирано във вашия профил. Свържете се с вашия администратор за съдействие.",
|
||||
"Two-factor authentication is enforced but has not been configured on your account. Please continue to setup two-factor authentication." : "Двустепенното удостоверяване е приложено, но не е конфигурирано във вашия профил. Свържете се с вашия администратор за съдействие.",
|
||||
"Set up two-factor authentication" : "Двустепенно удостоверяване",
|
||||
"Two-factor authentication is enforced but has not been configured on your account. Use one of your backup codes to log in or contact your admin for assistance." : "Двустепенното удостоверяване е приложено, но не е конфигурирано във вашия профил. Използвайте един от резервните си кодове, за да влезете или се свържете с вашия администратор за съдействие.",
|
||||
"Use backup code" : "Използвай код за възстановяване",
|
||||
"Cancel login" : "Откажи вписване",
|
||||
"Setup two-factor authentication" : "Свържи двустепенно удостоверяване",
|
||||
"Enhanced security is enforced for your account. Choose which provider to set up:" : "Повишената сигурност е активирана за вашия профил. Изберете кой доставчик да настроите: ",
|
||||
"Error while validating your second factor" : "Грешка при валидиране на втория ви фактор",
|
||||
"Access through untrusted domain" : "Достъп през недоверен домейн",
|
||||
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Моля, свържете се с администратора. Ако сте администратор на текущата инстанция, конфигурирайте \"trusted_domains\" настройките в config/config.php. Примерна конфигурация е предоставена в config/config.sample.php.",
|
||||
"Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Допълнителна информация как да конфигурирате това можете да намерите в %1$sдокументацията%2$s.",
|
||||
"App update required" : "Изисква се актуализиране на приложението",
|
||||
"%1$s will be updated to version %2$s" : "%1$s ще бъде актуализирана до версия %2$s",
|
||||
"The following apps will be updated:" : "Следните приложения ще бъдат актуализирани:",
|
||||
"These incompatible apps will be disabled:" : "Следните несъвместими добавки ще бъдат деактивирани:",
|
||||
"The theme %s has been disabled." : "Темата %s е изключена.",
|
||||
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Моля, уверете се, че сте направили копия на базата данни, папките с настройки и данните, преди да продължите.",
|
||||
|
|
@ -223,15 +356,20 @@
|
|||
"To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "За да избегнеш таймаутове при по-големи инсталации, можеш да изпълниш следните команди в инсталанционната директория:",
|
||||
"Detailed logs" : "Подробни журнали",
|
||||
"Update needed" : "Нужно е актуализиране",
|
||||
"Please use the command line updater because you have a big instance with more than 50 users." : "Моля, използвайте актуализатора на командния ред, защото имате голям екземпляр с повече от 50 потребители.",
|
||||
"For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "За помощ, прегледайте <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документацията</a>.",
|
||||
"I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Знам, че ако продължа да правя актуализацията чрез уеб потребителски интерфейсUI , има риск заявката временно да се прекъсне и може да доведе до загуба на данни, но имам резервно копие и знам как да възстановя своя екземпляр в случай на повреда.",
|
||||
"Upgrade via web on my own risk" : "Актуализиране чрез интернет на собствен риск",
|
||||
"Maintenance mode" : "Режим на поддръжка",
|
||||
"This %s instance is currently in maintenance mode, which may take a while." : "В момента се извършва профилактика на %s, може да продължи дълго.",
|
||||
"This page will refresh itself when the instance is available again." : "Страницата ще се зареди автоматично, когато е отново на линия.",
|
||||
"Contact your system administrator if this message persists or appeared unexpectedly." : "Свържете се със системния администратор ако това съобщение се задържи твърде дълго или се е появило неочаквано.",
|
||||
"Following apps have been disabled: %s" : "Следните приложения са изключени: %s",
|
||||
"Use of the the built in php mailer is no longer supported. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Please update your email server settings ↗<a/>." : "Използването на вградения php мейл вече не се поддържа. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Моля, актуализирайте настройките на вашия имейл сървър ↗<a/>.",
|
||||
"Searching other places" : "Търсене на друго място",
|
||||
"No search results in other folders for {tag}{filter}{endtag}" : "Няма резултати от търсенето в други папки за {tag}{filter}{endtag}",
|
||||
"_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} търсен резултат в друга папка","{count} търсени резултати в други папки"],
|
||||
"Nextcloud {app}" : "Nextcloud {app}",
|
||||
"Search" : "Търсене",
|
||||
"These apps will be updated:" : "Следните добавки ще бъдат актуализирани:"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
|
|
|
|||
|
|
@ -223,6 +223,7 @@ return array(
|
|||
'OCP\\Federation\\ICloudIdManager' => $baseDir . '/lib/public/Federation/ICloudIdManager.php',
|
||||
'OCP\\Files' => $baseDir . '/lib/public/Files.php',
|
||||
'OCP\\Files\\AlreadyExistsException' => $baseDir . '/lib/public/Files/AlreadyExistsException.php',
|
||||
'OCP\\Files\\Cache\\AbstractCacheEvent' => $baseDir . '/lib/public/Files/Cache/AbstractCacheEvent.php',
|
||||
'OCP\\Files\\Cache\\CacheEntryInsertedEvent' => $baseDir . '/lib/public/Files/Cache/CacheEntryInsertedEvent.php',
|
||||
'OCP\\Files\\Cache\\CacheEntryRemovedEvent' => $baseDir . '/lib/public/Files/Cache/CacheEntryRemovedEvent.php',
|
||||
'OCP\\Files\\Cache\\CacheEntryUpdatedEvent' => $baseDir . '/lib/public/Files/Cache/CacheEntryUpdatedEvent.php',
|
||||
|
|
@ -652,18 +653,6 @@ return array(
|
|||
'OC\\App\\AppStore\\Fetcher\\Fetcher' => $baseDir . '/lib/private/App/AppStore/Fetcher/Fetcher.php',
|
||||
'OC\\App\\AppStore\\Version\\Version' => $baseDir . '/lib/private/App/AppStore/Version/Version.php',
|
||||
'OC\\App\\AppStore\\Version\\VersionParser' => $baseDir . '/lib/private/App/AppStore/Version/VersionParser.php',
|
||||
'OC\\App\\CodeChecker\\AbstractCheck' => $baseDir . '/lib/private/App/CodeChecker/AbstractCheck.php',
|
||||
'OC\\App\\CodeChecker\\CodeChecker' => $baseDir . '/lib/private/App/CodeChecker/CodeChecker.php',
|
||||
'OC\\App\\CodeChecker\\DatabaseSchemaChecker' => $baseDir . '/lib/private/App/CodeChecker/DatabaseSchemaChecker.php',
|
||||
'OC\\App\\CodeChecker\\DeprecationCheck' => $baseDir . '/lib/private/App/CodeChecker/DeprecationCheck.php',
|
||||
'OC\\App\\CodeChecker\\EmptyCheck' => $baseDir . '/lib/private/App/CodeChecker/EmptyCheck.php',
|
||||
'OC\\App\\CodeChecker\\ICheck' => $baseDir . '/lib/private/App/CodeChecker/ICheck.php',
|
||||
'OC\\App\\CodeChecker\\InfoChecker' => $baseDir . '/lib/private/App/CodeChecker/InfoChecker.php',
|
||||
'OC\\App\\CodeChecker\\LanguageParseChecker' => $baseDir . '/lib/private/App/CodeChecker/LanguageParseChecker.php',
|
||||
'OC\\App\\CodeChecker\\MigrationSchemaChecker' => $baseDir . '/lib/private/App/CodeChecker/MigrationSchemaChecker.php',
|
||||
'OC\\App\\CodeChecker\\NodeVisitor' => $baseDir . '/lib/private/App/CodeChecker/NodeVisitor.php',
|
||||
'OC\\App\\CodeChecker\\PrivateCheck' => $baseDir . '/lib/private/App/CodeChecker/PrivateCheck.php',
|
||||
'OC\\App\\CodeChecker\\StrongComparisonCheck' => $baseDir . '/lib/private/App/CodeChecker/StrongComparisonCheck.php',
|
||||
'OC\\App\\CompareVersion' => $baseDir . '/lib/private/App/CompareVersion.php',
|
||||
'OC\\App\\DependencyAnalyzer' => $baseDir . '/lib/private/App/DependencyAnalyzer.php',
|
||||
'OC\\App\\InfoParser' => $baseDir . '/lib/private/App/InfoParser.php',
|
||||
|
|
@ -956,6 +945,7 @@ return array(
|
|||
'OC\\Core\\Migrations\\Version21000Date20201120141228' => $baseDir . '/core/Migrations/Version21000Date20201120141228.php',
|
||||
'OC\\Core\\Migrations\\Version21000Date20201202095923' => $baseDir . '/core/Migrations/Version21000Date20201202095923.php',
|
||||
'OC\\Core\\Migrations\\Version21000Date20210119195004' => $baseDir . '/core/Migrations/Version21000Date20210119195004.php',
|
||||
'OC\\Core\\Migrations\\Version22000Date20210216080825' => $baseDir . '/core/Migrations/Version22000Date20210216080825.php',
|
||||
'OC\\Core\\Notification\\CoreNotifier' => $baseDir . '/core/Notification/CoreNotifier.php',
|
||||
'OC\\Core\\Service\\LoginFlowV2Service' => $baseDir . '/core/Service/LoginFlowV2Service.php',
|
||||
'OC\\DB\\Adapter' => $baseDir . '/lib/private/DB/Adapter.php',
|
||||
|
|
@ -1043,7 +1033,6 @@ return array(
|
|||
'OC\\Federation\\CloudIdManager' => $baseDir . '/lib/private/Federation/CloudIdManager.php',
|
||||
'OC\\Files\\AppData\\AppData' => $baseDir . '/lib/private/Files/AppData/AppData.php',
|
||||
'OC\\Files\\AppData\\Factory' => $baseDir . '/lib/private/Files/AppData/Factory.php',
|
||||
'OC\\Files\\Cache\\AbstractCacheEvent' => $baseDir . '/lib/private/Files/Cache/AbstractCacheEvent.php',
|
||||
'OC\\Files\\Cache\\Cache' => $baseDir . '/lib/private/Files/Cache/Cache.php',
|
||||
'OC\\Files\\Cache\\CacheEntry' => $baseDir . '/lib/private/Files/Cache/CacheEntry.php',
|
||||
'OC\\Files\\Cache\\CacheQueryBuilder' => $baseDir . '/lib/private/Files/Cache/CacheQueryBuilder.php',
|
||||
|
|
|
|||
|
|
@ -252,6 +252,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
|
|||
'OCP\\Federation\\ICloudIdManager' => __DIR__ . '/../../..' . '/lib/public/Federation/ICloudIdManager.php',
|
||||
'OCP\\Files' => __DIR__ . '/../../..' . '/lib/public/Files.php',
|
||||
'OCP\\Files\\AlreadyExistsException' => __DIR__ . '/../../..' . '/lib/public/Files/AlreadyExistsException.php',
|
||||
'OCP\\Files\\Cache\\AbstractCacheEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/AbstractCacheEvent.php',
|
||||
'OCP\\Files\\Cache\\CacheEntryInsertedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/CacheEntryInsertedEvent.php',
|
||||
'OCP\\Files\\Cache\\CacheEntryRemovedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/CacheEntryRemovedEvent.php',
|
||||
'OCP\\Files\\Cache\\CacheEntryUpdatedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/CacheEntryUpdatedEvent.php',
|
||||
|
|
@ -681,18 +682,6 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
|
|||
'OC\\App\\AppStore\\Fetcher\\Fetcher' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Fetcher/Fetcher.php',
|
||||
'OC\\App\\AppStore\\Version\\Version' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Version/Version.php',
|
||||
'OC\\App\\AppStore\\Version\\VersionParser' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Version/VersionParser.php',
|
||||
'OC\\App\\CodeChecker\\AbstractCheck' => __DIR__ . '/../../..' . '/lib/private/App/CodeChecker/AbstractCheck.php',
|
||||
'OC\\App\\CodeChecker\\CodeChecker' => __DIR__ . '/../../..' . '/lib/private/App/CodeChecker/CodeChecker.php',
|
||||
'OC\\App\\CodeChecker\\DatabaseSchemaChecker' => __DIR__ . '/../../..' . '/lib/private/App/CodeChecker/DatabaseSchemaChecker.php',
|
||||
'OC\\App\\CodeChecker\\DeprecationCheck' => __DIR__ . '/../../..' . '/lib/private/App/CodeChecker/DeprecationCheck.php',
|
||||
'OC\\App\\CodeChecker\\EmptyCheck' => __DIR__ . '/../../..' . '/lib/private/App/CodeChecker/EmptyCheck.php',
|
||||
'OC\\App\\CodeChecker\\ICheck' => __DIR__ . '/../../..' . '/lib/private/App/CodeChecker/ICheck.php',
|
||||
'OC\\App\\CodeChecker\\InfoChecker' => __DIR__ . '/../../..' . '/lib/private/App/CodeChecker/InfoChecker.php',
|
||||
'OC\\App\\CodeChecker\\LanguageParseChecker' => __DIR__ . '/../../..' . '/lib/private/App/CodeChecker/LanguageParseChecker.php',
|
||||
'OC\\App\\CodeChecker\\MigrationSchemaChecker' => __DIR__ . '/../../..' . '/lib/private/App/CodeChecker/MigrationSchemaChecker.php',
|
||||
'OC\\App\\CodeChecker\\NodeVisitor' => __DIR__ . '/../../..' . '/lib/private/App/CodeChecker/NodeVisitor.php',
|
||||
'OC\\App\\CodeChecker\\PrivateCheck' => __DIR__ . '/../../..' . '/lib/private/App/CodeChecker/PrivateCheck.php',
|
||||
'OC\\App\\CodeChecker\\StrongComparisonCheck' => __DIR__ . '/../../..' . '/lib/private/App/CodeChecker/StrongComparisonCheck.php',
|
||||
'OC\\App\\CompareVersion' => __DIR__ . '/../../..' . '/lib/private/App/CompareVersion.php',
|
||||
'OC\\App\\DependencyAnalyzer' => __DIR__ . '/../../..' . '/lib/private/App/DependencyAnalyzer.php',
|
||||
'OC\\App\\InfoParser' => __DIR__ . '/../../..' . '/lib/private/App/InfoParser.php',
|
||||
|
|
@ -985,6 +974,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
|
|||
'OC\\Core\\Migrations\\Version21000Date20201120141228' => __DIR__ . '/../../..' . '/core/Migrations/Version21000Date20201120141228.php',
|
||||
'OC\\Core\\Migrations\\Version21000Date20201202095923' => __DIR__ . '/../../..' . '/core/Migrations/Version21000Date20201202095923.php',
|
||||
'OC\\Core\\Migrations\\Version21000Date20210119195004' => __DIR__ . '/../../..' . '/core/Migrations/Version21000Date20210119195004.php',
|
||||
'OC\\Core\\Migrations\\Version22000Date20210216080825' => __DIR__ . '/../../..' . '/core/Migrations/Version22000Date20210216080825.php',
|
||||
'OC\\Core\\Notification\\CoreNotifier' => __DIR__ . '/../../..' . '/core/Notification/CoreNotifier.php',
|
||||
'OC\\Core\\Service\\LoginFlowV2Service' => __DIR__ . '/../../..' . '/core/Service/LoginFlowV2Service.php',
|
||||
'OC\\DB\\Adapter' => __DIR__ . '/../../..' . '/lib/private/DB/Adapter.php',
|
||||
|
|
@ -1072,7 +1062,6 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
|
|||
'OC\\Federation\\CloudIdManager' => __DIR__ . '/../../..' . '/lib/private/Federation/CloudIdManager.php',
|
||||
'OC\\Files\\AppData\\AppData' => __DIR__ . '/../../..' . '/lib/private/Files/AppData/AppData.php',
|
||||
'OC\\Files\\AppData\\Factory' => __DIR__ . '/../../..' . '/lib/private/Files/AppData/Factory.php',
|
||||
'OC\\Files\\Cache\\AbstractCacheEvent' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/AbstractCacheEvent.php',
|
||||
'OC\\Files\\Cache\\Cache' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/Cache.php',
|
||||
'OC\\Files\\Cache\\CacheEntry' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/CacheEntry.php',
|
||||
'OC\\Files\\Cache\\CacheQueryBuilder' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/CacheQueryBuilder.php',
|
||||
|
|
|
|||
|
|
@ -48,6 +48,8 @@ OC.L10N.register(
|
|||
"in a few seconds" : "segundo gutxitan",
|
||||
"seconds ago" : "duela segundu batzuk",
|
||||
"Empty file" : "Fitxategi hutsa",
|
||||
"File already exists" : "Badago izen bereko fitxategi bat",
|
||||
"Templates" : "Txantiloiak",
|
||||
"File name is a reserved word" : "Fitxategi izena hitz erreserbatua da",
|
||||
"File name contains at least one invalid character" : "Fitxategi izenak karaktere baliogabe bat du gutxienez ",
|
||||
"File name is too long" : "Fitxategi-izena luzeegia da",
|
||||
|
|
|
|||
|
|
@ -46,6 +46,8 @@
|
|||
"in a few seconds" : "segundo gutxitan",
|
||||
"seconds ago" : "duela segundu batzuk",
|
||||
"Empty file" : "Fitxategi hutsa",
|
||||
"File already exists" : "Badago izen bereko fitxategi bat",
|
||||
"Templates" : "Txantiloiak",
|
||||
"File name is a reserved word" : "Fitxategi izena hitz erreserbatua da",
|
||||
"File name contains at least one invalid character" : "Fitxategi izenak karaktere baliogabe bat du gutxienez ",
|
||||
"File name is too long" : "Fitxategi-izena luzeegia da",
|
||||
|
|
|
|||
|
|
@ -120,18 +120,19 @@ OC.L10N.register(
|
|||
"Files can’t be shared with create permissions" : "無法分享具有新建權限的檔案",
|
||||
"Expiration date is in the past" : "到期日為過去的日期",
|
||||
"Can’t set expiration date more than %s days in the future" : "到期日不能設定為 %s 天以後的日期",
|
||||
"Sharing is only allowed with group members" : "僅允許在群組成員中共享",
|
||||
"%1$s shared »%2$s« with you" : "%1$s 與您分享了 %2$s",
|
||||
"%1$s shared »%2$s« with you." : "%1$s 與您分享了 %2$s",
|
||||
"Click the button below to open it." : "點下方連結開啟",
|
||||
"The requested share does not exist anymore" : "該分享已經不存在",
|
||||
"Could not find category \"%s\"" : "找不到分類:\"%s\"",
|
||||
"Sunday" : "週日",
|
||||
"Monday" : "週一",
|
||||
"Tuesday" : "週二",
|
||||
"Wednesday" : "週三",
|
||||
"Thursday" : "週四",
|
||||
"Friday" : "週五",
|
||||
"Saturday" : "週六",
|
||||
"Sunday" : "星期日",
|
||||
"Monday" : "星期一",
|
||||
"Tuesday" : "星期二",
|
||||
"Wednesday" : "星期三",
|
||||
"Thursday" : "星期四",
|
||||
"Friday" : "星期五",
|
||||
"Saturday" : "星期六",
|
||||
"Sun." : "日",
|
||||
"Mon." : "一",
|
||||
"Tue." : "二",
|
||||
|
|
@ -171,16 +172,16 @@ OC.L10N.register(
|
|||
"Nov." : "十一月",
|
||||
"Dec." : "十二月",
|
||||
"The user limit has been reached and the user was not created." : "用戶數量已達上限,無法創建新用戶。",
|
||||
"Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "使用者名稱當中只能包含下列字元:\"a-z\", \"A-Z\", \"0-9\", 和 \"_.@-'\"",
|
||||
"Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "用戶名稱當中只能包含下列字元:\"a-z\", \"A-Z\", \"0-9\", 和 \"_.@-'\"",
|
||||
"A valid username must be provided" : "必須提供一個有效的用戶名",
|
||||
"Username contains whitespace at the beginning or at the end" : "用戶名的開頭或結尾有空白",
|
||||
"Username must not consist of dots only" : "使用者名稱不能只包含小數點",
|
||||
"Username is invalid because files already exist for this user" : "使用者名稱無效,因為使用者的檔案已經存在",
|
||||
"A valid password must be provided" : "須提供有效的密碼",
|
||||
"The username is already being used" : "這個使用者名稱已經有人使用了",
|
||||
"Could not create user" : "無法建立使用者",
|
||||
"User disabled" : "使用者已停用",
|
||||
"Login canceled by app" : "應用程式取消了登入",
|
||||
"Could not create user" : "無法建立用戶",
|
||||
"User disabled" : "用戶已停用",
|
||||
"Login canceled by app" : "登錄已被應用程式取消",
|
||||
"App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "應用程式 \"%1$s\" 無法被安裝,缺少下列所需元件: %2$s",
|
||||
"a safe home for all your data" : "您資料的安全屋",
|
||||
"File is currently busy, please try again later" : "檔案目前忙碌中,請稍候再試",
|
||||
|
|
|
|||
|
|
@ -118,18 +118,19 @@
|
|||
"Files can’t be shared with create permissions" : "無法分享具有新建權限的檔案",
|
||||
"Expiration date is in the past" : "到期日為過去的日期",
|
||||
"Can’t set expiration date more than %s days in the future" : "到期日不能設定為 %s 天以後的日期",
|
||||
"Sharing is only allowed with group members" : "僅允許在群組成員中共享",
|
||||
"%1$s shared »%2$s« with you" : "%1$s 與您分享了 %2$s",
|
||||
"%1$s shared »%2$s« with you." : "%1$s 與您分享了 %2$s",
|
||||
"Click the button below to open it." : "點下方連結開啟",
|
||||
"The requested share does not exist anymore" : "該分享已經不存在",
|
||||
"Could not find category \"%s\"" : "找不到分類:\"%s\"",
|
||||
"Sunday" : "週日",
|
||||
"Monday" : "週一",
|
||||
"Tuesday" : "週二",
|
||||
"Wednesday" : "週三",
|
||||
"Thursday" : "週四",
|
||||
"Friday" : "週五",
|
||||
"Saturday" : "週六",
|
||||
"Sunday" : "星期日",
|
||||
"Monday" : "星期一",
|
||||
"Tuesday" : "星期二",
|
||||
"Wednesday" : "星期三",
|
||||
"Thursday" : "星期四",
|
||||
"Friday" : "星期五",
|
||||
"Saturday" : "星期六",
|
||||
"Sun." : "日",
|
||||
"Mon." : "一",
|
||||
"Tue." : "二",
|
||||
|
|
@ -169,16 +170,16 @@
|
|||
"Nov." : "十一月",
|
||||
"Dec." : "十二月",
|
||||
"The user limit has been reached and the user was not created." : "用戶數量已達上限,無法創建新用戶。",
|
||||
"Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "使用者名稱當中只能包含下列字元:\"a-z\", \"A-Z\", \"0-9\", 和 \"_.@-'\"",
|
||||
"Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "用戶名稱當中只能包含下列字元:\"a-z\", \"A-Z\", \"0-9\", 和 \"_.@-'\"",
|
||||
"A valid username must be provided" : "必須提供一個有效的用戶名",
|
||||
"Username contains whitespace at the beginning or at the end" : "用戶名的開頭或結尾有空白",
|
||||
"Username must not consist of dots only" : "使用者名稱不能只包含小數點",
|
||||
"Username is invalid because files already exist for this user" : "使用者名稱無效,因為使用者的檔案已經存在",
|
||||
"A valid password must be provided" : "須提供有效的密碼",
|
||||
"The username is already being used" : "這個使用者名稱已經有人使用了",
|
||||
"Could not create user" : "無法建立使用者",
|
||||
"User disabled" : "使用者已停用",
|
||||
"Login canceled by app" : "應用程式取消了登入",
|
||||
"Could not create user" : "無法建立用戶",
|
||||
"User disabled" : "用戶已停用",
|
||||
"Login canceled by app" : "登錄已被應用程式取消",
|
||||
"App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "應用程式 \"%1$s\" 無法被安裝,缺少下列所需元件: %2$s",
|
||||
"a safe home for all your data" : "您資料的安全屋",
|
||||
"File is currently busy, please try again later" : "檔案目前忙碌中,請稍候再試",
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue