summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/comments/l10n/is.js7
-rw-r--r--apps/comments/l10n/is.json7
-rw-r--r--apps/dashboard/lib/Service/BackgroundService.php58
-rw-r--r--apps/files/l10n/ar.js77
-rw-r--r--apps/files/l10n/ar.json77
-rw-r--r--apps/files/l10n/mk.js2
-rw-r--r--apps/files/l10n/mk.json2
-rw-r--r--apps/files/l10n/sv.js6
-rw-r--r--apps/files/l10n/sv.json6
-rw-r--r--apps/files/l10n/zh_CN.js2
-rw-r--r--apps/files/l10n/zh_CN.json2
-rw-r--r--apps/files_sharing/l10n/ar.js235
-rw-r--r--apps/files_sharing/l10n/ar.json235
-rw-r--r--apps/files_sharing/l10n/sl.js10
-rw-r--r--apps/files_sharing/l10n/sl.json10
-rw-r--r--apps/files_sharing/l10n/sv.js1
-rw-r--r--apps/files_sharing/l10n/sv.json1
-rw-r--r--apps/files_trashbin/lib/Storage.php2
-rw-r--r--apps/lookup_server_connector/l10n/sl.js3
-rw-r--r--apps/lookup_server_connector/l10n/sl.json3
-rw-r--r--apps/settings/templates/settings/personal/security/password.php2
-rw-r--r--apps/settings/tests/Mailer/NewUserMailHelperTest.php12
-rw-r--r--apps/user_status/l10n/ar.js38
-rw-r--r--apps/user_status/l10n/ar.json36
-rw-r--r--apps/workflowengine/l10n/sl.js2
-rw-r--r--apps/workflowengine/l10n/sl.json2
-rw-r--r--build/integration/sharing_features/sharing-v1.feature2
-rw-r--r--core/l10n/ar.js120
-rw-r--r--core/l10n/ar.json120
-rw-r--r--core/l10n/de_DE.js2
-rw-r--r--core/l10n/de_DE.json2
-rw-r--r--core/l10n/is.js8
-rw-r--r--core/l10n/is.json8
-rw-r--r--core/l10n/sl.js7
-rw-r--r--core/l10n/sl.json7
-rw-r--r--core/l10n/sv.js1
-rw-r--r--core/l10n/sv.json1
-rw-r--r--core/l10n/zh_CN.js3
-rw-r--r--core/l10n/zh_CN.json3
-rw-r--r--lib/base.php4
-rw-r--r--lib/l10n/sl.js2
-rw-r--r--lib/l10n/sl.json2
-rw-r--r--lib/private/AppFramework/Bootstrap/Coordinator.php22
-rw-r--r--lib/private/AppFramework/Bootstrap/RegistrationContext.php12
-rw-r--r--lib/private/AppFramework/Routing/RouteConfig.php8
-rw-r--r--lib/private/AppFramework/ScopedPsrLogger.php1
-rw-r--r--lib/private/DB/QueryBuilder/QueryBuilder.php8
-rw-r--r--lib/private/Installer.php4
-rw-r--r--lib/private/Mail/EMailTemplate.php4
-rw-r--r--lib/private/Route/Router.php8
-rw-r--r--lib/private/Share20/DefaultShareProvider.php2
-rw-r--r--lib/private/URLGenerator.php6
-rw-r--r--lib/public/AppFramework/App.php5
-rw-r--r--lib/public/AppFramework/Http/DataResponse.php8
-rw-r--r--lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php2
-rw-r--r--lib/public/Route/IRouter.php75
-rw-r--r--ocs/v1.php2
-rw-r--r--tests/data/emails/new-account-email-custom.html4
-rw-r--r--tests/data/emails/new-account-email-single-button.html4
-rw-r--r--tests/data/emails/new-account-email.html4
-rw-r--r--tests/lib/AppFramework/Controller/ControllerTest.php2
-rw-r--r--tests/lib/AppFramework/Http/DataResponseTest.php2
-rw-r--r--tests/lib/AppFramework/Http/EmptyContentSecurityPolicyTest.php114
-rw-r--r--tests/lib/AppFramework/Http/ResponseTest.php2
-rw-r--r--tests/lib/DB/QueryBuilder/QueryBuilderTest.php38
-rw-r--r--tests/lib/UrlGeneratorTest.php6
66 files changed, 1225 insertions, 248 deletions
diff --git a/apps/comments/l10n/is.js b/apps/comments/l10n/is.js
index b8c48def883..9dabc9e6a5e 100644
--- a/apps/comments/l10n/is.js
+++ b/apps/comments/l10n/is.js
@@ -15,12 +15,19 @@ OC.L10N.register(
"Files app plugin to add comments to files" : "Viðbót við skráaforrit til að bæta athugasemdum við skrár",
"Edit comment" : "Breyta athugasemd",
"Delete comment" : "Eyða athugasemd",
+ "Cancel edit" : "Hætta við breytingar",
+ "Post comment" : "Senda inn athugasemd",
"No comments yet, start the conversation!" : "Engar athugasemdir ennþá, byrjaðu umræðuna!",
+ "No more messages" : "Engin fleiri skilaboð",
"Retry" : "Reyna aftur",
+ "Unable to load the comments list" : "Gat ekki hlaðið inn lista yfir athugasemdir",
"_%n unread comment_::_%n unread comments_" : ["%n ólesin athugasemd","%n ólesnar athugasemdir"],
"_1 new comment_::_{unread} new comments_" : ["1 ný athugasemd","{unread} nýjar athugasemdir"],
"Comment" : "Athugasemd",
+ "An error occurred while trying to edit the comment" : "Villa átti sér stað við að breyta athugasemdinni",
"Comment deleted" : "Athugasemd var eytt",
+ "An error occurred while trying to delete the comment" : "Villa átti sér stað við að eyða athugasemdinni",
+ "An error occurred while trying to create the comment" : "Villa átti sér stað við að útbúa athugasemdina",
"New comment …" : "Ný athugasemd ...",
"Post" : "Senda",
"Cancel" : "Hætta við",
diff --git a/apps/comments/l10n/is.json b/apps/comments/l10n/is.json
index e60deab697f..5b85c357093 100644
--- a/apps/comments/l10n/is.json
+++ b/apps/comments/l10n/is.json
@@ -13,12 +13,19 @@
"Files app plugin to add comments to files" : "Viðbót við skráaforrit til að bæta athugasemdum við skrár",
"Edit comment" : "Breyta athugasemd",
"Delete comment" : "Eyða athugasemd",
+ "Cancel edit" : "Hætta við breytingar",
+ "Post comment" : "Senda inn athugasemd",
"No comments yet, start the conversation!" : "Engar athugasemdir ennþá, byrjaðu umræðuna!",
+ "No more messages" : "Engin fleiri skilaboð",
"Retry" : "Reyna aftur",
+ "Unable to load the comments list" : "Gat ekki hlaðið inn lista yfir athugasemdir",
"_%n unread comment_::_%n unread comments_" : ["%n ólesin athugasemd","%n ólesnar athugasemdir"],
"_1 new comment_::_{unread} new comments_" : ["1 ný athugasemd","{unread} nýjar athugasemdir"],
"Comment" : "Athugasemd",
+ "An error occurred while trying to edit the comment" : "Villa átti sér stað við að breyta athugasemdinni",
"Comment deleted" : "Athugasemd var eytt",
+ "An error occurred while trying to delete the comment" : "Villa átti sér stað við að eyða athugasemdinni",
+ "An error occurred while trying to create the comment" : "Villa átti sér stað við að útbúa athugasemdina",
"New comment …" : "Ný athugasemd ...",
"Post" : "Senda",
"Cancel" : "Hætta við",
diff --git a/apps/dashboard/lib/Service/BackgroundService.php b/apps/dashboard/lib/Service/BackgroundService.php
index 605f953d15b..69fd2c1301f 100644
--- a/apps/dashboard/lib/Service/BackgroundService.php
+++ b/apps/dashboard/lib/Service/BackgroundService.php
@@ -26,11 +26,18 @@ declare(strict_types=1);
namespace OCA\Dashboard\Service;
+use InvalidArgumentException;
+use OC\User\NoUserException;
+use OCP\Files\File;
use OCP\Files\IAppData;
use OCP\Files\IRootFolder;
use OCP\Files\NotFoundException;
+use OCP\Files\NotPermittedException;
use OCP\Files\SimpleFS\ISimpleFile;
+use OCP\Files\SimpleFS\ISimpleFolder;
use OCP\IConfig;
+use OCP\Lock\LockedException;
+use OCP\PreConditionNotMetException;
class BackgroundService {
public const THEMING_MODE_DARK = 'dark';
@@ -102,13 +109,13 @@ class BackgroundService {
]
];
/**
- * @var \OCP\Files\Folder
+ * @var IRootFolder
*/
- private $userFolder;
+ private $rootFolder;
/**
- * @var \OCP\Files\SimpleFS\ISimpleFolder
+ * @var IAppData
*/
- private $dashboardUserFolder;
+ private $appData;
/**
* @var IConfig
*/
@@ -119,12 +126,8 @@ class BackgroundService {
if ($userId === null) {
return;
}
- $this->userFolder = $rootFolder->getUserFolder($userId);
- try {
- $this->dashboardUserFolder = $appData->getFolder($userId);
- } catch (NotFoundException $e) {
- $this->dashboardUserFolder = $appData->newFolder($userId);
- }
+ $this->rootFolder = $rootFolder;
+ $this->appData = $appData;
$this->config = $config;
$this->userId = $userId;
}
@@ -136,26 +139,29 @@ class BackgroundService {
/**
* @param $path
* @throws NotFoundException
- * @throws \OCP\Files\NotPermittedException
- * @throws \OCP\PreConditionNotMetException
+ * @throws NotPermittedException
+ * @throws LockedException
+ * @throws PreConditionNotMetException
+ * @throws NoUserException
*/
public function setFileBackground($path): void {
$this->config->setUserValue($this->userId, 'dashboard', 'background', 'custom');
- /** @var \OCP\Files\File $file */
- $file = $this->userFolder->get($path);
- $this->dashboardUserFolder->newFile('background.jpg', $file->fopen('r'));
+ $userFolder = $this->rootFolder->getUserFolder($this->userId);
+ /** @var File $file */
+ $file = $userFolder->get($path);
+ $this->getAppDataFolder()->newFile('background.jpg', $file->fopen('r'));
}
public function setShippedBackground($fileName): void {
if (!array_key_exists($fileName, self::SHIPPED_BACKGROUNDS)) {
- throw new \InvalidArgumentException('The given file name is invalid');
+ throw new InvalidArgumentException('The given file name is invalid');
}
$this->config->setUserValue($this->userId, 'dashboard', 'background', $fileName);
}
public function setColorBackground(string $color): void {
- if (!preg_match('/^\#([0-9a-f]{3}|[0-9a-f]{6})$/i', $color)) {
- throw new \InvalidArgumentException('The given color is invalid');
+ if (!preg_match('/^#([0-9a-f]{3}|[0-9a-f]{6})$/i', $color)) {
+ throw new InvalidArgumentException('The given color is invalid');
}
$this->config->setUserValue($this->userId, 'dashboard', 'background', $color);
}
@@ -164,10 +170,22 @@ class BackgroundService {
$background = $this->config->getUserValue($this->userId, 'dashboard', 'background', 'default');
if ($background === 'custom') {
try {
- return $this->dashboardUserFolder->getFile('background.jpg');
- } catch (NotFoundException $e) {
+ return $this->getAppDataFolder()->getFile('background.jpg');
+ } catch (NotFoundException | NotPermittedException $e) {
}
}
return null;
}
+
+ /**
+ * @return ISimpleFolder
+ * @throws NotPermittedException
+ */
+ private function getAppDataFolder(): ISimpleFolder {
+ try {
+ return $this->appData->getFolder($this->userId);
+ } catch (NotFoundException $e) {
+ return $this->appData->newFolder($this->userId);
+ }
+ }
}
diff --git a/apps/files/l10n/ar.js b/apps/files/l10n/ar.js
index 0bfcfb0200a..db9e304b367 100644
--- a/apps/files/l10n/ar.js
+++ b/apps/files/l10n/ar.js
@@ -12,23 +12,30 @@ OC.L10N.register(
"Close" : "إغلاق",
"Favorites" : "المفضلة ",
"Could not create folder \"{dir}\"" : "لا يمكن إنشاء المجلد \"{dir}\"",
+ "This will stop your current uploads." : "سيتم ايقاف رفع الملفات الحالية.",
"Upload cancelled." : "تم إلغاء عملية رفع الملفات.",
+ "Processing files …" : "معالجة الملفات…",
"…" : "...",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "تعذر رفع الملف {filename} إما لأنه مجلد أو لان حجم الملف 0 بايت",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "لا يوجد مساحة تخزين كافية، إنك بصدد رفع {size1} ولكن المساحة المتبقية المتوفرة تبلُغ {size2}",
"Target folder \"{dir}\" does not exist any more" : "المجلد المطلوب \"{dir}\" غير موجود بعد الان",
"Not enough free space" : "لا يوجد مساحة تخزينية كافية",
+ "An unknown error has occurred" : "حدث خطأ غير معروف",
"Uploading …" : "جاري الرفع...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} من {totalSize} ({bitrate})",
+ "Uploading that item is not supported" : "رفع هذا النوع الملفات غير مدعوم",
"Target folder does not exist any more" : "المجلد المراد غير موجود بعد الان",
+ "Operation is blocked by access control" : "العمليات حظرت الوصول لهذه الخدمة",
"Error when assembling chunks, status code {status}" : "خطأ عند تجميع القطع، حالة الخطأ {status}",
"Actions" : "الإجراءات",
"Rename" : "إعادة التسمية",
"Copy" : "نسخ",
+ "Choose target folder" : "اختر مكان المجلد",
"Open" : "افتح",
"Delete file" : "احذف الملف",
"Delete folder" : "حذف المجلد",
"Disconnect storage" : "قطع اتصال التخزين",
+ "Leave this share" : "مغادرة هذه المشاركة",
"Could not load info for file \"{file}\"" : "لم يستطع تحميل معلومات الملف \"{file}\"",
"Files" : "الملفات",
"Details" : "التفاصيل",
@@ -51,8 +58,10 @@ OC.L10N.register(
"Could not create file \"{file}\"" : "لا يمكن إنشاء الملف\"{file}\"",
"Could not create file \"{file}\" because it already exists" : "لا يمكن إنشاء الملف \"{file}\" فهو موجود بالفعل",
"Could not create folder \"{dir}\" because it already exists" : "لا يمكن إنشاء المجلد \"{dir}\" فهو موجود بالفعل",
+ "Could not fetch file details \"{file}\"" : "لم يتم الوصول إلى معلومات \"{file}\"",
"Error deleting file \"{fileName}\"." : "خطأ أثناء حذف الملف \"{fileName}\".",
"No search results in other folders for {tag}{filter}{endtag}" : "لا نتائج بحث في مجلدات اخرى ل {tag}{filter}{endtag}",
+ "Enter more than two characters to search in other folders" : "ادخل حرفين على الاقل للبحث في المجلدات",
"Name" : "الإسم",
"Size" : "الحجم",
"Modified" : "معدل",
@@ -63,6 +72,7 @@ OC.L10N.register(
"You don’t have permission to upload or create files here" : "لا تملك الصلاحية لرفع او انشاء ملف هنا ",
"_Uploading %n file_::_Uploading %n files_" : ["لا يوجد ملفات %n لتحميلها","تحميل 1 ملف %n","تحميل 2 ملف %n","يتم تحميل عدد قليل من ملفات %n","يتم تحميل عدد كبير من ملفات %n","يتم تحميل ملفات %n"],
"New" : "جديد",
+ "Select file range" : "حدد نطاق الملف",
"{used} of {quota} used" : "{used} من {quota} مستخدم",
"{used} used" : "{used} مستخدم",
"\"{name}\" is an invalid file name." : "\"{name}\" اسم ملف غير صالح للاستخدام .",
@@ -70,7 +80,13 @@ OC.L10N.register(
"\"/\" is not allowed inside a file name." : "\"/\" غير مسموح في تسمية الملف",
"\"{name}\" is not an allowed filetype" : "\"{name}\" أنه نوع ملف غير مسموح",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "مساحة تخزين {owner} ممتلئة، لا يمكن تحديث الملفات او مزامنتها بعد الان !",
+ "Group folder \"{mountPoint}\" is full, files can not be updated or synced anymore!" : "مجلد مجموعة \"{mountPoint}\" ممتلئ, لا يمكن تحديث او مزامنة الملفات بعد الآن!",
+ "External storage \"{mountPoint}\" is full, files can not be updated or synced anymore!" : "التخزين الخارجي \"{mountPoint}\" ممتلئ, لا يمكن تحديث او مزامنة الملفات بعد الآن!",
"Your storage is full, files can not be updated or synced anymore!" : "مساحتك التخزينية ممتلئة, لا يمكن تحديث ملفاتك أو مزامنتها بعد الآن !",
+ "Storage of {owner} is almost full ({usedSpacePercent}%)." : "تخزين {owner} شبه ممتلئ ({usedSpacePercent}%).",
+ "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "مجلد مجموعة \"{mountPoint}\" شبه ممتلئ ({usedSpacePercent}%).",
+ "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "التخزين الخارجي \"{mountPoint}\" شبه ممتلئ ({usedSpacePercent}%).",
+ "Your storage is almost full ({usedSpacePercent}%)." : "مساحة التخزين الخاصة بك شبه ممتلئة ({usedSpacePercent}%).",
"View in folder" : "اعرض في المجلد",
"Copied!" : "نسخت!",
"Copy direct link (only works for users who have access to this file/folder)" : "نسخ الرابط المباشر (يعمل فقط لـ المستخدمين الذين يمكنهم الولوج الى هذا الملف/الفايل)",
@@ -78,31 +94,85 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["بايت","بايت","بايت","بايت","بايت","%nبايت"],
"Favorited" : "المفضلة",
"Favorite" : "المفضلة",
+ "You can only favorite a single file or folder at a time" : "يمكنك فقط تفضيل ملف أو مجلد واحد في المرة الواحدة",
"New folder" : "مجلد جديد",
"Upload file" : "رفع ملف",
"Recent" : "الحديثة",
+ "Not favorited" : "ازالة من المفضلة",
"Remove from favorites" : "إزالته مِن المفضلة",
"Add to favorites" : "إضافة إلى المفضلة",
"An error occurred while trying to update the tags" : "حدث خطأ اثناء محاولة تحديث tags",
"Added to favorites" : "تمت إضافته إلى المفضلة",
"Removed from favorites" : "تمت إزالته مِن المفضلة",
+ "You added {file} to your favorites" : "أنت اضفت {file} إلى مفضلتك",
+ "You removed {file} from your favorites" : "تم ازالت {file} من مفضلتك",
+ "File changes" : "تغيير في ملف",
+ "Created by {user}" : "انشاء جديد من قبل {user}",
+ "Changed by {user}" : "تغيير من قبل {user}",
+ "Deleted by {user}" : "حذف من قبل {user}",
+ "Restored by {user}" : "استعادة من قبل {user}",
+ "Renamed by {user}" : "اعادة تسمية من قبل {user}",
+ "Moved by {user}" : "نقل من قبل {user}",
"\"remote user\"" : "\"مستخدم عن بعد\"",
"You created {file}" : "أنشأتَ {file}",
+ "You created an encrypted file in {file}" : "أنت انشأت ملف مشفر في {file}",
+ "{user} created {file}" : "{user} انشاء ملف {file}",
+ "{user} created an encrypted file in {file}" : "{user} انشاء ملف مشفر {file}",
+ "{file} was created in a public folder" : "{file} انشاء ملف في المجلد العام",
+ "You changed {file}" : "أنت قمت بتغيير {file}",
+ "You changed an encrypted file in {file}" : "أنت قمت بتغيير ملف مشفر {file}",
+ "{user} changed {file}" : "{user} تغيير {file}",
+ "{user} changed an encrypted file in {file}" : "{user} تغيير ملف مشفر {file}",
+ "You deleted {file}" : "أنت حذفت ملف {file}",
+ "You deleted an encrypted file in {file}" : "أنت حذفت ملف مشفر {file}",
+ "{user} deleted {file}" : "{user} حذف {file}",
+ "{user} deleted an encrypted file in {file}" : "{user} حذف ملف مشفر {file}",
+ "You restored {file}" : "أنت قمت باستعادة {file}",
+ "{user} restored {file}" : "{user} استعادة ملف {file}",
+ "You renamed {oldfile} to {newfile}" : "أنت أعدت تسمية {oldfile} إلى {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} اعادة تسمية {oldfile} إلى {newfile}",
+ "You moved {oldfile} to {newfile}" : "أنت نقلت {oldfile} إلى {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} نقل {oldfile} إلى {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "ملف اضيف إلى او تم ازالته من <strong> مفضلتك </strong>",
"A file or folder has been <strong>changed</strong>" : "تم <strong> تغيير</strong> ملف أو مجلد",
+ "A favorite file or folder has been <strong>changed</strong>" : "ملف في المفضلة تم <strong>تم تغييره</strong>",
"All files" : "كل الملفات",
"Unlimited" : "غير محدود",
"Upload (max. %s)" : "الرفع ( حد اقصى. %s ) ",
"Accept" : "قبول",
+ "Reject" : "رفض",
+ "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ملاحظة: عملية موافقة على النقل قد تستغرق إلى 1 ساعة.",
+ "Ownership transfer failed" : "فشل نقل ملكية",
+ "Your ownership transfer of {path} to {user} failed." : "فشلت عمليتك لنقل الـ {path} إلى {user}",
+ "The ownership transfer of {path} from {user} failed." : "فشل عملية النقل لـ {path} من قبل {user}",
+ "Ownership transfer done" : "تم نقل ملكية بنجاح",
+ "Your ownership transfer of {path} to {user} has completed." : "عمليتك لنقل الـ {path} إلى {user} تمت بنجاح.",
+ "The ownership transfer of {path} from {user} has completed." : "نقل الملكية لـ {path} من قبل {user} تمت بنجاح.",
"in %s" : "في %s",
"File Management" : "إدارة الملفات",
"Transfer ownership of a file or folder" : "تحويل ملكية ملف أو مجلد",
+ "Choose file or folder to transfer" : "اختر ملف او مجلد لنقل الملكية",
+ "Change" : "تغير",
+ "New owner" : "مالك جديد",
+ "Search users" : "ابحث عن مستخدمين",
+ "Choose a file or folder to transfer" : "اختر ملف او مجلد لنقل الملكية",
+ "Transfer" : "نقل ملكية",
+ "Transfer {path} to {userid}" : "نقل ملكية {path} إلى {userid}",
+ "Invalid path selected" : "المسار او الملف غير صحيح",
+ "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" : "لم نستطع تغير الحالة المفضلة للملف",
+ "Error while loading the file data" : "خطأ اثناء تحميل بيانات الملف",
"%s used" : "%s مُستخدَم",
+ "%s%% of %s used" : "%s%% من %s قيد الاستخدام",
"%1$s of %2$s used" : "تم استخدام %1$s من %2$s",
"Settings" : "الإعدادات",
"Show hidden files" : "عرض الملفات المخفية",
"WebDAV" : "WebDAV",
+ "Use this address to access your Files via WebDAV" : "استخدم هذا العنوان للوصول للملفات عبر WebDAV",
+ "Toggle grid view" : "تفعيل/تعطيل القائمة",
"No files in here" : "لا يوجد ملفات هنا ",
"Upload some content or sync with your devices!" : "ارفع بعض المحتوي او زامن مع اجهزتك !",
"No entries found in this folder" : "لا يوجد مدخلات في هذا المجلد ",
@@ -116,14 +186,21 @@ OC.L10N.register(
"Shared with others" : "شاركته مع الاخرين",
"Shared with you" : "شورك معك",
"Shared by link" : "شاركته باستخدام رابط مشاركة",
+ "Deleted shares" : "تم حذف المشاركات",
+ "Pending shares" : "انتظار المشاركات",
"Text file" : "ملف نصي",
"New text file.txt" : "ملف نصي جديد fille.txt",
"Unshare" : "إلغاء المشاركة",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "المساحة التخزينية لـ {owner} ممتلئة تقريبا ({usedSpacePercent}%)",
+ "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)" : "مجلد مجموعة \"{mountPoint}\" شبه ممتلئ ({usedSpacePercent}%).",
+ "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)" : "التخزين الخارجي \"{mountPoint}\" شبه ممتلئ ({usedSpacePercent}%).",
"Your storage is almost full ({usedSpacePercent}%)" : "مساحتك التخزينية امتلأت تقريبا ",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "تم <strong>تغيير</strong> أو <strong>إعادة تسمية</strong> ملف أو مجلد",
"A new file or folder has been <strong>created</strong>" : "تم <strong> إنشاء</strong> ملف جديد أو مجلد ",
"A file or folder has been <strong>deleted</strong>" : "تم <strong>حذف </strong> ملف أو مجلد",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "تحديد تنبيهات حول تغييرات <strong>ملفاتك المفضلة</strong> <em>(البث فقط)</em>",
"A file or folder has been <strong>restored</strong>" : "تم <strong> استعادة </strong> ملف أو مجلد",
+ "Cannot transfter ownership of a file or folder you don't own" : "لا يمكن نقل ملكية ملف او مجلد لا تملكه انت",
"Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">access your Files via WebDAV</a>" : "استخدم هذا العنوان قصد <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">الوصول إلى ملفاتك على WebDAV</a>"
},
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
diff --git a/apps/files/l10n/ar.json b/apps/files/l10n/ar.json
index 47387ee3216..13a4ff9476c 100644
--- a/apps/files/l10n/ar.json
+++ b/apps/files/l10n/ar.json
@@ -10,23 +10,30 @@
"Close" : "إغلاق",
"Favorites" : "المفضلة ",
"Could not create folder \"{dir}\"" : "لا يمكن إنشاء المجلد \"{dir}\"",
+ "This will stop your current uploads." : "سيتم ايقاف رفع الملفات الحالية.",
"Upload cancelled." : "تم إلغاء عملية رفع الملفات.",
+ "Processing files …" : "معالجة الملفات…",
"…" : "...",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "تعذر رفع الملف {filename} إما لأنه مجلد أو لان حجم الملف 0 بايت",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "لا يوجد مساحة تخزين كافية، إنك بصدد رفع {size1} ولكن المساحة المتبقية المتوفرة تبلُغ {size2}",
"Target folder \"{dir}\" does not exist any more" : "المجلد المطلوب \"{dir}\" غير موجود بعد الان",
"Not enough free space" : "لا يوجد مساحة تخزينية كافية",
+ "An unknown error has occurred" : "حدث خطأ غير معروف",
"Uploading …" : "جاري الرفع...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} من {totalSize} ({bitrate})",
+ "Uploading that item is not supported" : "رفع هذا النوع الملفات غير مدعوم",
"Target folder does not exist any more" : "المجلد المراد غير موجود بعد الان",
+ "Operation is blocked by access control" : "العمليات حظرت الوصول لهذه الخدمة",
"Error when assembling chunks, status code {status}" : "خطأ عند تجميع القطع، حالة الخطأ {status}",
"Actions" : "الإجراءات",
"Rename" : "إعادة التسمية",
"Copy" : "نسخ",
+ "Choose target folder" : "اختر مكان المجلد",
"Open" : "افتح",
"Delete file" : "احذف الملف",
"Delete folder" : "حذف المجلد",
"Disconnect storage" : "قطع اتصال التخزين",
+ "Leave this share" : "مغادرة هذه المشاركة",
"Could not load info for file \"{file}\"" : "لم يستطع تحميل معلومات الملف \"{file}\"",
"Files" : "الملفات",
"Details" : "التفاصيل",
@@ -49,8 +56,10 @@
"Could not create file \"{file}\"" : "لا يمكن إنشاء الملف\"{file}\"",
"Could not create file \"{file}\" because it already exists" : "لا يمكن إنشاء الملف \"{file}\" فهو موجود بالفعل",
"Could not create folder \"{dir}\" because it already exists" : "لا يمكن إنشاء المجلد \"{dir}\" فهو موجود بالفعل",
+ "Could not fetch file details \"{file}\"" : "لم يتم الوصول إلى معلومات \"{file}\"",
"Error deleting file \"{fileName}\"." : "خطأ أثناء حذف الملف \"{fileName}\".",
"No search results in other folders for {tag}{filter}{endtag}" : "لا نتائج بحث في مجلدات اخرى ل {tag}{filter}{endtag}",
+ "Enter more than two characters to search in other folders" : "ادخل حرفين على الاقل للبحث في المجلدات",
"Name" : "الإسم",
"Size" : "الحجم",
"Modified" : "معدل",
@@ -61,6 +70,7 @@
"You don’t have permission to upload or create files here" : "لا تملك الصلاحية لرفع او انشاء ملف هنا ",
"_Uploading %n file_::_Uploading %n files_" : ["لا يوجد ملفات %n لتحميلها","تحميل 1 ملف %n","تحميل 2 ملف %n","يتم تحميل عدد قليل من ملفات %n","يتم تحميل عدد كبير من ملفات %n","يتم تحميل ملفات %n"],
"New" : "جديد",
+ "Select file range" : "حدد نطاق الملف",
"{used} of {quota} used" : "{used} من {quota} مستخدم",
"{used} used" : "{used} مستخدم",
"\"{name}\" is an invalid file name." : "\"{name}\" اسم ملف غير صالح للاستخدام .",
@@ -68,7 +78,13 @@
"\"/\" is not allowed inside a file name." : "\"/\" غير مسموح في تسمية الملف",
"\"{name}\" is not an allowed filetype" : "\"{name}\" أنه نوع ملف غير مسموح",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "مساحة تخزين {owner} ممتلئة، لا يمكن تحديث الملفات او مزامنتها بعد الان !",
+ "Group folder \"{mountPoint}\" is full, files can not be updated or synced anymore!" : "مجلد مجموعة \"{mountPoint}\" ممتلئ, لا يمكن تحديث او مزامنة الملفات بعد الآن!",
+ "External storage \"{mountPoint}\" is full, files can not be updated or synced anymore!" : "التخزين الخارجي \"{mountPoint}\" ممتلئ, لا يمكن تحديث او مزامنة الملفات بعد الآن!",
"Your storage is full, files can not be updated or synced anymore!" : "مساحتك التخزينية ممتلئة, لا يمكن تحديث ملفاتك أو مزامنتها بعد الآن !",
+ "Storage of {owner} is almost full ({usedSpacePercent}%)." : "تخزين {owner} شبه ممتلئ ({usedSpacePercent}%).",
+ "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "مجلد مجموعة \"{mountPoint}\" شبه ممتلئ ({usedSpacePercent}%).",
+ "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "التخزين الخارجي \"{mountPoint}\" شبه ممتلئ ({usedSpacePercent}%).",
+ "Your storage is almost full ({usedSpacePercent}%)." : "مساحة التخزين الخاصة بك شبه ممتلئة ({usedSpacePercent}%).",
"View in folder" : "اعرض في المجلد",
"Copied!" : "نسخت!",
"Copy direct link (only works for users who have access to this file/folder)" : "نسخ الرابط المباشر (يعمل فقط لـ المستخدمين الذين يمكنهم الولوج الى هذا الملف/الفايل)",
@@ -76,31 +92,85 @@
"_%n byte_::_%n bytes_" : ["بايت","بايت","بايت","بايت","بايت","%nبايت"],
"Favorited" : "المفضلة",
"Favorite" : "المفضلة",
+ "You can only favorite a single file or folder at a time" : "يمكنك فقط تفضيل ملف أو مجلد واحد في المرة الواحدة",
"New folder" : "مجلد جديد",
"Upload file" : "رفع ملف",
"Recent" : "الحديثة",
+ "Not favorited" : "ازالة من المفضلة",
"Remove from favorites" : "إزالته مِن المفضلة",
"Add to favorites" : "إضافة إلى المفضلة",
"An error occurred while trying to update the tags" : "حدث خطأ اثناء محاولة تحديث tags",
"Added to favorites" : "تمت إضافته إلى المفضلة",
"Removed from favorites" : "تمت إزالته مِن المفضلة",
+ "You added {file} to your favorites" : "أنت اضفت {file} إلى مفضلتك",
+ "You removed {file} from your favorites" : "تم ازالت {file} من مفضلتك",
+ "File changes" : "تغيير في ملف",
+ "Created by {user}" : "انشاء جديد من قبل {user}",
+ "Changed by {user}" : "تغيير من قبل {user}",
+ "Deleted by {user}" : "حذف من قبل {user}",
+ "Restored by {user}" : "استعادة من قبل {user}",
+ "Renamed by {user}" : "اعادة تسمية من قبل {user}",
+ "Moved by {user}" : "نقل من قبل {user}",
"\"remote user\"" : "\"مستخدم عن بعد\"",
"You created {file}" : "أنشأتَ {file}",
+ "You created an encrypted file in {file}" : "أنت انشأت ملف مشفر في {file}",
+ "{user} created {file}" : "{user} انشاء ملف {file}",
+ "{user} created an encrypted file in {file}" : "{user} انشاء ملف مشفر {file}",
+ "{file} was created in a public folder" : "{file} انشاء ملف في المجلد العام",
+ "You changed {file}" : "أنت قمت بتغيير {file}",
+ "You changed an encrypted file in {file}" : "أنت قمت بتغيير ملف مشفر {file}",
+ "{user} changed {file}" : "{user} تغيير {file}",
+ "{user} changed an encrypted file in {file}" : "{user} تغيير ملف مشفر {file}",
+ "You deleted {file}" : "أنت حذفت ملف {file}",
+ "You deleted an encrypted file in {file}" : "أنت حذفت ملف مشفر {file}",
+ "{user} deleted {file}" : "{user} حذف {file}",
+ "{user} deleted an encrypted file in {file}" : "{user} حذف ملف مشفر {file}",
+ "You restored {file}" : "أنت قمت باستعادة {file}",
+ "{user} restored {file}" : "{user} استعادة ملف {file}",
+ "You renamed {oldfile} to {newfile}" : "أنت أعدت تسمية {oldfile} إلى {newfile}",
+ "{user} renamed {oldfile} to {newfile}" : "{user} اعادة تسمية {oldfile} إلى {newfile}",
+ "You moved {oldfile} to {newfile}" : "أنت نقلت {oldfile} إلى {newfile}",
+ "{user} moved {oldfile} to {newfile}" : "{user} نقل {oldfile} إلى {newfile}",
+ "A file has been added to or removed from your <strong>favorites</strong>" : "ملف اضيف إلى او تم ازالته من <strong> مفضلتك </strong>",
"A file or folder has been <strong>changed</strong>" : "تم <strong> تغيير</strong> ملف أو مجلد",
+ "A favorite file or folder has been <strong>changed</strong>" : "ملف في المفضلة تم <strong>تم تغييره</strong>",
"All files" : "كل الملفات",
"Unlimited" : "غير محدود",
"Upload (max. %s)" : "الرفع ( حد اقصى. %s ) ",
"Accept" : "قبول",
+ "Reject" : "رفض",
+ "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ملاحظة: عملية موافقة على النقل قد تستغرق إلى 1 ساعة.",
+ "Ownership transfer failed" : "فشل نقل ملكية",
+ "Your ownership transfer of {path} to {user} failed." : "فشلت عمليتك لنقل الـ {path} إلى {user}",
+ "The ownership transfer of {path} from {user} failed." : "فشل عملية النقل لـ {path} من قبل {user}",
+ "Ownership transfer done" : "تم نقل ملكية بنجاح",
+ "Your ownership transfer of {path} to {user} has completed." : "عمليتك لنقل الـ {path} إلى {user} تمت بنجاح.",
+ "The ownership transfer of {path} from {user} has completed." : "نقل الملكية لـ {path} من قبل {user} تمت بنجاح.",
"in %s" : "في %s",
"File Management" : "إدارة الملفات",
"Transfer ownership of a file or folder" : "تحويل ملكية ملف أو مجلد",
+ "Choose file or folder to transfer" : "اختر ملف او مجلد لنقل الملكية",
+ "Change" : "تغير",
+ "New owner" : "مالك جديد",
+ "Search users" : "ابحث عن مستخدمين",
+ "Choose a file or folder to transfer" : "اختر ملف او مجلد لنقل الملكية",
+ "Transfer" : "نقل ملكية",
+ "Transfer {path} to {userid}" : "نقل ملكية {path} إلى {userid}",
+ "Invalid path selected" : "المسار او الملف غير صحيح",
+ "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" : "لم نستطع تغير الحالة المفضلة للملف",
+ "Error while loading the file data" : "خطأ اثناء تحميل بيانات الملف",
"%s used" : "%s مُستخدَم",
+ "%s%% of %s used" : "%s%% من %s قيد الاستخدام",
"%1$s of %2$s used" : "تم استخدام %1$s من %2$s",
"Settings" : "الإعدادات",
"Show hidden files" : "عرض الملفات المخفية",
"WebDAV" : "WebDAV",
+ "Use this address to access your Files via WebDAV" : "استخدم هذا العنوان للوصول للملفات عبر WebDAV",
+ "Toggle grid view" : "تفعيل/تعطيل القائمة",
"No files in here" : "لا يوجد ملفات هنا ",
"Upload some content or sync with your devices!" : "ارفع بعض المحتوي او زامن مع اجهزتك !",
"No entries found in this folder" : "لا يوجد مدخلات في هذا المجلد ",
@@ -114,14 +184,21 @@
"Shared with others" : "شاركته مع الاخرين",
"Shared with you" : "شورك معك",
"Shared by link" : "شاركته باستخدام رابط مشاركة",
+ "Deleted shares" : "تم حذف المشاركات",
+ "Pending shares" : "انتظار المشاركات",
"Text file" : "ملف نصي",
"New text file.txt" : "ملف نصي جديد fille.txt",
"Unshare" : "إلغاء المشاركة",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "المساحة التخزينية لـ {owner} ممتلئة تقريبا ({usedSpacePercent}%)",
+ "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)" : "مجلد مجموعة \"{mountPoint}\" شبه ممتلئ ({usedSpacePercent}%).",
+ "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)" : "التخزين الخارجي \"{mountPoint}\" شبه ممتلئ ({usedSpacePercent}%).",
"Your storage is almost full ({usedSpacePercent}%)" : "مساحتك التخزينية امتلأت تقريبا ",
+ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "تم <strong>تغيير</strong> أو <strong>إعادة تسمية</strong> ملف أو مجلد",
"A new file or folder has been <strong>created</strong>" : "تم <strong> إنشاء</strong> ملف جديد أو مجلد ",
"A file or folder has been <strong>deleted</strong>" : "تم <strong>حذف </strong> ملف أو مجلد",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "تحديد تنبيهات حول تغييرات <strong>ملفاتك المفضلة</strong> <em>(البث فقط)</em>",
"A file or folder has been <strong>restored</strong>" : "تم <strong> استعادة </strong> ملف أو مجلد",
+ "Cannot transfter ownership of a file or folder you don't own" : "لا يمكن نقل ملكية ملف او مجلد لا تملكه انت",
"Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">access your Files via WebDAV</a>" : "استخدم هذا العنوان قصد <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">الوصول إلى ملفاتك على WebDAV</a>"
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
} \ No newline at end of file
diff --git a/apps/files/l10n/mk.js b/apps/files/l10n/mk.js
index d54478a5102..6dc4b003372 100644
--- a/apps/files/l10n/mk.js
+++ b/apps/files/l10n/mk.js
@@ -193,6 +193,8 @@ OC.L10N.register(
"New text file.txt" : "Нова текстуална датотека file.txt",
"Unshare" : "Не споделувај",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "Скалдиштето на {owner} е скоро исполнето ({usedSpacePercent}%)",
+ "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)" : "Групната папка \"{mountPoint}\" е скоро исполнета ({usedSpacePercent}%)",
+ "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)" : "Надворешното складиште \"{mountPoint}\" е скоро исполнето ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Вашиот сториџ е скоро полн ({usedSpacePercent}%)",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Датотека или папка е <strong>променета</strong> или <strong>преименувана</strong>",
"A new file or folder has been <strong>created</strong>" : "Датотека или папка е <strong>креирана</strong>",
diff --git a/apps/files/l10n/mk.json b/apps/files/l10n/mk.json
index 022f7371995..04afd36b70f 100644
--- a/apps/files/l10n/mk.json
+++ b/apps/files/l10n/mk.json
@@ -191,6 +191,8 @@
"New text file.txt" : "Нова текстуална датотека file.txt",
"Unshare" : "Не споделувај",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "Скалдиштето на {owner} е скоро исполнето ({usedSpacePercent}%)",
+ "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)" : "Групната папка \"{mountPoint}\" е скоро исполнета ({usedSpacePercent}%)",
+ "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)" : "Надворешното складиште \"{mountPoint}\" е скоро исполнето ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Вашиот сториџ е скоро полн ({usedSpacePercent}%)",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Датотека или папка е <strong>променета</strong> или <strong>преименувана</strong>",
"A new file or folder has been <strong>created</strong>" : "Датотека или папка е <strong>креирана</strong>",
diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js
index bc727e61315..e2910c5155f 100644
--- a/apps/files/l10n/sv.js
+++ b/apps/files/l10n/sv.js
@@ -80,8 +80,12 @@ OC.L10N.register(
"\"/\" is not allowed inside a file name." : "\"/\" är inte tillåtet i ett filnamn.",
"\"{name}\" is not an allowed filetype" : "\"{name}\" är inte en tillåten filtyp",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Lagring av {owner} är full, filer kan inte uppdateras eller synkroniseras längre!",
+ "Group folder \"{mountPoint}\" is full, files can not be updated or synced anymore!" : "Gruppmapp \"{mountPoint}\" är full, filer kan inte uppdateras eller synkroniseras längre!",
+ "External storage \"{mountPoint}\" is full, files can not be updated or synced anymore!" : "Extern lagring \"{mountPoint}\" är full, filer kan inte uppdateras eller synkroniseras längre!",
"Your storage is full, files can not be updated or synced anymore!" : "Ditt lagringsutrymme är fullt, filer kan inte längre uppdateras eller synkroniseras!",
"Storage of {owner} is almost full ({usedSpacePercent}%)." : "Lagring av {owner} är nästan full ({usedSpacePercent}%).",
+ "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "Gruppmapp \"{mountPoint}\" är nästan full ({usedSpacePercent}%).",
+ "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "Extern lagring \"{mountPoint}\" är nästan full ({usedSpacePercent}%).",
"Your storage is almost full ({usedSpacePercent}%)." : "Ditt lagringsutrymme är nästan fullt ({usedSpacePercent}%).",
"_matches '{filter}'_::_match '{filter}'_" : ["matchar '{filter}'","matcha '{filter}'"],
"View in folder" : "Utforska i mapp",
@@ -189,6 +193,8 @@ OC.L10N.register(
"New text file.txt" : "Ny textfil.txt",
"Unshare" : "Sluta dela",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "Lagring av {owner} är nästan full ({usedSpacePercent}%)",
+ "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)" : "Gruppmapp \"{mountPoint}\" är nästan full ({usedSpacePercent}%)",
+ "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)" : "Extern lagring \"{mountPoint}\" är nästan full ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Ditt lagringsutrymme är nästan fullt ({usedSpacePercent}%)",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "En fil har blivit <strong>ändrad</strong> eller <strong>bytt namn</strong>",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mapp har blivit <strong>skapad</strong>",
diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json
index 2a1f6e117a9..5e20af59b8f 100644
--- a/apps/files/l10n/sv.json
+++ b/apps/files/l10n/sv.json
@@ -78,8 +78,12 @@
"\"/\" is not allowed inside a file name." : "\"/\" är inte tillåtet i ett filnamn.",
"\"{name}\" is not an allowed filetype" : "\"{name}\" är inte en tillåten filtyp",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Lagring av {owner} är full, filer kan inte uppdateras eller synkroniseras längre!",
+ "Group folder \"{mountPoint}\" is full, files can not be updated or synced anymore!" : "Gruppmapp \"{mountPoint}\" är full, filer kan inte uppdateras eller synkroniseras längre!",
+ "External storage \"{mountPoint}\" is full, files can not be updated or synced anymore!" : "Extern lagring \"{mountPoint}\" är full, filer kan inte uppdateras eller synkroniseras längre!",
"Your storage is full, files can not be updated or synced anymore!" : "Ditt lagringsutrymme är fullt, filer kan inte längre uppdateras eller synkroniseras!",
"Storage of {owner} is almost full ({usedSpacePercent}%)." : "Lagring av {owner} är nästan full ({usedSpacePercent}%).",
+ "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "Gruppmapp \"{mountPoint}\" är nästan full ({usedSpacePercent}%).",
+ "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "Extern lagring \"{mountPoint}\" är nästan full ({usedSpacePercent}%).",
"Your storage is almost full ({usedSpacePercent}%)." : "Ditt lagringsutrymme är nästan fullt ({usedSpacePercent}%).",
"_matches '{filter}'_::_match '{filter}'_" : ["matchar '{filter}'","matcha '{filter}'"],
"View in folder" : "Utforska i mapp",
@@ -187,6 +191,8 @@
"New text file.txt" : "Ny textfil.txt",
"Unshare" : "Sluta dela",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "Lagring av {owner} är nästan full ({usedSpacePercent}%)",
+ "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)" : "Gruppmapp \"{mountPoint}\" är nästan full ({usedSpacePercent}%)",
+ "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)" : "Extern lagring \"{mountPoint}\" är nästan full ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Ditt lagringsutrymme är nästan fullt ({usedSpacePercent}%)",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "En fil har blivit <strong>ändrad</strong> eller <strong>bytt namn</strong>",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mapp har blivit <strong>skapad</strong>",
diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js
index e03c858ec52..bd01e3bc2a9 100644
--- a/apps/files/l10n/zh_CN.js
+++ b/apps/files/l10n/zh_CN.js
@@ -193,6 +193,8 @@ OC.L10N.register(
"New text file.txt" : "新建文本文档.txt",
"Unshare" : "取消共享",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner} 的存储空间即将用完({usedSpacePercent}%)",
+ "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)" : "组文件夹 \"{mountPoint}\" 的存储空间几乎已满 ({usedSpacePercent}%)",
+ "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)" : "外部存储 \"{mountPoint}\" 的存储空间几乎已满 ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "您的存储空间即将用完({usedSpacePercent}%)",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "文件/文件夹已经 <strong>更改</strong> 或者 <strong>重命名</strong>",
"A new file or folder has been <strong>created</strong>" : "新的文件或文件夹已被 <strong>创建</strong>",
diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json
index 7c3d52dde80..5c071df7181 100644
--- a/apps/files/l10n/zh_CN.json
+++ b/apps/files/l10n/zh_CN.json
@@ -191,6 +191,8 @@
"New text file.txt" : "新建文本文档.txt",
"Unshare" : "取消共享",
"Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner} 的存储空间即将用完({usedSpacePercent}%)",
+ "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)" : "组文件夹 \"{mountPoint}\" 的存储空间几乎已满 ({usedSpacePercent}%)",
+ "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)" : "外部存储 \"{mountPoint}\" 的存储空间几乎已满 ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "您的存储空间即将用完({usedSpacePercent}%)",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "文件/文件夹已经 <strong>更改</strong> 或者 <strong>重命名</strong>",
"A new file or folder has been <strong>created</strong>" : "新的文件或文件夹已被 <strong>创建</strong>",
diff --git a/apps/files_sharing/l10n/ar.js b/apps/files_sharing/l10n/ar.js
index a01f74789d1..e644169991e 100644
--- a/apps/files_sharing/l10n/ar.js
+++ b/apps/files_sharing/l10n/ar.js
@@ -1,28 +1,237 @@
OC.L10N.register(
"files_sharing",
{
- "Cancel" : "إلغاء",
+ "Shared with you" : "تم مشاركة معك",
+ "Nothing shared with you yet" : "لم يتم مشاركة معك حتى الآن",
+ "Files and folders others share with you will show up here" : "ستظهر هنا الملفات والمجلدات التي يشاركها الآخرون معك",
+ "Shared with others" : "مشترك مع الآخرين",
+ "Nothing shared yet" : "لا يوجد مشاركة حتى الآن",
+ "Files and folders you share will show up here" : "سوف تظهر هنا كل من الملفات و المجلدات التي قمت بمشاركتها",
+ "Shared by link" : "مشاركة عن طريق رابط",
+ "No shared links" : "لا توجد روابط مشتركة",
+ "Files and folders you share by link will show up here" : "سوف تظهر هنا كل من الملفات و المجلدات التي قمت بمشاركتها",
+ "Deleted shares" : "مشاركة محذوفة",
+ "No deleted shares" : "لا يوجد مشاركة محذوفة",
+ "Shares you deleted will show up here" : "سوف تظهر هنا كل المشاركات التي قمتم بحذفها",
+ "Pending shares" : "مشاركات معلقة",
+ "No pending shares" : "لا يوجد مشاركة معلقة",
+ "Shares you have received but not confirmed will show up here" : "ستظهر المشاركات التي تلقيتها ولكن لم يتم تأكيدها هنا",
+ "Shares" : "التي قمتَ بمشاركتها",
+ "No shares" : "لا يوجد مشاركات",
+ "Shares will show up here" : "سوف تظهر هنا كل من الملفات و المجلدات التي قمتم بمشاركتها",
+ "Restore" : "استعادة ",
+ "Restore share" : "استعادة مشاركة",
+ "Something happened. Unable to restore the share." : "حدث امر ما، لا يمكن استعادة المشاركة",
+ "Accept share" : "قبول مشاركة",
+ "Something happened. Unable to accept the share." : "حدث امر ما، لا يمكن قبول المشاركة",
+ "Reject share" : "رفض مشاركة",
+ "Something happened. Unable to reject the share." : "حدث امر ما، لا يمكن رفض المشاركة",
+ "Waiting…" : "قيد الانتظار…",
+ "error" : "خطأ",
+ "finished" : "انتهت",
+ "This will stop your current uploads." : "سيتم ايقاف رفع الملفات الحالية.",
+ "Move or copy" : "انقل أو انسخ",
+ "Download" : "تحميل",
+ "Delete" : "حذف",
+ "You can upload into this folder" : "بإمكانك رفع الملفات إلى هذا المجلد",
+ "Terms of service" : "شروط الخدمة",
+ "No compatible server found at {remote}" : "لم يتم العثور على خادم متوافق في {remote}",
+ "Invalid server URL" : "عنوان الرابط للخادم غير صالح",
+ "Failed to add the public link to your Nextcloud" : "فشل في إضافة الرابط العام إلى الخادم السحابي الخاص بك",
+ "No expiration date set" : "لم يتم تعيين تاريخ نهاية صلاحية المشاركة",
"Shared by" : "تم مشاركتها بواسطة",
+ "File shares" : "مشاركة الملفات",
+ "Downloaded via public link" : "تم تنزيله عبر رابط عام",
+ "Downloaded by {email}" : "تم التنزيل بواسطة {email}",
+ "{file} downloaded via public link" : "تم تنزيل {file} عبر رابط عام",
+ "{email} downloaded {file}" : "{email} تم تنزيل {file}",
+ "Shared with group {group}" : "تمت مشاركته مع المجموعة {group}",
+ "Removed share for group {group}" : "تمت إزالة مشاركة المجموعة {group}",
+ "{actor} shared with group {group}" : "تمت مشاركة {actor} مع المجموعة {group}",
+ "{actor} removed share for group {group}" : "أزال {actor} المشاركة للمجموعة {group}",
+ "Share for group {group} expired" : "انتهت صلاحية المشاركة للمجموعة {group}",
+ "You shared {file} with group {group}" : "لقد شاركت {file} مع المجموعة {group}",
+ "You removed group {group} from {file}" : "لقد أزلت المجموعة {group} من {file}",
+ "{actor} shared {file} with group {group}" : "{actor} شارك {file} مع المجموعة {group}",
+ "{actor} removed group {group} from {file}" : "قام {actor} بإزالة المجموعة {group} من {file}",
+ "Share for file {file} with group {group} expired" : "انتهت صلاحية مشاركة الملف {file} مع المجموعة {group}",
+ "Shared as public link" : "تمت مشاركته كرابط عام",
+ "Removed public link" : "تمت إزالة الرابط العام",
+ "Public link expired" : "انتهت صلاحية الرابط العام",
+ "{actor} shared as public link" : "{actor} تمت مشاركة كرابط عام",
+ "{actor} removed public link" : "{actor} قام بإزالة الرابط العام",
+ "Public link of {actor} expired" : "انتهت صلاحية الرابط العام لـ {actor}",
+ "You shared {file} as public link" : "لقد شاركت {file} كرابط عام",
+ "You removed public link for {file}" : "لقد أزلت الرابط العام لـ {file}",
+ "Public link expired for {file}" : "انتهت صلاحية الرابط العام لـ {file}",
+ "{actor} shared {file} as public link" : "قام {actor} بمشاركة {ملف} كرابط عام",
+ "{actor} removed public link for {file}" : "قام {actor} بإزالة الرابط العام لـ {file}",
+ "Public link of {actor} for {file} expired" : "انتهت صلاحية الرابط العام لـ {actor} لـ {file}",
+ "{user} accepted the remote share" : "وافق {user} على المشاركة عن بُعد",
+ "{user} declined the remote share" : "رفض {user} المشاركة عن بُعد",
+ "You received a new remote share {file} from {user}" : "لقد تلقيت مشاركة جديدة عن بُعد {file} من {user}",
+ "{user} accepted the remote share of {file}" : "وافق {user} على مشاركة {file} عن بُعد",
+ "{user} declined the remote share of {file}" : "رفض {user} المشاركة عن بعد لـ {file}",
+ "{user} unshared {file} from you" : "{user} ألغى مشاركة {ملف} معك",
+ "Shared with {user}" : "مشاركة مع {user}",
+ "Removed share for {user}" : "تمت إزالة المشاركة لـ {user}",
+ "You removed yourself" : "قمت بإزالة نفسك",
+ "{actor} removed themselves" : "أزال {actor} أنفسهم",
+ "{actor} shared with {user}" : "تمت مشاركة {actor} مع {user}",
+ "{actor} removed share for {user}" : "أزال {actor} مشاركة للمستخدم {user}",
+ "Shared by {actor}" : "تمت مشاركته مِن طرف {actor}",
+ "{actor} removed share" : "تمت إزالة مشاركة {actor}",
+ "Share for {user} expired" : "انتهت صلاحية المشاركة لـ {user}",
+ "Share expired" : "انتهت صلاحية المشاركة",
+ "You shared {file} with {user}" : "لقد شاركت {file} مع {user}",
+ "You removed {user} from {file}" : "لقد أزلت {user} من {file}",
+ "You removed yourself from {file}" : "لقد أزلت نفسك من {file}",
+ "{actor} removed themselves from {file}" : "أزال {actor} نفسه من {file}",
+ "{actor} shared {file} with {user}" : "قام {actor} بمشاركة {file} مع {user}",
+ "{actor} removed {user} from {file}" : "أزال {actor} المستخدم {user} من {file}",
+ "{actor} shared {file} with you" : "قام {actor} بمشاركة {file} معك",
+ "{actor} removed you from the share named {file}" : "أزالك {actor} من مشاركة اسم الملف {file}",
+ "Share for file {file} with {user} expired" : "انتهت صلاحية مشاركة الملف {file} مع {user}",
+ "Share for file {file} expired" : "انتهت صلاحية المشاركة للملف {file}",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "تم <strong>تنزيل</strong> ملف أو مجلد مشترك عن طريق البريد أو الرابط العام",
+ "A file or folder was shared from <strong>another server</strong>" : "تمت مشاركة ملف أو مجلد من <strong>خادم سحابي آخر</strong>",
+ "Files" : "ملفات",
+ "A file or folder has been <strong>shared</strong>" : "ملف أو مجلد تم <strong>مشاركته</strong>",
+ "Shared link" : "رابط المشاركة",
+ "Wrong share ID, share doesn't exist" : "خطأ في معرف المشاركة، مشاركة غير موجودة",
+ "Could not delete share" : "لا يمكن حذف المشاركة",
+ "Please specify a file or folder path" : "يرجى تحديد مسار ملف او مجلد",
+ "Wrong path, file/folder doesn't exist" : "مسار الملف/المجد غير موجود",
+ "Could not create share" : "لا يمكن انشاء مشاركة",
+ "invalid permissions" : "صلاحيات مفقودة",
+ "Please specify a valid user" : "يرجى تحديد مستخدم صحيح",
+ "Group sharing is disabled by the administrator" : "مشاركة المجموعة معطل من قبل الادارة",
+ "Please specify a valid group" : "يرجى تحديد مجموعة صحيحة",
+ "Public link sharing is disabled by the administrator" : "مشاركة عن طريق الروابط العامة معطل من قبل الادارة",
+ "Public upload disabled by the administrator" : "عمليات الرفع العامة معطلة من قبل الادارة",
+ "Public upload is only possible for publicly shared folders" : "عمليات الرفع العامة مسموحة فقط في المجلدات العامة",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "مشاركة %s لارسال كلمة المرور من قبل التحدث نكست كلاود فشلت بسبب عدم تفعيل تطبيق التحدث.",
+ "Invalid date, date format must be YYYY-MM-DD" : "تاريخ غير صحيح, يجب أن يكون تنسيق التاريخ YYYY-MM-DD",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "فشلت مشاركة %1$s لأن الخلفية لا تسمح بالمشاركة من النوع %2$s",
+ "You cannot share to a Circle if the app is not enabled" : "لا يمكن مشاركة الجماعات اذا التطبيق كان معطل",
+ "Please specify a valid circle" : "يرجى ادخال جماعة صحيحة",
+ "Sharing %s failed because the back end does not support room shares" : "فشلت مشاركة %s لأن الخلفية لا تدعم مشاركة الغرفة",
+ "Unknown share type" : "نوع مشاركة غير معروف",
+ "Not a directory" : "ليس مسار صحيح",
+ "Could not lock node" : "تعذر تأمين نقطة اللقاء",
+ "Could not lock path" : "تعذر تأمين المسار",
+ "Wrong or no update parameter given" : "خطأ أو لم يتم تقديم معلمة تحديث",
+ "Can't change permissions for public share links" : "لا يمكن تغيير صلاحيات روابط المشاركة العامة",
+ "Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "مشاركة ارسال كلمة المرور من قبل التحدث Nextcloud فشلت بسبب عدم تفعيل خاصية التحدث.",
+ "shared by %s" : "تمت مشاركته مِن قبل %s",
+ "Download all files" : "تنزيل كافة الملفات",
+ "Direct link" : "رابط مباشر",
+ "Add to your Nextcloud" : "اضف إلى حسابك",
+ "Share API is disabled" : "مشاركة عبر واجهة برمجة التطبيقات غير مفعلة",
+ "File sharing" : "مشاركة الملفات",
+ "Share will expire tomorrow" : "المشاركة ستنتهي غدا",
+ "One or more of your shares will expire tomorrow" : "ستنتهي صلاحية مشاركتك أو أكثر من مشاركة غدًا",
+ "Your share of {node} will expire tomorrow" : "ستنتهي مشاركتك مع {node} غدًا",
+ "You received {share} as a share by {user}" : "لقد تلقيت {share} كمشاركة بواسطة {user}",
+ "You received {share} to group {group} as a share by {user}" : "لقد تلقيت {share} إلى المجموعة {group} كمشاركة بواسطة {user}",
+ "Accept" : "قبول",
+ "Reject" : "رفض",
+ "This application enables users to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable users can then share files and folders with other users and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other users outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning 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." : "يتيح هذا التطبيق للمستخدمين مشاركة الملفات داخل نكست كلاود. في حالة التمكين ، يمكن للمسؤول اختيار المجموعات التي يمكنها مشاركة الملفات. يمكن للمستخدمين المناسبين مشاركة الملفات والمجلدات مع مستخدمين ومجموعات أخرى داخل نكست كلاود. بالإضافة إلى ذلك ، إذا قام المسؤول بتمكين ميزة ارتباط المشاركة ، فيمكن استخدام ارتباط خارجي لمشاركة الملفات مع مستخدمين آخرين خارج نكست كلاود. يمكن للمسؤولين أيضًا فرض كلمات المرور وتواريخ انتهاء الصلاحية وتمكين مشاركة الخادم للخادم عبر روابط المشاركة ، بالإضافة إلى المشاركة من الأجهزة المحمولة.\nيؤدي إيقاف تشغيل الميزة إلى إزالة الملفات والمجلدات المشتركة على الخادم لجميع مستلمي المشاركة ، وكذلك على عملاء المزامنة وتطبيقات الأجهزة المحمولة. يتوفر المزيد من المعلومات في نكست كلاود التعليمات.",
"Sharing" : "مشاركة",
- "A file or folder has been <strong>shared</strong>" : "ملف أو مجلد تم </strong>مشاركته<strong> ",
- "You shared %1$s with %2$s" : "شاركت %1$s مع %2$s",
- "You shared %1$s with group %2$s" : "أنت شاركت %1$s مع مجموعة %2$s",
- "You shared %1$s via link" : "لقد قمت بمشاركة %1$s عبر الرابط",
- "%2$s shared %1$s with you" : "%2$s شارك %1$s معك",
- "Shares" : "المشاركات",
- "This share is password-protected" : "هذه المشاركة محمية بكلمة مرور",
- "The password is wrong. Try again." : "كلمة المرور خاطئة. حاول مرة أخرى",
- "Password" : "كلمة المرور",
+ "Accept user and group shares by default" : "قبول مشاركات المستخدم والمجموعة بشكل افتراضي",
+ "Allow editing" : "السماح بالتعديلات",
+ "Allow creating" : "السماح بالإنشاء",
+ "Allow deleting" : "السماح بالحذف",
+ "Allow resharing" : "السماح بإعادة المشاركة ",
+ "Expiration date enforced" : "فرض تاريخ انتهاء الصلاحية المشاركة",
+ "Set expiration date" : "تعيين تاريخ إنتهاء الصلاحية",
+ "Enter a date" : "ادخل تاريخ",
+ "Note to recipient" : "ملاحظة للمستلم",
+ "Unshare" : "إلغاء المشاركة",
+ "group" : "مجموعة",
+ "conversation" : "محادثة",
+ "remote" : "عن بعد",
+ "remote group" : "مجموعة عن بعد",
+ "guest" : "ضيف",
+ "Shared with the group {user} by {owner}" : "مشترك مع المجموعة {user} بواسطة {owner}",
+ "Shared with the conversation {user} by {owner}" : "تمت مشاركته مع المحادثة {user} بواسطة {owner}",
+ "Shared with {user} by {owner}" : "مشترك مع {user} بواسطة {owner}",
+ "Added by {initiator}" : "تمت الإضافة بواسطة {initator}",
+ "Via “{folder}”" : "عبر “{folder}”",
+ "Internal link" : "الرابط الداخلي",
+ "Link copied" : "نُسِخ الرابط",
+ "Cannot copy, please copy the link manually" : "لا يمكن النسخ ، يرجى نسخ الرابط يدويًا",
+ "Copy to clipboard" : "نسخ الرابط",
+ "Only works for users with access to this folder" : "يعمل فقط للمستخدمين الذين لديهم حق الوصول إلى هذا المجلد",
+ "Only works for users with access to this file" : "يعمل فقط للمستخدمين الذين لديهم حق الوصول إلى هذا الملف",
+ "Please enter the following required information before creating the share" : "الرجاء إدخال المعلومات المطلوبة التالية قبل إنشاء المشاركة",
+ "Password protection (enforced)" : "حماية كلمة المرور (الزامي)",
+ "Password protection" : "الحماية بكلمة السر",
+ "Enter a password" : "إدخِل كلمة سرية",
+ "Expiration date (enforced)" : "تاريخ انتهاء الصلاحية (الزامي)",
+ "Create share" : "انشاء مشاركة",
+ "Cancel" : "إلغاء",
+ "Share label" : "تسمية المشاركة",
+ "Read only" : "القراءة فقط",
+ "Allow upload and editing" : "السماح بالرفع و التعديل",
+ "File drop (upload only)" : "إسقاط الملف (رفع فقط)",
+ "Hide download" : "إخفاء التنزيل",
+ "Password protect" : "حماية كلمة السر",
+ "Video verification" : "التحقق من الفيديو",
+ "Enter a note for the share recipient" : "أدخل ملاحظة لمستلم المشاركة",
+ "Add another link" : "إضافة رابط آخر",
+ "Create a new share link" : "إنشاء رابط مشاركة جديد",
+ "Shared via link by {initiator}" : "تمت المشاركة عبر رابط بواسطة {initator}",
+ "Share link ({label})" : "رابط المشاركة ({label})",
+ "Share link" : "مشاركة الرابط",
+ "Error, please enter proper password and/or expiration date" : "خطأ ، يرجى إدخال كلمة المرور الصحيحة أو تاريخ انتهاء الصلاحية",
+ "No recommendations. Start typing." : "لا توجد توصيات. ابدأ بالكتابة.",
+ "Resharing is not allowed" : "لا يسمح بعملية إعادة المشاركة",
+ "Name or email …" : "اسم او بريد…",
+ "Name, email, or Federated Cloud ID …" : "الاسم، البريد أو معرف السحابة المتحدة",
+ "Searching …" : "جاري البحث…",
+ "No elements found." : "لم يتم العثور على اي عناصر",
+ "Search globally" : "بحث عام",
+ "on {server}" : "على {server}",
+ "Others with access" : "الآخرين مع صلاحية الوصول",
+ "No other users with access found" : "لم يتم العثور على مستخدمين آخرين لهم حق الوصول",
+ "Toggle list of others with access to this directory" : "تعطيل/تفعيل قائمة الآخرين الذين لديهم حق الوصول إلى هذا الدليل",
+ "Toggle list of others with access to this file" : "تعطيل/تفعيل قائمة الآخرين الذين لديهم حق الوصول إلى هذا الملف",
+ "Unable to fetch inherited shares" : "تعذر جلب المشاركات",
+ "Unable to load the shares list" : "تعذر تحميل قائمة المشاركات",
+ "Expires {relativetime}" : "تنتهي في {relativetime}",
+ "this share just expired." : "هذه المشاركة انتهت للتو.",
+ "Link to a file" : "ارتباط إلى ملف",
+ "Error creating the share" : "خطأ في إنشاء المشاركة",
+ "Error updating the share" : "خطأ في تحديث المشاركة",
+ "Shared" : "مشترك",
+ "Share" : "شارك",
+ "Shared with" : "تمت مشاركته مع",
+ "Shared with you and the group {group} by {owner}" : "تمت مشاركته معك ومع المجموعة {group} بواسطة {owner}",
+ "Shared with you and {circle} by {owner}" : "تمت مشاركته معك ومع {circle} بواسطة {owner}",
+ "Shared with you and the conversation {conversation} by {owner}" : "تمت مشاركته معك ومع المحادثة {conversation} بواسطة {owner}",
+ "Shared with you in a conversation by {owner}" : "تمت مشاركته معك في محادثة بواسطة {owner}",
+ "Shared with you by {owner}" : "شورك معك من قبل {owner}",
"No entries found in this folder" : "لا يوجد مدخلات في هذا المجلد ",
"Name" : "اسم",
+ "Share time" : "وقت المشاركة",
+ "Expiration date" : "تاريخ إنتهاء صلاحية المشاركة",
"Sorry, this link doesn’t seem to work anymore." : "عذرا، يبدو أن هذا الرابط لم يعد يعمل.",
"Reasons might be:" : "الأسباب الممكنة :",
"the item was removed" : "تم حذف العنصر المطلوب",
"the link expired" : "انتهت صلاحية الرابط",
"sharing is disabled" : "المشاركة غير مفعلة",
"For more info, please ask the person who sent this link." : "لمزيد من المعلومات، يرجى سؤال الشخص الذي أرسل هذا الرابط",
- "Download" : "تحميل",
- "Download %s" : "تحميل %s",
- "Direct link" : "رابط مباشر"
+ "Share note" : "ملاحظة المشاركة",
+ "Toggle grid view" : "تفعيل/تعطيل وضع القائمة",
+ "Download %s" : "تنزيل %s",
+ "Upload files to %s" : "ارسل ملفات إلى %s",
+ "Note" : "ملاحظة",
+ "Select or drop files" : "اختر أو اسحب ملفات هنا",
+ "Uploading files" : "جاري رفع ملفات",
+ "Uploaded files:" : "تم رفع ملفات:",
+ "By uploading files, you agree to the %1$sterms of service%2$s." : "برفع الملفات ، فإنك توافق على %1$s شروط الخدمة %2$s.",
+ "Name, email, or federated cloud ID …" : "اسم، بريد، معرف السحابة المتحدة…",
+ "Uploading files…" : "جاري رفع الملفات…"
},
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
diff --git a/apps/files_sharing/l10n/ar.json b/apps/files_sharing/l10n/ar.json
index 1db47e7ca8c..3ed9b0b04d2 100644
--- a/apps/files_sharing/l10n/ar.json
+++ b/apps/files_sharing/l10n/ar.json
@@ -1,26 +1,235 @@
{ "translations": {
- "Cancel" : "إلغاء",
+ "Shared with you" : "تم مشاركة معك",
+ "Nothing shared with you yet" : "لم يتم مشاركة معك حتى الآن",
+ "Files and folders others share with you will show up here" : "ستظهر هنا الملفات والمجلدات التي يشاركها الآخرون معك",
+ "Shared with others" : "مشترك مع الآخرين",
+ "Nothing shared yet" : "لا يوجد مشاركة حتى الآن",
+ "Files and folders you share will show up here" : "سوف تظهر هنا كل من الملفات و المجلدات التي قمت بمشاركتها",
+ "Shared by link" : "مشاركة عن طريق رابط",
+ "No shared links" : "لا توجد روابط مشتركة",
+ "Files and folders you share by link will show up here" : "سوف تظهر هنا كل من الملفات و المجلدات التي قمت بمشاركتها",
+ "Deleted shares" : "مشاركة محذوفة",
+ "No deleted shares" : "لا يوجد مشاركة محذوفة",
+ "Shares you deleted will show up here" : "سوف تظهر هنا كل المشاركات التي قمتم بحذفها",
+ "Pending shares" : "مشاركات معلقة",
+ "No pending shares" : "لا يوجد مشاركة معلقة",
+ "Shares you have received but not confirmed will show up here" : "ستظهر المشاركات التي تلقيتها ولكن لم يتم تأكيدها هنا",
+ "Shares" : "التي قمتَ بمشاركتها",
+ "No shares" : "لا يوجد مشاركات",
+ "Shares will show up here" : "سوف تظهر هنا كل من الملفات و المجلدات التي قمتم بمشاركتها",
+ "Restore" : "استعادة ",
+ "Restore share" : "استعادة مشاركة",
+ "Something happened. Unable to restore the share." : "حدث امر ما، لا يمكن استعادة المشاركة",
+ "Accept share" : "قبول مشاركة",
+ "Something happened. Unable to accept the share." : "حدث امر ما، لا يمكن قبول المشاركة",
+ "Reject share" : "رفض مشاركة",
+ "Something happened. Unable to reject the share." : "حدث امر ما، لا يمكن رفض المشاركة",
+ "Waiting…" : "قيد الانتظار…",
+ "error" : "خطأ",
+ "finished" : "انتهت",
+ "This will stop your current uploads." : "سيتم ايقاف رفع الملفات الحالية.",
+ "Move or copy" : "انقل أو انسخ",
+ "Download" : "تحميل",
+ "Delete" : "حذف",
+ "You can upload into this folder" : "بإمكانك رفع الملفات إلى هذا المجلد",
+ "Terms of service" : "شروط الخدمة",
+ "No compatible server found at {remote}" : "لم يتم العثور على خادم متوافق في {remote}",
+ "Invalid server URL" : "عنوان الرابط للخادم غير صالح",
+ "Failed to add the public link to your Nextcloud" : "فشل في إضافة الرابط العام إلى الخادم السحابي الخاص بك",
+ "No expiration date set" : "لم يتم تعيين تاريخ نهاية صلاحية المشاركة",
"Shared by" : "تم مشاركتها بواسطة",
+ "File shares" : "مشاركة الملفات",
+ "Downloaded via public link" : "تم تنزيله عبر رابط عام",
+ "Downloaded by {email}" : "تم التنزيل بواسطة {email}",
+ "{file} downloaded via public link" : "تم تنزيل {file} عبر رابط عام",
+ "{email} downloaded {file}" : "{email} تم تنزيل {file}",
+ "Shared with group {group}" : "تمت مشاركته مع المجموعة {group}",
+ "Removed share for group {group}" : "تمت إزالة مشاركة المجموعة {group}",
+ "{actor} shared with group {group}" : "تمت مشاركة {actor} مع المجموعة {group}",
+ "{actor} removed share for group {group}" : "أزال {actor} المشاركة للمجموعة {group}",
+ "Share for group {group} expired" : "انتهت صلاحية المشاركة للمجموعة {group}",
+ "You shared {file} with group {group}" : "لقد شاركت {file} مع المجموعة {group}",
+ "You removed group {group} from {file}" : "لقد أزلت المجموعة {group} من {file}",
+ "{actor} shared {file} with group {group}" : "{actor} شارك {file} مع المجموعة {group}",
+ "{actor} removed group {group} from {file}" : "قام {actor} بإزالة المجموعة {group} من {file}",
+ "Share for file {file} with group {group} expired" : "انتهت صلاحية مشاركة الملف {file} مع المجموعة {group}",
+ "Shared as public link" : "تمت مشاركته كرابط عام",
+ "Removed public link" : "تمت إزالة الرابط العام",
+ "Public link expired" : "انتهت صلاحية الرابط العام",
+ "{actor} shared as public link" : "{actor} تمت مشاركة كرابط عام",
+ "{actor} removed public link" : "{actor} قام بإزالة الرابط العام",
+ "Public link of {actor} expired" : "انتهت صلاحية الرابط العام لـ {actor}",
+ "You shared {file} as public link" : "لقد شاركت {file} كرابط عام",
+ "You removed public link for {file}" : "لقد أزلت الرابط العام لـ {file}",
+ "Public link expired for {file}" : "انتهت صلاحية الرابط العام لـ {file}",
+ "{actor} shared {file} as public link" : "قام {actor} بمشاركة {ملف} كرابط عام",
+ "{actor} removed public link for {file}" : "قام {actor} بإزالة الرابط العام لـ {file}",
+ "Public link of {actor} for {file} expired" : "انتهت صلاحية الرابط العام لـ {actor} لـ {file}",
+ "{user} accepted the remote share" : "وافق {user} على المشاركة عن بُعد",
+ "{user} declined the remote share" : "رفض {user} المشاركة عن بُعد",
+ "You received a new remote share {file} from {user}" : "لقد تلقيت مشاركة جديدة عن بُعد {file} من {user}",
+ "{user} accepted the remote share of {file}" : "وافق {user} على مشاركة {file} عن بُعد",
+ "{user} declined the remote share of {file}" : "رفض {user} المشاركة عن بعد لـ {file}",
+ "{user} unshared {file} from you" : "{user} ألغى مشاركة {ملف} معك",
+ "Shared with {user}" : "مشاركة مع {user}",
+ "Removed share for {user}" : "تمت إزالة المشاركة لـ {user}",
+ "You removed yourself" : "قمت بإزالة نفسك",
+ "{actor} removed themselves" : "أزال {actor} أنفسهم",
+ "{actor} shared with {user}" : "تمت مشاركة {actor} مع {user}",
+ "{actor} removed share for {user}" : "أزال {actor} مشاركة للمستخدم {user}",
+ "Shared by {actor}" : "تمت مشاركته مِن طرف {actor}",
+ "{actor} removed share" : "تمت إزالة مشاركة {actor}",
+ "Share for {user} expired" : "انتهت صلاحية المشاركة لـ {user}",
+ "Share expired" : "انتهت صلاحية المشاركة",
+ "You shared {file} with {user}" : "لقد شاركت {file} مع {user}",
+ "You removed {user} from {file}" : "لقد أزلت {user} من {file}",
+ "You removed yourself from {file}" : "لقد أزلت نفسك من {file}",
+ "{actor} removed themselves from {file}" : "أزال {actor} نفسه من {file}",
+ "{actor} shared {file} with {user}" : "قام {actor} بمشاركة {file} مع {user}",
+ "{actor} removed {user} from {file}" : "أزال {actor} المستخدم {user} من {file}",
+ "{actor} shared {file} with you" : "قام {actor} بمشاركة {file} معك",
+ "{actor} removed you from the share named {file}" : "أزالك {actor} من مشاركة اسم الملف {file}",
+ "Share for file {file} with {user} expired" : "انتهت صلاحية مشاركة الملف {file} مع {user}",
+ "Share for file {file} expired" : "انتهت صلاحية المشاركة للملف {file}",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "تم <strong>تنزيل</strong> ملف أو مجلد مشترك عن طريق البريد أو الرابط العام",
+ "A file or folder was shared from <strong>another server</strong>" : "تمت مشاركة ملف أو مجلد من <strong>خادم سحابي آخر</strong>",
+ "Files" : "ملفات",
+ "A file or folder has been <strong>shared</strong>" : "ملف أو مجلد تم <strong>مشاركته</strong>",
+ "Shared link" : "رابط المشاركة",
+ "Wrong share ID, share doesn't exist" : "خطأ في معرف المشاركة، مشاركة غير موجودة",
+ "Could not delete share" : "لا يمكن حذف المشاركة",
+ "Please specify a file or folder path" : "يرجى تحديد مسار ملف او مجلد",
+ "Wrong path, file/folder doesn't exist" : "مسار الملف/المجد غير موجود",
+ "Could not create share" : "لا يمكن انشاء مشاركة",
+ "invalid permissions" : "صلاحيات مفقودة",
+ "Please specify a valid user" : "يرجى تحديد مستخدم صحيح",
+ "Group sharing is disabled by the administrator" : "مشاركة المجموعة معطل من قبل الادارة",
+ "Please specify a valid group" : "يرجى تحديد مجموعة صحيحة",
+ "Public link sharing is disabled by the administrator" : "مشاركة عن طريق الروابط العامة معطل من قبل الادارة",
+ "Public upload disabled by the administrator" : "عمليات الرفع العامة معطلة من قبل الادارة",
+ "Public upload is only possible for publicly shared folders" : "عمليات الرفع العامة مسموحة فقط في المجلدات العامة",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "مشاركة %s لارسال كلمة المرور من قبل التحدث نكست كلاود فشلت بسبب عدم تفعيل تطبيق التحدث.",
+ "Invalid date, date format must be YYYY-MM-DD" : "تاريخ غير صحيح, يجب أن يكون تنسيق التاريخ YYYY-MM-DD",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "فشلت مشاركة %1$s لأن الخلفية لا تسمح بالمشاركة من النوع %2$s",
+ "You cannot share to a Circle if the app is not enabled" : "لا يمكن مشاركة الجماعات اذا التطبيق كان معطل",
+ "Please specify a valid circle" : "يرجى ادخال جماعة صحيحة",
+ "Sharing %s failed because the back end does not support room shares" : "فشلت مشاركة %s لأن الخلفية لا تدعم مشاركة الغرفة",
+ "Unknown share type" : "نوع مشاركة غير معروف",
+ "Not a directory" : "ليس مسار صحيح",
+ "Could not lock node" : "تعذر تأمين نقطة اللقاء",
+ "Could not lock path" : "تعذر تأمين المسار",
+ "Wrong or no update parameter given" : "خطأ أو لم يتم تقديم معلمة تحديث",
+ "Can't change permissions for public share links" : "لا يمكن تغيير صلاحيات روابط المشاركة العامة",
+ "Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "مشاركة ارسال كلمة المرور من قبل التحدث Nextcloud فشلت بسبب عدم تفعيل خاصية التحدث.",
+ "shared by %s" : "تمت مشاركته مِن قبل %s",
+ "Download all files" : "تنزيل كافة الملفات",
+ "Direct link" : "رابط مباشر",
+ "Add to your Nextcloud" : "اضف إلى حسابك",
+ "Share API is disabled" : "مشاركة عبر واجهة برمجة التطبيقات غير مفعلة",
+ "File sharing" : "مشاركة الملفات",
+ "Share will expire tomorrow" : "المشاركة ستنتهي غدا",
+ "One or more of your shares will expire tomorrow" : "ستنتهي صلاحية مشاركتك أو أكثر من مشاركة غدًا",
+ "Your share of {node} will expire tomorrow" : "ستنتهي مشاركتك مع {node} غدًا",
+ "You received {share} as a share by {user}" : "لقد تلقيت {share} كمشاركة بواسطة {user}",
+ "You received {share} to group {group} as a share by {user}" : "لقد تلقيت {share} إلى المجموعة {group} كمشاركة بواسطة {user}",
+ "Accept" : "قبول",
+ "Reject" : "رفض",
+ "This application enables users to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable users can then share files and folders with other users and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other users outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning 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." : "يتيح هذا التطبيق للمستخدمين مشاركة الملفات داخل نكست كلاود. في حالة التمكين ، يمكن للمسؤول اختيار المجموعات التي يمكنها مشاركة الملفات. يمكن للمستخدمين المناسبين مشاركة الملفات والمجلدات مع مستخدمين ومجموعات أخرى داخل نكست كلاود. بالإضافة إلى ذلك ، إذا قام المسؤول بتمكين ميزة ارتباط المشاركة ، فيمكن استخدام ارتباط خارجي لمشاركة الملفات مع مستخدمين آخرين خارج نكست كلاود. يمكن للمسؤولين أيضًا فرض كلمات المرور وتواريخ انتهاء الصلاحية وتمكين مشاركة الخادم للخادم عبر روابط المشاركة ، بالإضافة إلى المشاركة من الأجهزة المحمولة.\nيؤدي إيقاف تشغيل الميزة إلى إزالة الملفات والمجلدات المشتركة على الخادم لجميع مستلمي المشاركة ، وكذلك على عملاء المزامنة وتطبيقات الأجهزة المحمولة. يتوفر المزيد من المعلومات في نكست كلاود التعليمات.",
"Sharing" : "مشاركة",
- "A file or folder has been <strong>shared</strong>" : "ملف أو مجلد تم </strong>مشاركته<strong> ",
- "You shared %1$s with %2$s" : "شاركت %1$s مع %2$s",
- "You shared %1$s with group %2$s" : "أنت شاركت %1$s مع مجموعة %2$s",
- "You shared %1$s via link" : "لقد قمت بمشاركة %1$s عبر الرابط",
- "%2$s shared %1$s with you" : "%2$s شارك %1$s معك",
- "Shares" : "المشاركات",
- "This share is password-protected" : "هذه المشاركة محمية بكلمة مرور",
- "The password is wrong. Try again." : "كلمة المرور خاطئة. حاول مرة أخرى",
- "Password" : "كلمة المرور",
+ "Accept user and group shares by default" : "قبول مشاركات المستخدم والمجموعة بشكل افتراضي",
+ "Allow editing" : "السماح بالتعديلات",
+ "Allow creating" : "السماح بالإنشاء",
+ "Allow deleting" : "السماح بالحذف",
+ "Allow resharing" : "السماح بإعادة المشاركة ",
+ "Expiration date enforced" : "فرض تاريخ انتهاء الصلاحية المشاركة",
+ "Set expiration date" : "تعيين تاريخ إنتهاء الصلاحية",
+ "Enter a date" : "ادخل تاريخ",
+ "Note to recipient" : "ملاحظة للمستلم",
+ "Unshare" : "إلغاء المشاركة",
+ "group" : "مجموعة",
+ "conversation" : "محادثة",
+ "remote" : "عن بعد",
+ "remote group" : "مجموعة عن بعد",
+ "guest" : "ضيف",
+ "Shared with the group {user} by {owner}" : "مشترك مع المجموعة {user} بواسطة {owner}",
+ "Shared with the conversation {user} by {owner}" : "تمت مشاركته مع المحادثة {user} بواسطة {owner}",
+ "Shared with {user} by {owner}" : "مشترك مع {user} بواسطة {owner}",
+ "Added by {initiator}" : "تمت الإضافة بواسطة {initator}",
+ "Via “{folder}”" : "عبر “{folder}”",
+ "Internal link" : "الرابط الداخلي",
+ "Link copied" : "نُسِخ الرابط",
+ "Cannot copy, please copy the link manually" : "لا يمكن النسخ ، يرجى نسخ الرابط يدويًا",
+ "Copy to clipboard" : "نسخ الرابط",
+ "Only works for users with access to this folder" : "يعمل فقط للمستخدمين الذين لديهم حق الوصول إلى هذا المجلد",
+ "Only works for users with access to this file" : "يعمل فقط للمستخدمين الذين لديهم حق الوصول إلى هذا الملف",
+ "Please enter the following required information before creating the share" : "الرجاء إدخال المعلومات المطلوبة التالية قبل إنشاء المشاركة",
+ "Password protection (enforced)" : "حماية كلمة المرور (الزامي)",
+ "Password protection" : "الحماية بكلمة السر",
+ "Enter a password" : "إدخِل كلمة سرية",
+ "Expiration date (enforced)" : "تاريخ انتهاء الصلاحية (الزامي)",
+ "Create share" : "انشاء مشاركة",
+ "Cancel" : "إلغاء",
+ "Share label" : "تسمية المشاركة",
+ "Read only" : "القراءة فقط",
+ "Allow upload and editing" : "السماح بالرفع و التعديل",
+ "File drop (upload only)" : "إسقاط الملف (رفع فقط)",
+ "Hide download" : "إخفاء التنزيل",
+ "Password protect" : "حماية كلمة السر",
+ "Video verification" : "التحقق من الفيديو",
+ "Enter a note for the share recipient" : "أدخل ملاحظة لمستلم المشاركة",
+ "Add another link" : "إضافة رابط آخر",
+ "Create a new share link" : "إنشاء رابط مشاركة جديد",
+ "Shared via link by {initiator}" : "تمت المشاركة عبر رابط بواسطة {initator}",
+ "Share link ({label})" : "رابط المشاركة ({label})",
+ "Share link" : "مشاركة الرابط",
+ "Error, please enter proper password and/or expiration date" : "خطأ ، يرجى إدخال كلمة المرور الصحيحة أو تاريخ انتهاء الصلاحية",
+ "No recommendations. Start typing." : "لا توجد توصيات. ابدأ بالكتابة.",
+ "Resharing is not allowed" : "لا يسمح بعملية إعادة المشاركة",
+ "Name or email …" : "اسم او بريد…",
+ "Name, email, or Federated Cloud ID …" : "الاسم، البريد أو معرف السحابة المتحدة",
+ "Searching …" : "جاري البحث…",
+ "No elements found." : "لم يتم العثور على اي عناصر",
+ "Search globally" : "بحث عام",
+ "on {server}" : "على {server}",
+ "Others with access" : "الآخرين مع صلاحية الوصول",
+ "No other users with access found" : "لم يتم العثور على مستخدمين آخرين لهم حق الوصول",
+ "Toggle list of others with access to this directory" : "تعطيل/تفعيل قائمة الآخرين الذين لديهم حق الوصول إلى هذا الدليل",
+ "Toggle list of others with access to this file" : "تعطيل/تفعيل قائمة الآخرين الذين لديهم حق الوصول إلى هذا الملف",
+ "Unable to fetch inherited shares" : "تعذر جلب المشاركات",
+ "Unable to load the shares list" : "تعذر تحميل قائمة المشاركات",
+ "Expires {relativetime}" : "تنتهي في {relativetime}",
+ "this share just expired." : "هذه المشاركة انتهت للتو.",
+ "Link to a file" : "ارتباط إلى ملف",
+ "Error creating the share" : "خطأ في إنشاء المشاركة",
+ "Error updating the share" : "خطأ في تحديث المشاركة",
+ "Shared" : "مشترك",
+ "Share" : "شارك",
+ "Shared with" : "تمت مشاركته مع",
+ "Shared with you and the group {group} by {owner}" : "تمت مشاركته معك ومع المجموعة {group} بواسطة {owner}",
+ "Shared with you and {circle} by {owner}" : "تمت مشاركته معك ومع {circle} بواسطة {owner}",
+ "Shared with you and the conversation {conversation} by {owner}" : "تمت مشاركته معك ومع المحادثة {conversation} بواسطة {owner}",
+ "Shared with you in a conversation by {owner}" : "تمت مشاركته معك في محادثة بواسطة {owner}",
+ "Shared with you by {owner}" : "شورك معك من قبل {owner}",
"No entries found in this folder" : "لا يوجد مدخلات في هذا المجلد ",
"Name" : "اسم",
+ "Share time" : "وقت المشاركة",
+ "Expiration date" : "تاريخ إنتهاء صلاحية المشاركة",
"Sorry, this link doesn’t seem to work anymore." : "عذرا، يبدو أن هذا الرابط لم يعد يعمل.",
"Reasons might be:" : "الأسباب الممكنة :",
"the item was removed" : "تم حذف العنصر المطلوب",
"the link expired" : "انتهت صلاحية الرابط",
"sharing is disabled" : "المشاركة غير مفعلة",
"For more info, please ask the person who sent this link." : "لمزيد من المعلومات، يرجى سؤال الشخص الذي أرسل هذا الرابط",
- "Download" : "تحميل",
- "Download %s" : "تحميل %s",
- "Direct link" : "رابط مباشر"
+ "Share note" : "ملاحظة المشاركة",
+ "Toggle grid view" : "تفعيل/تعطيل وضع القائمة",
+ "Download %s" : "تنزيل %s",
+ "Upload files to %s" : "ارسل ملفات إلى %s",
+ "Note" : "ملاحظة",
+ "Select or drop files" : "اختر أو اسحب ملفات هنا",
+ "Uploading files" : "جاري رفع ملفات",
+ "Uploaded files:" : "تم رفع ملفات:",
+ "By uploading files, you agree to the %1$sterms of service%2$s." : "برفع الملفات ، فإنك توافق على %1$s شروط الخدمة %2$s.",
+ "Name, email, or federated cloud ID …" : "اسم، بريد، معرف السحابة المتحدة…",
+ "Uploading files…" : "جاري رفع الملفات…"
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/sl.js b/apps/files_sharing/l10n/sl.js
index 605e9697854..fd464956b30 100644
--- a/apps/files_sharing/l10n/sl.js
+++ b/apps/files_sharing/l10n/sl.js
@@ -60,12 +60,13 @@ OC.L10N.register(
"Public link expired" : "javna povezava je pretekla",
"{actor} shared as public link" : "{actor} objavi mesto souporabe z javno povezavo",
"{actor} removed public link" : "{actor} odstrani javno povezavo",
- "Public link of {actor} expired" : "Javna povezava, ki jo je {actor} objavil, preteče",
+ "Public link of {actor} expired" : "Javna povezava, ki jo objavi {actor} je pretekla",
"You shared {file} as public link" : "Omogočite souporabo datoteke {file} z javno povezavo",
"You removed public link for {file}" : "Odstranite povezavo do datoteke {file}",
"Public link expired for {file}" : "Preteče javna povezava do datoteke {file}",
"{actor} shared {file} as public link" : "{actor} omogoči souporabo datoteke {file} z javno povezavo",
"{actor} removed public link for {file}" : "{actor} odstrani javno povezavo do {file}",
+ "Public link of {actor} for {file} expired" : "Javna povezava, ki jo omogoča {actor} za datoteko {file} je potekla",
"{user} accepted the remote share" : "Uporabnik {user} potrdi oddaljeno souporabo",
"{user} declined the remote share" : "{user} zavrne oddaljeno souporabo",
"You received a new remote share {file} from {user}" : "{user} vam pošlje povezavo do oddaljenega mesta za datoteko {file}",
@@ -84,6 +85,8 @@ OC.L10N.register(
"{actor} removed themselves from {file}" : "{actor} se odstrani z datoteke {file}",
"{actor} shared {file} with you" : "{actor} vam omogoči souporabo {file}",
"{actor} removed you from the share named {file}" : "{actor} vas odstrani s souporabe datoteke {file}",
+ "Share for file {file} with {user} expired" : "Souporaba datoteke {file} z uporabnikom {user} je potekla",
+ "Share for file {file} expired" : "Souporaba datoteke {file} je potekla",
"A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Datoteko oziroma mapo v souporabi prek elektronske pošte oziroma javne povezave je uporabnik <strong>prejel na svoj krajevni disk</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Datoteka ali mapa je bila dodana v souporabo prek <strong>drugega strežnika</strong>",
"Files" : "Datoteke",
@@ -123,6 +126,8 @@ OC.L10N.register(
"Share will expire tomorrow" : "Souporaba bo jutri pretekla",
"One or more of your shares will expire tomorrow" : "Eno ali več mest souporabe bo jutri poteklo",
"Your share of {node} will expire tomorrow" : "Suporaba vozlišča {node} bo jutri pretekla.",
+ "You received {share} as a share by {user}" : "{user} vam omogoča souporabo {share}",
+ "You received {share} to group {group} as a share by {user}" : "{user} vam omogoča souporabo {share} prek skupine {group}",
"Accept" : "Sprejmi",
"Reject" : "Zavrni",
"This application enables users to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable users can then share files and folders with other users and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other users outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning 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." : "Program omogoča uporabnikom souporabo in izmenjavo datotek v oblaku Nextcloud. Izbrana možnost omogoča skrbnikom izbor skupin, ki imajo dovoljenja za omogočanje souporabe znotraj oblaka. Če je omogočena tudi možnost souporabe prek povezave, je na voljo tudi zunanja povezava za zunanje uporabnike. Skrbniki lahko omogočijo tudi gesla, pretek povezave in objavljanje prek mobilnih naprav.\nOnemogočanje storitve odstrani vse datoteke in mape v souporabi, prav tako programe za usklajevanje in mobilne naprave. Več podrobnosti je na voljo v dokumentaciji Nextcloud.",
@@ -142,6 +147,7 @@ OC.L10N.register(
"remote" : "oddaljeno",
"remote group" : "oddaljena skupina",
"guest" : "gost",
+ "Added by {initiator}" : "Dodano: {initiator}",
"Via “{folder}”" : "Prek mape »{folder}«",
"Internal link" : "Notranja povezava",
"Link copied" : "Povezava je kopirana",
@@ -191,7 +197,7 @@ OC.L10N.register(
"Shared" : "V souporabi",
"Share" : "Souporaba",
"Shared with" : "V skupni rabi z uporabnikom",
- "Shared with you and the group {group} by {owner}" : "Souporabo z vami in s skupino {group} omogoča {owner}.",
+ "Shared with you and the group {group} by {owner}" : "{user} omogoča vam in skupini {group} souporabo",
"Shared with you by {owner}" : "Souporabo omogoča {owner}",
"No entries found in this folder" : "V tej mapi ni najdenih predmetov.",
"Name" : "Ime",
diff --git a/apps/files_sharing/l10n/sl.json b/apps/files_sharing/l10n/sl.json
index b3429ec7b9d..fff2aa2a37b 100644
--- a/apps/files_sharing/l10n/sl.json
+++ b/apps/files_sharing/l10n/sl.json
@@ -58,12 +58,13 @@
"Public link expired" : "javna povezava je pretekla",
"{actor} shared as public link" : "{actor} objavi mesto souporabe z javno povezavo",
"{actor} removed public link" : "{actor} odstrani javno povezavo",
- "Public link of {actor} expired" : "Javna povezava, ki jo je {actor} objavil, preteče",
+ "Public link of {actor} expired" : "Javna povezava, ki jo objavi {actor} je pretekla",
"You shared {file} as public link" : "Omogočite souporabo datoteke {file} z javno povezavo",
"You removed public link for {file}" : "Odstranite povezavo do datoteke {file}",
"Public link expired for {file}" : "Preteče javna povezava do datoteke {file}",
"{actor} shared {file} as public link" : "{actor} omogoči souporabo datoteke {file} z javno povezavo",
"{actor} removed public link for {file}" : "{actor} odstrani javno povezavo do {file}",
+ "Public link of {actor} for {file} expired" : "Javna povezava, ki jo omogoča {actor} za datoteko {file} je potekla",
"{user} accepted the remote share" : "Uporabnik {user} potrdi oddaljeno souporabo",
"{user} declined the remote share" : "{user} zavrne oddaljeno souporabo",
"You received a new remote share {file} from {user}" : "{user} vam pošlje povezavo do oddaljenega mesta za datoteko {file}",
@@ -82,6 +83,8 @@
"{actor} removed themselves from {file}" : "{actor} se odstrani z datoteke {file}",
"{actor} shared {file} with you" : "{actor} vam omogoči souporabo {file}",
"{actor} removed you from the share named {file}" : "{actor} vas odstrani s souporabe datoteke {file}",
+ "Share for file {file} with {user} expired" : "Souporaba datoteke {file} z uporabnikom {user} je potekla",
+ "Share for file {file} expired" : "Souporaba datoteke {file} je potekla",
"A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Datoteko oziroma mapo v souporabi prek elektronske pošte oziroma javne povezave je uporabnik <strong>prejel na svoj krajevni disk</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Datoteka ali mapa je bila dodana v souporabo prek <strong>drugega strežnika</strong>",
"Files" : "Datoteke",
@@ -121,6 +124,8 @@
"Share will expire tomorrow" : "Souporaba bo jutri pretekla",
"One or more of your shares will expire tomorrow" : "Eno ali več mest souporabe bo jutri poteklo",
"Your share of {node} will expire tomorrow" : "Suporaba vozlišča {node} bo jutri pretekla.",
+ "You received {share} as a share by {user}" : "{user} vam omogoča souporabo {share}",
+ "You received {share} to group {group} as a share by {user}" : "{user} vam omogoča souporabo {share} prek skupine {group}",
"Accept" : "Sprejmi",
"Reject" : "Zavrni",
"This application enables users to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable users can then share files and folders with other users and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other users outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning 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." : "Program omogoča uporabnikom souporabo in izmenjavo datotek v oblaku Nextcloud. Izbrana možnost omogoča skrbnikom izbor skupin, ki imajo dovoljenja za omogočanje souporabe znotraj oblaka. Če je omogočena tudi možnost souporabe prek povezave, je na voljo tudi zunanja povezava za zunanje uporabnike. Skrbniki lahko omogočijo tudi gesla, pretek povezave in objavljanje prek mobilnih naprav.\nOnemogočanje storitve odstrani vse datoteke in mape v souporabi, prav tako programe za usklajevanje in mobilne naprave. Več podrobnosti je na voljo v dokumentaciji Nextcloud.",
@@ -140,6 +145,7 @@
"remote" : "oddaljeno",
"remote group" : "oddaljena skupina",
"guest" : "gost",
+ "Added by {initiator}" : "Dodano: {initiator}",
"Via “{folder}”" : "Prek mape »{folder}«",
"Internal link" : "Notranja povezava",
"Link copied" : "Povezava je kopirana",
@@ -189,7 +195,7 @@
"Shared" : "V souporabi",
"Share" : "Souporaba",
"Shared with" : "V skupni rabi z uporabnikom",
- "Shared with you and the group {group} by {owner}" : "Souporabo z vami in s skupino {group} omogoča {owner}.",
+ "Shared with you and the group {group} by {owner}" : "{user} omogoča vam in skupini {group} souporabo",
"Shared with you by {owner}" : "Souporabo omogoča {owner}",
"No entries found in this folder" : "V tej mapi ni najdenih predmetov.",
"Name" : "Ime",
diff --git a/apps/files_sharing/l10n/sv.js b/apps/files_sharing/l10n/sv.js
index f6ee0b1bf71..d308568a3fd 100644
--- a/apps/files_sharing/l10n/sv.js
+++ b/apps/files_sharing/l10n/sv.js
@@ -169,6 +169,7 @@ OC.L10N.register(
"Password protection" : "Lösenordsskydd",
"Enter a password" : "Ange ett lösenord",
"Expiration date (enforced)" : "Förfallodatum (obligatorisk)",
+ "Create share" : "Skapa delning",
"Cancel" : "Avbryt",
"Share label" : "Delningsetikett",
"Read only" : "Läsbehörighet",
diff --git a/apps/files_sharing/l10n/sv.json b/apps/files_sharing/l10n/sv.json
index 20f62092a35..b2e3d157836 100644
--- a/apps/files_sharing/l10n/sv.json
+++ b/apps/files_sharing/l10n/sv.json
@@ -167,6 +167,7 @@
"Password protection" : "Lösenordsskydd",
"Enter a password" : "Ange ett lösenord",
"Expiration date (enforced)" : "Förfallodatum (obligatorisk)",
+ "Create share" : "Skapa delning",
"Cancel" : "Avbryt",
"Share label" : "Delningsetikett",
"Read only" : "Läsbehörighet",
diff --git a/apps/files_trashbin/lib/Storage.php b/apps/files_trashbin/lib/Storage.php
index 2064b7d664f..806ce218772 100644
--- a/apps/files_trashbin/lib/Storage.php
+++ b/apps/files_trashbin/lib/Storage.php
@@ -128,7 +128,7 @@ class Storage extends Wrapper {
protected function shouldMoveToTrash($path) {
$normalized = Filesystem::normalizePath($this->mountPoint . '/' . $path);
$parts = explode('/', $normalized);
- if (count($parts) < 4) {
+ if (count($parts) < 4 || strpos($normalized, '/appdata_') === 0) {
return false;
}
diff --git a/apps/lookup_server_connector/l10n/sl.js b/apps/lookup_server_connector/l10n/sl.js
index b0075089f39..41d13ed5f75 100644
--- a/apps/lookup_server_connector/l10n/sl.js
+++ b/apps/lookup_server_connector/l10n/sl.js
@@ -1,6 +1,7 @@
OC.L10N.register(
"lookup_server_connector",
{
- "Lookup Server Connector" : "Povezovalnik z iskalnim strežnikom"
+ "Lookup Server Connector" : "Povezovalnik z iskalnim strežnikom",
+ "Sync public user information with the lookup server" : "Usklajevanje javnih podatkov o uporabnikih prek iskalnega stražnika"
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/lookup_server_connector/l10n/sl.json b/apps/lookup_server_connector/l10n/sl.json
index 97abd44b759..3c64cd93d8e 100644
--- a/apps/lookup_server_connector/l10n/sl.json
+++ b/apps/lookup_server_connector/l10n/sl.json
@@ -1,4 +1,5 @@
{ "translations": {
- "Lookup Server Connector" : "Povezovalnik z iskalnim strežnikom"
+ "Lookup Server Connector" : "Povezovalnik z iskalnim strežnikom",
+ "Sync public user information with the lookup server" : "Usklajevanje javnih podatkov o uporabnikih prek iskalnega stražnika"
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/settings/templates/settings/personal/security/password.php b/apps/settings/templates/settings/personal/security/password.php
index 7edd9e20126..5ffa9aaf8bc 100644
--- a/apps/settings/templates/settings/personal/security/password.php
+++ b/apps/settings/templates/settings/personal/security/password.php
@@ -37,7 +37,7 @@ if ($_['passwordChangeSupported']) {
<h2 class="inlineblock"><?php p($l->t('Password'));?></h2>
<span id="password-error-msg" class="msg success hidden">Saved</span>
<div class="personal-settings-setting-box personal-settings-password-box">
- <form id="passwordform">
+ <form id="passwordform" method="POST">
<label for="pass1" class="hidden-visually"><?php p($l->t('Current password')); ?>: </label>
<input type="password" id="pass1" name="oldpassword"
placeholder="<?php p($l->t('Current password'));?>"
diff --git a/apps/settings/tests/Mailer/NewUserMailHelperTest.php b/apps/settings/tests/Mailer/NewUserMailHelperTest.php
index f6e071135ea..8eae43fcc93 100644
--- a/apps/settings/tests/Mailer/NewUserMailHelperTest.php
+++ b/apps/settings/tests/Mailer/NewUserMailHelperTest.php
@@ -206,8 +206,8 @@ class NewUserMailHelperTest extends TestCase {
<table class="row collapse" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <center data-parsed="" style="background-color:;width:150px;height:150px;padding:0px;position:relative;border-radius:200px">
- <img class="logo float-center" src="" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;clear:both;display:block;float:none;outline:0;text-align:center;text-decoration:none;position:absolute;max-height:100px;max-width:100px;width:auto;height:auto;position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;">
+ <center data-parsed="" style="background-color:;min-width:175px;max-height:175px; padding:35px 0px;border-radius:200px">
+ <img class="logo float-center" src="" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;clear:both;display:block;float:none;margin:0 auto;outline:0;text-align:center;text-decoration:none;max-height:105px;max-width:105px;width:auto;height:auto">
</center>
</tr>
</tbody>
@@ -437,8 +437,8 @@ EOF;
<table class="row collapse" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <center data-parsed="" style="background-color:;width:150px;height:150px;padding:0px;position:relative;border-radius:200px">
- <img class="logo float-center" src="" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;clear:both;display:block;float:none;outline:0;text-align:center;text-decoration:none;position:absolute;max-height:100px;max-width:100px;width:auto;height:auto;position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;">
+ <center data-parsed="" style="background-color:;min-width:175px;max-height:175px; padding:35px 0px;border-radius:200px">
+ <img class="logo float-center" src="" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;clear:both;display:block;float:none;margin:0 auto;outline:0;text-align:center;text-decoration:none;max-height:105px;max-width:105px;width:auto;height:auto">
</center>
</tr>
</tbody>
@@ -673,8 +673,8 @@ EOF;
<table class="row collapse" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <center data-parsed="" style="background-color:;width:150px;height:150px;padding:0px;position:relative;border-radius:200px">
- <img class="logo float-center" src="" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;clear:both;display:block;float:none;outline:0;text-align:center;text-decoration:none;position:absolute;max-height:100px;max-width:100px;width:auto;height:auto;position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;">
+ <center data-parsed="" style="background-color:;min-width:175px;max-height:175px; padding:35px 0px;border-radius:200px">
+ <img class="logo float-center" src="" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;clear:both;display:block;float:none;margin:0 auto;outline:0;text-align:center;text-decoration:none;max-height:105px;max-width:105px;width:auto;height:auto">
</center>
</tr>
</tbody>
diff --git a/apps/user_status/l10n/ar.js b/apps/user_status/l10n/ar.js
new file mode 100644
index 00000000000..9dd7c18037c
--- /dev/null
+++ b/apps/user_status/l10n/ar.js
@@ -0,0 +1,38 @@
+OC.L10N.register(
+ "user_status",
+ {
+ "Recent statuses" : "آخر الحالات",
+ "In a meeting" : "في اجتماع",
+ "Commuting" : "تجوال",
+ "Out sick" : "مريض",
+ "Vacationing" : "في اجازة",
+ "Working remotely" : "العمل عن بعد",
+ "User status" : "حالة العضو",
+ "Clear status message after" : "احذف الحالة بعد",
+ "What's your status?" : "ماهي حالتك؟",
+ "Set status" : "تعيين الحالة",
+ "Online status" : "حالة الاتصال",
+ "Status message" : "رسالة الحالة",
+ "Clear status message" : "حذف رسالة الحالة",
+ "Set status message" : "تعيين رسالة الحالة",
+ "There was an error saving the status" : "حدث خطأ اثناء حفظ الحالة",
+ "There was an error clearing the status" : "حدث خطأ اثناء حذف الحالة",
+ "No recent status changes" : "لم يتم تغيير الحالة",
+ "Away" : "بالخارج",
+ "Do not disturb" : "عدم الازعاج",
+ "{status}, {timestamp}" : "{status}, {timestamp}",
+ "Don't clear" : "غير محدد",
+ "Today" : "اليوم",
+ "This week" : "هذا الأسبوع",
+ "Online" : "متصل",
+ "Invisible" : "عدم الظهور",
+ "Offline" : "غير متصل",
+ "There was an error saving the new status" : "حدث خطأ اثناء حفظ الحالة الجديدة",
+ "30 minutes" : "30 دقيقة",
+ "1 hour" : "1 ساعة",
+ "4 hours" : "4 ساعات",
+ "Mute all notifications" : "عدم اظهار جميع التنبيهات",
+ "Appear offline" : "الحالة غير متصل",
+ "Clear status after" : "مسح رسالة الحالة بعد"
+},
+"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
diff --git a/apps/user_status/l10n/ar.json b/apps/user_status/l10n/ar.json
new file mode 100644
index 00000000000..76a16c3430d
--- /dev/null
+++ b/apps/user_status/l10n/ar.json
@@ -0,0 +1,36 @@
+{ "translations": {
+ "Recent statuses" : "آخر الحالات",
+ "In a meeting" : "في اجتماع",
+ "Commuting" : "تجوال",
+ "Out sick" : "مريض",
+ "Vacationing" : "في اجازة",
+ "Working remotely" : "العمل عن بعد",
+ "User status" : "حالة العضو",
+ "Clear status message after" : "احذف الحالة بعد",
+ "What's your status?" : "ماهي حالتك؟",
+ "Set status" : "تعيين الحالة",
+ "Online status" : "حالة الاتصال",
+ "Status message" : "رسالة الحالة",
+ "Clear status message" : "حذف رسالة الحالة",
+ "Set status message" : "تعيين رسالة الحالة",
+ "There was an error saving the status" : "حدث خطأ اثناء حفظ الحالة",
+ "There was an error clearing the status" : "حدث خطأ اثناء حذف الحالة",
+ "No recent status changes" : "لم يتم تغيير الحالة",
+ "Away" : "بالخارج",
+ "Do not disturb" : "عدم الازعاج",
+ "{status}, {timestamp}" : "{status}, {timestamp}",
+ "Don't clear" : "غير محدد",
+ "Today" : "اليوم",
+ "This week" : "هذا الأسبوع",
+ "Online" : "متصل",
+ "Invisible" : "عدم الظهور",
+ "Offline" : "غير متصل",
+ "There was an error saving the new status" : "حدث خطأ اثناء حفظ الحالة الجديدة",
+ "30 minutes" : "30 دقيقة",
+ "1 hour" : "1 ساعة",
+ "4 hours" : "4 ساعات",
+ "Mute all notifications" : "عدم اظهار جميع التنبيهات",
+ "Appear offline" : "الحالة غير متصل",
+ "Clear status after" : "مسح رسالة الحالة بعد"
+},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
+} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/sl.js b/apps/workflowengine/l10n/sl.js
index 6544f9f08d6..e9aed0ef3b6 100644
--- a/apps/workflowengine/l10n/sl.js
+++ b/apps/workflowengine/l10n/sl.js
@@ -36,10 +36,12 @@ OC.L10N.register(
"Operation %s does not exist" : "Opravilo %s ne obstaja.",
"Operation %s is invalid" : "Opravilo %s ni veljavno.",
"At least one check needs to be provided" : "Izbrano mora biti vsaj eno pravilo preverjanja",
+ "The provided operation data is too long" : "Podani podatki opravila so predolgi",
"Invalid check provided" : "Podano je neveljavno pravilo preverjanja",
"Check %s does not exist" : "Pravilo preverjanja %s ne obstaja.",
"Check %s is invalid" : "Pravilo preverjanja %s ni veljavno.",
"Check %s is not allowed with this entity" : "Pravilo preverjanja %s s tem predmetom ni veljavno",
+ "The provided check value is too long" : "Podani vrednost preverjanja je predolga",
"Check #%s does not exist" : "Preverba #%s ne obstaja.",
"Check %s is invalid or does not exist" : "Preverba %s ne obstaja.",
"Flow" : "Koračnik (Flow)",
diff --git a/apps/workflowengine/l10n/sl.json b/apps/workflowengine/l10n/sl.json
index 1e685ea5a82..82e6af14ad0 100644
--- a/apps/workflowengine/l10n/sl.json
+++ b/apps/workflowengine/l10n/sl.json
@@ -34,10 +34,12 @@
"Operation %s does not exist" : "Opravilo %s ne obstaja.",
"Operation %s is invalid" : "Opravilo %s ni veljavno.",
"At least one check needs to be provided" : "Izbrano mora biti vsaj eno pravilo preverjanja",
+ "The provided operation data is too long" : "Podani podatki opravila so predolgi",
"Invalid check provided" : "Podano je neveljavno pravilo preverjanja",
"Check %s does not exist" : "Pravilo preverjanja %s ne obstaja.",
"Check %s is invalid" : "Pravilo preverjanja %s ni veljavno.",
"Check %s is not allowed with this entity" : "Pravilo preverjanja %s s tem predmetom ni veljavno",
+ "The provided check value is too long" : "Podani vrednost preverjanja je predolga",
"Check #%s does not exist" : "Preverba #%s ne obstaja.",
"Check %s is invalid or does not exist" : "Preverba %s ne obstaja.",
"Flow" : "Koračnik (Flow)",
diff --git a/build/integration/sharing_features/sharing-v1.feature b/build/integration/sharing_features/sharing-v1.feature
index b5b4f5341af..00a754d54d3 100644
--- a/build/integration/sharing_features/sharing-v1.feature
+++ b/build/integration/sharing_features/sharing-v1.feature
@@ -14,7 +14,7 @@ Feature: sharing
Then the OCS status code should be "100"
And the HTTP status code should be "200"
And The following headers should be set
- | Content-Security-Policy | default-src 'none';base-uri 'none';manifest-src 'self' |
+ | Content-Security-Policy | default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none' |
Scenario: Creating a share with a group
Given user "user0" exists
diff --git a/core/l10n/ar.js b/core/l10n/ar.js
index d89fae7be9a..0367ceceb78 100644
--- a/core/l10n/ar.js
+++ b/core/l10n/ar.js
@@ -23,10 +23,18 @@ OC.L10N.register(
"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" : "خادم نكست كلاود",
+ "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." : "نظرا لسبب آمني تم ازالة البعض من روابط المشاركة الخاصة بك. يرجى مراجعة الرابط التالي لمزيد من التفاصيل.",
"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" : "تشغيل وضع الصيانة.",
@@ -50,15 +58,67 @@ OC.L10N.register(
"%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\" لاباتشي أو نجينكس في <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">صفحة التعليمات</a>. في نجينكس السطر البرمجي المذكور \"location~\" في الغالب يجب تغييره.",
+ "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 من الملفات. بالغالب هذه المشكلة تخص اعدادات نجينكس. لـ نيكست كلاود الاصدار 15 يتم اعادة تنظيم وضبط اعدادات التوصيل لملفات .woff2 . قارن اعدادات مع الاعدادات الاصلية في مستند <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 (\"PATH\") بإرجاع استجابة فارغة فقط.",
+ "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." : "لا تعمل قاعدة البيانات الخاصة بك بمستوى عزل المعاملة \"READ COMMITTED\". هذا يمكن أن يسبب مشاكل عند تنفيذ عدة إجراءات بالتوازي.",
+ "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." : "قفل ملف المعاملات معطل Transactional file locking ، قد يؤدي ذلك إلى مشاكل تتعلق بظروف السباق. قم بتمكين \"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 الخاص بك إلى مسار webroot الخاص بالتثبيت (suggestion: \"{suggestedOverwriteCliURL}\")",
+ "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>." : "لم يتم تكوين ذاكرة تخزين مؤقت. لتحسين الأداء ، يرجى تكوين memcache ، إذا كان ذلك متاحًا. يمكن العثور على مزيد من المعلومات في <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>." : "لم يتم العثور على مصدر مناسب randomness بواسطة 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." : "نكست كلاود 20 هو آخر اصدار يدعم PHP 7.2. نكست كلاود 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>." : "اعدادات reverse proxy header غير صحيحه ، أو أنك تقوم بالوصول إلى 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>." : "تم تكوين Memcached كذاكرة تخزين مؤقت موزعة ، ولكن تم تثبيت وحدة PHP الخاطئة \"memcache\". \\ OC \\ Memcache \\ Memcached يدعم فقط \"memcached\" وليس \"memcache\". انظر <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">الويكي memcached حول كلا الوحدتين</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." : "لم يتم تحميل وحدة PHP 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-indexices\" ، يمكن إضافة تلك الفهارس المفقودة يدويًا أثناء استمرار تشغيل الخادم. بمجرد إضافة الفهارس، تكون الاستعلامات إلى هذه الجداول عادةً أسرع بكثير.",
+ "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-basic-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-columns\" ، يمكن إضافة الأعمدة المفقودة يدويًا أثناء استمرار تشغيل الخادم. بمجرد إضافة الأعمدة ، قد تعمل بعض الميزات على تحسين الاستجابة أو قابلية الاستخدام.",
+ "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>." : "تفتقد بعض الأعمدة في قاعدة البيانات إلى تحويل كبير إلى عدد صحيح. نظرًا لحقيقة أن تغيير أنواع الأعمدة في الجداول الكبيرة قد يستغرق بعض الوقت لم يتم تغييرها تلقائيًا. من خلال تشغيل \"occ db: convert-filecache-bigint\" يمكن تطبيق هذه التغييرات المعلقة يدويًا. يجب إجراء هذه العملية أثناء عدم اتصال المثيل. لمزيد من التفاصيل اقرأ <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 أقل من القيمة الموصى بها وهي 512 ميجا بايت.",
+ "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 بايت (مثل emojis) دون مشاكل في أسماء الملفات أو التعليقات ، على سبيل المثال ، يوصى بتمكين دعم 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 جيجابايت في المجلد المؤقت لـ 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 غير آمنة. هذا يعني على الأرجح أنك تعمل خلف reverse proxy وأن متغيرات تكوين الكتابة لم تعيين بشكل صحيح. يرجى قراءة <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 ملفات","تنزيل %n ملفات","تنزيل %n ملفات"],
+ "The update is in progress, leaving this page might interrupt the process in some environments." : "جاري التحديث، وقد يؤدي مغادرة هذه الصفحة إلى مقاطعة العملية في بعض الاحيان.",
"Update to {version}" : "التحديث إلى {version}",
"An error occurred." : "طرأ هناك خطأ.",
"Please reload the page." : "رجاء أعد تحميل الصفحة.",
@@ -75,22 +135,51 @@ 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." : "لا يمكن العثور على قائمة التطبيقات من متجر التطبيقات.",
+ "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}",
+ "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" : "لا",
@@ -126,14 +215,22 @@ OC.L10N.register(
"Pending" : "معلّق",
"Copy to {folder}" : "أنسخ إلى {folder}",
"Move to {folder}" : "النقل إلى {folder}",
+ "Saving …" : "جاري الحفظ…",
"Authentication required" : "المصادقة مطلوبة",
"This action requires you to confirm your password" : "يتطلب هذا الإجراء منك تأكيد كلمة المرور",
"Confirm" : "تأكيد",
"Failed to authenticate, try again" : "أخفق المصادقة، أعد المحاولة",
"seconds ago" : "منذ ثواني",
"Connection to server lost" : "تم فقد الاتصال بالخادم",
+ "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" : "كلمة السر ضعيفة جدا",
@@ -157,9 +254,15 @@ 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." : "إذا حدث هذا مرة أخرى ، يرجى إرسال التفاصيل الفنية أدناه إلى مسؤول الخادم.",
"More details can be found in the server log." : "مزيد من التفاصيل في سجلات الخادم.",
"Technical details" : "تفاصيل تقنية",
"Remote Address: %s" : "العنوان البعدي : %s",
@@ -172,8 +275,10 @@ OC.L10N.register(
"Trace" : "متابعة",
"Security warning" : "تحذير الأمان",
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "مجلدات البيانات والملفات الخاصة قد تكون قابلة للوصول اليها عن طريق شبكة الانترنت وذلك بسبب ان ملف .htaccess لا يعمل بشكل صحيح.",
+ "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">documentation</a>." : "للحصول على معلومات حول كيفية تكوين الخادم الخاص بك، يرجى الاطلاع على <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">التعليمات</a>.",
"Create an <strong>admin account</strong>" : "أضف <strong>مستخدم رئيسي</strong> ",
"Username" : "إسم المستخدم",
+ "Show password" : "اظهر كلمة المرور",
"Storage & database" : "التخزين و قاعدة البيانات",
"Data folder" : "مجلد المعلومات",
"Configure the database" : "اعداد قاعدة البيانات",
@@ -185,11 +290,19 @@ OC.L10N.register(
"Database name" : "إسم قاعدة البيانات",
"Database tablespace" : "مساحة جدول قاعدة البيانات",
"Database host" : "خادم قاعدة البيانات",
+ "Please specify the port number along with the host name (e.g., localhost:5432)." : "يرجى تحديد رقم المنفذ مع اسم المضيف (على سبيل المثال ، mycloud: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." : "يبدو أنك تحاول إعادة تثبيت نكست كلاود الخاص بك. ومع ذلك ، فإن الملف 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" : "تخطّيه وانتقل إلى المحتوى الرئيسي",
@@ -203,6 +316,7 @@ OC.L10N.register(
"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" : "السماح بالنفاذ",
"Alternative log in using app token" : "تسجيل الدخول عبر رمز التطبيق",
@@ -215,11 +329,16 @@ OC.L10N.register(
"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." : "يرجى التواصل مع مسؤول النظام. بإمكانك إضافة اسم النطاق في اعدادات ملف config/config.php ضمن الخيار \"trusted_domains\".",
"Further information how to configure this can be found in the %1$sdocumentation%2$s." : "مزيد من المعلومات تجدها في %1$sدليل الاستخدام%2$s.",
@@ -248,6 +367,7 @@ OC.L10N.register(
"Searching other places" : "البحث في أماكن أخرى",
"No search results in other folders for {tag}{filter}{endtag}" : "لا نتائج بحث في مجلدات اخرى ل {tag}{filter}{endtag}",
"Nextcloud {app}" : "نكست كلاود {app}",
+ "Local document editing back-end used by the OnlyOffice app." : "خلفية تحرير المستند المحلي المستخدمة بواسطة تطبيق OnlyOffice.",
"Saving..." : "جاري الحفظ...",
"Calendar, Contacts, Talk, Mail & OnlyOffice" : "التقويم، جهات الاتصال، التحدث، البريد و OnlyOffice",
"Search" : "البحث",
diff --git a/core/l10n/ar.json b/core/l10n/ar.json
index b6f38d54fa2..a09be047e53 100644
--- a/core/l10n/ar.json
+++ b/core/l10n/ar.json
@@ -21,10 +21,18 @@
"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" : "خادم نكست كلاود",
+ "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." : "نظرا لسبب آمني تم ازالة البعض من روابط المشاركة الخاصة بك. يرجى مراجعة الرابط التالي لمزيد من التفاصيل.",
"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" : "تشغيل وضع الصيانة.",
@@ -48,15 +56,67 @@
"%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\" لاباتشي أو نجينكس في <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">صفحة التعليمات</a>. في نجينكس السطر البرمجي المذكور \"location~\" في الغالب يجب تغييره.",
+ "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 من الملفات. بالغالب هذه المشكلة تخص اعدادات نجينكس. لـ نيكست كلاود الاصدار 15 يتم اعادة تنظيم وضبط اعدادات التوصيل لملفات .woff2 . قارن اعدادات مع الاعدادات الاصلية في مستند <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 (\"PATH\") بإرجاع استجابة فارغة فقط.",
+ "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." : "لا تعمل قاعدة البيانات الخاصة بك بمستوى عزل المعاملة \"READ COMMITTED\". هذا يمكن أن يسبب مشاكل عند تنفيذ عدة إجراءات بالتوازي.",
+ "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." : "قفل ملف المعاملات معطل Transactional file locking ، قد يؤدي ذلك إلى مشاكل تتعلق بظروف السباق. قم بتمكين \"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 الخاص بك إلى مسار webroot الخاص بالتثبيت (suggestion: \"{suggestedOverwriteCliURL}\")",
+ "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>." : "لم يتم تكوين ذاكرة تخزين مؤقت. لتحسين الأداء ، يرجى تكوين memcache ، إذا كان ذلك متاحًا. يمكن العثور على مزيد من المعلومات في <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>." : "لم يتم العثور على مصدر مناسب randomness بواسطة 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." : "نكست كلاود 20 هو آخر اصدار يدعم PHP 7.2. نكست كلاود 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>." : "اعدادات reverse proxy header غير صحيحه ، أو أنك تقوم بالوصول إلى 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>." : "تم تكوين Memcached كذاكرة تخزين مؤقت موزعة ، ولكن تم تثبيت وحدة PHP الخاطئة \"memcache\". \\ OC \\ Memcache \\ Memcached يدعم فقط \"memcached\" وليس \"memcache\". انظر <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">الويكي memcached حول كلا الوحدتين</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." : "لم يتم تحميل وحدة PHP 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-indexices\" ، يمكن إضافة تلك الفهارس المفقودة يدويًا أثناء استمرار تشغيل الخادم. بمجرد إضافة الفهارس، تكون الاستعلامات إلى هذه الجداول عادةً أسرع بكثير.",
+ "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-basic-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-columns\" ، يمكن إضافة الأعمدة المفقودة يدويًا أثناء استمرار تشغيل الخادم. بمجرد إضافة الأعمدة ، قد تعمل بعض الميزات على تحسين الاستجابة أو قابلية الاستخدام.",
+ "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>." : "تفتقد بعض الأعمدة في قاعدة البيانات إلى تحويل كبير إلى عدد صحيح. نظرًا لحقيقة أن تغيير أنواع الأعمدة في الجداول الكبيرة قد يستغرق بعض الوقت لم يتم تغييرها تلقائيًا. من خلال تشغيل \"occ db: convert-filecache-bigint\" يمكن تطبيق هذه التغييرات المعلقة يدويًا. يجب إجراء هذه العملية أثناء عدم اتصال المثيل. لمزيد من التفاصيل اقرأ <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 أقل من القيمة الموصى بها وهي 512 ميجا بايت.",
+ "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 بايت (مثل emojis) دون مشاكل في أسماء الملفات أو التعليقات ، على سبيل المثال ، يوصى بتمكين دعم 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 جيجابايت في المجلد المؤقت لـ 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 غير آمنة. هذا يعني على الأرجح أنك تعمل خلف reverse proxy وأن متغيرات تكوين الكتابة لم تعيين بشكل صحيح. يرجى قراءة <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 ملفات","تنزيل %n ملفات","تنزيل %n ملفات"],
+ "The update is in progress, leaving this page might interrupt the process in some environments." : "جاري التحديث، وقد يؤدي مغادرة هذه الصفحة إلى مقاطعة العملية في بعض الاحيان.",
"Update to {version}" : "التحديث إلى {version}",
"An error occurred." : "طرأ هناك خطأ.",
"Please reload the page." : "رجاء أعد تحميل الصفحة.",
@@ -73,22 +133,51 @@
"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." : "لا يمكن العثور على قائمة التطبيقات من متجر التطبيقات.",
+ "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}",
+ "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" : "لا",
@@ -124,14 +213,22 @@
"Pending" : "معلّق",
"Copy to {folder}" : "أنسخ إلى {folder}",
"Move to {folder}" : "النقل إلى {folder}",
+ "Saving …" : "جاري الحفظ…",
"Authentication required" : "المصادقة مطلوبة",
"This action requires you to confirm your password" : "يتطلب هذا الإجراء منك تأكيد كلمة المرور",
"Confirm" : "تأكيد",
"Failed to authenticate, try again" : "أخفق المصادقة، أعد المحاولة",
"seconds ago" : "منذ ثواني",
"Connection to server lost" : "تم فقد الاتصال بالخادم",
+ "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" : "كلمة السر ضعيفة جدا",
@@ -155,9 +252,15 @@
"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." : "إذا حدث هذا مرة أخرى ، يرجى إرسال التفاصيل الفنية أدناه إلى مسؤول الخادم.",
"More details can be found in the server log." : "مزيد من التفاصيل في سجلات الخادم.",
"Technical details" : "تفاصيل تقنية",
"Remote Address: %s" : "العنوان البعدي : %s",
@@ -170,8 +273,10 @@
"Trace" : "متابعة",
"Security warning" : "تحذير الأمان",
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "مجلدات البيانات والملفات الخاصة قد تكون قابلة للوصول اليها عن طريق شبكة الانترنت وذلك بسبب ان ملف .htaccess لا يعمل بشكل صحيح.",
+ "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">documentation</a>." : "للحصول على معلومات حول كيفية تكوين الخادم الخاص بك، يرجى الاطلاع على <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">التعليمات</a>.",
"Create an <strong>admin account</strong>" : "أضف <strong>مستخدم رئيسي</strong> ",
"Username" : "إسم المستخدم",
+ "Show password" : "اظهر كلمة المرور",
"Storage & database" : "التخزين و قاعدة البيانات",
"Data folder" : "مجلد المعلومات",
"Configure the database" : "اعداد قاعدة البيانات",
@@ -183,11 +288,19 @@
"Database name" : "إسم قاعدة البيانات",
"Database tablespace" : "مساحة جدول قاعدة البيانات",
"Database host" : "خادم قاعدة البيانات",
+ "Please specify the port number along with the host name (e.g., localhost:5432)." : "يرجى تحديد رقم المنفذ مع اسم المضيف (على سبيل المثال ، mycloud: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." : "يبدو أنك تحاول إعادة تثبيت نكست كلاود الخاص بك. ومع ذلك ، فإن الملف 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" : "تخطّيه وانتقل إلى المحتوى الرئيسي",
@@ -201,6 +314,7 @@
"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" : "السماح بالنفاذ",
"Alternative log in using app token" : "تسجيل الدخول عبر رمز التطبيق",
@@ -213,11 +327,16 @@
"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." : "يرجى التواصل مع مسؤول النظام. بإمكانك إضافة اسم النطاق في اعدادات ملف config/config.php ضمن الخيار \"trusted_domains\".",
"Further information how to configure this can be found in the %1$sdocumentation%2$s." : "مزيد من المعلومات تجدها في %1$sدليل الاستخدام%2$s.",
@@ -246,6 +365,7 @@
"Searching other places" : "البحث في أماكن أخرى",
"No search results in other folders for {tag}{filter}{endtag}" : "لا نتائج بحث في مجلدات اخرى ل {tag}{filter}{endtag}",
"Nextcloud {app}" : "نكست كلاود {app}",
+ "Local document editing back-end used by the OnlyOffice app." : "خلفية تحرير المستند المحلي المستخدمة بواسطة تطبيق OnlyOffice.",
"Saving..." : "جاري الحفظ...",
"Calendar, Contacts, Talk, Mail & OnlyOffice" : "التقويم، جهات الاتصال، التحدث، البريد و OnlyOffice",
"Search" : "البحث",
diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js
index 3cd69f60623..f3ccfd1e408 100644
--- a/core/l10n/de_DE.js
+++ b/core/l10n/de_DE.js
@@ -332,7 +332,7 @@ OC.L10N.register(
"The password is wrong. Try again." : "Das Passwort ist falsch. Bitte versuchen Sie es erneut.",
"Two-factor authentication" : "Zwei-Faktor Authentifizierung",
"Enhanced security is enabled for your account. Choose a second factor for authentication:" : "Die erweiterte Sicherheit wurde für Ihr Konto aktiviert. Bitte wählen Sie einem zweiten Faktor für die Authentifizierung: ",
- "Could not load at least one of your enabled two-factor auth methods. Please contact your admin." : "Es konnte nicht eine Ihrer Zwei-Faktor-Authentifizierungsmethoden geladen werden. Kontaktieren Sie Ihren Administrator.",
+ "Could not load at least one of your enabled two-factor auth methods. Please contact your admin." : "Mindestens eine Ihrer Zwei-Faktor-Authentifizierungsmethoden konnte nicht geladen werden. Kontaktieren Sie Ihren Administrator.",
"Two-factor authentication is enforced but has not been configured on your account. Contact your admin for assistance." : "Die Zwei-Faktor-Authentifizierung wird erzwungen, wurde für Ihr Konto jedoch nicht konfiguriert. Wenden Sie sich für Unterstützung an Ihren Administrator.",
"Two-factor authentication is enforced but has not been configured on your account. Please continue to setup two-factor authentication." : "Die Zwei-Faktor-Authentifizierung wird erzwungen, wurde jedoch für Dein Konto nicht konfiguriert. Bitte fahre mit der Einrichtung der Zwei-Faktor-Authentifizierung fort.",
"Set up two-factor authentication" : "Zwei-Faktor-Authentifizierung konfigurieren",
diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json
index fe65f1cf0f3..dc1c693b211 100644
--- a/core/l10n/de_DE.json
+++ b/core/l10n/de_DE.json
@@ -330,7 +330,7 @@
"The password is wrong. Try again." : "Das Passwort ist falsch. Bitte versuchen Sie es erneut.",
"Two-factor authentication" : "Zwei-Faktor Authentifizierung",
"Enhanced security is enabled for your account. Choose a second factor for authentication:" : "Die erweiterte Sicherheit wurde für Ihr Konto aktiviert. Bitte wählen Sie einem zweiten Faktor für die Authentifizierung: ",
- "Could not load at least one of your enabled two-factor auth methods. Please contact your admin." : "Es konnte nicht eine Ihrer Zwei-Faktor-Authentifizierungsmethoden geladen werden. Kontaktieren Sie Ihren Administrator.",
+ "Could not load at least one of your enabled two-factor auth methods. Please contact your admin." : "Mindestens eine Ihrer Zwei-Faktor-Authentifizierungsmethoden konnte nicht geladen werden. Kontaktieren Sie Ihren Administrator.",
"Two-factor authentication is enforced but has not been configured on your account. Contact your admin for assistance." : "Die Zwei-Faktor-Authentifizierung wird erzwungen, wurde für Ihr Konto jedoch nicht konfiguriert. Wenden Sie sich für Unterstützung an Ihren Administrator.",
"Two-factor authentication is enforced but has not been configured on your account. Please continue to setup two-factor authentication." : "Die Zwei-Faktor-Authentifizierung wird erzwungen, wurde jedoch für Dein Konto nicht konfiguriert. Bitte fahre mit der Einrichtung der Zwei-Faktor-Authentifizierung fort.",
"Set up two-factor authentication" : "Zwei-Faktor-Authentifizierung konfigurieren",
diff --git a/core/l10n/is.js b/core/l10n/is.js
index d040dacc036..cda27d77b04 100644
--- a/core/l10n/is.js
+++ b/core/l10n/is.js
@@ -73,6 +73,7 @@ OC.L10N.register(
"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>." : "Ekkert skyndiminni (cache) hefur verið stillt. Til að auka afköst ættirðu að setja upp skyndiminni (með memcache) ef það er tiltækt. Hægt er að finna nánari upplýsingar um þetta í <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">hjálparskjölum</a> okkar.",
"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>." : "Enginn hentugur gagnagjafi fyrir handahófsreikning fannst fyrir PHP, sem er mjög óráðlegt af öryggisástæðum. Hægt er að finna nánari upplýsingar um þetta í <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">hjálparskjölum</a> okkar.",
"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." : "Þú ert að keyra PHP {version}. Við hvetjum þig til að uppfæra PHP útgáfuna til að njóta <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">afkastaaukningar og öryggisuppfærslna frá PHP Group</a> um leið og dreifingin þín styður það.",
+ "Nextcloud 20 is the last release supporting PHP 7.2. Nextcloud 21 requires at least PHP 7.3." : "Nextcloud 20 er síðasta útgáfan sem styður PHP 7.2. Nextcloud 21 krefst að minnsta kosti 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>." : "Uppsetning gagnstæðs milliþjónshauss (reverse proxy header) er röng, eða að þú ert að tengjast Nextcloud frá treystum milliþjóni Ef þú ert ekki að tengjast Nextcloud frá treystum milliþjóni, þá er þetta er öryggisvandamál og getur leyft árásaraðilum að dulbúa IP-vistfang þeirra sem sýnilegt Nextcloud. Nánari upplýsingar má finna í <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">hjálparskjölum</a> okkar.",
"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>." : "Memcached er sett upp sem dreift skyndiminni, en hinsvegar er ranga PHP-einingin \"memcache\" uppsett. \\OC\\Memcache\\Memcached styður einungis \"memcached\" en ekki \"memcache\". Skoðaðu <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">memcached wiki-síðurnar um báðar einingarnar</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>)" : "Sumar skrár hafa ekki staðist áreiðanleikaprófun. Hægt er að finna nánari upplýsingar um þetta í <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">hjálparskjölum</a> okkar. (<a href=\"{codeIntegrityDownloadEndpoint}\">Listi yfir ógildar skrár…</a> / <a href=\"{rescanEndpoint}\">Endurskanna…</a>)",
@@ -82,8 +83,10 @@ OC.L10N.register(
"Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "PHP-uppsetningin er ekki með stuðning við Free Type. Þetta mun valda því að notendamyndir og stillingaviðmót virki ekki.",
"Missing index \"{indexName}\" in table \"{tableName}\"." : "Vantar vísinn \"{indexName}\" í töflunni \"{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." : "Gagnagrunninn vantar nokkra atriðavísa (indexes). Vegna þess að það að bæta atriðavísum við stórar töflur getur tekið töluverðan tíma, þá var þeim ekki bætt við sjálfvirkt. Með því að keyra \"occ db:add-missing-indices\" væri hægt að bæta inn þessum atriðavísum sem vantar, á meðan kerfið er í gangi. Um leið og búið er að bæta inn þessum atriðavísum, munu fyrirspurnir í þessar töflur verða miklu hraðvirkari.",
+ "Missing primary key on table \"{tableName}\"." : "Vantar aðalvísinn í töflunni \"{tableName}\".",
"Missing optional column \"{columnName}\" in table \"{tableName}\"." : "Vantar valkvæða dálkinn \"{columnName}\" í töflunni \"{tableName}\".",
- "This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "Í þetta kerfistilvik vantar ýmsar PHP-einingar sem mælt er með. Ti að bæta afköst og betri samhæfni er mælt eindregið með að setja þær upp.",
+ "This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "Í þetta kerfistilvik vantar ýmsar PHP-einingar sem mælt er með. Til að bæta afköst og betri samhæfni er mælt eindregið með að setja þær upp.",
+ "Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Í kerfiseininguna php-imagick vantar stuðning við SVG. Til að bæta afköst og betri samhæfni er mælt eindregið með að setja hana upp.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Núna er stuðst við SQLite sem bakenda fyrir gagnagrunn. Fyrir stærri uppsetningar mælum við með að skipta yfir í annan gagnagrunnsbakenda.",
"This is particularly recommended when using the desktop client for file synchronisation." : "Mælt er sérstaklega með þessu þegar skjáborðsforritið er notað til að samstilla skrár.",
"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>." : "Til að yfirfæra í annan gagnagrunn skaltu nota skipanalínutólið: 'occ db:convert-type', eða lesa <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">hjálparskjölin ↗</a>.",
@@ -153,10 +156,12 @@ OC.L10N.register(
"Log in with a device" : "Skrá inn með tæki",
"Back" : "Til baka",
"Reset search" : "Núllstilla leit",
+ "Search for {name} only" : "Leita einungis að {name}",
"No results for {query}" : "Engar niðurstöður fyrir {query}",
"Start typing to search" : "Skrifaðu hér til að leita",
"Loading more results …" : "Hleð inn fleiri niðurstöðum …",
"Load more results" : "Hlaða inn fleiri niðurstöðum",
+ "An error occurred while searching for {type}" : "Villa kom upp við leit að {type}",
"Search {types} …" : "Leita að {types} …",
"Settings" : "Stillingar",
"Could not load your contacts" : "Gat ekki hlaðið inn tengiliðalistanum þínum",
@@ -244,6 +249,7 @@ OC.L10N.register(
"Too many requests" : "Of margar beiðnir",
"There were too many requests from your network. Retry later or contact your administrator if this is an error." : "Það komu of margar beiðnir frá netkerfinu þínu. Reyndu aftur eða hafðu samband við kerfisstjóra ef þetta er ekki rétt.",
"Error" : "Villa",
+ "Previous" : "Fyrra",
"Internal Server Error" : "Innri villa",
"The server was unable to complete your request." : "Þjóninum tókst ekki að afgreiða beiðnina þína.",
"If this happens again, please send the technical details below to the server administrator." : "Ef þetta gerist aftur, sendu tæknilegu lýsinguna hér fyrir neðan til kerfisstjóra þjónsins.",
diff --git a/core/l10n/is.json b/core/l10n/is.json
index 3e6d2e0adc5..fc5c491adda 100644
--- a/core/l10n/is.json
+++ b/core/l10n/is.json
@@ -71,6 +71,7 @@
"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>." : "Ekkert skyndiminni (cache) hefur verið stillt. Til að auka afköst ættirðu að setja upp skyndiminni (með memcache) ef það er tiltækt. Hægt er að finna nánari upplýsingar um þetta í <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">hjálparskjölum</a> okkar.",
"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>." : "Enginn hentugur gagnagjafi fyrir handahófsreikning fannst fyrir PHP, sem er mjög óráðlegt af öryggisástæðum. Hægt er að finna nánari upplýsingar um þetta í <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">hjálparskjölum</a> okkar.",
"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." : "Þú ert að keyra PHP {version}. Við hvetjum þig til að uppfæra PHP útgáfuna til að njóta <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">afkastaaukningar og öryggisuppfærslna frá PHP Group</a> um leið og dreifingin þín styður það.",
+ "Nextcloud 20 is the last release supporting PHP 7.2. Nextcloud 21 requires at least PHP 7.3." : "Nextcloud 20 er síðasta útgáfan sem styður PHP 7.2. Nextcloud 21 krefst að minnsta kosti 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>." : "Uppsetning gagnstæðs milliþjónshauss (reverse proxy header) er röng, eða að þú ert að tengjast Nextcloud frá treystum milliþjóni Ef þú ert ekki að tengjast Nextcloud frá treystum milliþjóni, þá er þetta er öryggisvandamál og getur leyft árásaraðilum að dulbúa IP-vistfang þeirra sem sýnilegt Nextcloud. Nánari upplýsingar má finna í <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">hjálparskjölum</a> okkar.",
"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>." : "Memcached er sett upp sem dreift skyndiminni, en hinsvegar er ranga PHP-einingin \"memcache\" uppsett. \\OC\\Memcache\\Memcached styður einungis \"memcached\" en ekki \"memcache\". Skoðaðu <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">memcached wiki-síðurnar um báðar einingarnar</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>)" : "Sumar skrár hafa ekki staðist áreiðanleikaprófun. Hægt er að finna nánari upplýsingar um þetta í <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">hjálparskjölum</a> okkar. (<a href=\"{codeIntegrityDownloadEndpoint}\">Listi yfir ógildar skrár…</a> / <a href=\"{rescanEndpoint}\">Endurskanna…</a>)",
@@ -80,8 +81,10 @@
"Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "PHP-uppsetningin er ekki með stuðning við Free Type. Þetta mun valda því að notendamyndir og stillingaviðmót virki ekki.",
"Missing index \"{indexName}\" in table \"{tableName}\"." : "Vantar vísinn \"{indexName}\" í töflunni \"{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." : "Gagnagrunninn vantar nokkra atriðavísa (indexes). Vegna þess að það að bæta atriðavísum við stórar töflur getur tekið töluverðan tíma, þá var þeim ekki bætt við sjálfvirkt. Með því að keyra \"occ db:add-missing-indices\" væri hægt að bæta inn þessum atriðavísum sem vantar, á meðan kerfið er í gangi. Um leið og búið er að bæta inn þessum atriðavísum, munu fyrirspurnir í þessar töflur verða miklu hraðvirkari.",
+ "Missing primary key on table \"{tableName}\"." : "Vantar aðalvísinn í töflunni \"{tableName}\".",
"Missing optional column \"{columnName}\" in table \"{tableName}\"." : "Vantar valkvæða dálkinn \"{columnName}\" í töflunni \"{tableName}\".",
- "This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "Í þetta kerfistilvik vantar ýmsar PHP-einingar sem mælt er með. Ti að bæta afköst og betri samhæfni er mælt eindregið með að setja þær upp.",
+ "This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "Í þetta kerfistilvik vantar ýmsar PHP-einingar sem mælt er með. Til að bæta afköst og betri samhæfni er mælt eindregið með að setja þær upp.",
+ "Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Í kerfiseininguna php-imagick vantar stuðning við SVG. Til að bæta afköst og betri samhæfni er mælt eindregið með að setja hana upp.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Núna er stuðst við SQLite sem bakenda fyrir gagnagrunn. Fyrir stærri uppsetningar mælum við með að skipta yfir í annan gagnagrunnsbakenda.",
"This is particularly recommended when using the desktop client for file synchronisation." : "Mælt er sérstaklega með þessu þegar skjáborðsforritið er notað til að samstilla skrár.",
"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>." : "Til að yfirfæra í annan gagnagrunn skaltu nota skipanalínutólið: 'occ db:convert-type', eða lesa <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">hjálparskjölin ↗</a>.",
@@ -151,10 +154,12 @@
"Log in with a device" : "Skrá inn með tæki",
"Back" : "Til baka",
"Reset search" : "Núllstilla leit",
+ "Search for {name} only" : "Leita einungis að {name}",
"No results for {query}" : "Engar niðurstöður fyrir {query}",
"Start typing to search" : "Skrifaðu hér til að leita",
"Loading more results …" : "Hleð inn fleiri niðurstöðum …",
"Load more results" : "Hlaða inn fleiri niðurstöðum",
+ "An error occurred while searching for {type}" : "Villa kom upp við leit að {type}",
"Search {types} …" : "Leita að {types} …",
"Settings" : "Stillingar",
"Could not load your contacts" : "Gat ekki hlaðið inn tengiliðalistanum þínum",
@@ -242,6 +247,7 @@
"Too many requests" : "Of margar beiðnir",
"There were too many requests from your network. Retry later or contact your administrator if this is an error." : "Það komu of margar beiðnir frá netkerfinu þínu. Reyndu aftur eða hafðu samband við kerfisstjóra ef þetta er ekki rétt.",
"Error" : "Villa",
+ "Previous" : "Fyrra",
"Internal Server Error" : "Innri villa",
"The server was unable to complete your request." : "Þjóninum tókst ekki að afgreiða beiðnina þína.",
"If this happens again, please send the technical details below to the server administrator." : "Ef þetta gerist aftur, sendu tæknilegu lýsinguna hér fyrir neðan til kerfisstjóra þjónsins.",
diff --git a/core/l10n/sl.js b/core/l10n/sl.js
index 38941db4b88..45b2c9e05a1 100644
--- a/core/l10n/sl.js
+++ b/core/l10n/sl.js
@@ -79,17 +79,24 @@ OC.L10N.register(
"Nextcloud 20 is the last release supporting PHP 7.2. Nextcloud 21 requires at least PHP 7.3." : "Okolje Nextcloud 20 je zadnja različica, ki omogoča podporo PHP 7.2. Nextcloud 21 zahteva vsaj različico PHP 7.3.",
"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>." : "Predpomnilnik memcached je nastavljen kot porazdeljen predpomnilnik, vendar pa je nameščen napačen modul PHP »memcache«. Modul \\OC\\Memcache\\Memcached podpirao le »memcached«, ne pa tudi »memcache«. Več podrobnosti za oba modula je zapisanih <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">na wiki straneh</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>)" : "Nekatere datoteke ne opravijo preizkusa celovitosti. Več podrobnosti o težavi je opisanih v <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentaciji</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Seznam neveljavnih datotek … </a>/ <a href=\"{rescanEndpoint}\">Ponovni preizkus …</a>)",
+ "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." : "Funkcija PHP »set_time_limit« ni na voljo. To lahko povzroči nepričakovano zaustavitev skriptnih ukazov med izvajanjem, kar lahko povzroči sesutje namestitve. To možnost je priporočeno omogočiti.",
"Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Namestitev PHP je brez ustrezne podpore za FreeType, kar pogosto vpliva na težave s slikami profila in nastavitvami vmesnika.",
"Missing index \"{indexName}\" in table \"{tableName}\"." : "Manjka kazalo » {indexName} « v razpredelnici »{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." : "V podatkovni zbirki ni določenih nekaterih določil. Ker je dodajanje določil na velikih razpredelnicah časovno izredno zahtevno opravilo, ta niso dodana samodejno. Z ukazom »occ db: add-missing-indeks« je določila mogoče varno dodati ročno, medtem ko je sistem v delovanju. Po dodajanju bo izvajanje poizvedb teh razpredelnic neprimerno hitrejše.",
"Missing primary key on table \"{tableName}\"." : "Manjka osnovni ključ v razpredelnici »{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." : "V podatkovni zbirki ni določenih nekaterih osnovnih ključev. Ker je dodajanje ključev na velikih razpredelnicah časovno izredno zahtevno opravilo, ti niso dodani samodejno. Z ukazom »occ db: add-missing-primary-keys« je ključe mogoče varno dodati ročno, medtem ko je sistem v delovanju.",
"Missing optional column \"{columnName}\" in table \"{tableName}\"." : "Manjka izbirni stolpec »{columnName}« v razpredelnici »{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." : "V podatkovni zbirki manjka nekaj izbirnih stolpcev. Ker je dodajanje stolpcev na velikih razpredelnicah časovno izredno zahtevno opravilo, ta niso dodana samodejno, ker so v osnovi izbirna. Z ukazom »occ db:add-missing-columns« je stolpce mogoče varno dodati ročno med delovanjem sistema. Po dodajanju bo odzivnost in uporabnost nekaterih zmožnosti občutna izboljšana.",
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "Namestitev PHP ne vključuje nekaterih priporočenih modulov. Za izboljšanje delovanja in boljšo skladnost jih je zelo priporočljivo omogočiti.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Modul php-imagick ne vključuje podpore za SVG. Za izboljšanje delovanja in boljšo skladnost jih je zelo priporočljivo omogočiti.",
+ "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>." : "Nekateri stolpci v podatkovni zbirki so brez pretvornika velikih števil. Ker je spreminjanje stolpcev na velikih razpredelnicah časovno izredno zahtevno opravilo, ta niso dodana samodejno. V osnovi so izbirna. Z ukazom »occ db:convert-filecache-bigint« je mogoče te spremembe dodati ročno. Opravilo je treba izvesti, ko okolje ni dejavno. Za več podrobnosti si oglejte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentacijo</a>.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Trenutno je uporabljena ozadnja podatkovna zbirka SQLite. Za obsežnejše sisteme je priporočljiv prehod na drugo vrsto zbirke.",
"This is particularly recommended when using the desktop client for file synchronisation." : "Priporočilo ima še večjo težo, če se sistem krajevno usklajuje z namizjem prek odjemalca.",
"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>." : "Za prehod sistema na drugo podatkovno zbirko, uporabite ukaz orodne vrstice: »occ db:convert-type«, več o tem pa je zapisano v <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentaciji ↗</a>.",
"The PHP memory limit is below the recommended value of 512MB." : "Omejitev pomnilnika PHP je pod priporočljivo vrednostjo 512 MB.",
+ "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:" : "Nekatere mape programov imajo lastništvo določeno na uporabnika ni ni spletni strežniški uporabnik. To se lahko zgodi, če so programi nameščeni ročno. Preveriti je treba dovoljenja map:",
"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>." : "Podatkovna zbirka MySQL je v uporabi, ni pa omogočena podpora za 4-bitne znake. Za uporabo teh znakov (kot so na primer grafične izrazne ikone) brez težav tudi v imenih datotek in opombah, je priporočljivo podporo omogočiti med nastavitvami MySQL. Več podrobnosti je zabeleženih na straneh <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentacije</a>.",
+ "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>." : "Dostop do okolja poteka prek varne povezave, a ta ustvarja ne-varne naslove URL. To najverjetneje pomeni, da je strežnik za povratnim strežnikom in da spremenljivke nastavitev niso pravilno nastavljene. Več o tem si lahko ogledate v <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentaciji</a>.",
"Error occurred while checking server setup" : "Prišlo je do napake med preverjanjem nastavitev strežnika",
"For more details see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Za več podrobnosti si oglejte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentacijo</a>.",
"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." : "Glava HTTP »{header}« ni nastavljena na pričakovano vrednost »{expected}«. To predstavlja potencialno varnostno ali zasebnostno tveganje, zato je priporočljivo prilagoditi nastavitve.",
diff --git a/core/l10n/sl.json b/core/l10n/sl.json
index e10e663e452..109cd654057 100644
--- a/core/l10n/sl.json
+++ b/core/l10n/sl.json
@@ -77,17 +77,24 @@
"Nextcloud 20 is the last release supporting PHP 7.2. Nextcloud 21 requires at least PHP 7.3." : "Okolje Nextcloud 20 je zadnja različica, ki omogoča podporo PHP 7.2. Nextcloud 21 zahteva vsaj različico PHP 7.3.",
"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>." : "Predpomnilnik memcached je nastavljen kot porazdeljen predpomnilnik, vendar pa je nameščen napačen modul PHP »memcache«. Modul \\OC\\Memcache\\Memcached podpirao le »memcached«, ne pa tudi »memcache«. Več podrobnosti za oba modula je zapisanih <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">na wiki straneh</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>)" : "Nekatere datoteke ne opravijo preizkusa celovitosti. Več podrobnosti o težavi je opisanih v <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentaciji</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Seznam neveljavnih datotek … </a>/ <a href=\"{rescanEndpoint}\">Ponovni preizkus …</a>)",
+ "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." : "Funkcija PHP »set_time_limit« ni na voljo. To lahko povzroči nepričakovano zaustavitev skriptnih ukazov med izvajanjem, kar lahko povzroči sesutje namestitve. To možnost je priporočeno omogočiti.",
"Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Namestitev PHP je brez ustrezne podpore za FreeType, kar pogosto vpliva na težave s slikami profila in nastavitvami vmesnika.",
"Missing index \"{indexName}\" in table \"{tableName}\"." : "Manjka kazalo » {indexName} « v razpredelnici »{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." : "V podatkovni zbirki ni določenih nekaterih določil. Ker je dodajanje določil na velikih razpredelnicah časovno izredno zahtevno opravilo, ta niso dodana samodejno. Z ukazom »occ db: add-missing-indeks« je določila mogoče varno dodati ročno, medtem ko je sistem v delovanju. Po dodajanju bo izvajanje poizvedb teh razpredelnic neprimerno hitrejše.",
"Missing primary key on table \"{tableName}\"." : "Manjka osnovni ključ v razpredelnici »{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." : "V podatkovni zbirki ni določenih nekaterih osnovnih ključev. Ker je dodajanje ključev na velikih razpredelnicah časovno izredno zahtevno opravilo, ti niso dodani samodejno. Z ukazom »occ db: add-missing-primary-keys« je ključe mogoče varno dodati ročno, medtem ko je sistem v delovanju.",
"Missing optional column \"{columnName}\" in table \"{tableName}\"." : "Manjka izbirni stolpec »{columnName}« v razpredelnici »{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." : "V podatkovni zbirki manjka nekaj izbirnih stolpcev. Ker je dodajanje stolpcev na velikih razpredelnicah časovno izredno zahtevno opravilo, ta niso dodana samodejno, ker so v osnovi izbirna. Z ukazom »occ db:add-missing-columns« je stolpce mogoče varno dodati ročno med delovanjem sistema. Po dodajanju bo odzivnost in uporabnost nekaterih zmožnosti občutna izboljšana.",
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "Namestitev PHP ne vključuje nekaterih priporočenih modulov. Za izboljšanje delovanja in boljšo skladnost jih je zelo priporočljivo omogočiti.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Modul php-imagick ne vključuje podpore za SVG. Za izboljšanje delovanja in boljšo skladnost jih je zelo priporočljivo omogočiti.",
+ "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>." : "Nekateri stolpci v podatkovni zbirki so brez pretvornika velikih števil. Ker je spreminjanje stolpcev na velikih razpredelnicah časovno izredno zahtevno opravilo, ta niso dodana samodejno. V osnovi so izbirna. Z ukazom »occ db:convert-filecache-bigint« je mogoče te spremembe dodati ročno. Opravilo je treba izvesti, ko okolje ni dejavno. Za več podrobnosti si oglejte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentacijo</a>.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Trenutno je uporabljena ozadnja podatkovna zbirka SQLite. Za obsežnejše sisteme je priporočljiv prehod na drugo vrsto zbirke.",
"This is particularly recommended when using the desktop client for file synchronisation." : "Priporočilo ima še večjo težo, če se sistem krajevno usklajuje z namizjem prek odjemalca.",
"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>." : "Za prehod sistema na drugo podatkovno zbirko, uporabite ukaz orodne vrstice: »occ db:convert-type«, več o tem pa je zapisano v <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentaciji ↗</a>.",
"The PHP memory limit is below the recommended value of 512MB." : "Omejitev pomnilnika PHP je pod priporočljivo vrednostjo 512 MB.",
+ "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:" : "Nekatere mape programov imajo lastništvo določeno na uporabnika ni ni spletni strežniški uporabnik. To se lahko zgodi, če so programi nameščeni ročno. Preveriti je treba dovoljenja map:",
"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>." : "Podatkovna zbirka MySQL je v uporabi, ni pa omogočena podpora za 4-bitne znake. Za uporabo teh znakov (kot so na primer grafične izrazne ikone) brez težav tudi v imenih datotek in opombah, je priporočljivo podporo omogočiti med nastavitvami MySQL. Več podrobnosti je zabeleženih na straneh <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentacije</a>.",
+ "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>." : "Dostop do okolja poteka prek varne povezave, a ta ustvarja ne-varne naslove URL. To najverjetneje pomeni, da je strežnik za povratnim strežnikom in da spremenljivke nastavitev niso pravilno nastavljene. Več o tem si lahko ogledate v <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentaciji</a>.",
"Error occurred while checking server setup" : "Prišlo je do napake med preverjanjem nastavitev strežnika",
"For more details see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Za več podrobnosti si oglejte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentacijo</a>.",
"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." : "Glava HTTP »{header}« ni nastavljena na pričakovano vrednost »{expected}«. To predstavlja potencialno varnostno ali zasebnostno tveganje, zato je priporočljivo prilagoditi nastavitve.",
diff --git a/core/l10n/sv.js b/core/l10n/sv.js
index 6c2f4851915..4baa42fabf8 100644
--- a/core/l10n/sv.js
+++ b/core/l10n/sv.js
@@ -276,6 +276,7 @@ OC.L10N.register(
"Finishing …" : "Slutför ...",
"Need help?" : "Behövs hjälp?",
"See the documentation" : "Se dokumentationen",
+ "Could not remove CAN_INSTALL from the config folder. Please remove this file manually." : "Det gick inte att ta bort CAN_INSTALL från konfigurationsmappen. Ta bort den här filen manuellt.",
"This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Denna applikationen kräver JavaScript för att fungera korrekt. Vänligen {linkstart}aktivera JavaScript{linkend} och uppdatera sidan.",
"Get your own free account" : "Skaffa ett eget gratiskonto",
"Skip to main content" : "Skippa till huvudinnehållet",
diff --git a/core/l10n/sv.json b/core/l10n/sv.json
index bae3c57bdc9..ea4f95639b7 100644
--- a/core/l10n/sv.json
+++ b/core/l10n/sv.json
@@ -274,6 +274,7 @@
"Finishing …" : "Slutför ...",
"Need help?" : "Behövs hjälp?",
"See the documentation" : "Se dokumentationen",
+ "Could not remove CAN_INSTALL from the config folder. Please remove this file manually." : "Det gick inte att ta bort CAN_INSTALL från konfigurationsmappen. Ta bort den här filen manuellt.",
"This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Denna applikationen kräver JavaScript för att fungera korrekt. Vänligen {linkstart}aktivera JavaScript{linkend} och uppdatera sidan.",
"Get your own free account" : "Skaffa ett eget gratiskonto",
"Skip to main content" : "Skippa till huvudinnehållet",
diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js
index 779a4df131a..5f3601af28f 100644
--- a/core/l10n/zh_CN.js
+++ b/core/l10n/zh_CN.js
@@ -86,6 +86,8 @@ OC.L10N.register(
"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}\"." : "在数据表 \"{tableName}\" 中无法找到索引 \"{indexName}\"。",
"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." : "数据库丢失了一些索引。由于给大的数据表添加索引会耗费一些时间,因此程序没有自动对其进行修复。您可以在 Nextcloud 运行时通过命令行手动执行 \"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}\"." : "表 “{tableName}” 中缺少可选列 “ {columnName}”。",
"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-columns”,可以在实例继续运行时手动添加那些缺少的列。 添加列后,某些功能可能会提高响应速度或可用性。",
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "该实例缺失了一些推荐的 PHP 模块。为提高性能和兼容性,我们强烈建议安装它们。",
@@ -260,6 +262,7 @@ OC.L10N.register(
"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." : "如果再次发生这种情况,请将下面的技术详细信息发送给服务器管理员。",
diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json
index 522978a0b3e..7c3377b3815 100644
--- a/core/l10n/zh_CN.json
+++ b/core/l10n/zh_CN.json
@@ -84,6 +84,8 @@
"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}\"." : "在数据表 \"{tableName}\" 中无法找到索引 \"{indexName}\"。",
"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." : "数据库丢失了一些索引。由于给大的数据表添加索引会耗费一些时间,因此程序没有自动对其进行修复。您可以在 Nextcloud 运行时通过命令行手动执行 \"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}\"." : "表 “{tableName}” 中缺少可选列 “ {columnName}”。",
"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-columns”,可以在实例继续运行时手动添加那些缺少的列。 添加列后,某些功能可能会提高响应速度或可用性。",
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "该实例缺失了一些推荐的 PHP 模块。为提高性能和兼容性,我们强烈建议安装它们。",
@@ -258,6 +260,7 @@
"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." : "如果再次发生这种情况,请将下面的技术详细信息发送给服务器管理员。",
diff --git a/lib/base.php b/lib/base.php
index 5b211a2d180..115a0968af2 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -641,7 +641,7 @@ class OC {
/** @var \OC\AppFramework\Bootstrap\Coordinator $bootstrapCoordinator */
$bootstrapCoordinator = \OC::$server->query(\OC\AppFramework\Bootstrap\Coordinator::class);
- $bootstrapCoordinator->runRegistration();
+ $bootstrapCoordinator->runInitialRegistration();
\OC::$server->getEventLogger()->start('init_session', 'Initialize session');
OC_App::loadApps(['session']);
@@ -1005,7 +1005,7 @@ class OC {
OC_App::loadApps(['filesystem', 'logging']);
OC_App::loadApps();
}
- OC::$server->getRouter()->match(\OC::$server->getRequest()->getRawPathInfo());
+ OC::$server->get(\OC\Route\Router::class)->match(\OC::$server->getRequest()->getRawPathInfo());
return;
} catch (Symfony\Component\Routing\Exception\ResourceNotFoundException $e) {
//header('HTTP/1.0 404 Not Found');
diff --git a/lib/l10n/sl.js b/lib/l10n/sl.js
index c2df19e115c..a23104e73d4 100644
--- a/lib/l10n/sl.js
+++ b/lib/l10n/sl.js
@@ -20,6 +20,7 @@ OC.L10N.register(
"PHP %s or higher is required." : "Zahtevana je različica PHP %s ali višja.",
"PHP with a version lower than %s is required." : "Zahtevana je različica PHP nižja od %s.",
"%sbit or higher PHP required." : "Zahtevana je %s-bitna različica PHP višja.",
+ "The following architectures are supported: %s" : "Podprte so navedena okolja: %s",
"The following databases are supported: %s" : "Podprte so navedene podatkovne zbirke: %s",
"The command line tool %s could not be found" : "Orodja ukazne vrstice %s ni mogoče najti",
"The library %s is not available." : "Knjižnica %s ni na voljo.",
@@ -205,6 +206,7 @@ OC.L10N.register(
"Ensure there is a file called \".ocdata\" in the root of the data directory." : "Prepričajte se, da je datoteka ».ocdata« v korenu podatkovne mape.",
"Action \"%s\" not supported or implemented." : "Dejanje »%s« ni podprto ali omogočeno.",
"Authentication failed, wrong token or provider ID given" : "Overitev je spodletela, podan je napačen žeton oziroma določilo ID ponudnika",
+ "Cloud Federation Provider with ID: \"%s\" does not exist." : "Ponudnik zveznega povezovanja z ID: »%s« ne obstaja.",
"Could not obtain lock type %d on \"%s\"." : "Ni mogoče pridobiti zaklepa %d na \"%s\".",
"Storage unauthorized. %s" : "Dostop do shrambe ni overjen. %s",
"Storage incomplete configuration. %s" : "Nepopolna nastavitev shrambe. %s",
diff --git a/lib/l10n/sl.json b/lib/l10n/sl.json
index 80f029c3f1e..a3f5acaa8ca 100644
--- a/lib/l10n/sl.json
+++ b/lib/l10n/sl.json
@@ -18,6 +18,7 @@
"PHP %s or higher is required." : "Zahtevana je različica PHP %s ali višja.",
"PHP with a version lower than %s is required." : "Zahtevana je različica PHP nižja od %s.",
"%sbit or higher PHP required." : "Zahtevana je %s-bitna različica PHP višja.",
+ "The following architectures are supported: %s" : "Podprte so navedena okolja: %s",
"The following databases are supported: %s" : "Podprte so navedene podatkovne zbirke: %s",
"The command line tool %s could not be found" : "Orodja ukazne vrstice %s ni mogoče najti",
"The library %s is not available." : "Knjižnica %s ni na voljo.",
@@ -203,6 +204,7 @@
"Ensure there is a file called \".ocdata\" in the root of the data directory." : "Prepričajte se, da je datoteka ».ocdata« v korenu podatkovne mape.",
"Action \"%s\" not supported or implemented." : "Dejanje »%s« ni podprto ali omogočeno.",
"Authentication failed, wrong token or provider ID given" : "Overitev je spodletela, podan je napačen žeton oziroma določilo ID ponudnika",
+ "Cloud Federation Provider with ID: \"%s\" does not exist." : "Ponudnik zveznega povezovanja z ID: »%s« ne obstaja.",
"Could not obtain lock type %d on \"%s\"." : "Ni mogoče pridobiti zaklepa %d na \"%s\".",
"Storage unauthorized. %s" : "Dostop do shrambe ni overjen. %s",
"Storage incomplete configuration. %s" : "Nepopolna nastavitev shrambe. %s",
diff --git a/lib/private/AppFramework/Bootstrap/Coordinator.php b/lib/private/AppFramework/Bootstrap/Coordinator.php
index c8155c3b5ba..06a17e5242b 100644
--- a/lib/private/AppFramework/Bootstrap/Coordinator.php
+++ b/lib/private/AppFramework/Bootstrap/Coordinator.php
@@ -38,7 +38,6 @@ use OCP\Dashboard\IManager;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\ILogger;
use OCP\IServerContainer;
-use RuntimeException;
use Throwable;
use function class_exists;
use function class_implements;
@@ -79,14 +78,23 @@ class Coordinator {
$this->logger = $logger;
}
- public function runRegistration(): void {
- if ($this->registrationContext !== null) {
- throw new RuntimeException('Registration has already been run');
- }
+ public function runInitialRegistration(): void {
+ $this->registerApps(OC_App::getEnabledApps());
+ }
- $this->registrationContext = new RegistrationContext($this->logger);
+ public function runLazyRegistration(string $appId): void {
+ $this->registerApps([$appId]);
+ }
+
+ /**
+ * @param string[] $appIds
+ */
+ private function registerApps(array $appIds): void {
+ if ($this->registrationContext === null) {
+ $this->registrationContext = new RegistrationContext($this->logger);
+ }
$apps = [];
- foreach (OC_App::getEnabledApps() as $appId) {
+ foreach ($appIds as $appId) {
/*
* First, we have to enable the app's autoloader
*
diff --git a/lib/private/AppFramework/Bootstrap/RegistrationContext.php b/lib/private/AppFramework/Bootstrap/RegistrationContext.php
index 023590596e3..68e2701de27 100644
--- a/lib/private/AppFramework/Bootstrap/RegistrationContext.php
+++ b/lib/private/AppFramework/Bootstrap/RegistrationContext.php
@@ -264,7 +264,7 @@ class RegistrationContext {
* @param App[] $apps
*/
public function delegateCapabilityRegistrations(array $apps): void {
- foreach ($this->capabilities as $registration) {
+ while (($registration = array_pop($this->capabilities)) !== null) {
try {
$apps[$registration['appId']]
->getContainer()
@@ -283,7 +283,7 @@ class RegistrationContext {
* @param App[] $apps
*/
public function delegateCrashReporterRegistrations(array $apps, Registry $registry): void {
- foreach ($this->crashReporters as $registration) {
+ while (($registration = array_pop($this->crashReporters)) !== null) {
try {
$registry->registerLazy($registration['class']);
} catch (Throwable $e) {
@@ -300,7 +300,7 @@ class RegistrationContext {
* @param App[] $apps
*/
public function delegateDashboardPanelRegistrations(array $apps, IManager $dashboardManager): void {
- foreach ($this->dashboardPanels as $panel) {
+ while (($panel = array_pop($this->dashboardPanels)) !== null) {
try {
$dashboardManager->lazyRegisterWidget($panel['class']);
} catch (Throwable $e) {
@@ -314,7 +314,7 @@ class RegistrationContext {
}
public function delegateEventListenerRegistrations(IEventDispatcher $eventDispatcher): void {
- foreach ($this->eventListeners as $registration) {
+ while (($registration = array_pop($this->eventListeners)) !== null) {
try {
if (isset($registration['priority'])) {
$eventDispatcher->addServiceListener(
@@ -342,7 +342,7 @@ class RegistrationContext {
* @param App[] $apps
*/
public function delegateContainerRegistrations(array $apps): void {
- foreach ($this->services as $registration) {
+ while (($registration = array_pop($this->services)) !== null) {
try {
/**
* Register the service and convert the callable into a \Closure if necessary
@@ -402,7 +402,7 @@ class RegistrationContext {
* @param App[] $apps
*/
public function delegateMiddlewareRegistrations(array $apps): void {
- foreach ($this->middlewares as $middleware) {
+ while (($middleware = array_pop($this->middlewares)) !== null) {
try {
$apps[$middleware['appId']]
->getContainer()
diff --git a/lib/private/AppFramework/Routing/RouteConfig.php b/lib/private/AppFramework/Routing/RouteConfig.php
index 1921ce65128..b382e7eb4b0 100644
--- a/lib/private/AppFramework/Routing/RouteConfig.php
+++ b/lib/private/AppFramework/Routing/RouteConfig.php
@@ -32,7 +32,7 @@ declare(strict_types=1);
namespace OC\AppFramework\Routing;
use OC\AppFramework\DependencyInjection\DIContainer;
-use OCP\Route\IRouter;
+use OC\Route\Router;
/**
* Class RouteConfig
@@ -42,7 +42,7 @@ class RouteConfig {
/** @var DIContainer */
private $container;
- /** @var IRouter */
+ /** @var Router */
private $router;
/** @var array */
@@ -65,11 +65,11 @@ class RouteConfig {
/**
* @param \OC\AppFramework\DependencyInjection\DIContainer $container
- * @param \OCP\Route\IRouter $router
+ * @param \OC\Route\Router $router
* @param array $routes
* @internal param $appName
*/
- public function __construct(DIContainer $container, IRouter $router, $routes) {
+ public function __construct(DIContainer $container, Router $router, $routes) {
$this->routes = $routes;
$this->container = $container;
$this->router = $router;
diff --git a/lib/private/AppFramework/ScopedPsrLogger.php b/lib/private/AppFramework/ScopedPsrLogger.php
index 7eee729564b..debadd3d157 100644
--- a/lib/private/AppFramework/ScopedPsrLogger.php
+++ b/lib/private/AppFramework/ScopedPsrLogger.php
@@ -141,6 +141,7 @@ class ScopedPsrLogger implements LoggerInterface {
public function log($level, $message, array $context = []) {
$this->inner->log(
+ $level,
$message,
array_merge(
[
diff --git a/lib/private/DB/QueryBuilder/QueryBuilder.php b/lib/private/DB/QueryBuilder/QueryBuilder.php
index 7fdeed12130..c2686f7b4a0 100644
--- a/lib/private/DB/QueryBuilder/QueryBuilder.php
+++ b/lib/private/DB/QueryBuilder/QueryBuilder.php
@@ -436,8 +436,14 @@ class QueryBuilder implements IQueryBuilder {
* @return $this This QueryBuilder instance.
*/
public function selectDistinct($select) {
+ if (!is_array($select)) {
+ $select = [$select];
+ }
+
+ $quotedSelect = $this->helper->quoteColumnNames($select);
+
$this->queryBuilder->addSelect(
- 'DISTINCT ' . $this->helper->quoteColumnName($select)
+ 'DISTINCT ' . implode(', ', $quotedSelect)
);
return $this;
diff --git a/lib/private/Installer.php b/lib/private/Installer.php
index 9388711697a..a2c4f9beff8 100644
--- a/lib/private/Installer.php
+++ b/lib/private/Installer.php
@@ -42,6 +42,7 @@ namespace OC;
use Doctrine\DBAL\Exception\TableExistsException;
use OC\App\AppStore\Bundles\Bundle;
use OC\App\AppStore\Fetcher\AppFetcher;
+use OC\AppFramework\Bootstrap\Coordinator;
use OC\Archive\TAR;
use OC_App;
use OC_DB;
@@ -138,6 +139,9 @@ class Installer {
// check for required dependencies
\OC_App::checkAppDependencies($this->config, $l, $info, $ignoreMax);
+ /** @var Coordinator $coordinator */
+ $coordinator = \OC::$server->get(Coordinator::class);
+ $coordinator->runLazyRegistration($appId);
\OC_App::registerAutoloading($appId, $basedir);
$previousVersion = $this->config->getAppValue($info['id'], 'installed_version', false);
diff --git a/lib/private/Mail/EMailTemplate.php b/lib/private/Mail/EMailTemplate.php
index f274d8acdb1..37e02ce4504 100644
--- a/lib/private/Mail/EMailTemplate.php
+++ b/lib/private/Mail/EMailTemplate.php
@@ -120,8 +120,8 @@ EOF;
<table class="row collapse" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%%">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <center data-parsed="" style="background-color:%s;width:150px;height:150px;padding:0px;position:relative;border-radius:200px">
- <img class="logo float-center" src="%s" alt="%s" align="center" style="-ms-interpolation-mode:bicubic;clear:both;display:block;float:none;outline:0;text-align:center;text-decoration:none;position:absolute;max-height:100px;max-width:100px;width:auto;height:auto;position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;">
+ <center data-parsed="" style="background-color:%s;min-width:175px;max-height:175px; padding:35px 0px;border-radius:200px">
+ <img class="logo float-center" src="%s" alt="%s" align="center" style="-ms-interpolation-mode:bicubic;clear:both;display:block;float:none;margin:0 auto;outline:0;text-align:center;text-decoration:none;max-height:105px;max-width:105px;width:auto;height:auto">
</center>
</tr>
</tbody>
diff --git a/lib/private/Route/Router.php b/lib/private/Route/Router.php
index 4e1264666e4..134e2cdadf0 100644
--- a/lib/private/Route/Router.php
+++ b/lib/private/Route/Router.php
@@ -178,14 +178,6 @@ class Router implements IRouter {
}
/**
- * @return string
- * @deprecated
- */
- public function getCacheKey() {
- return '';
- }
-
- /**
* @param string $name
* @return \Symfony\Component\Routing\RouteCollection
*/
diff --git a/lib/private/Share20/DefaultShareProvider.php b/lib/private/Share20/DefaultShareProvider.php
index b4ac3b3b84d..ec183cee1a3 100644
--- a/lib/private/Share20/DefaultShareProvider.php
+++ b/lib/private/Share20/DefaultShareProvider.php
@@ -824,7 +824,7 @@ class DefaultShareProvider implements IShareProvider {
$pathSections = explode('/', $data['path'], 2);
// FIXME: would not detect rare md5'd home storage case properly
if ($pathSections[0] !== 'files'
- && in_array(explode(':', $data['storage_string_id'], 2)[0], ['home', 'object'])) {
+ && (strpos($data['storage_string_id'], 'home::') === 0 || strpos($data['storage_string_id'], 'object::user') === 0)) {
return false;
}
return true;
diff --git a/lib/private/URLGenerator.php b/lib/private/URLGenerator.php
index d7de6cf92a2..f0de31568f4 100644
--- a/lib/private/URLGenerator.php
+++ b/lib/private/URLGenerator.php
@@ -39,12 +39,12 @@ declare(strict_types=1);
namespace OC;
+use OC\Route\Router;
use OCA\Theming\ThemingDefaults;
use OCP\ICacheFactory;
use OCP\IConfig;
use OCP\IRequest;
use OCP\IURLGenerator;
-use OCP\Route\IRouter;
use RuntimeException;
/**
@@ -57,13 +57,13 @@ class URLGenerator implements IURLGenerator {
private $cacheFactory;
/** @var IRequest */
private $request;
- /** @var IRouter*/
+ /** @var Router */
private $router;
public function __construct(IConfig $config,
ICacheFactory $cacheFactory,
IRequest $request,
- IRouter $router) {
+ Router $router) {
$this->config = $config;
$this->cacheFactory = $cacheFactory;
$this->request = $request;
diff --git a/lib/public/AppFramework/App.php b/lib/public/AppFramework/App.php
index 06d4b36384f..4cbd1f8d32c 100644
--- a/lib/public/AppFramework/App.php
+++ b/lib/public/AppFramework/App.php
@@ -41,6 +41,7 @@ declare(strict_types=1);
namespace OCP\AppFramework;
use OC\AppFramework\Routing\RouteConfig;
+use OC\Route\Router;
use OC\ServerContainer;
use OCP\Route\IRouter;
@@ -146,6 +147,10 @@ class App {
* @deprecated 20.0.0 Just return an array from your routes.php
*/
public function registerRoutes(IRouter $router, array $routes) {
+ if (!($router instanceof Router)) {
+ throw new \RuntimeException('Can only setup routes with real router');
+ }
+
$routeConfig = new RouteConfig($this->container, $router, $routes);
$routeConfig->register();
}
diff --git a/lib/public/AppFramework/Http/DataResponse.php b/lib/public/AppFramework/Http/DataResponse.php
index 7ae53f6f531..d1b5a989221 100644
--- a/lib/public/AppFramework/Http/DataResponse.php
+++ b/lib/public/AppFramework/Http/DataResponse.php
@@ -41,13 +41,13 @@ class DataResponse extends Response {
/**
* response data
- * @var array|object
+ * @var array|int|float|string|bool|object
*/
protected $data;
/**
- * @param array|object $data the object or array that should be transformed
+ * @param array|int|float|string|bool|object $data the object or array that should be transformed
* @param int $statusCode the Http status code, defaults to 200
* @param array $headers additional key value based headers
* @since 8.0.0
@@ -64,7 +64,7 @@ class DataResponse extends Response {
/**
* Sets values in the data json array
- * @param array|object $data an array or object which will be transformed
+ * @param array|int|float|string|object $data an array or object which will be transformed
* @return DataResponse Reference to this object
* @since 8.0.0
*/
@@ -77,7 +77,7 @@ class DataResponse extends Response {
/**
* Used to get the set parameters
- * @return array the data
+ * @return array|int|float|string|bool|object the data
* @since 8.0.0
*/
public function getData() {
diff --git a/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php b/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php
index 6265bb04c5c..d4c3a022c13 100644
--- a/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php
+++ b/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php
@@ -509,6 +509,8 @@ class EmptyContentSecurityPolicy {
if (!empty($this->allowedFrameAncestors)) {
$policy .= 'frame-ancestors ' . implode(' ', $this->allowedFrameAncestors);
$policy .= ';';
+ } else {
+ $policy .= 'frame-ancestors \'none\';';
}
if (!empty($this->allowedWorkerSrcDomains)) {
diff --git a/lib/public/Route/IRouter.php b/lib/public/Route/IRouter.php
index d837265ac71..cb51cc0b640 100644
--- a/lib/public/Route/IRouter.php
+++ b/lib/public/Route/IRouter.php
@@ -37,50 +37,6 @@ namespace OCP\Route;
interface IRouter {
/**
- * Get the files to load the routes from
- *
- * @return string[]
- * @since 7.0.0
- * @deprecated 9.0.0
- */
- public function getRoutingFiles();
-
- /**
- * @return string
- * @since 7.0.0
- * @deprecated 9.0.0
- */
- public function getCacheKey();
-
- /**
- * Loads the routes
- *
- * @param null|string $app
- * @since 7.0.0
- * @deprecated 9.0.0
- */
- public function loadRoutes($app = null);
-
- /**
- * Sets the collection to use for adding routes
- *
- * @param string $name Name of the collection to use.
- * @return void
- * @since 7.0.0
- * @deprecated 9.0.0
- */
- public function useCollection($name);
-
- /**
- * returns the current collection name in use for adding routes
- *
- * @return string the collection name
- * @since 8.0.0
- * @deprecated 9.0.0
- */
- public function getCurrentCollection();
-
- /**
* Create a \OCP\Route\IRoute.
*
* @param string $name Name of the route to create.
@@ -92,35 +48,4 @@ interface IRouter {
* @deprecated 9.0.0
*/
public function create($name, $pattern, array $defaults = [], array $requirements = []);
-
- /**
- * Find the route matching $url.
- *
- * @param string $url The url to find
- * @throws \Exception
- * @return void
- * @since 7.0.0
- * @deprecated 9.0.0
- */
- public function match($url);
-
- /**
- * Get the url generator
- *
- * @since 7.0.0
- * @deprecated 9.0.0
- */
- public function getGenerator();
-
- /**
- * Generate url based on $name and $parameters
- *
- * @param string $name Name of the route to use.
- * @param array $parameters Parameters for the route
- * @param bool $absolute
- * @return string
- * @since 7.0.0
- * @deprecated 9.0.0
- */
- public function generate($name, $parameters = [], $absolute = false);
}
diff --git a/ocs/v1.php b/ocs/v1.php
index f4ddc80804a..e5138576584 100644
--- a/ocs/v1.php
+++ b/ocs/v1.php
@@ -58,7 +58,7 @@ try {
// load all apps to get all api routes properly setup
OC_App::loadApps();
- OC::$server->getRouter()->match('/ocsapp'.\OC::$server->getRequest()->getRawPathInfo());
+ OC::$server->get(\OC\Route\Router::class)->match('/ocsapp'.\OC::$server->getRequest()->getRawPathInfo());
} catch (ResourceNotFoundException $e) {
OC_API::setContentType();
diff --git a/tests/data/emails/new-account-email-custom.html b/tests/data/emails/new-account-email-custom.html
index f37e64df929..556cc0acf50 100644
--- a/tests/data/emails/new-account-email-custom.html
+++ b/tests/data/emails/new-account-email-custom.html
@@ -22,8 +22,8 @@
<table class="row collapse" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <center data-parsed="" style="background-color:#0082c9;width:150px;height:150px;padding:0px;position:relative;border-radius:200px">
- <img class="logo float-center" src="https://example.org/img/logo-mail-header.png" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;clear:both;display:block;float:none;outline:0;text-align:center;text-decoration:none;position:absolute;max-height:100px;max-width:100px;width:auto;height:auto;position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;">
+ <center data-parsed="" style="background-color:#0082c9;min-width:175px;max-height:175px; padding:35px 0px;border-radius:200px">
+ <img class="logo float-center" src="https://example.org/img/logo-mail-header.png" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;clear:both;display:block;float:none;margin:0 auto;outline:0;text-align:center;text-decoration:none;max-height:105px;max-width:105px;width:auto;height:auto">
</center>
</tr>
</tbody>
diff --git a/tests/data/emails/new-account-email-single-button.html b/tests/data/emails/new-account-email-single-button.html
index fdb64293c70..ac6fa2ecdd0 100644
--- a/tests/data/emails/new-account-email-single-button.html
+++ b/tests/data/emails/new-account-email-single-button.html
@@ -22,8 +22,8 @@
<table class="row collapse" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <center data-parsed="" style="background-color:#0082c9;width:150px;height:150px;padding:0px;position:relative;border-radius:200px">
- <img class="logo float-center" src="https://example.org/img/logo-mail-header.png" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;clear:both;display:block;float:none;outline:0;text-align:center;text-decoration:none;position:absolute;max-height:100px;max-width:100px;width:auto;height:auto;position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;">
+ <center data-parsed="" style="background-color:#0082c9;min-width:175px;max-height:175px; padding:35px 0px;border-radius:200px">
+ <img class="logo float-center" src="https://example.org/img/logo-mail-header.png" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;clear:both;display:block;float:none;margin:0 auto;outline:0;text-align:center;text-decoration:none;max-height:105px;max-width:105px;width:auto;height:auto">
</center>
</tr>
</tbody>
diff --git a/tests/data/emails/new-account-email.html b/tests/data/emails/new-account-email.html
index 6a6a2fe6383..a60ecbee172 100644
--- a/tests/data/emails/new-account-email.html
+++ b/tests/data/emails/new-account-email.html
@@ -22,8 +22,8 @@
<table class="row collapse" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <center data-parsed="" style="background-color:#0082c9;width:150px;height:150px;padding:0px;position:relative;border-radius:200px">
- <img class="logo float-center" src="https://example.org/img/logo-mail-header.png" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;clear:both;display:block;float:none;outline:0;text-align:center;text-decoration:none;position:absolute;max-height:100px;max-width:100px;width:auto;height:auto;position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;">
+ <center data-parsed="" style="background-color:#0082c9;min-width:175px;max-height:175px; padding:35px 0px;border-radius:200px">
+ <img class="logo float-center" src="https://example.org/img/logo-mail-header.png" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;clear:both;display:block;float:none;margin:0 auto;outline:0;text-align:center;text-decoration:none;max-height:105px;max-width:105px;width:auto;height:auto">
</center>
</tr>
</tbody>
diff --git a/tests/lib/AppFramework/Controller/ControllerTest.php b/tests/lib/AppFramework/Controller/ControllerTest.php
index 7c5b1931512..d874ec48247 100644
--- a/tests/lib/AppFramework/Controller/ControllerTest.php
+++ b/tests/lib/AppFramework/Controller/ControllerTest.php
@@ -112,7 +112,7 @@ class ControllerTest extends \Test\TestCase {
'test' => 'something',
'Cache-Control' => 'no-cache, no-store, must-revalidate',
'Content-Type' => 'application/json; charset=utf-8',
- 'Content-Security-Policy' => "default-src 'none';base-uri 'none';manifest-src 'self'",
+ 'Content-Security-Policy' => "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'",
'Feature-Policy' => "autoplay 'none';camera 'none';fullscreen 'none';geolocation 'none';microphone 'none';payment 'none'",
'X-Robots-Tag' => 'none',
];
diff --git a/tests/lib/AppFramework/Http/DataResponseTest.php b/tests/lib/AppFramework/Http/DataResponseTest.php
index a02cee67d31..889372775d6 100644
--- a/tests/lib/AppFramework/Http/DataResponseTest.php
+++ b/tests/lib/AppFramework/Http/DataResponseTest.php
@@ -65,7 +65,7 @@ class DataResponseTest extends \Test\TestCase {
$expectedHeaders = [
'Cache-Control' => 'no-cache, no-store, must-revalidate',
- 'Content-Security-Policy' => "default-src 'none';base-uri 'none';manifest-src 'self'",
+ 'Content-Security-Policy' => "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'",
'Feature-Policy' => "autoplay 'none';camera 'none';fullscreen 'none';geolocation 'none';microphone 'none';payment 'none'",
'X-Robots-Tag' => 'none',
];
diff --git a/tests/lib/AppFramework/Http/EmptyContentSecurityPolicyTest.php b/tests/lib/AppFramework/Http/EmptyContentSecurityPolicyTest.php
index 121bb904d18..5fe81bb0136 100644
--- a/tests/lib/AppFramework/Http/EmptyContentSecurityPolicyTest.php
+++ b/tests/lib/AppFramework/Http/EmptyContentSecurityPolicyTest.php
@@ -26,19 +26,19 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDefault() {
- $defaultPolicy = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $defaultPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$this->assertSame($defaultPolicy, $this->contentSecurityPolicy->buildPolicy());
}
public function testGetPolicyScriptDomainValid() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src www.owncloud.com";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src www.owncloud.com;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedScriptDomain('www.owncloud.com');
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy());
}
public function testGetPolicyScriptDomainValidMultiple() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src www.owncloud.com www.owncloud.org";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src www.owncloud.com www.owncloud.org;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedScriptDomain('www.owncloud.com');
$this->contentSecurityPolicy->addAllowedScriptDomain('www.owncloud.org');
@@ -46,7 +46,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowScriptDomain() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedScriptDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowScriptDomain('www.owncloud.com');
@@ -54,7 +54,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowScriptDomainMultiple() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src www.owncloud.com";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src www.owncloud.com;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedScriptDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowScriptDomain('www.owncloud.org');
@@ -62,7 +62,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowScriptDomainMultipleStacked() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedScriptDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowScriptDomain('www.owncloud.org')->disallowScriptDomain('www.owncloud.com');
@@ -70,14 +70,14 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyScriptAllowInline() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'unsafe-inline'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'unsafe-inline';frame-ancestors 'none'";
$this->contentSecurityPolicy->allowInlineScript(true);
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy());
}
public function testGetPolicyScriptAllowInlineWithDomain() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src www.owncloud.com 'unsafe-inline'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src www.owncloud.com 'unsafe-inline';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedScriptDomain('www.owncloud.com');
$this->contentSecurityPolicy->allowInlineScript(true);
@@ -85,7 +85,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyScriptAllowInlineAndEval() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'unsafe-inline' 'unsafe-eval'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'unsafe-inline' 'unsafe-eval';frame-ancestors 'none'";
$this->contentSecurityPolicy->allowInlineScript(true);
$this->contentSecurityPolicy->allowEvalScript(true);
@@ -93,14 +93,14 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyStyleDomainValid() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';style-src www.owncloud.com";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';style-src www.owncloud.com;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedStyleDomain('www.owncloud.com');
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy());
}
public function testGetPolicyStyleDomainValidMultiple() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';style-src www.owncloud.com www.owncloud.org";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';style-src www.owncloud.com www.owncloud.org;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedStyleDomain('www.owncloud.com');
$this->contentSecurityPolicy->addAllowedStyleDomain('www.owncloud.org');
@@ -108,7 +108,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowStyleDomain() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedStyleDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowStyleDomain('www.owncloud.com');
@@ -116,7 +116,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowStyleDomainMultiple() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';style-src www.owncloud.com";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';style-src www.owncloud.com;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedStyleDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowStyleDomain('www.owncloud.org');
@@ -124,7 +124,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowStyleDomainMultipleStacked() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedStyleDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowStyleDomain('www.owncloud.org')->disallowStyleDomain('www.owncloud.com');
@@ -132,14 +132,14 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyStyleAllowInline() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';style-src 'unsafe-inline'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';style-src 'unsafe-inline';frame-ancestors 'none'";
$this->contentSecurityPolicy->allowInlineStyle(true);
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy());
}
public function testGetPolicyStyleAllowInlineWithDomain() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';style-src www.owncloud.com 'unsafe-inline'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';style-src www.owncloud.com 'unsafe-inline';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedStyleDomain('www.owncloud.com');
$this->contentSecurityPolicy->allowInlineStyle(true);
@@ -147,21 +147,21 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyStyleDisallowInline() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$this->contentSecurityPolicy->allowInlineStyle(false);
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy());
}
public function testGetPolicyImageDomainValid() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';img-src www.owncloud.com";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';img-src www.owncloud.com;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedImageDomain('www.owncloud.com');
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy());
}
public function testGetPolicyImageDomainValidMultiple() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';img-src www.owncloud.com www.owncloud.org";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';img-src www.owncloud.com www.owncloud.org;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedImageDomain('www.owncloud.com');
$this->contentSecurityPolicy->addAllowedImageDomain('www.owncloud.org');
@@ -169,7 +169,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowImageDomain() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedImageDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowImageDomain('www.owncloud.com');
@@ -177,7 +177,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowImageDomainMultiple() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';img-src www.owncloud.com";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';img-src www.owncloud.com;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedImageDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowImageDomain('www.owncloud.org');
@@ -185,7 +185,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowImageDomainMultipleStakes() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedImageDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowImageDomain('www.owncloud.org')->disallowImageDomain('www.owncloud.com');
@@ -193,14 +193,14 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyFontDomainValid() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';font-src www.owncloud.com";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';font-src www.owncloud.com;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedFontDomain('www.owncloud.com');
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy());
}
public function testGetPolicyFontDomainValidMultiple() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';font-src www.owncloud.com www.owncloud.org";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';font-src www.owncloud.com www.owncloud.org;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedFontDomain('www.owncloud.com');
$this->contentSecurityPolicy->addAllowedFontDomain('www.owncloud.org');
@@ -208,7 +208,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowFontDomain() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedFontDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowFontDomain('www.owncloud.com');
@@ -216,7 +216,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowFontDomainMultiple() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';font-src www.owncloud.com";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';font-src www.owncloud.com;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedFontDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowFontDomain('www.owncloud.org');
@@ -224,7 +224,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowFontDomainMultipleStakes() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedFontDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowFontDomain('www.owncloud.org')->disallowFontDomain('www.owncloud.com');
@@ -232,14 +232,14 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyConnectDomainValid() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';connect-src www.owncloud.com";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';connect-src www.owncloud.com;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedConnectDomain('www.owncloud.com');
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy());
}
public function testGetPolicyConnectDomainValidMultiple() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';connect-src www.owncloud.com www.owncloud.org";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';connect-src www.owncloud.com www.owncloud.org;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedConnectDomain('www.owncloud.com');
$this->contentSecurityPolicy->addAllowedConnectDomain('www.owncloud.org');
@@ -247,7 +247,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowConnectDomain() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedConnectDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowConnectDomain('www.owncloud.com');
@@ -255,7 +255,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowConnectDomainMultiple() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';connect-src www.owncloud.com";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';connect-src www.owncloud.com;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedConnectDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowConnectDomain('www.owncloud.org');
@@ -263,7 +263,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowConnectDomainMultipleStakes() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedConnectDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowConnectDomain('www.owncloud.org')->disallowConnectDomain('www.owncloud.com');
@@ -271,14 +271,14 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyMediaDomainValid() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';media-src www.owncloud.com";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';media-src www.owncloud.com;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedMediaDomain('www.owncloud.com');
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy());
}
public function testGetPolicyMediaDomainValidMultiple() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';media-src www.owncloud.com www.owncloud.org";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';media-src www.owncloud.com www.owncloud.org;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedMediaDomain('www.owncloud.com');
$this->contentSecurityPolicy->addAllowedMediaDomain('www.owncloud.org');
@@ -286,7 +286,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowMediaDomain() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedMediaDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowMediaDomain('www.owncloud.com');
@@ -294,7 +294,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowMediaDomainMultiple() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';media-src www.owncloud.com";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';media-src www.owncloud.com;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedMediaDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowMediaDomain('www.owncloud.org');
@@ -302,7 +302,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowMediaDomainMultipleStakes() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedMediaDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowMediaDomain('www.owncloud.org')->disallowMediaDomain('www.owncloud.com');
@@ -310,14 +310,14 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyObjectDomainValid() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';object-src www.owncloud.com";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';object-src www.owncloud.com;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedObjectDomain('www.owncloud.com');
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy());
}
public function testGetPolicyObjectDomainValidMultiple() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';object-src www.owncloud.com www.owncloud.org";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';object-src www.owncloud.com www.owncloud.org;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedObjectDomain('www.owncloud.com');
$this->contentSecurityPolicy->addAllowedObjectDomain('www.owncloud.org');
@@ -325,7 +325,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowObjectDomain() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedObjectDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowObjectDomain('www.owncloud.com');
@@ -333,7 +333,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowObjectDomainMultiple() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';object-src www.owncloud.com";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';object-src www.owncloud.com;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedObjectDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowObjectDomain('www.owncloud.org');
@@ -341,7 +341,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowObjectDomainMultipleStakes() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedObjectDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowObjectDomain('www.owncloud.org')->disallowObjectDomain('www.owncloud.com');
@@ -349,14 +349,14 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetAllowedFrameDomain() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-src www.owncloud.com";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-src www.owncloud.com;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedFrameDomain('www.owncloud.com');
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy());
}
public function testGetPolicyFrameDomainValidMultiple() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-src www.owncloud.com www.owncloud.org";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-src www.owncloud.com www.owncloud.org;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedFrameDomain('www.owncloud.com');
$this->contentSecurityPolicy->addAllowedFrameDomain('www.owncloud.org');
@@ -364,7 +364,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowFrameDomain() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedFrameDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowFrameDomain('www.owncloud.com');
@@ -372,7 +372,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowFrameDomainMultiple() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-src www.owncloud.com";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-src www.owncloud.com;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedFrameDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowFrameDomain('www.owncloud.org');
@@ -380,7 +380,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowFrameDomainMultipleStakes() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedFrameDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowFrameDomain('www.owncloud.org')->disallowFrameDomain('www.owncloud.com');
@@ -388,14 +388,14 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetAllowedChildSrcDomain() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';child-src child.owncloud.com";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';child-src child.owncloud.com;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedChildSrcDomain('child.owncloud.com');
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy());
}
public function testGetPolicyChildSrcValidMultiple() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';child-src child.owncloud.com child.owncloud.org";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';child-src child.owncloud.com child.owncloud.org;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedChildSrcDomain('child.owncloud.com');
$this->contentSecurityPolicy->addAllowedChildSrcDomain('child.owncloud.org');
@@ -403,7 +403,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowChildSrcDomain() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedChildSrcDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowChildSrcDomain('www.owncloud.com');
@@ -411,7 +411,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowChildSrcDomainMultiple() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';child-src www.owncloud.com";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';child-src www.owncloud.com;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedChildSrcDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowChildSrcDomain('www.owncloud.org');
@@ -419,7 +419,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyDisallowChildSrcDomainMultipleStakes() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedChildSrcDomain('www.owncloud.com');
$this->contentSecurityPolicy->disallowChildSrcDomain('www.owncloud.org')->disallowChildSrcDomain('www.owncloud.com');
@@ -427,7 +427,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyWithJsNonceAndScriptDomains() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'nonce-TXlKc05vbmNl' www.nextcloud.com www.nextcloud.org";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'nonce-TXlKc05vbmNl' www.nextcloud.com www.nextcloud.org;frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedScriptDomain('www.nextcloud.com');
$this->contentSecurityPolicy->useJsNonce('MyJsNonce');
@@ -436,7 +436,7 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyWithJsNonceAndSelfScriptDomain() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'nonce-TXlKc05vbmNl'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'nonce-TXlKc05vbmNl';frame-ancestors 'none'";
$this->contentSecurityPolicy->useJsNonce('MyJsNonce');
$this->contentSecurityPolicy->addAllowedScriptDomain("'self'");
@@ -444,21 +444,21 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
}
public function testGetPolicyWithoutJsNonceAndSelfScriptDomain() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self'";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';frame-ancestors 'none'";
$this->contentSecurityPolicy->addAllowedScriptDomain("'self'");
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy());
}
public function testGetPolicyWithReportUri() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';report-uri https://my-report-uri.com";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none';report-uri https://my-report-uri.com";
$this->contentSecurityPolicy->addReportTo("https://my-report-uri.com");
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy());
}
public function testGetPolicyWithMultipleReportUri() {
- $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';report-uri https://my-report-uri.com https://my-other-report-uri.com";
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none';report-uri https://my-report-uri.com https://my-other-report-uri.com";
$this->contentSecurityPolicy->addReportTo("https://my-report-uri.com");
$this->contentSecurityPolicy->addReportTo("https://my-other-report-uri.com");
diff --git a/tests/lib/AppFramework/Http/ResponseTest.php b/tests/lib/AppFramework/Http/ResponseTest.php
index 7a064908869..0ef128433cd 100644
--- a/tests/lib/AppFramework/Http/ResponseTest.php
+++ b/tests/lib/AppFramework/Http/ResponseTest.php
@@ -57,7 +57,7 @@ class ResponseTest extends \Test\TestCase {
$this->childResponse->setHeaders($expected);
$headers = $this->childResponse->getHeaders();
- $expected['Content-Security-Policy'] = "default-src 'none';base-uri 'none';manifest-src 'self'";
+ $expected['Content-Security-Policy'] = "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'";
$expected['Feature-Policy'] = "autoplay 'none';camera 'none';fullscreen 'none';geolocation 'none';microphone 'none';payment 'none'";
$this->assertEquals($expected, $headers);
diff --git a/tests/lib/DB/QueryBuilder/QueryBuilderTest.php b/tests/lib/DB/QueryBuilder/QueryBuilderTest.php
index faf06360e17..fe87a201d57 100644
--- a/tests/lib/DB/QueryBuilder/QueryBuilderTest.php
+++ b/tests/lib/DB/QueryBuilder/QueryBuilderTest.php
@@ -314,6 +314,44 @@ class QueryBuilderTest extends \Test\TestCase {
$this->deleteTestingRows('testFirstResult2');
}
+ public function testSelectDistinctMultiple() {
+ $this->deleteTestingRows('testFirstResult1');
+ $this->deleteTestingRows('testFirstResult2');
+ $this->createTestingRows('testFirstResult1');
+ $this->createTestingRows('testFirstResult2');
+
+ $this->queryBuilder->selectDistinct(['appid', 'configkey']);
+
+ $this->queryBuilder->from('*PREFIX*appconfig')
+ ->where($this->queryBuilder->expr()->eq(
+ 'appid',
+ $this->queryBuilder->expr()->literal('testFirstResult1')
+ ))
+ ->orderBy('appid', 'DESC');
+
+ $query = $this->queryBuilder->execute();
+ $rows = $query->fetchAll();
+ $query->closeCursor();
+
+ $this->assertEquals(
+ [
+ ['appid' => 'testFirstResult1', 'configkey' => 'testing1'],
+ ['appid' => 'testFirstResult1', 'configkey' => 'testing2'],
+ ['appid' => 'testFirstResult1', 'configkey' => 'testing3'],
+ ['appid' => 'testFirstResult1', 'configkey' => 'testing4'],
+ ['appid' => 'testFirstResult1', 'configkey' => 'testing5'],
+ ['appid' => 'testFirstResult1', 'configkey' => 'testing6'],
+ ['appid' => 'testFirstResult1', 'configkey' => 'testing7'],
+ ['appid' => 'testFirstResult1', 'configkey' => 'testing8'],
+ ['appid' => 'testFirstResult1', 'configkey' => 'testing9'],
+ ],
+ $rows
+ );
+
+ $this->deleteTestingRows('testFirstResult1');
+ $this->deleteTestingRows('testFirstResult2');
+ }
+
public function dataAddSelect() {
$config = $this->createMock(SystemConfig::class);
$logger = $this->createMock(ILogger::class);
diff --git a/tests/lib/UrlGeneratorTest.php b/tests/lib/UrlGeneratorTest.php
index b5db39dbf39..dd2eb2ddc63 100644
--- a/tests/lib/UrlGeneratorTest.php
+++ b/tests/lib/UrlGeneratorTest.php
@@ -8,11 +8,11 @@
namespace Test;
+use OC\Route\Router;
use OCP\ICacheFactory;
use OCP\IConfig;
use OCP\IRequest;
use OCP\IURLGenerator;
-use OCP\Route\IRouter;
/**
* Class UrlGeneratorTest
@@ -27,7 +27,7 @@ class UrlGeneratorTest extends \Test\TestCase {
private $cacheFactory;
/** @var \PHPUnit\Framework\MockObject\MockObject|IRequest */
private $request;
- /** @var \PHPUnit\Framework\MockObject\MockObject|IRouter */
+ /** @var \PHPUnit\Framework\MockObject\MockObject|Router */
private $router;
/** @var IURLGenerator */
private $urlGenerator;
@@ -39,7 +39,7 @@ class UrlGeneratorTest extends \Test\TestCase {
$this->config = $this->createMock(IConfig::class);
$this->cacheFactory = $this->createMock(ICacheFactory::class);
$this->request = $this->createMock(IRequest::class);
- $this->router = $this->createMock(IRouter::class);
+ $this->router = $this->createMock(Router::class);
$this->urlGenerator = new \OC\URLGenerator(
$this->config,
$this->cacheFactory,