We basically mock the way `URLGenerator::getAbsoluteURL` works,
so we must make sure that the URL might already contain the webroot.
Because `baseURL` and `cliURL` also contain the webroot we need to remove
the webroot from the URL first.
Co-authored-by: Ferdinand Thiessen <opensource@fthiessen.de>
Co-authored-by: Daniel <mail@danielkesselberg.de>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Previously even when the precondition did not match, the call "passed"
when the after value was the expected one. This however can lead to
race conditions, duplicate code excutions and other things.
Signed-off-by: Joas Schilling <coding@schilljs.com>
The `<?xml` tag is interpreted as PHP short tags, so this causes errors.
Instead just print that part of the template.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
* The user should get a more friendly warning when their desktop client version is not supported anymore by the server.
See #nextcloud/desktop/issues/6273
* Update BlockLegacyClientPluginTest to reflect the new 403 error message.
Signed-off-by: Camila Ayres <hello@camilasan.com>
We are targetting PHP 8.1+, since PHP 8.0 `offsetGet` has the `mixed` types for `offset` and return value.
So this adds the types to correctly implement the interface.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
This is needed because some views have side effects, like `favorites` doing requests on registration time.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
This is to prevent collision as we are sometime hashing user input, yet using that hash to target the background job in the database.
Signed-off-by: Louis Chemineau <louis@chmn.me>
For E2EE encrypted files, we abort the transfer.
For SSE encrypted files, we abort only if not using master key.
Also fixed the check for when the path to a single file is used.
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
1) The checks for well-known urls should always run against the root domain and therefore the option to remove the webroot.
2) For trusted domains, the available protocol is unknown, and thus some guesswork would be needed to make that work. I've decided for now to not consider them anymore to reduce false-positives.
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
The row to add a new mount point is cloned when a new mountpoint is
added, so it is expected that it includes a status span. However, it
should not be displayed in that row, only in the cloned row when its
status is updated.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
When updating global storages and user storages a property is not
updated by "StoragesService::updateStorage()" if the value matches the
unmodified placeholder. However, userglobal storages are not updated
through the "StoragesService"; as only the authentication mechanism is
updated it is directly done with "saveBackendOptions()" in
"IUserProvided" or "UserGlobalAuth". Due to this the unmodified
placeholder value needs to be explicitly checked in those cases and
replaced by the actual value (note that in this case it is not possible
to just skip updating a specific property).
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
As the external storage uses the Nextcloud server itself the number of
workers of the PHP process running the Nextcloud server had to be
increased. Otherwise if a request is sent for the external storage while
handling a request from the integration tests a deadlock would occur.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
As a new storage is added by selecting a backend the selected backend
needs to be reset. Otherwise it is not possible to add another storage
with the same backend.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
If the status is updated but no explicit message is provided (for
example, if the status check succeeded) the default tooltip (from the
template) is now set to prevent a mismatch between the status and the
tooltip (for example, if the configuration is fixed after a failed
status check).
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
When saving, updating and rechecking an storage fails (which is
different to the soft-fail when the action itself succeeds but the
status check does not) further details are provided in the error message
of the response, which is now set as the tooltip.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
When a storage is saved the status check can fail even if saving the
storage succeeds. In those cases further details are provided in the
status message of the storage, which is now set as the tooltip,
similarly to how it is done when rechecking the storage.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Setting a null status was supposed to remove the status check, but
nothing was changed in that case. Now the status check is properly
removed, and doing that by hiding the element rather than just turning
it invisible also prevents that clicking on the invisible status
triggers a check, as until the new configuration is saved the check will
still be performed with the old configuration, which could be misleading
for the user.
Additionally, an explicit width is set to the parent of the span element
to prevent its width from changing when the span is shown and hidden.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Userglobal storages are now automatically recheck when loaded, similarly
to how it is done for global storages.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Keep them in the constructor to not break the API,
but they are not used anymore.
This way of adding a share was deprecated in Nextcloud 12 (2016!),
in favor of the federated share API, in Nextcloud 28 this way to create a share was removed.
So we can cleanup as all it takes now to create a federeated share is the share token + federated user ID.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
This removes custom rendering code an replaces it with the declarative menu actions.
Also adjust the template to allow the Vue UI to mount.
Custom entries still are possible.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
This adds a Vue implementation of the public page menu,
that is the menu that can be added using `PublicTemplateResponse::setHeaderActions`.
Co-authored-by: Ferdinand Thiessen <opensource@fthiessen.de>
Co-authored-by: Louis <louis@chmn.me>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
There were heavly breaking theming changes so increase the version number to make cache buster work.
Also fix order of entries in the appinfo.xml to fix XML validation (the order is fixed in the XSD).
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
While digging through code I noticed another huge code style
refactoring commit is blocking the real blame, so added it to the list.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
It is returning a list of strings so adjust the return typing
to reflect this (`list<string>` instead of `array`).
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
The idea is to intercept the request,
then test the loading state,
and after the tests continue the request.
Problem here: `cy.intercept` has a timeout on the request-handler
which uses the same timeout as DOM assertions (4s) we could increase it,
but this also will increase DOM assertion timeout.
So instead we do not await in the request handler, but in the response handler.
This should use the response timeout which is much higher (30s).
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
The loading icon visually informs that the node is currently loading,
but there is no non-visual information (accessible information).
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
1. The "recent" accounts API only works for admin and delegated admin -> hide for line managers
2. Line managers can not create new groups -> Hide the UI to add a new group for them
3. Accounts created by line managers require one of the groups, which is managed by the line manager, assigned.
So if the line manager only manageres a single group, we should preselect that group.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
TaskProcessing is transparent to textprocessing providers and TextProcessing can use Taskprocessing providers so these are unnecessary
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
taskprocessing is transparent to STT providers so specific STT settings are obsolete
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
Fix other background-positions
Minor fix in link button icon position
Update header left and right to start and end
Signed-off-by: Mostafa Ahangarha <ahangarha@riseup.net>
Renaming is basically copy + delete (a move), so no need to update permissions.
Especially if the node is in a invalid directory the node should be moveable but not editable.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Avoid surprises by making sure these are lowercased apart from
documented special case user displayname.
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Avoids using several LDAP searches to get UUID, display name and
internal name, now gets all attributes at the same time.
Also avoids extra request to build an unused user object in userExists.
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
On firefox there is an old bug where when you move a dragged file outside
the window the `dragleave` event is never emitted.
So we just use a timeout to reset the drag over state.
Also a small change: Use the ID of the main container instead of relying on tag name and class.
(The ID is guranteed as other APIs rely on it, while the class is just used internally).
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
There are some benefits, like faster tests and thus saving CI time, but the main reason for me is:
Jest still does not properly support ESM packages, this casues a lot of breaking stuff.
Sometimes you need to adjust imports for mocking, and somethimes other random stuff break.
Instead of wasting valuable developer lifetime we can use vitest which works perfectly with ESM.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Previously if a server status got set to failure, it stayed that way
until an addressbook-sync found changes. Now the server status is set to
OK after each successful sync check (if that's not the case already),
regardless of addressbook changes.
This change also includes two new logging statements, which could help
next time someone debugs this.
Signed-off-by: Pablo Zimdahl <pablo@nextcloud.com>
When using iOS and focussing an input element the view should not be zoomed.
So if we set a maximum scale iOS will not auto-zoom but still allow users to zoom.
But we can not do this by default as this will disable user zoom on Chrome.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
This prevents jumping of that toggle button when the view is loading.
Also adjust the design for Nextcloud 30 (prevent jumping of breadcrumbs when loading due to increased height).
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
There is no `title` attribute, so this causes an exception.
Instead sort by the "share with" displayname which will be the user or group the node is shared to.
Meaning this will also be the title of the share in the UI.
If this is not available or there are multiple for the same, then sort by the custom label.
If also this is not set sort by the creation time.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
PHP 8.1 allows us to now move the `new` into the initializer,
this makes the code a bit nicer (and 3 lines shorter).
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Fixes#2180
And prevents #31473, #23970, #18610, #15708
Avoids a 500 error and also gives a useful error message on the web interface if this module isn't installed, gets overlooked during a PHP upgrade, etc.
While we check for it later, it's too late for session.
Inspired by #17163
Signed-off-by: Josh Richards <josh.t.richards@gmail.com>
Fixes#31998
Adds support to `occ db:convert-type` to support UNIX socket connections via MySQL/MariaDB. Uses same `dbhost` / `hostname` parameter parsing logic (adapted) as used elsewhere (at least the relevant parts) for consistency.
Signed-off-by: Josh Richards <josh.t.richards@gmail.com>
Require user verification if all tokens are registered
with UV flag, else discourage it
Signed-off-by: S1m <git@sgougeon.fr>
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
* Resolves https://github.com/nextcloud/server/issues/34476
There is no maximum length defined in the standard,
most common the length is between 128 and 200 characters,
but as we store it not in plain data but base64 encoded the length can grow about 1/3.
We had a regression with 'Nitrokey 3' which created IDs with 196 byte length -> 262 bytes encoded base64.
So to be save we increase the size to 512 bytes.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
@@ -74,6 +74,10 @@ Otherwise, git checkouts can be handled the same as release archives, by using t
- Comment on a pull request with `/update-3rdparty` to update the 3rd party submodule. It will update to the last commit of the 3rd party branch named like the PR target.
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Nodrošina Nextcloud žurnalizēšanas iespējas, piemēram, faila piekļuves žurnalizēšanu vai citas sensitīvas darbības."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Nodrošina Nextcloud žurnalizēšanas iespējas, piemēram, faila piekļuves žurnalizēšanu vai citas sensitīvas darbības."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Menyediakan kebolehan pengelogan untuk Nextcloud seperti akses fail log atau tindakan sensitif."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Menyediakan kebolehan pengelogan untuk Nextcloud seperti akses fail log atau tindakan sensitif."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Fornece funcionalidades de registo para o Nextcloud como registar acessos a ficheiros ou outras ações sensíveis. "
"Auditing / Logging":"Auditorias / Registos",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Fornece funcionalidades de registo para o Nextcloud como registar acessos a ficheiros ou demais ações sensíveis. "
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Fornece funcionalidades de registo para o Nextcloud como registar acessos a ficheiros ou outras ações sensíveis. "
"Auditing / Logging":"Auditorias / Registos",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Fornece funcionalidades de registo para o Nextcloud como registar acessos a ficheiros ou demais ações sensíveis. "
},"pluralForm":"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Next bulut uchun tizimga kirish qobiliyatini ta'minlaydi, masalan, faylga kirish yoki boshqa sezgir harakatlar."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Next bulut uchun tizimga kirish qobiliyatini ta'minlaydi, masalan, faylga kirish yoki boshqa sezgir harakatlar."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Cung cấp khả năng ghi nhật ký cho Nextcloud, chẳng hạn như ghi nhật ký quyền truy cập tệp hoặc các hành động nhạy cảm khác."
"Auditing / Logging":"Kiểm tra / Nhật ký",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Cung cấp khả năng ghi nhật ký cho Nextcloud, chẳng hạn như ghi nhật ký quyền truy cập tệp hoặc các hành động nhạy cảm khác."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Cung cấp khả năng ghi nhật ký cho Nextcloud, chẳng hạn như ghi nhật ký quyền truy cập tệp hoặc các hành động nhạy cảm khác."
"Auditing / Logging":"Kiểm tra / Nhật ký",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Cung cấp khả năng ghi nhật ký cho Nextcloud, chẳng hạn như ghi nhật ký quyền truy cập tệp hoặc các hành động nhạy cảm khác."
"Enable clouds to communicate with each other and exchange data":"Gør det muligt for skyer at kommunikere med hinanden og udveksle data",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.":"Cloud sammenkoblings API gør det muligt for forskellige Nextcloud-instanser at kommunikere med hinanden og udveksle data."
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.":"Cloud Federation API gør det muligt for forskellige Nextcloud-instanser at kommunikere med hinanden og udveksle data."
"Enable clouds to communicate with each other and exchange data":"Gør det muligt for skyer at kommunikere med hinanden og udveksle data",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.":"Cloud sammenkoblings API gør det muligt for forskellige Nextcloud-instanser at kommunikere med hinanden og udveksle data."
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.":"Cloud Federation API gør det muligt for forskellige Nextcloud-instanser at kommunikere med hinanden og udveksle data."
"Cloud Federation API":"Ligeann API Comhdhéanta na Scamaill",
"Enable clouds to communicate with each other and exchange data":"Cumasaigh scamaill cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.":"Cuireann API Cloud Federation ar chumas cásanna éagsúla Nextcloud cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú."
"Enable clouds to communicate with each other and exchange data":"Lig dóimhneacht a chur ar chumas na scamaill cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú.",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.":"Ligeann API Comhdhéanta na Scamaill do réimse éagsúil de chásanna Nextcloud cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú."
"Cloud Federation API":"Ligeann API Comhdhéanta na Scamaill",
"Enable clouds to communicate with each other and exchange data":"Cumasaigh scamaill cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.":"Cuireann API Cloud Federation ar chumas cásanna éagsúla Nextcloud cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú."
"Enable clouds to communicate with each other and exchange data":"Lig dóimhneacht a chur ar chumas na scamaill cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú.",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.":"Ligeann API Comhdhéanta na Scamaill do réimse éagsúil de chásanna Nextcloud cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú."
"Enable clouds to communicate with each other and exchange data":"클라우드 간 소통과 데이터 교환을 가능케 합니다.",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.":"Cloud Federation API는 다양한 Nextcloud 인스턴스가 서로 소통하거나 데이터를 교환할 수 있도록 합니다."
"Enable clouds to communicate with each other and exchange data":"클라우드 간 소통과 데이터 교환을 가능케 합니다.",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.":"Cloud Federation API는 다양한 Nextcloud 인스턴스가 서로 소통하거나 데이터를 교환할 수 있도록 합니다."
"Enable clouds to communicate with each other and exchange data":"بۇلۇتلارنىڭ ئۆز-ئارا ئالاقە قىلىشى ۋە سانلىق مەلۇمات ئالماشتۇرۇشىنى قوزغىتىڭ",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.":"بۇلۇت فېدېراتسىيەسى API ھەر خىل Nextcloud مىساللىرىنى ئۆز-ئارا ئالاقە قىلىش ۋە سانلىق مەلۇمات ئالماشتۇرۇش ئىمكانىيىتىگە ئىگە قىلىدۇ."
"Enable clouds to communicate with each other and exchange data":"بۇلۇتلارنىڭ ئۆز-ئارا ئالاقە قىلىشى ۋە سانلىق مەلۇمات ئالماشتۇرۇشىنى قوزغىتىڭ",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.":"بۇلۇت فېدېراتسىيەسى API ھەر خىل Nextcloud مىساللىرىنى ئۆز-ئارا ئالاقە قىلىش ۋە سانلىق مەلۇمات ئالماشتۇرۇش ئىمكانىيىتىگە ئىگە قىلىدۇ."
"Enable clouds to communicate with each other and exchange data":"讓雲端可互相通訊並交換資料",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.":"雲端聯邦 API 能讓多個 Nextcloud 實體之間,可以互相通訊並交換資料。"
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.":"雲端聯盟 API 讓多個 Nextcloud 站台可以互相通訊並交換資料。"
"Enable clouds to communicate with each other and exchange data":"讓雲端可互相通訊並交換資料",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.":"雲端聯邦 API 能讓多個 Nextcloud 實體之間,可以互相通訊並交換資料。"
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.":"雲端聯盟 API 讓多個 Nextcloud 站台可以互相通訊並交換資料。"
"@ for mentions, : for emoji, / for smart picker":"@ للإشارات : للإيموجي / للاقط الذكي",
"@ for mentions, : for emoji, / for smart picker":"@ للإشارات، : للإيموجي، / للاقط الذكي",
"Could not reload comments":"تعذّرت إعادة تحميل التعليقات",
"Failed to mark comments as read":"فشل في تعيين ملاحظات كمقرؤة",
"Unable to load the comments list":"تعذر تحميل قائمة التعليقات",
"No comments yet, start the conversation!":"لا توجد تعليقات, ابدأ النقاش الآن!",
"No more messages":"لامزيد من الرسائل",
"Retry":"أعد المحاولة",
"Failed to mark comments as read":"إخفاق في تعيين ملاحظات كمقرؤة",
"Unable to load the comments list":"تعذر تحميل قائمة التعليقات",
"_1 new comment_::_{unread} new comments_":["1 تعليق جديد","1 تعليق جديد","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة"],
"Comment":"تعليق",
"An error occurred while trying to edit the comment":"حدث خطأ أثناء محاولة تعديل التعليق",
"Comment deleted":"التعليق محذوف",
"An error occurred while trying to delete the comment":"حدث خطأ أثناء محاولة حذف التعليق",
"An error occurred while trying to create the comment":"حدث خطأ أثناء محاولة إنشاء التعليق"
"An error occurred while trying to create the comment":"حدث خطأ أثناء محاولة إنشاء التعليق",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted":"تمت الإشارة إليك في \"{file}\" في تعليق لمستخدم. لكن هذا المستخدم تم حذف حسابه بعدها"
"@ for mentions, : for emoji, / for smart picker":"@ للإشارات : للإيموجي / للاقط الذكي",
"@ for mentions, : for emoji, / for smart picker":"@ للإشارات، : للإيموجي، / للاقط الذكي",
"Could not reload comments":"تعذّرت إعادة تحميل التعليقات",
"Failed to mark comments as read":"فشل في تعيين ملاحظات كمقرؤة",
"Unable to load the comments list":"تعذر تحميل قائمة التعليقات",
"No comments yet, start the conversation!":"لا توجد تعليقات, ابدأ النقاش الآن!",
"No more messages":"لامزيد من الرسائل",
"Retry":"أعد المحاولة",
"Failed to mark comments as read":"إخفاق في تعيين ملاحظات كمقرؤة",
"Unable to load the comments list":"تعذر تحميل قائمة التعليقات",
"_1 new comment_::_{unread} new comments_":["1 تعليق جديد","1 تعليق جديد","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة"],
"Comment":"تعليق",
"An error occurred while trying to edit the comment":"حدث خطأ أثناء محاولة تعديل التعليق",
"Comment deleted":"التعليق محذوف",
"An error occurred while trying to delete the comment":"حدث خطأ أثناء محاولة حذف التعليق",
"An error occurred while trying to create the comment":"حدث خطأ أثناء محاولة إنشاء التعليق"
"An error occurred while trying to create the comment":"حدث خطأ أثناء محاولة إنشاء التعليق",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted":"تمت الإشارة إليك في \"{file}\" في تعليق لمستخدم. لكن هذا المستخدم تم حذف حسابه بعدها"
"@ for mentions, : for emoji, / for smart picker":"@ pa les menciones, : pa los fustaxes, / pal selector intelixente",
"Could not reload comments":"Nun se pudieron recargar los comentarios",
"Failed to mark comments as read":"Nun se pudieron marcar los comentarios como lleíos",
"Unable to load the comments list":"Nun ye posible cargar la llista de comentarios",
"No comments yet, start the conversation!":"Nun hai comentarios, ¡anicia una conversación!",
"No more messages":"Nun hai más mensaxes",
"Retry":"Retentar",
"Failed to mark comments as read":"Nun se pudieron marcar los comentarios como lleíos",
"Unable to load the comments list":"Nun ye posible cargar la llista de comentarios",
"_1 new comment_::_{unread} new comments_":["1 comentariu nuevu","{unread} comentarios nuevos"],
"Comment":"Comentariu",
"An error occurred while trying to edit the comment":"Prodúxose un error mentanto se tentaba d'editar el comentariu",
"Comment deleted":"Desanicióse'l comentariu",
"An error occurred while trying to delete the comment":"Prodúxose un error mentanto se tentaba de desaniciar el comentariu",
"An error occurred while trying to create the comment":"Prodúxose un error mentanto se tentaba de crear el comentariu"
"An error occurred while trying to create the comment":"Prodúxose un error mentanto se tentaba de crear el comentariu",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted":"Un usuariu que ta desaniciáu mentóte nun comentariu de: {file}"
"@ for mentions, : for emoji, / for smart picker":"@ pa les menciones, : pa los fustaxes, / pal selector intelixente",
"Could not reload comments":"Nun se pudieron recargar los comentarios",
"Failed to mark comments as read":"Nun se pudieron marcar los comentarios como lleíos",
"Unable to load the comments list":"Nun ye posible cargar la llista de comentarios",
"No comments yet, start the conversation!":"Nun hai comentarios, ¡anicia una conversación!",
"No more messages":"Nun hai más mensaxes",
"Retry":"Retentar",
"Failed to mark comments as read":"Nun se pudieron marcar los comentarios como lleíos",
"Unable to load the comments list":"Nun ye posible cargar la llista de comentarios",
"_1 new comment_::_{unread} new comments_":["1 comentariu nuevu","{unread} comentarios nuevos"],
"Comment":"Comentariu",
"An error occurred while trying to edit the comment":"Prodúxose un error mentanto se tentaba d'editar el comentariu",
"Comment deleted":"Desanicióse'l comentariu",
"An error occurred while trying to delete the comment":"Prodúxose un error mentanto se tentaba de desaniciar el comentariu",
"An error occurred while trying to create the comment":"Prodúxose un error mentanto se tentaba de crear el comentariu"
"An error occurred while trying to create the comment":"Prodúxose un error mentanto se tentaba de crear el comentariu",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted":"Un usuariu que ta desaniciáu mentóte nun comentariu de: {file}"
"Unable to load the comments list":"Списъкът с коментари не може да се зареди",
"No comments yet, start the conversation!":"Все още няма коментари, започнете разговор!",
"No more messages":" Няма повече съобщения",
"Retry":"Опитай отново",
"Unable to load the comments list":"Списъкът с коментари не може да се зареди",
"_1 new comment_::_{unread} new comments_":["{unread} нови коментари","{unread} нови коментари"],
"Comment":"Коментар",
"An error occurred while trying to edit the comment":"Възникна грешка при опит за редактиране на коментара",
"Comment deleted":" Изтрит е коментар",
"An error occurred while trying to delete the comment":"Възникна грешка при опит за изтриване на коментара",
"An error occurred while trying to create the comment":"Възникна грешка при опит за създаване на коментар"
"An error occurred while trying to create the comment":"Възникна грешка при опит за създаване на коментар",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted":"Бяхте споменат/а към “{file}”, в коментар от потребител, който вече е изтрит"
"Unable to load the comments list":"Списъкът с коментари не може да се зареди",
"No comments yet, start the conversation!":"Все още няма коментари, започнете разговор!",
"No more messages":" Няма повече съобщения",
"Retry":"Опитай отново",
"Unable to load the comments list":"Списъкът с коментари не може да се зареди",
"_1 new comment_::_{unread} new comments_":["{unread} нови коментари","{unread} нови коментари"],
"Comment":"Коментар",
"An error occurred while trying to edit the comment":"Възникна грешка при опит за редактиране на коментара",
"Comment deleted":" Изтрит е коментар",
"An error occurred while trying to delete the comment":"Възникна грешка при опит за изтриване на коментара",
"An error occurred while trying to create the comment":"Възникна грешка при опит за създаване на коментар"
"An error occurred while trying to create the comment":"Възникна грешка при опит за създаване на коментар",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted":"Бяхте споменат/а към “{file}”, в коментар от потребител, който вече е изтрит"
"@ for mentions, : for emoji, / for smart picker":"@ per a mencions, : per a emojis, / per al selector intel·ligent",
"Could not reload comments":"No s'han pogut tornar a carregar els comentaris",
"Failed to mark comments as read":"No s'han pogut marcar els comentaris com a llegits",
"Unable to load the comments list":"No s'ha pogut carregar la llista de comentaris",
"No comments yet, start the conversation!":"Encara no hi ha cap comentari. Enceteu la conversa!",
"No more messages":"No hi ha més missatges",
"Retry":"Torna-ho a provar",
"Failed to mark comments as read":"No s'han pogut marcar els comentaris com a llegits",
"Unable to load the comments list":"No s'ha pogut carregar la llista de comentaris",
"_1 new comment_::_{unread} new comments_":["1 comentari nou","{unread} comentaris nous"],
"Comment":"Comentari",
"An error occurred while trying to edit the comment":"S'ha produït un error en intentar editar el comentari",
"Comment deleted":"S'ha suprimit el comentari",
"An error occurred while trying to delete the comment":"S'ha produït un error en intentar suprimir el comentari",
"An error occurred while trying to create the comment":"S'ha produït un error en intentar crear el comentari"
"An error occurred while trying to create the comment":"S'ha produït un error en intentar crear el comentari",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted":"Se us ha esmentat a «{file}» en un comentari d'un usuari que s'ha suprimit"
"@ for mentions, : for emoji, / for smart picker":"@ per a mencions, : per a emojis, / per al selector intel·ligent",
"Could not reload comments":"No s'han pogut tornar a carregar els comentaris",
"Failed to mark comments as read":"No s'han pogut marcar els comentaris com a llegits",
"Unable to load the comments list":"No s'ha pogut carregar la llista de comentaris",
"No comments yet, start the conversation!":"Encara no hi ha cap comentari. Enceteu la conversa!",
"No more messages":"No hi ha més missatges",
"Retry":"Torna-ho a provar",
"Failed to mark comments as read":"No s'han pogut marcar els comentaris com a llegits",
"Unable to load the comments list":"No s'ha pogut carregar la llista de comentaris",
"_1 new comment_::_{unread} new comments_":["1 comentari nou","{unread} comentaris nous"],
"Comment":"Comentari",
"An error occurred while trying to edit the comment":"S'ha produït un error en intentar editar el comentari",
"Comment deleted":"S'ha suprimit el comentari",
"An error occurred while trying to delete the comment":"S'ha produït un error en intentar suprimir el comentari",
"An error occurred while trying to create the comment":"S'ha produït un error en intentar crear el comentari"
"An error occurred while trying to create the comment":"S'ha produït un error en intentar crear el comentari",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted":"Se us ha esmentat a «{file}» en un comentari d'un usuari que s'ha suprimit"
"{author} commented on {file}":"{author} okomentoval(a) {file}",
"<strong>Comments</strong> for files":"<strong>Komentáře</strong> k souborům",
"Files":"Soubory",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted":"Byli jste zmíněni u souboru „{file}“, v komentáři od účtu, který byl později smazán",
"{user} mentioned you in a comment on \"{file}\"":"{user} vás zmínil(a) v komentáři u „{file}“",
"Files app plugin to add comments to files":"Zásuvný modul do aplikace Soubory pro přidávání komentářů k souborům",
"Edit comment":"Upravit komentář",
@@ -21,16 +20,17 @@ OC.L10N.register(
"Post comment":"Odeslat komentář",
"@ for mentions, : for emoji, / for smart picker":"@ pro zmínění, : pro emotikony, / pro inteligentní výběr",
"Could not reload comments":"Znovunačtení komentářů se nezdařilo",
"Failed to mark comments as read":"Nepodařilo se označit komentáře jako přečtené",
"Unable to load the comments list":"Nedaří se načíst seznam komentářů",
"No comments yet, start the conversation!":"Zatím bez komentářů, začněte konverzaci!",
"No more messages":"Žádné další zprávy",
"Retry":"Zkusit znovu",
"Failed to mark comments as read":"Nepodařilo se označit komentáře jako přečtené",
"Unable to load the comments list":"Nedaří se načíst seznam komentářů",
"_1 new comment_::_{unread} new comments_":["Jeden nový komentář","{unread} nové komentáře","{unread} nových komentářů","{unread} nové komentáře"],
"Comment":"Komentář",
"An error occurred while trying to edit the comment":"Došlo k chybě při pokusu o úpravu komentáře",
"Comment deleted":"Komentář smazán",
"An error occurred while trying to delete the comment":"Došlo k chybě při pokusu o smazání komentáře",
"An error occurred while trying to create the comment":"Došlo k chybě při pokusu o vytvoření komentáře"
"An error occurred while trying to create the comment":"Došlo k chybě při pokusu o vytvoření komentáře",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted":"Byli jste zmíněni u souboru „{file}“, v komentáři od uživatele, který byl později smazán"
"{author} commented on {file}":"{author} okomentoval(a) {file}",
"<strong>Comments</strong> for files":"<strong>Komentáře</strong> k souborům",
"Files":"Soubory",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted":"Byli jste zmíněni u souboru „{file}“, v komentáři od účtu, který byl později smazán",
"{user} mentioned you in a comment on \"{file}\"":"{user} vás zmínil(a) v komentáři u „{file}“",
"Files app plugin to add comments to files":"Zásuvný modul do aplikace Soubory pro přidávání komentářů k souborům",
"Edit comment":"Upravit komentář",
@@ -19,16 +18,17 @@
"Post comment":"Odeslat komentář",
"@ for mentions, : for emoji, / for smart picker":"@ pro zmínění, : pro emotikony, / pro inteligentní výběr",
"Could not reload comments":"Znovunačtení komentářů se nezdařilo",
"Failed to mark comments as read":"Nepodařilo se označit komentáře jako přečtené",
"Unable to load the comments list":"Nedaří se načíst seznam komentářů",
"No comments yet, start the conversation!":"Zatím bez komentářů, začněte konverzaci!",
"No more messages":"Žádné další zprávy",
"Retry":"Zkusit znovu",
"Failed to mark comments as read":"Nepodařilo se označit komentáře jako přečtené",
"Unable to load the comments list":"Nedaří se načíst seznam komentářů",
"_1 new comment_::_{unread} new comments_":["Jeden nový komentář","{unread} nové komentáře","{unread} nových komentářů","{unread} nové komentáře"],
"Comment":"Komentář",
"An error occurred while trying to edit the comment":"Došlo k chybě při pokusu o úpravu komentáře",
"Comment deleted":"Komentář smazán",
"An error occurred while trying to delete the comment":"Došlo k chybě při pokusu o smazání komentáře",
"An error occurred while trying to create the comment":"Došlo k chybě při pokusu o vytvoření komentáře"
"An error occurred while trying to create the comment":"Došlo k chybě při pokusu o vytvoření komentáře",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted":"Byli jste zmíněni u souboru „{file}“, v komentáři od uživatele, který byl později smazán"
"@ for mentions, : for emoji, / for smart picker":"\"@\" for at omtale, \":\" for emojis, \"/\" for Smart Vælger",
"@ for mentions, : for emoji, / for smart picker":"\"@\" for at nævne, \":\" for emojis, \"/\" for Smart Vælger",
"Could not reload comments":"Kunne ikke indlæse kommentarer",
"Failed to mark comments as read":"Kunne ikke markere kommentarer som læst",
"Unable to load the comments list":"Kan ikke indlæse kommentarlisten",
"No comments yet, start the conversation!":"Ingen kommentarer endnu, start samtalen!",
"No more messages":"Ikke flere beskeder",
"Retry":"Prøv igen",
"Failed to mark comments as read":"Kunne ikke markere kommentarer som læst",
"Unable to load the comments list":"Kan ikke indlæse kommentarlisten",
"_1 new comment_::_{unread} new comments_":["1 ny kommentar","{unread} nye kommentarer"],
"Comment":"Kommenter",
"Comment":"Kommentér",
"An error occurred while trying to edit the comment":"Der opstod en fejl under forsøget på at redigere kommentaren",
"Comment deleted":"Kommentar slettet",
"An error occurred while trying to delete the comment":"Der opstod en fejl under forsøget på at slette kommentaren",
"An error occurred while trying to create the comment":"Der opstod en fejl under forsøget på at oprette kommentaren"
"An error occurred while trying to create the comment":"Der opstod en fejl under forsøget på at oprette kommentaren",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted":"Du blev nævnt på \"{file}\", i en kommentar af en bruger, som siden er blevet slettet"
"@ for mentions, : for emoji, / for smart picker":"\"@\" for at omtale, \":\" for emojis, \"/\" for Smart Vælger",
"@ for mentions, : for emoji, / for smart picker":"\"@\" for at nævne, \":\" for emojis, \"/\" for Smart Vælger",
"Could not reload comments":"Kunne ikke indlæse kommentarer",
"Failed to mark comments as read":"Kunne ikke markere kommentarer som læst",
"Unable to load the comments list":"Kan ikke indlæse kommentarlisten",
"No comments yet, start the conversation!":"Ingen kommentarer endnu, start samtalen!",
"No more messages":"Ikke flere beskeder",
"Retry":"Prøv igen",
"Failed to mark comments as read":"Kunne ikke markere kommentarer som læst",
"Unable to load the comments list":"Kan ikke indlæse kommentarlisten",
"_1 new comment_::_{unread} new comments_":["1 ny kommentar","{unread} nye kommentarer"],
"Comment":"Kommenter",
"Comment":"Kommentér",
"An error occurred while trying to edit the comment":"Der opstod en fejl under forsøget på at redigere kommentaren",
"Comment deleted":"Kommentar slettet",
"An error occurred while trying to delete the comment":"Der opstod en fejl under forsøget på at slette kommentaren",
"An error occurred while trying to create the comment":"Der opstod en fejl under forsøget på at oprette kommentaren"
"An error occurred while trying to create the comment":"Der opstod en fejl under forsøget på at oprette kommentaren",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted":"Du blev nævnt på \"{file}\", i en kommentar af en bruger, som siden er blevet slettet"
"@ for mentions, : for emoji, / for smart picker":"@ für Erwähnungen, : für Emoji, / für Smart Picker",
"Could not reload comments":"Kommentare konnten nicht erneut geladen werden",
"Failed to mark comments as read":"Kommentare konnten nicht als gelesen markiert werden",
"Unable to load the comments list":"Kommentarliste konnte nicht geladen werden",
"No comments yet, start the conversation!":"Keine Kommentare bisher. Beginne die Diskussion!",
"No more messages":"Keine weiteren Nachrichten",
"Retry":"Wiederholen",
"Failed to mark comments as read":"Kommentare konnten nicht als gelesen markiert werden",
"Unable to load the comments list":"Kommentarliste konnte nicht geladen werden",
"_1 new comment_::_{unread} new comments_":["1 neuer Kommentar","[unread] neue Kommentare"],
"Comment":"Kommentar",
"An error occurred while trying to edit the comment":"Es ist ein Fehler beim Bearbeiten des Kommentars aufgetreten",
"Comment deleted":"Kommentar gelöscht",
"An error occurred while trying to delete the comment":"Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
"An error occurred while trying to create the comment":"Es ist ein Fehler beim Erstellen des Kommentars aufgetreten"
"An error occurred while trying to create the comment":"Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted":"Du wurdest in einem Kommentar auf \"{file}\" von einem bereits gelöschten Benutzer erwähnt"
"@ for mentions, : for emoji, / for smart picker":"@ für Erwähnungen, : für Emoji, / für Smart Picker",
"Could not reload comments":"Kommentare konnten nicht erneut geladen werden",
"Failed to mark comments as read":"Kommentare konnten nicht als gelesen markiert werden",
"Unable to load the comments list":"Kommentarliste konnte nicht geladen werden",
"No comments yet, start the conversation!":"Keine Kommentare bisher. Beginne die Diskussion!",
"No more messages":"Keine weiteren Nachrichten",
"Retry":"Wiederholen",
"Failed to mark comments as read":"Kommentare konnten nicht als gelesen markiert werden",
"Unable to load the comments list":"Kommentarliste konnte nicht geladen werden",
"_1 new comment_::_{unread} new comments_":["1 neuer Kommentar","[unread] neue Kommentare"],
"Comment":"Kommentar",
"An error occurred while trying to edit the comment":"Es ist ein Fehler beim Bearbeiten des Kommentars aufgetreten",
"Comment deleted":"Kommentar gelöscht",
"An error occurred while trying to delete the comment":"Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
"An error occurred while trying to create the comment":"Es ist ein Fehler beim Erstellen des Kommentars aufgetreten"
"An error occurred while trying to create the comment":"Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted":"Du wurdest in einem Kommentar auf \"{file}\" von einem bereits gelöschten Benutzer erwähnt"
"@ for mentions, : for emoji, / for smart picker":"@ für Erwähnungen, : für Emoji, / für Smart Picker",
"Could not reload comments":"Kommentare konnten nicht erneut geladen werden",
"Failed to mark comments as read":"Kommentare konnten nicht als gelesen markiert werden",
"Unable to load the comments list":"Kommentarliste kann nicht geladen werden",
"No comments yet, start the conversation!":"Keine Kommentare bisher. Beginnen Sie die Diskussion!",
"No more messages":"Keine weiteren Nachrichten",
"Retry":"Wiederholen",
"Failed to mark comments as read":"Kommentare konnten nicht als gelesen markiert werden",
"Unable to load the comments list":"Kommentarliste kann nicht geladen werden",
"_1 new comment_::_{unread} new comments_":["1 neuer Kommentar","[unread] neue Kommentare"],
"Comment":"Kommentar",
"An error occurred while trying to edit the comment":"Es ist ein Fehler beim Bearbeiten des Kommentars aufgetreten",
"Comment deleted":"Kommentar gelöscht",
"An error occurred while trying to delete the comment":"Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
"An error occurred while trying to create the comment":"Es ist ein Fehler beim Erstellen des Kommentars aufgetreten"
"An error occurred while trying to create the comment":"Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted":"Sie wurden in einem Kommentar auf \"{file}\" von einem bereits gelöschten Benutzer erwähnt"
},
"nplurals=2; plural=(n != 1);");
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.