diff options
Diffstat (limited to 'apps')
50 files changed, 640 insertions, 31 deletions
diff --git a/apps/comments/l10n/es_CO.js b/apps/comments/l10n/es_CO.js new file mode 100644 index 00000000000..b8516c1449b --- /dev/null +++ b/apps/comments/l10n/es_CO.js @@ -0,0 +1,35 @@ +OC.L10N.register( + "comments", + { + "Comments" : "Comentarios", + "You commented" : "Comentaste", + "{author} commented" : "{author} comentó", + "You commented on %1$s" : "Usted comentó en %1$s", + "You commented on {file}" : "Hiciste un comentario de {file}", + "%1$s commented on %2$s" : "%1$s comentó en %2$s", + "{author} commented on {file}" : "{author} comentó en {file}", + "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", + "Files" : "Archivo", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Fue mencionado en \"{file}\", en un comentario realizado por un usuario que ha sido eliminado", + "{user} mentioned you in a comment on \"{file}\"" : "{user} le mencionó en un comentario en “{file}”", + "Files app plugin to add comments to files" : "Plugin de la aplicación de archivos para agregar comentarios a los archivos", + "Edit comment" : "Editar comentario", + "Delete comment" : "Borrar comentario", + "Cancel edit" : "Cancelar edición", + "New comment" : "Nuevo comentario", + "Write a comment …" : "Escribir un comentario …", + "Post comment" : "Publicar comentario", + "@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoticonos, / para selector inteligente", + "Could not reload comments" : "No se pudieron recargar los comentarios", + "Failed to mark comments as read" : "No se pudieron marcar los comentarios como leídos", + "Unable to load the comments list" : "No se puede cargar la lista de comentarios", + "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", + "No more messages" : "No hay más mensajes", + "Retry" : "Reintentar", + "Comment" : "Comentario", + "An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario", + "Comment deleted" : "Comentario borrado", + "An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario", + "An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario" +}, +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es_CO.json b/apps/comments/l10n/es_CO.json new file mode 100644 index 00000000000..c212111b999 --- /dev/null +++ b/apps/comments/l10n/es_CO.json @@ -0,0 +1,33 @@ +{ "translations": { + "Comments" : "Comentarios", + "You commented" : "Comentaste", + "{author} commented" : "{author} comentó", + "You commented on %1$s" : "Usted comentó en %1$s", + "You commented on {file}" : "Hiciste un comentario de {file}", + "%1$s commented on %2$s" : "%1$s comentó en %2$s", + "{author} commented on {file}" : "{author} comentó en {file}", + "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", + "Files" : "Archivo", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Fue mencionado en \"{file}\", en un comentario realizado por un usuario que ha sido eliminado", + "{user} mentioned you in a comment on \"{file}\"" : "{user} le mencionó en un comentario en “{file}”", + "Files app plugin to add comments to files" : "Plugin de la aplicación de archivos para agregar comentarios a los archivos", + "Edit comment" : "Editar comentario", + "Delete comment" : "Borrar comentario", + "Cancel edit" : "Cancelar edición", + "New comment" : "Nuevo comentario", + "Write a comment …" : "Escribir un comentario …", + "Post comment" : "Publicar comentario", + "@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoticonos, / para selector inteligente", + "Could not reload comments" : "No se pudieron recargar los comentarios", + "Failed to mark comments as read" : "No se pudieron marcar los comentarios como leídos", + "Unable to load the comments list" : "No se puede cargar la lista de comentarios", + "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", + "No more messages" : "No hay más mensajes", + "Retry" : "Reintentar", + "Comment" : "Comentario", + "An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario", + "Comment deleted" : "Comentario borrado", + "An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario", + "An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +}
\ No newline at end of file diff --git a/apps/dav/src/components/AbsenceForm.vue b/apps/dav/src/components/AbsenceForm.vue index 18c60ba4dd4..5350c04a565 100644 --- a/apps/dav/src/components/AbsenceForm.vue +++ b/apps/dav/src/components/AbsenceForm.vue @@ -219,7 +219,7 @@ export default { lastDay: formatDateAsYMD(this.lastDay), status: this.status, message: this.message, - replacementUserId: this.replacementUser?.user ?? null + replacementUserId: this.replacementUser?.user ?? null, }) showSuccess(this.$t('dav', 'Absence saved')) } catch (error) { diff --git a/apps/dav/src/components/ExampleContentDownloadButton.vue b/apps/dav/src/components/ExampleContentDownloadButton.vue index d3ee793eddc..6ee13e057bd 100644 --- a/apps/dav/src/components/ExampleContentDownloadButton.vue +++ b/apps/dav/src/components/ExampleContentDownloadButton.vue @@ -26,13 +26,13 @@ export default { name: 'ExampleContentDownloadButton', components: { NcButton, - IconDownload + IconDownload, }, props: { href: { type: String, required: true, - } + }, }, } </script> diff --git a/apps/dav/src/components/ExampleEventSettings.vue b/apps/dav/src/components/ExampleEventSettings.vue index c7a90b71a4a..5d2053def50 100644 --- a/apps/dav/src/components/ExampleEventSettings.vue +++ b/apps/dav/src/components/ExampleEventSettings.vue @@ -47,7 +47,7 @@ type="file" accept=".ics,text/calendar" class="import-event-modal__file-picker" - @change="selectFile" /> + @change="selectFile"> <div class="import-event-modal__buttons"> <NcButton :disabled="uploading || !selectedFile" type="primary" diff --git a/apps/dav/src/settings-example-content.js b/apps/dav/src/settings-example-content.js index ca0291ace4f..fdeba642a67 100644 --- a/apps/dav/src/settings-example-content.js +++ b/apps/dav/src/settings-example-content.js @@ -10,7 +10,7 @@ Vue.mixin({ methods: { t: translate, $t: translate, - } + }, }) const View = Vue.extend(ExampleContentSettingsSection); diff --git a/apps/dav/src/views/ExampleContentSettingsSection.vue b/apps/dav/src/views/ExampleContentSettingsSection.vue index 5e65a1ba3b4..3ee2d9e8648 100644 --- a/apps/dav/src/views/ExampleContentSettingsSection.vue +++ b/apps/dav/src/views/ExampleContentSettingsSection.vue @@ -33,6 +33,6 @@ export default { hasCalendarApp() { return loadState('dav', 'calendarEnabled') }, - } + }, } </script> diff --git a/apps/federatedfilesharing/lib/OCM/CloudFederationProviderFiles.php b/apps/federatedfilesharing/lib/OCM/CloudFederationProviderFiles.php index 1cdcdbdd6d4..1ce639532e8 100644 --- a/apps/federatedfilesharing/lib/OCM/CloudFederationProviderFiles.php +++ b/apps/federatedfilesharing/lib/OCM/CloudFederationProviderFiles.php @@ -309,7 +309,10 @@ class CloudFederationProviderFiles implements ISignedCloudFederationProvider { $this->verifyShare($share, $token); $this->executeAcceptShare($share); - if ($share->getShareOwner() !== $share->getSharedBy()) { + + if ($share->getShareOwner() !== $share->getSharedBy() + && !$this->userManager->userExists($share->getSharedBy())) { + // only if share was initiated from another instance [, $remote] = $this->addressHandler->splitUserRemote($share->getSharedBy()); $remoteId = $this->federatedShareProvider->getRemoteId($share); $notification = $this->cloudFederationFactory->getCloudFederationNotification(); diff --git a/apps/files/l10n/cs.js b/apps/files/l10n/cs.js index 2f593d271c4..f941b6bdab2 100644 --- a/apps/files/l10n/cs.js +++ b/apps/files/l10n/cs.js @@ -142,6 +142,7 @@ OC.L10N.register( "Create new folder" : "Vytvořit novou složku", "This name is already in use." : "Tento název už je využíván.", "Create" : "Vytvořit", + "Files starting with a dot are hidden by default" : "Soubory, kterých názvy začínají tečkou, jsou ve výchozím stavu skryté", "Fill template fields" : "Vyplňte kolonky šablony", "Submitting fields …" : "Odesílání kolonek…", "Submit" : "Odeslat", @@ -213,6 +214,7 @@ OC.L10N.register( "Warnings" : "Varování", "Prevent warning dialogs from open or reenable them." : "Zabránit dialogům s varováními v otevírání nebo znovupovolení.", "Show a warning dialog when changing a file extension." : "Při měnění přípony souboru zobrazit varovný dialog.", + "Show a warning dialog when deleting files." : "Před smazáním souborů zobrazit varovný dialog.", "Keyboard shortcuts" : "Klávesové zkratky", "Speed up your Files experience with these quick shortcuts." : "Zrychlete svůj dojem ze Souborů pomocí těchto rychlých zkratek.", "Open the actions menu for a file" : "Otevřít nabídku akcí pro soubor", diff --git a/apps/files/l10n/cs.json b/apps/files/l10n/cs.json index b565488a6e2..5faa81dca0b 100644 --- a/apps/files/l10n/cs.json +++ b/apps/files/l10n/cs.json @@ -140,6 +140,7 @@ "Create new folder" : "Vytvořit novou složku", "This name is already in use." : "Tento název už je využíván.", "Create" : "Vytvořit", + "Files starting with a dot are hidden by default" : "Soubory, kterých názvy začínají tečkou, jsou ve výchozím stavu skryté", "Fill template fields" : "Vyplňte kolonky šablony", "Submitting fields …" : "Odesílání kolonek…", "Submit" : "Odeslat", @@ -211,6 +212,7 @@ "Warnings" : "Varování", "Prevent warning dialogs from open or reenable them." : "Zabránit dialogům s varováními v otevírání nebo znovupovolení.", "Show a warning dialog when changing a file extension." : "Při měnění přípony souboru zobrazit varovný dialog.", + "Show a warning dialog when deleting files." : "Před smazáním souborů zobrazit varovný dialog.", "Keyboard shortcuts" : "Klávesové zkratky", "Speed up your Files experience with these quick shortcuts." : "Zrychlete svůj dojem ze Souborů pomocí těchto rychlých zkratek.", "Open the actions menu for a file" : "Otevřít nabídku akcí pro soubor", diff --git a/apps/files/l10n/en_GB.js b/apps/files/l10n/en_GB.js index 086e763f4ab..c2cb142aac1 100644 --- a/apps/files/l10n/en_GB.js +++ b/apps/files/l10n/en_GB.js @@ -142,6 +142,7 @@ OC.L10N.register( "Create new folder" : "Create new folder", "This name is already in use." : "This name is already in use.", "Create" : "Create", + "Files starting with a dot are hidden by default" : "Files starting with a dot are hidden by default", "Fill template fields" : "Fill template fields", "Submitting fields …" : "Submitting fields …", "Submit" : "Submit", diff --git a/apps/files/l10n/en_GB.json b/apps/files/l10n/en_GB.json index 33d8c73111f..69149e1a00d 100644 --- a/apps/files/l10n/en_GB.json +++ b/apps/files/l10n/en_GB.json @@ -140,6 +140,7 @@ "Create new folder" : "Create new folder", "This name is already in use." : "This name is already in use.", "Create" : "Create", + "Files starting with a dot are hidden by default" : "Files starting with a dot are hidden by default", "Fill template fields" : "Fill template fields", "Submitting fields …" : "Submitting fields …", "Submit" : "Submit", diff --git a/apps/files/l10n/ga.js b/apps/files/l10n/ga.js index b872f9b4c48..d5a5e0fd8fc 100644 --- a/apps/files/l10n/ga.js +++ b/apps/files/l10n/ga.js @@ -129,6 +129,7 @@ OC.L10N.register( "Search globally by filename …" : "Cuardaigh go domhanda de réir ainm comhaid …", "Search here by filename …" : "Cuardaigh anseo de réir ainm comhaid …", "Search scope options" : "Roghanna raon feidhme cuardaigh", + "Filter and search from this location" : "Scag agus déan cuardach ón suíomh seo", "Search globally" : "Cuardaigh go domhanda", "{usedQuotaByte} used" : "{usedQuotaByte} úsáidte", "{used} of {quota} used" : "{used} de {quota} in úsáid", @@ -141,6 +142,7 @@ OC.L10N.register( "Create new folder" : "Cruthaigh fillteán nua", "This name is already in use." : "Tá an t-ainm seo in úsáid cheana féin.", "Create" : "Cruthaigh", + "Files starting with a dot are hidden by default" : "Bíonn comhaid a thosaíonn le ponc i bhfolach de réir réamhshocraithe", "Fill template fields" : "Líon réimsí teimpléid", "Submitting fields …" : "Réimsí á gcur isteach…", "Submit" : "Cuir isteach", @@ -212,6 +214,7 @@ OC.L10N.register( "Warnings" : "Rabhaidh", "Prevent warning dialogs from open or reenable them." : "Cosc a chur ar dialóga rabhaidh ó iad a oscailt nó iad a athchumasú.", "Show a warning dialog when changing a file extension." : "Taispeáin dialóg rabhaidh nuair a athraítear síneadh comhad.", + "Show a warning dialog when deleting files." : "Taispeáin comhrá rabhaidh agus comhaid á scriosadh.", "Keyboard shortcuts" : "Aicearraí méarchláir", "Speed up your Files experience with these quick shortcuts." : "Déan do thaithí Comhaid a bhrostú leis na haicearraí tapa seo.", "Open the actions menu for a file" : "Oscail an roghchlár gníomhartha le haghaidh comhad", diff --git a/apps/files/l10n/ga.json b/apps/files/l10n/ga.json index c71888d8c2b..8b01e76fc2e 100644 --- a/apps/files/l10n/ga.json +++ b/apps/files/l10n/ga.json @@ -127,6 +127,7 @@ "Search globally by filename …" : "Cuardaigh go domhanda de réir ainm comhaid …", "Search here by filename …" : "Cuardaigh anseo de réir ainm comhaid …", "Search scope options" : "Roghanna raon feidhme cuardaigh", + "Filter and search from this location" : "Scag agus déan cuardach ón suíomh seo", "Search globally" : "Cuardaigh go domhanda", "{usedQuotaByte} used" : "{usedQuotaByte} úsáidte", "{used} of {quota} used" : "{used} de {quota} in úsáid", @@ -139,6 +140,7 @@ "Create new folder" : "Cruthaigh fillteán nua", "This name is already in use." : "Tá an t-ainm seo in úsáid cheana féin.", "Create" : "Cruthaigh", + "Files starting with a dot are hidden by default" : "Bíonn comhaid a thosaíonn le ponc i bhfolach de réir réamhshocraithe", "Fill template fields" : "Líon réimsí teimpléid", "Submitting fields …" : "Réimsí á gcur isteach…", "Submit" : "Cuir isteach", @@ -210,6 +212,7 @@ "Warnings" : "Rabhaidh", "Prevent warning dialogs from open or reenable them." : "Cosc a chur ar dialóga rabhaidh ó iad a oscailt nó iad a athchumasú.", "Show a warning dialog when changing a file extension." : "Taispeáin dialóg rabhaidh nuair a athraítear síneadh comhad.", + "Show a warning dialog when deleting files." : "Taispeáin comhrá rabhaidh agus comhaid á scriosadh.", "Keyboard shortcuts" : "Aicearraí méarchláir", "Speed up your Files experience with these quick shortcuts." : "Déan do thaithí Comhaid a bhrostú leis na haicearraí tapa seo.", "Open the actions menu for a file" : "Oscail an roghchlár gníomhartha le haghaidh comhad", diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js index 39787e39664..f22d1227b9f 100644 --- a/apps/files/l10n/it.js +++ b/apps/files/l10n/it.js @@ -82,7 +82,7 @@ OC.L10N.register( "Current directory path" : "Percorso della cartella corrente", "Your have used your space quota and cannot upload files anymore" : "Hai esaurito la tua quota di spazio e non puoi più caricare file", "You do not have permission to upload or create files here." : "Non hai l'autorizzazione per caricare o creare file qui.", - "Drag and drop files here to upload" : "Trascina i file qui per caricarli", + "Drag and drop files here to upload" : "Trascina e rilascia i file qui per caricarli", "Favorite" : "Preferito", "Back" : "Indietro", "Toggle selection for file \"{displayName}\"" : "Attiva/disattiva la selezione per il file \"{displayName}\"", @@ -129,6 +129,7 @@ OC.L10N.register( "Search globally by filename …" : "Cerca globalmente per nome file…", "Search here by filename …" : "Cerca qui per nome file…", "Search scope options" : "Opzioni nell'ambito di ricerca", + "Filter and search from this location" : "Filtra e cerca da questa posizione", "Search globally" : "Cerca globalmente", "{usedQuotaByte} used" : "{usedQuotaByte} usato", "{used} of {quota} used" : "{used} di {quota} utilizzati", @@ -141,6 +142,7 @@ OC.L10N.register( "Create new folder" : "Crea una nuova cartella", "This name is already in use." : "Questo nome è già utilizzato.", "Create" : "Crea", + "Files starting with a dot are hidden by default" : "I file che iniziano con un punto sono nascosti per impostazione predefinita", "Fill template fields" : "Compila i campi del modello", "Submitting fields …" : "Invio dei campi …", "Submit" : "Invia", @@ -212,6 +214,7 @@ OC.L10N.register( "Warnings" : "Avvertenze", "Prevent warning dialogs from open or reenable them." : "Impedire l'apertura delle finestre di dialogo di avviso o riattivarle.", "Show a warning dialog when changing a file extension." : "Mostra una finestra di dialogo di avviso quando si modifica l'estensione di un file.", + "Show a warning dialog when deleting files." : "Mostra un dialogo di avviso quando si cancellano dei file.", "Keyboard shortcuts" : "Scorciatoie da tastiera", "Speed up your Files experience with these quick shortcuts." : "Velocizza la tua esperienza con i File con queste rapide scorciatoie.", "Open the actions menu for a file" : "Aprire il menu delle azioni per un file", @@ -330,7 +333,7 @@ OC.L10N.register( "New template folder" : "Nuova cartella dei modelli", "In folder" : "Nella cartella", "Search in folder: {folder}" : "Cerca nella cartella: {folder}", - "One of the dropped files could not be processed" : "Impossibile elaborare uno dei file eliminati", + "One of the dropped files could not be processed" : "Impossibile elaborare uno dei file depositati", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Il tuo browser non supporta l'API del file system. Le directory non verranno caricate", "No files to upload" : "Nessun file da caricare", "Unable to create the directory {directory}" : "Impossibile creare la directory {directory}", diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json index 40edb4b3f9a..ced369a54d6 100644 --- a/apps/files/l10n/it.json +++ b/apps/files/l10n/it.json @@ -80,7 +80,7 @@ "Current directory path" : "Percorso della cartella corrente", "Your have used your space quota and cannot upload files anymore" : "Hai esaurito la tua quota di spazio e non puoi più caricare file", "You do not have permission to upload or create files here." : "Non hai l'autorizzazione per caricare o creare file qui.", - "Drag and drop files here to upload" : "Trascina i file qui per caricarli", + "Drag and drop files here to upload" : "Trascina e rilascia i file qui per caricarli", "Favorite" : "Preferito", "Back" : "Indietro", "Toggle selection for file \"{displayName}\"" : "Attiva/disattiva la selezione per il file \"{displayName}\"", @@ -127,6 +127,7 @@ "Search globally by filename …" : "Cerca globalmente per nome file…", "Search here by filename …" : "Cerca qui per nome file…", "Search scope options" : "Opzioni nell'ambito di ricerca", + "Filter and search from this location" : "Filtra e cerca da questa posizione", "Search globally" : "Cerca globalmente", "{usedQuotaByte} used" : "{usedQuotaByte} usato", "{used} of {quota} used" : "{used} di {quota} utilizzati", @@ -139,6 +140,7 @@ "Create new folder" : "Crea una nuova cartella", "This name is already in use." : "Questo nome è già utilizzato.", "Create" : "Crea", + "Files starting with a dot are hidden by default" : "I file che iniziano con un punto sono nascosti per impostazione predefinita", "Fill template fields" : "Compila i campi del modello", "Submitting fields …" : "Invio dei campi …", "Submit" : "Invia", @@ -210,6 +212,7 @@ "Warnings" : "Avvertenze", "Prevent warning dialogs from open or reenable them." : "Impedire l'apertura delle finestre di dialogo di avviso o riattivarle.", "Show a warning dialog when changing a file extension." : "Mostra una finestra di dialogo di avviso quando si modifica l'estensione di un file.", + "Show a warning dialog when deleting files." : "Mostra un dialogo di avviso quando si cancellano dei file.", "Keyboard shortcuts" : "Scorciatoie da tastiera", "Speed up your Files experience with these quick shortcuts." : "Velocizza la tua esperienza con i File con queste rapide scorciatoie.", "Open the actions menu for a file" : "Aprire il menu delle azioni per un file", @@ -328,7 +331,7 @@ "New template folder" : "Nuova cartella dei modelli", "In folder" : "Nella cartella", "Search in folder: {folder}" : "Cerca nella cartella: {folder}", - "One of the dropped files could not be processed" : "Impossibile elaborare uno dei file eliminati", + "One of the dropped files could not be processed" : "Impossibile elaborare uno dei file depositati", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Il tuo browser non supporta l'API del file system. Le directory non verranno caricate", "No files to upload" : "Nessun file da caricare", "Unable to create the directory {directory}" : "Impossibile creare la directory {directory}", diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js index 5606fb9fd95..74a6f6da7b6 100644 --- a/apps/files/l10n/pt_BR.js +++ b/apps/files/l10n/pt_BR.js @@ -142,6 +142,7 @@ OC.L10N.register( "Create new folder" : "Criar nova pasta", "This name is already in use." : "Este nome já está em uso.", "Create" : "Criar", + "Files starting with a dot are hidden by default" : "Os arquivos que começam com um ponto são ocultos por padrão", "Fill template fields" : "Preencher campos do template", "Submitting fields …" : "Enviando os campos …", "Submit" : "Enviar", diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json index 424ede47ef1..78de8f01be9 100644 --- a/apps/files/l10n/pt_BR.json +++ b/apps/files/l10n/pt_BR.json @@ -140,6 +140,7 @@ "Create new folder" : "Criar nova pasta", "This name is already in use." : "Este nome já está em uso.", "Create" : "Criar", + "Files starting with a dot are hidden by default" : "Os arquivos que começam com um ponto são ocultos por padrão", "Fill template fields" : "Preencher campos do template", "Submitting fields …" : "Enviando os campos …", "Submit" : "Enviar", diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js index 94c32c72b0b..e33c4e6b18b 100644 --- a/apps/files/l10n/uk.js +++ b/apps/files/l10n/uk.js @@ -142,6 +142,7 @@ OC.L10N.register( "Create new folder" : "Створити новий каталог", "This name is already in use." : "Це ім'я вже використовується", "Create" : "Створити", + "Files starting with a dot are hidden by default" : "Файли, що починаються з крапки, типово приховано", "Fill template fields" : "Заповнити поля шаблону", "Submitting fields …" : "Надсилання полів ...", "Submit" : "Відправити", diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json index daf35eb80d8..92df28c918d 100644 --- a/apps/files/l10n/uk.json +++ b/apps/files/l10n/uk.json @@ -140,6 +140,7 @@ "Create new folder" : "Створити новий каталог", "This name is already in use." : "Це ім'я вже використовується", "Create" : "Створити", + "Files starting with a dot are hidden by default" : "Файли, що починаються з крапки, типово приховано", "Fill template fields" : "Заповнити поля шаблону", "Submitting fields …" : "Надсилання полів ...", "Submit" : "Відправити", diff --git a/apps/files/l10n/zh_HK.js b/apps/files/l10n/zh_HK.js index b8a096abf15..cc7b7f20c44 100644 --- a/apps/files/l10n/zh_HK.js +++ b/apps/files/l10n/zh_HK.js @@ -142,7 +142,7 @@ OC.L10N.register( "Create new folder" : "新增資料夾", "This name is already in use." : "這個用戶名稱已經有人使用了。", "Create" : "創建", - "Files starting with a dot are hidden by default" : "檔案名稱以點開頭的檔案預設隱藏", + "Files starting with a dot are hidden by default" : "以點開頭的檔案默認為隱藏檔案", "Fill template fields" : "填寫模板欄位", "Submitting fields …" : "正在遞交欄位 …", "Submit" : "遞交", diff --git a/apps/files/l10n/zh_HK.json b/apps/files/l10n/zh_HK.json index c423b29cece..a5cc0829163 100644 --- a/apps/files/l10n/zh_HK.json +++ b/apps/files/l10n/zh_HK.json @@ -140,7 +140,7 @@ "Create new folder" : "新增資料夾", "This name is already in use." : "這個用戶名稱已經有人使用了。", "Create" : "創建", - "Files starting with a dot are hidden by default" : "檔案名稱以點開頭的檔案預設隱藏", + "Files starting with a dot are hidden by default" : "以點開頭的檔案默認為隱藏檔案", "Fill template fields" : "填寫模板欄位", "Submitting fields …" : "正在遞交欄位 …", "Submit" : "遞交", diff --git a/apps/files/src/newMenu/newFolder.ts b/apps/files/src/newMenu/newFolder.ts index 9a8badb4eb7..f2d04fce3c7 100644 --- a/apps/files/src/newMenu/newFolder.ts +++ b/apps/files/src/newMenu/newFolder.ts @@ -43,8 +43,11 @@ export const entry = { id: 'newFolder', displayName: t('files', 'New folder'), enabled: (context: Folder) => Boolean(context.permissions & Permission.CREATE) && Boolean(context.permissions & Permission.READ), - iconSvgInline: FolderPlusSvg, + + // Make the svg icon color match the primary element color + iconSvgInline: FolderPlusSvg.replace(/viewBox/gi, 'style="color: var(--color-primary-element)" viewBox'), order: 0, + async handler(context: Folder, content: Node[]) { const name = await newNodeName(t('files', 'New folder'), content) if (name === null) { diff --git a/apps/files/src/views/favorites.spec.ts b/apps/files/src/views/favorites.spec.ts index 64c3df0500a..e73279f2b31 100644 --- a/apps/files/src/views/favorites.spec.ts +++ b/apps/files/src/views/favorites.spec.ts @@ -7,6 +7,7 @@ import type { Folder as CFolder, Navigation } from '@nextcloud/files' import * as filesUtils from '@nextcloud/files' +import * as filesDavUtils from '@nextcloud/files/dav' import { CancelablePromise } from 'cancelable-promise' import { basename } from 'path' import { beforeEach, describe, expect, test, vi } from 'vitest' @@ -43,7 +44,7 @@ describe('Favorites view definition', () => { test('Default empty favorite view', async () => { vi.spyOn(eventBus, 'subscribe') - vi.spyOn(filesUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve([])) + vi.spyOn(filesDavUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve([])) vi.spyOn(favoritesService, 'getContents').mockReturnValue(CancelablePromise.resolve({ folder: {} as CFolder, contents: [] })) await registerFavoritesView() @@ -89,8 +90,14 @@ describe('Favorites view definition', () => { source: 'http://nextcloud.local/remote.php/dav/files/admin/foo/bar', owner: 'admin', }), + new Folder({ + id: 4, + root: '/files/admin', + source: 'http://nextcloud.local/remote.php/dav/files/admin/foo/bar/yabadaba', + owner: 'admin', + }), ] - vi.spyOn(filesUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve(favoriteFolders)) + vi.spyOn(filesDavUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve(favoriteFolders)) vi.spyOn(favoritesService, 'getContents').mockReturnValue(CancelablePromise.resolve({ folder: {} as CFolder, contents: [] })) await registerFavoritesView() @@ -98,9 +105,12 @@ describe('Favorites view definition', () => { const favoriteFoldersViews = Navigation.views.filter(view => view.parent === 'favorites') // one main view and 3 children - expect(Navigation.views.length).toBe(4) + expect(Navigation.views.length).toBe(5) expect(favoritesView).toBeDefined() - expect(favoriteFoldersViews.length).toBe(3) + expect(favoriteFoldersViews.length).toBe(4) + + // Sorted by basename: bar, bar, foo + const expectedOrder = [2, 0, 1, 3] favoriteFolders.forEach((folder, index) => { const favoriteView = favoriteFoldersViews[index] @@ -108,7 +118,7 @@ describe('Favorites view definition', () => { expect(favoriteView?.id).toBeDefined() expect(favoriteView?.name).toBe(basename(folder.path)) expect(favoriteView?.icon).toMatch(/<svg.+<\/svg>/) - expect(favoriteView?.order).toBe(index) + expect(favoriteView?.order).toBe(expectedOrder[index]) expect(favoriteView?.params).toStrictEqual({ dir: folder.path, fileid: String(folder.fileid), @@ -132,7 +142,7 @@ describe('Dynamic update of favorite folders', () => { test('Add a favorite folder creates a new entry in the navigation', async () => { vi.spyOn(eventBus, 'emit') - vi.spyOn(filesUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve([])) + vi.spyOn(filesDavUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve([])) vi.spyOn(favoritesService, 'getContents').mockReturnValue(CancelablePromise.resolve({ folder: {} as CFolder, contents: [] })) await registerFavoritesView() @@ -160,7 +170,7 @@ describe('Dynamic update of favorite folders', () => { test('Remove a favorite folder remove the entry from the navigation column', async () => { vi.spyOn(eventBus, 'emit') - vi.spyOn(filesUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve([ + vi.spyOn(filesDavUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve([ new Folder({ id: 42, root: '/files/admin', @@ -211,7 +221,7 @@ describe('Dynamic update of favorite folders', () => { test('Renaming a favorite folder updates the navigation', async () => { vi.spyOn(eventBus, 'emit') - vi.spyOn(filesUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve([])) + vi.spyOn(filesDavUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve([])) vi.spyOn(favoritesService, 'getContents').mockReturnValue(CancelablePromise.resolve({ folder: {} as CFolder, contents: [] })) await registerFavoritesView() diff --git a/apps/files/src/views/favorites.ts b/apps/files/src/views/favorites.ts index cadc7704e14..45cd96510a2 100644 --- a/apps/files/src/views/favorites.ts +++ b/apps/files/src/views/favorites.ts @@ -4,13 +4,15 @@ */ import type { Folder, Node } from '@nextcloud/files' +import { FileType, View, getNavigation } from '@nextcloud/files' +import { getCanonicalLocale, getLanguage, t } from '@nextcloud/l10n' +import { getFavoriteNodes } from '@nextcloud/files/dav' import { subscribe } from '@nextcloud/event-bus' -import { FileType, View, getFavoriteNodes, getNavigation } from '@nextcloud/files' -import { getLanguage, translate as t } from '@nextcloud/l10n' -import { client } from '../services/WebdavClient.ts' + import FolderSvg from '@mdi/svg/svg/folder.svg?raw' import StarSvg from '@mdi/svg/svg/star.svg?raw' +import { client } from '../services/WebdavClient.ts' import { getContents } from '../services/Favorites' import { hashCode } from '../utils/hashUtils' import logger from '../logger' @@ -118,7 +120,7 @@ export const registerFavoritesView = async () => { * update the order property of the existing views */ const updateAndSortViews = function() { - favoriteFolders.sort((a, b) => a.path.localeCompare(b.path, getLanguage(), { ignorePunctuation: true })) + favoriteFolders.sort((a, b) => a.basename.localeCompare(b.basename, [getLanguage(), getCanonicalLocale()], { ignorePunctuation: true, numeric: true, usage: 'sort' })) favoriteFolders.forEach((folder, index) => { const view = favoriteFoldersViews.find((view) => view.id === generateIdFromPath(folder.path)) if (view) { @@ -176,4 +178,6 @@ export const registerFavoritesView = async () => { removePathFromFavorites(favoriteFolder.path) addToFavorites(node) } + + updateAndSortViews() } diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js index 23f0a3b4a28..fa7d330d86e 100644 --- a/apps/files_sharing/l10n/it.js +++ b/apps/files_sharing/l10n/it.js @@ -254,7 +254,7 @@ OC.L10N.register( "Search for internal recipients" : "Cerca destinatari interni", "Note from" : "Nota da", "Note:" : "Nota:", - "File drop" : "Elimina file", + "File drop" : "Deposita file", "Upload files to {foldername}." : "Carica i file su{foldername}.", "By uploading files, you agree to the terms of service." : "Caricando i file accetti i termini del servizio.", "Successfully uploaded files" : "File caricati correttamente", diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json index fc84fa187f2..77427218f18 100644 --- a/apps/files_sharing/l10n/it.json +++ b/apps/files_sharing/l10n/it.json @@ -252,7 +252,7 @@ "Search for internal recipients" : "Cerca destinatari interni", "Note from" : "Nota da", "Note:" : "Nota:", - "File drop" : "Elimina file", + "File drop" : "Deposita file", "Upload files to {foldername}." : "Carica i file su{foldername}.", "By uploading files, you agree to the terms of service." : "Caricando i file accetti i termini del servizio.", "Successfully uploaded files" : "File caricati correttamente", diff --git a/apps/profile/l10n/be.js b/apps/profile/l10n/be.js new file mode 100644 index 00000000000..40762e2b51c --- /dev/null +++ b/apps/profile/l10n/be.js @@ -0,0 +1,12 @@ +OC.L10N.register( + "profile", + { + "Profile" : "Профіль", + "You have not added any info yet" : "Вы пакуль не дадалі ніякай інфармацыі", + "{user} has not added any info yet" : "{user} пакуль не дадаў(-ла) ніякай інфармацыі", + "Edit Profile" : "Рэдагаваць профіль", + "Profile not found" : "Профіль не знойдзены", + "The profile does not exist." : "Профіль не існуе.", + "Back to %s" : "Назад да %s" +}, +"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); diff --git a/apps/profile/l10n/be.json b/apps/profile/l10n/be.json new file mode 100644 index 00000000000..16101d03b70 --- /dev/null +++ b/apps/profile/l10n/be.json @@ -0,0 +1,10 @@ +{ "translations": { + "Profile" : "Профіль", + "You have not added any info yet" : "Вы пакуль не дадалі ніякай інфармацыі", + "{user} has not added any info yet" : "{user} пакуль не дадаў(-ла) ніякай інфармацыі", + "Edit Profile" : "Рэдагаваць профіль", + "Profile not found" : "Профіль не знойдзены", + "The profile does not exist." : "Профіль не існуе.", + "Back to %s" : "Назад да %s" +},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" +}
\ No newline at end of file diff --git a/apps/settings/l10n/cs.js b/apps/settings/l10n/cs.js index 15e1f22443a..7fead4b9912 100644 --- a/apps/settings/l10n/cs.js +++ b/apps/settings/l10n/cs.js @@ -370,6 +370,8 @@ OC.L10N.register( "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Uživatelé i tak budou moci pořizovat snímky/video z obrazovky. Neposkytuje to jakoukoli definitivní ochranu.", "Allow users to share via link and emails" : "Povolit uživatelům sdílet pomocí odkazů a e-mailů", "Allow public uploads" : "Povolit veřejné nahrávání souborů", + "Allow public shares to be added to other clouds by federation." : "Umožnit přidávání veřejných sdílení do ostatních cloudů prostřednictvím federování.", + "This will add share permissions to all newly created link shares." : "Toto přidá oprávnění ke sdílení ke všem nově vytvářeným sdílením odkazem.", "Always ask for a password" : "Vždy se zeptat na heslo", "Enforce password protection" : "Vynutit ochranu heslem", "Exclude groups from password requirements" : "Z požadavků na heslo vynechat následující skupiny", diff --git a/apps/settings/l10n/cs.json b/apps/settings/l10n/cs.json index 4637303628d..7269c122bb3 100644 --- a/apps/settings/l10n/cs.json +++ b/apps/settings/l10n/cs.json @@ -368,6 +368,8 @@ "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Uživatelé i tak budou moci pořizovat snímky/video z obrazovky. Neposkytuje to jakoukoli definitivní ochranu.", "Allow users to share via link and emails" : "Povolit uživatelům sdílet pomocí odkazů a e-mailů", "Allow public uploads" : "Povolit veřejné nahrávání souborů", + "Allow public shares to be added to other clouds by federation." : "Umožnit přidávání veřejných sdílení do ostatních cloudů prostřednictvím federování.", + "This will add share permissions to all newly created link shares." : "Toto přidá oprávnění ke sdílení ke všem nově vytvářeným sdílením odkazem.", "Always ask for a password" : "Vždy se zeptat na heslo", "Enforce password protection" : "Vynutit ochranu heslem", "Exclude groups from password requirements" : "Z požadavků na heslo vynechat následující skupiny", diff --git a/apps/settings/l10n/en_GB.js b/apps/settings/l10n/en_GB.js index c96cc378ed7..c5c2d22ec57 100644 --- a/apps/settings/l10n/en_GB.js +++ b/apps/settings/l10n/en_GB.js @@ -370,6 +370,8 @@ OC.L10N.register( "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Users will still be able to screenshot or record the screen. This does not provide any definitive protection.", "Allow users to share via link and emails" : "Allow users to share via link and emails", "Allow public uploads" : "Allow public uploads", + "Allow public shares to be added to other clouds by federation." : "Allow public shares to be added to other clouds by federation.", + "This will add share permissions to all newly created link shares." : "This will add share permissions to all newly created link shares.", "Always ask for a password" : "Always ask for a password", "Enforce password protection" : "Enforce password protection", "Exclude groups from password requirements" : "Exclude groups from password requirements", diff --git a/apps/settings/l10n/en_GB.json b/apps/settings/l10n/en_GB.json index ffa0f903f65..a4d53a47659 100644 --- a/apps/settings/l10n/en_GB.json +++ b/apps/settings/l10n/en_GB.json @@ -368,6 +368,8 @@ "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Users will still be able to screenshot or record the screen. This does not provide any definitive protection.", "Allow users to share via link and emails" : "Allow users to share via link and emails", "Allow public uploads" : "Allow public uploads", + "Allow public shares to be added to other clouds by federation." : "Allow public shares to be added to other clouds by federation.", + "This will add share permissions to all newly created link shares." : "This will add share permissions to all newly created link shares.", "Always ask for a password" : "Always ask for a password", "Enforce password protection" : "Enforce password protection", "Exclude groups from password requirements" : "Exclude groups from password requirements", diff --git a/apps/settings/l10n/fr.js b/apps/settings/l10n/fr.js index f3f56954d5e..b796b6bbab5 100644 --- a/apps/settings/l10n/fr.js +++ b/apps/settings/l10n/fr.js @@ -343,6 +343,7 @@ OC.L10N.register( "Nextcloud settings" : "Paramètres Nextcloud", "Unified task processing" : "Traitement unifié des tâches", "AI tasks can be implemented by different apps. Here you can set which app should be used for which task." : "Les tâches d'IA peuvent être mises en œuvre par différentes applications. Ici, vous pouvez définir quelle application doit être utilisée pour quelle tâche.", + "Allow AI usage for guest users" : "Autoriser l'utilisation de l'IA pour les utilisateurs invités", "Task:" : "Tâche : ", "Enable" : "Activer", "None of your currently installed apps provide Task processing functionality" : "Aucune de vos applications actuellement installées ne fournit de fonctionnalité de traitement des tâches", @@ -369,6 +370,7 @@ OC.L10N.register( "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Les utilisateurs pourront toujours faire des captures d'écran ou enregistrer l'écran. Cela n'offre aucune protection définitive.", "Allow users to share via link and emails" : "Autoriser les utilisateurs à partager par lien et par e-mail", "Allow public uploads" : "Autoriser les téléversements publics", + "This will add share permissions to all newly created link shares." : "Cela ajoutera les permissions de partage à tous les nouveaux liens de partage.", "Always ask for a password" : "Toujours demander un mot de passe", "Enforce password protection" : "Imposer la protection par mot de passe", "Exclude groups from password requirements" : "Exclure des groupes des contraintes de mot de passe", diff --git a/apps/settings/l10n/fr.json b/apps/settings/l10n/fr.json index 2b64850fbd7..323744f2ded 100644 --- a/apps/settings/l10n/fr.json +++ b/apps/settings/l10n/fr.json @@ -341,6 +341,7 @@ "Nextcloud settings" : "Paramètres Nextcloud", "Unified task processing" : "Traitement unifié des tâches", "AI tasks can be implemented by different apps. Here you can set which app should be used for which task." : "Les tâches d'IA peuvent être mises en œuvre par différentes applications. Ici, vous pouvez définir quelle application doit être utilisée pour quelle tâche.", + "Allow AI usage for guest users" : "Autoriser l'utilisation de l'IA pour les utilisateurs invités", "Task:" : "Tâche : ", "Enable" : "Activer", "None of your currently installed apps provide Task processing functionality" : "Aucune de vos applications actuellement installées ne fournit de fonctionnalité de traitement des tâches", @@ -367,6 +368,7 @@ "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Les utilisateurs pourront toujours faire des captures d'écran ou enregistrer l'écran. Cela n'offre aucune protection définitive.", "Allow users to share via link and emails" : "Autoriser les utilisateurs à partager par lien et par e-mail", "Allow public uploads" : "Autoriser les téléversements publics", + "This will add share permissions to all newly created link shares." : "Cela ajoutera les permissions de partage à tous les nouveaux liens de partage.", "Always ask for a password" : "Toujours demander un mot de passe", "Enforce password protection" : "Imposer la protection par mot de passe", "Exclude groups from password requirements" : "Exclure des groupes des contraintes de mot de passe", diff --git a/apps/settings/l10n/ga.js b/apps/settings/l10n/ga.js index 5f8edd63eca..19dd4c69544 100644 --- a/apps/settings/l10n/ga.js +++ b/apps/settings/l10n/ga.js @@ -370,6 +370,8 @@ OC.L10N.register( "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Beidh úsáideoirí fós in ann scáileán a thógáil nó an scáileán a thaifeadadh. Ní sholáthraíonn sé seo aon chosaint chinntitheach.", "Allow users to share via link and emails" : "Lig d'úsáideoirí a roinnt trí nasc agus ríomhphoist", "Allow public uploads" : "Ceadaigh uaslódálacha poiblí", + "Allow public shares to be added to other clouds by federation." : "Ceadaigh scaireanna poiblí a chur le scamaill eile trí chónaidhm.", + "This will add share permissions to all newly created link shares." : "Cuirfidh sé seo ceadanna comhroinnte le gach comhroinnt nasc nua-chruthaithe.", "Always ask for a password" : "Iarr pasfhocal i gcónaí", "Enforce password protection" : "Cuir cosaint phasfhocal i bhfeidhm", "Exclude groups from password requirements" : "Fág grúpaí ó riachtanais phasfhocal", diff --git a/apps/settings/l10n/ga.json b/apps/settings/l10n/ga.json index b565f117530..49dacb4ad00 100644 --- a/apps/settings/l10n/ga.json +++ b/apps/settings/l10n/ga.json @@ -368,6 +368,8 @@ "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Beidh úsáideoirí fós in ann scáileán a thógáil nó an scáileán a thaifeadadh. Ní sholáthraíonn sé seo aon chosaint chinntitheach.", "Allow users to share via link and emails" : "Lig d'úsáideoirí a roinnt trí nasc agus ríomhphoist", "Allow public uploads" : "Ceadaigh uaslódálacha poiblí", + "Allow public shares to be added to other clouds by federation." : "Ceadaigh scaireanna poiblí a chur le scamaill eile trí chónaidhm.", + "This will add share permissions to all newly created link shares." : "Cuirfidh sé seo ceadanna comhroinnte le gach comhroinnt nasc nua-chruthaithe.", "Always ask for a password" : "Iarr pasfhocal i gcónaí", "Enforce password protection" : "Cuir cosaint phasfhocal i bhfeidhm", "Exclude groups from password requirements" : "Fág grúpaí ó riachtanais phasfhocal", diff --git a/apps/settings/l10n/lv.js b/apps/settings/l10n/lv.js index 68226b2dd9f..967ff5dd9e2 100644 --- a/apps/settings/l10n/lv.js +++ b/apps/settings/l10n/lv.js @@ -16,6 +16,9 @@ OC.L10N.register( "Unable to retrieve the group list" : "Nevarēja saņemt grupu sarakstu", "{actor} changed your password" : "{actor] nomainīja Tavu paroli", "You changed your password" : "Tu nomainīji savu paroli", + "{actor} changed your email address" : "{actor} nomainīja Tavu e-pasta adresi", + "You changed your email address" : "Tu nomainīji savu e-pasta adresi", + "Your email address was changed by an administrator" : "Pārvaldītājs nomainīja Tavu e-pasta adresi", "You renamed app password \"{token}\" to \"{newToken}\"" : "Tu pārdēvēji lietotnes paroli \"{token}\" par \"{newToken}\"", "Security" : "Drošība", "You successfully logged in using two-factor authentication (%1$s)" : "Sekmīga pieteikšanās ar divpakāpju autentificēšanos (%1$s)", @@ -37,6 +40,10 @@ OC.L10N.register( "Unable to change full name" : "Nevar nomainīt pilno vārdu", "Unable to change email address" : "Nevar mainīt e-pasta adresi", "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Lai apliecinātu savu tīmekļvietni, zemāk esošais saturs ir jāglabā tīmekļvietnes pamatmapē kā `.well-known/CloudIdVerificationCode.txt` (lūgums pārliecināties, ka viss teksts ir vienā rindiņā):", + "%1$s changed your password on %2$s." : "%1$s nomainīja Tavu %2$sparoli.", + "Your password on %s was changed." : "Tava %s parole tika nomainīta.", + "Your email address on %s was changed." : "Tava %s e-pasta adrese tika nomainīta.", + "Your email address on %s was changed by an administrator." : "Pārvaldītājs nomainīja Tavu %s e-pasta adresi", "Your %s account was created" : "Konts %s ir izveidots", "Apps" : "Lietotnes", "Personal" : "Personīgi", @@ -194,6 +201,7 @@ OC.L10N.register( "Admins" : "Pārvaldītāji", "Sending…" : "Sūta …", "Email sent" : "E-pasta ziņojums nosūtīts", + "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Veiktspējas dēļ, kad Nextcloud serverī iespējo šifrēšanu, jaunās un izmainītās datnes tiek šīfrētas.", "Location" : "Atrašanās vieta", "Profile picture" : "Profila attēls", "About" : "Par", diff --git a/apps/settings/l10n/lv.json b/apps/settings/l10n/lv.json index 1231c5bc914..6f58b2bb0d9 100644 --- a/apps/settings/l10n/lv.json +++ b/apps/settings/l10n/lv.json @@ -14,6 +14,9 @@ "Unable to retrieve the group list" : "Nevarēja saņemt grupu sarakstu", "{actor} changed your password" : "{actor] nomainīja Tavu paroli", "You changed your password" : "Tu nomainīji savu paroli", + "{actor} changed your email address" : "{actor} nomainīja Tavu e-pasta adresi", + "You changed your email address" : "Tu nomainīji savu e-pasta adresi", + "Your email address was changed by an administrator" : "Pārvaldītājs nomainīja Tavu e-pasta adresi", "You renamed app password \"{token}\" to \"{newToken}\"" : "Tu pārdēvēji lietotnes paroli \"{token}\" par \"{newToken}\"", "Security" : "Drošība", "You successfully logged in using two-factor authentication (%1$s)" : "Sekmīga pieteikšanās ar divpakāpju autentificēšanos (%1$s)", @@ -35,6 +38,10 @@ "Unable to change full name" : "Nevar nomainīt pilno vārdu", "Unable to change email address" : "Nevar mainīt e-pasta adresi", "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Lai apliecinātu savu tīmekļvietni, zemāk esošais saturs ir jāglabā tīmekļvietnes pamatmapē kā `.well-known/CloudIdVerificationCode.txt` (lūgums pārliecināties, ka viss teksts ir vienā rindiņā):", + "%1$s changed your password on %2$s." : "%1$s nomainīja Tavu %2$sparoli.", + "Your password on %s was changed." : "Tava %s parole tika nomainīta.", + "Your email address on %s was changed." : "Tava %s e-pasta adrese tika nomainīta.", + "Your email address on %s was changed by an administrator." : "Pārvaldītājs nomainīja Tavu %s e-pasta adresi", "Your %s account was created" : "Konts %s ir izveidots", "Apps" : "Lietotnes", "Personal" : "Personīgi", @@ -192,6 +199,7 @@ "Admins" : "Pārvaldītāji", "Sending…" : "Sūta …", "Email sent" : "E-pasta ziņojums nosūtīts", + "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Veiktspējas dēļ, kad Nextcloud serverī iespējo šifrēšanu, jaunās un izmainītās datnes tiek šīfrētas.", "Location" : "Atrašanās vieta", "Profile picture" : "Profila attēls", "About" : "Par", diff --git a/apps/settings/l10n/mk.js b/apps/settings/l10n/mk.js index 4aa38bf9347..74d77d42867 100644 --- a/apps/settings/l10n/mk.js +++ b/apps/settings/l10n/mk.js @@ -181,6 +181,7 @@ OC.L10N.register( "_%n app has an update available_::_%n apps have an update available_" : ["За %n апликација има достапно ажурирање","За %n апликации има достапно ажурирање"], "_Update_::_Update all_" : ["Ажурирај","Ажурирај ги сите"], "Group name" : "Име на група", + "Nothing to show" : "Нема што да се прикаже", "Type" : "Вид", "Learn more" : "Научи повеќе", "Confirm" : "Потврди", @@ -274,6 +275,7 @@ OC.L10N.register( "Picture provided by original account" : "Слика обезбедена од оригинална сметка", "Set as profile picture" : "Постави фотографија на профилот", "Please note that it can take up to 24 hours for your profile picture to be updated everywhere." : "Имајте предвид дека може да потрае до 24 часа за да се ажурира аватарот насекаде.", + "Your biography. Markdown is supported." : "Вашата биографија.", "Enter your date of birth" : "Внесете го вашиот датум на раѓање", "You are using {s}{usage}{/s}" : "Користите {s}{usage}{/s}", "You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "Користите {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})", @@ -403,6 +405,8 @@ OC.L10N.register( "Locale" : "Локација", "First day of week" : "Прв ден од неделата", "Not available as this property is required for core functionality including file sharing and calendar invitations" : "Не е достапно бидејќи ова својство е потребно за основна функционалност, вклучувајќи споделување датотеки и покани од календар", + "Not available as federation has been disabled for your account, contact your system administration if you have any questions" : "Не е достапно бидејќи федерацијата е оневозможена за вашата сметка, контактирајте го администраторот доколку имате какви било прашања.", + "Not available as publishing account specific data to the lookup server is not allowed, contact your system administration if you have any questions" : "Не е достапно бидејќи не е дозволено објавување специфични податоци за корисникот на серверот за пребарување, контактирајте со вашиот системски администратор ако имате какви било прашања", "Your apps" : "Ваши апликации", "Active apps" : "Активни апликации", "Disabled apps" : "Оневозможени апликации", diff --git a/apps/settings/l10n/mk.json b/apps/settings/l10n/mk.json index 51a26ea439d..96c0e392842 100644 --- a/apps/settings/l10n/mk.json +++ b/apps/settings/l10n/mk.json @@ -179,6 +179,7 @@ "_%n app has an update available_::_%n apps have an update available_" : ["За %n апликација има достапно ажурирање","За %n апликации има достапно ажурирање"], "_Update_::_Update all_" : ["Ажурирај","Ажурирај ги сите"], "Group name" : "Име на група", + "Nothing to show" : "Нема што да се прикаже", "Type" : "Вид", "Learn more" : "Научи повеќе", "Confirm" : "Потврди", @@ -272,6 +273,7 @@ "Picture provided by original account" : "Слика обезбедена од оригинална сметка", "Set as profile picture" : "Постави фотографија на профилот", "Please note that it can take up to 24 hours for your profile picture to be updated everywhere." : "Имајте предвид дека може да потрае до 24 часа за да се ажурира аватарот насекаде.", + "Your biography. Markdown is supported." : "Вашата биографија.", "Enter your date of birth" : "Внесете го вашиот датум на раѓање", "You are using {s}{usage}{/s}" : "Користите {s}{usage}{/s}", "You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "Користите {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})", @@ -401,6 +403,8 @@ "Locale" : "Локација", "First day of week" : "Прв ден од неделата", "Not available as this property is required for core functionality including file sharing and calendar invitations" : "Не е достапно бидејќи ова својство е потребно за основна функционалност, вклучувајќи споделување датотеки и покани од календар", + "Not available as federation has been disabled for your account, contact your system administration if you have any questions" : "Не е достапно бидејќи федерацијата е оневозможена за вашата сметка, контактирајте го администраторот доколку имате какви било прашања.", + "Not available as publishing account specific data to the lookup server is not allowed, contact your system administration if you have any questions" : "Не е достапно бидејќи не е дозволено објавување специфични податоци за корисникот на серверот за пребарување, контактирајте со вашиот системски администратор ако имате какви било прашања", "Your apps" : "Ваши апликации", "Active apps" : "Активни апликации", "Disabled apps" : "Оневозможени апликации", diff --git a/apps/settings/l10n/pt_BR.js b/apps/settings/l10n/pt_BR.js index 26f0728604d..848734a4dbb 100644 --- a/apps/settings/l10n/pt_BR.js +++ b/apps/settings/l10n/pt_BR.js @@ -370,6 +370,8 @@ OC.L10N.register( "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Os usuários ainda poderão fazer capturas de tela ou gravar a tela. Isso não oferece nenhuma proteção definitiva.", "Allow users to share via link and emails" : "Permitir que os usuários compartilhem via link e e-mails", "Allow public uploads" : "Permitir uploads públicos", + "Allow public shares to be added to other clouds by federation." : "Permitir que compartilhamentos públicos sejam adicionados a outras nuvens por federação.", + "This will add share permissions to all newly created link shares." : "Isso adicionará permissões de compartilhamento a todos os compartilhamentos de link novamente criados.", "Always ask for a password" : "Sempre pedir a senha", "Enforce password protection" : "Obrigar proteção com senha", "Exclude groups from password requirements" : "Excluir grupos dos requisitos de senha", diff --git a/apps/settings/l10n/pt_BR.json b/apps/settings/l10n/pt_BR.json index 63c48345a3f..9ed68c369c2 100644 --- a/apps/settings/l10n/pt_BR.json +++ b/apps/settings/l10n/pt_BR.json @@ -368,6 +368,8 @@ "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Os usuários ainda poderão fazer capturas de tela ou gravar a tela. Isso não oferece nenhuma proteção definitiva.", "Allow users to share via link and emails" : "Permitir que os usuários compartilhem via link e e-mails", "Allow public uploads" : "Permitir uploads públicos", + "Allow public shares to be added to other clouds by federation." : "Permitir que compartilhamentos públicos sejam adicionados a outras nuvens por federação.", + "This will add share permissions to all newly created link shares." : "Isso adicionará permissões de compartilhamento a todos os compartilhamentos de link novamente criados.", "Always ask for a password" : "Sempre pedir a senha", "Enforce password protection" : "Obrigar proteção com senha", "Exclude groups from password requirements" : "Excluir grupos dos requisitos de senha", diff --git a/apps/settings/l10n/uk.js b/apps/settings/l10n/uk.js index 74d5157563c..171b2cb031e 100644 --- a/apps/settings/l10n/uk.js +++ b/apps/settings/l10n/uk.js @@ -474,12 +474,14 @@ OC.L10N.register( "Be aware that encryption always increases the file size." : "Майте на увазі, що шифрування завжди збільшує розмір файлів.", "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Завжди корисно регулярно створювати резервні копії ваших даних, у разі шифрування обов’язково зробіть резервну копію ключів шифрування разом із вашими даними.", "This is the final warning: Do you really want to enable encryption?" : "Це останнє попередження: Ви справді хочете ввімкнути шифрування?", + "Failed to delete group \"{group}\"" : "Не вдалося вилучити групу \"{group}\"", "Please confirm the group removal" : "Підтвердіть вилучення групи", "Submit" : "Продовжити", "Rename group" : "Перейменувати групу", "Delete group" : "Вилучити групу", "Current password" : "Поточний пароль", "New password" : "Новий пароль", + "Change password" : "Змінити пароль", "Choose your profile picture" : "Виберіть зображення профілю", "Please select a valid png or jpg file" : "Виберіть дійсний файл png або jpg", "Error setting profile picture" : "Помилка налаштування зображення профілю", @@ -494,8 +496,11 @@ OC.L10N.register( "Picture provided by original account" : "Картинка надана оригінальним обліковим записом", "Set as profile picture" : "Установити як зображення профілю", "Please note that it can take up to 24 hours for your profile picture to be updated everywhere." : "Зауважте, що повсюдне оновлення зображення профілю може зайняти до 24 годин.", + "Your biography. Markdown is supported." : "Про вас. Підтримується текстова розмітка.", "Unable to update date of birth" : "Не вдалося оновити дату народження", "Enter your date of birth" : "Зазначте дату вашого народження", + "You are using {s}{usage}{/s}" : "Ви використовуєте {s}{usage}{/s}", + "You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "Ви використовуєте {s}{usage}{/s} із {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})", "You are a member of the following groups:" : "Ви є учасником груп:", "Your full name" : "Ваше повне ім'я", "Email options" : "Параметри електронної пошти", @@ -562,12 +567,14 @@ OC.L10N.register( "Set line manager" : "Встановити безпосереднього начальника", "Account name will be autogenerated" : "Ім'я користувача буде автоматично створено", "Account name (required)" : "Ім'я користувача (обов'язково)", + "Failed to search groups" : "Не вдалося знайти групи", "New account" : "Новий обліковий запис", "Display name" : "Ім'я для показу", "Either password or email is required" : "Потрібно зазначити або пароль, або адресу ел.пошти", "Password (required)" : "Пароль (обов'язково)", "Email (required)" : "Ел. пошта (обов'язково)", "Email" : "E-mail", + "Member of the following groups (required)" : "Учасник таких груп (обов'язково)", "Member of the following groups" : "Учасник(-ця) таких груп", "Set account groups" : "Додати користувача до груп", "Admin of the following groups" : "Адміністратор таких груп", @@ -603,7 +610,9 @@ OC.L10N.register( "Account deletion" : "Вилучення облікового запису", "Delete {userid}'s account" : "Вилучити обліковий запис {userid}", "Display name was successfully changed" : "Ім'я для показу успішно змінено", + "Password can't be empty" : "Пароль не може бути порожній", "Password was successfully changed" : "Пароль успішно змінено", + "Email can't be empty" : "Адреса ел. пошти не може бути порожньою", "Email was successfully changed" : "Адресу електронної пошти успішно змінено", "Welcome mail sent!" : "Запрошення надіслано!", "Loading account …" : "Завантаження облікового запису ...", @@ -623,6 +632,7 @@ OC.L10N.register( "Show language" : "Показувати мову", "Show account backend" : "Показувати бекенд користувача", "Show storage path" : "Показувати шлях до сховища даних", + "Show first login" : "Показати перший вхід", "Show last login" : "Показувати останній вхід", "Sorting" : "Впорядкування", "The system config enforces sorting the groups by name. This also disables showing the member count." : "Системні наталаштування визначають впорядкування груп за іменем. Ці налаштування також вимикають лічильник учасників.", diff --git a/apps/settings/l10n/uk.json b/apps/settings/l10n/uk.json index eb02aff6dbb..b9a103819ca 100644 --- a/apps/settings/l10n/uk.json +++ b/apps/settings/l10n/uk.json @@ -472,12 +472,14 @@ "Be aware that encryption always increases the file size." : "Майте на увазі, що шифрування завжди збільшує розмір файлів.", "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Завжди корисно регулярно створювати резервні копії ваших даних, у разі шифрування обов’язково зробіть резервну копію ключів шифрування разом із вашими даними.", "This is the final warning: Do you really want to enable encryption?" : "Це останнє попередження: Ви справді хочете ввімкнути шифрування?", + "Failed to delete group \"{group}\"" : "Не вдалося вилучити групу \"{group}\"", "Please confirm the group removal" : "Підтвердіть вилучення групи", "Submit" : "Продовжити", "Rename group" : "Перейменувати групу", "Delete group" : "Вилучити групу", "Current password" : "Поточний пароль", "New password" : "Новий пароль", + "Change password" : "Змінити пароль", "Choose your profile picture" : "Виберіть зображення профілю", "Please select a valid png or jpg file" : "Виберіть дійсний файл png або jpg", "Error setting profile picture" : "Помилка налаштування зображення профілю", @@ -492,8 +494,11 @@ "Picture provided by original account" : "Картинка надана оригінальним обліковим записом", "Set as profile picture" : "Установити як зображення профілю", "Please note that it can take up to 24 hours for your profile picture to be updated everywhere." : "Зауважте, що повсюдне оновлення зображення профілю може зайняти до 24 годин.", + "Your biography. Markdown is supported." : "Про вас. Підтримується текстова розмітка.", "Unable to update date of birth" : "Не вдалося оновити дату народження", "Enter your date of birth" : "Зазначте дату вашого народження", + "You are using {s}{usage}{/s}" : "Ви використовуєте {s}{usage}{/s}", + "You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "Ви використовуєте {s}{usage}{/s} із {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})", "You are a member of the following groups:" : "Ви є учасником груп:", "Your full name" : "Ваше повне ім'я", "Email options" : "Параметри електронної пошти", @@ -560,12 +565,14 @@ "Set line manager" : "Встановити безпосереднього начальника", "Account name will be autogenerated" : "Ім'я користувача буде автоматично створено", "Account name (required)" : "Ім'я користувача (обов'язково)", + "Failed to search groups" : "Не вдалося знайти групи", "New account" : "Новий обліковий запис", "Display name" : "Ім'я для показу", "Either password or email is required" : "Потрібно зазначити або пароль, або адресу ел.пошти", "Password (required)" : "Пароль (обов'язково)", "Email (required)" : "Ел. пошта (обов'язково)", "Email" : "E-mail", + "Member of the following groups (required)" : "Учасник таких груп (обов'язково)", "Member of the following groups" : "Учасник(-ця) таких груп", "Set account groups" : "Додати користувача до груп", "Admin of the following groups" : "Адміністратор таких груп", @@ -601,7 +608,9 @@ "Account deletion" : "Вилучення облікового запису", "Delete {userid}'s account" : "Вилучити обліковий запис {userid}", "Display name was successfully changed" : "Ім'я для показу успішно змінено", + "Password can't be empty" : "Пароль не може бути порожній", "Password was successfully changed" : "Пароль успішно змінено", + "Email can't be empty" : "Адреса ел. пошти не може бути порожньою", "Email was successfully changed" : "Адресу електронної пошти успішно змінено", "Welcome mail sent!" : "Запрошення надіслано!", "Loading account …" : "Завантаження облікового запису ...", @@ -621,6 +630,7 @@ "Show language" : "Показувати мову", "Show account backend" : "Показувати бекенд користувача", "Show storage path" : "Показувати шлях до сховища даних", + "Show first login" : "Показати перший вхід", "Show last login" : "Показувати останній вхід", "Sorting" : "Впорядкування", "The system config enforces sorting the groups by name. This also disables showing the member count." : "Системні наталаштування визначають впорядкування груп за іменем. Ці налаштування також вимикають лічильник учасників.", diff --git a/apps/settings/lib/Controller/AppSettingsController.php b/apps/settings/lib/Controller/AppSettingsController.php index 3feb9c0326c..a85ee8cc20a 100644 --- a/apps/settings/lib/Controller/AppSettingsController.php +++ b/apps/settings/lib/Controller/AppSettingsController.php @@ -23,7 +23,6 @@ use OCP\AppFramework\Http; use OCP\AppFramework\Http\Attribute\NoCSRFRequired; use OCP\AppFramework\Http\Attribute\OpenAPI; use OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired; -use OCP\AppFramework\Http\Attribute\PublicPage; use OCP\AppFramework\Http\ContentSecurityPolicy; use OCP\AppFramework\Http\FileDisplayResponse; use OCP\AppFramework\Http\JSONResponse; @@ -45,7 +44,9 @@ use OCP\IL10N; use OCP\INavigationManager; use OCP\IRequest; use OCP\IURLGenerator; +use OCP\IUserSession; use OCP\L10N\IFactory; +use OCP\Security\RateLimiting\ILimiter; use OCP\Server; use OCP\Util; use Psr\Log\LoggerInterface; @@ -129,9 +130,8 @@ class AppSettingsController extends Controller { * @param string $image * @throws \Exception */ - #[PublicPage] #[NoCSRFRequired] - public function getAppDiscoverMedia(string $fileName): Response { + public function getAppDiscoverMedia(string $fileName, ILimiter $limiter, IUserSession $session): Response { $getEtag = $this->discoverFetcher->getETag() ?? date('Y-m'); $etag = trim($getEtag, '"'); @@ -161,6 +161,26 @@ class AppSettingsController extends Controller { $file = reset($file); // If not found request from Web if ($file === false) { + $user = $session->getUser(); + // this route is not public thus we can assume a user is logged-in + assert($user !== null); + // Register a user request to throttle fetching external data + // this will prevent using the server for DoS of other systems. + $limiter->registerUserRequest( + 'settings-discover-media', + // allow up to 24 media requests per hour + // this should be a sane default when a completely new section is loaded + // keep in mind browsers request all files from a source-set + 24, + 60 * 60, + $user, + ); + + if (!$this->checkCanDownloadMedia($fileName)) { + $this->logger->warning('Tried to load media files for app discover section from untrusted source'); + return new NotFoundResponse(Http::STATUS_BAD_REQUEST); + } + try { $client = $this->clientService->newClient(); $fileResponse = $client->get($fileName); @@ -182,6 +202,31 @@ class AppSettingsController extends Controller { return $response; } + private function checkCanDownloadMedia(string $filename): bool { + $urlInfo = parse_url($filename); + if (!isset($urlInfo['host']) || !isset($urlInfo['path'])) { + return false; + } + + // Always allowed hosts + if ($urlInfo['host'] === 'nextcloud.com') { + return true; + } + + // Hosts that need further verification + // Github is only allowed if from our organization + $ALLOWED_HOSTS = ['github.com', 'raw.githubusercontent.com']; + if (!in_array($urlInfo['host'], $ALLOWED_HOSTS)) { + return false; + } + + if (str_starts_with($urlInfo['path'], '/nextcloud/') || str_starts_with($urlInfo['path'], '/nextcloud-gmbh/')) { + return true; + } + + return false; + } + /** * Remove orphaned folders from the image cache that do not match the current etag * @param ISimpleFolder $folder The folder to clear diff --git a/apps/weather_status/l10n/sw.js b/apps/weather_status/l10n/sw.js new file mode 100644 index 00000000000..7928eb4db94 --- /dev/null +++ b/apps/weather_status/l10n/sw.js @@ -0,0 +1,63 @@ +OC.L10N.register( + "weather_status", + { + "Unknown address" : "Anwani isiyojulikana", + "No result." : "Hakuna matokeo", + "Malformed JSON data." : "Takwimu za JSON zilizoharibika.", + "Error" : "Hitilafu", + "Weather status" : "Hali ya hali ya hewa", + "Weather status in your dashboard" : "Hali ya hewa kwenye dashibodi yako", + "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Hali ya hali ya hewa imeunganishwa katika programu ya Dashibodi.\nEneo la kijiografia linaweza kuamuliwa kiotomatiki au kufafanuliwa kwa mikono. Utabiri wa saa 6 kisha utaonyeshwa.\nHali hii pia inaweza kuunganishwa katika maeneo mengine kama vile programu ya Kalenda.", + "{temperature} {unit} clear sky later today" : "{temperature} {unit} anga safi baadaye leo", + "{temperature} {unit} clear sky" : "{temperature} {unit}anga safi ", + "{temperature} {unit} cloudy later today" : "{temperature} {unit}mawingu baadeye leo ", + "{temperature} {unit} cloudy" : "{temperature} {unit}mawingu", + "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} theluji na radi baadaye leo ", + "{temperature} {unit} snow and thunder" : "{temperature} {unit}theluji na radi ", + "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} manyunyu ya theluji na radi baadaye leo", + "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} manyunyu ya theluji na radi ", + "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} manyunyu ya theluji, radi na mwangu hafifu wa ncha za dunia baadaye leo", + "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit}manyunyu ya theluji, radi na mwangu hafifu wa ncha za dunia ", + "{temperature} {unit} snow showers later today" : "{temperature} {unit} manyunyu ya theluji baadaye leo", + "{temperature} {unit} snow showers" : "{temperature} {unit}manyunyu ya theluji ", + "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} manyunyu ya theluji na machweo ya ncha za dunia baadaye leo", + "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit}manyunyu ya theluji na machweo ya ncha za dunia", + "{temperature} {unit} snow later today" : "{temperature} {unit}theluji baadaye leo ", + "{temperature} {unit} snow" : "{temperature} {unit}theluji", + "{temperature} {unit} fair weather later today" : "{temperature} {unit}hali ya hewa nzuri baadaye leo", + "{temperature} {unit} fair weather" : "{temperature} {unit} hali ya hewa nzuri", + "{temperature} {unit} partly cloudy later today" : "{temperature} {unit}mawingu sehemu baadaye leo ", + "{temperature} {unit} partly cloudy" : "{temperature} {unit}mawingu sehemu ", + "{temperature} {unit} foggy later today" : "{temperature} {unit}ukungu baadaye leo ", + "{temperature} {unit} foggy" : "{temperature} {unit}ukungu ", + "{temperature} {unit} light rainfall later today" : "{temperature} {unit}mvua nyepesi baadaye leo ", + "{temperature} {unit} light rainfall" : "{temperature} {unit}mvua nyepesi ", + "{temperature} {unit} rainfall later today" : "{temperature} {unit}mvua baadaye leo ", + "{temperature} {unit} rainfall" : "{temperature} {unit} mvua", + "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} mvua kubwa baadaye leo", + "{temperature} {unit} heavy rainfall" : "{temperature} {unit} mvua kubwa", + "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} mvua ya manyunyu baadaye leo", + "{temperature} {unit} rainfall showers" : "{temperature} {unit}mvua ya manyunyu", + "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} manyunyu ya mvua nyepesi baadaye leo", + "{temperature} {unit} light rainfall showers" : "{temperature} {unit}manyunyu ya mvua nyepesi", + "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} manyunyu ya mvua kubwa leo baadaye", + "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit}manyunyu ya mvua kubwa", + "More weather for {adr}" : " Hali ya hewa zaidi kwa {adr}", + "Loading weather" : "Inapakia hali ya hewa", + "Set location for weather" : "Weka eneo kwa hali ya hewa", + "Remove from favorites" : "Ondoa kutoka katika pendwa", + "Add as favorite" : "Ongeza kama kipendwa", + "You are not logged in." : "Hujaingia kwenye akaunti.", + "There was an error getting the weather status information." : "Kulikuwa na hitilafu kupata taarifa za hali ya hewa.", + "No weather information found" : "Hakuna taarifa za hali ya hewa zilizopatikana", + "Location not found" : "Mahali hapajulikani", + "There was an error setting the location address." : "Kulikuwa na hitilafu katika kuweka anwani ya eneo.", + "There was an error setting the location." : "Kulikuwa na hitilafu katika kuweka eneo.", + "There was an error saving the mode." : "Kulikuwa na hitilafu katika kuhifadhi hali.", + "There was an error using personal address." : "Kulikuwa na hitilafu katika kutumia anwani ya kibinafsi.", + "Unknown weather code" : "Msimbo wa hali ya hewa usiojulikana", + "Detect location" : "Tambua eneo", + "Set custom address" : "Weka anwani maalum", + "Favorites" : "Vipendwa" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/weather_status/l10n/sw.json b/apps/weather_status/l10n/sw.json new file mode 100644 index 00000000000..985b7b4f15f --- /dev/null +++ b/apps/weather_status/l10n/sw.json @@ -0,0 +1,61 @@ +{ "translations": { + "Unknown address" : "Anwani isiyojulikana", + "No result." : "Hakuna matokeo", + "Malformed JSON data." : "Takwimu za JSON zilizoharibika.", + "Error" : "Hitilafu", + "Weather status" : "Hali ya hali ya hewa", + "Weather status in your dashboard" : "Hali ya hewa kwenye dashibodi yako", + "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Hali ya hali ya hewa imeunganishwa katika programu ya Dashibodi.\nEneo la kijiografia linaweza kuamuliwa kiotomatiki au kufafanuliwa kwa mikono. Utabiri wa saa 6 kisha utaonyeshwa.\nHali hii pia inaweza kuunganishwa katika maeneo mengine kama vile programu ya Kalenda.", + "{temperature} {unit} clear sky later today" : "{temperature} {unit} anga safi baadaye leo", + "{temperature} {unit} clear sky" : "{temperature} {unit}anga safi ", + "{temperature} {unit} cloudy later today" : "{temperature} {unit}mawingu baadeye leo ", + "{temperature} {unit} cloudy" : "{temperature} {unit}mawingu", + "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} theluji na radi baadaye leo ", + "{temperature} {unit} snow and thunder" : "{temperature} {unit}theluji na radi ", + "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} manyunyu ya theluji na radi baadaye leo", + "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} manyunyu ya theluji na radi ", + "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} manyunyu ya theluji, radi na mwangu hafifu wa ncha za dunia baadaye leo", + "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit}manyunyu ya theluji, radi na mwangu hafifu wa ncha za dunia ", + "{temperature} {unit} snow showers later today" : "{temperature} {unit} manyunyu ya theluji baadaye leo", + "{temperature} {unit} snow showers" : "{temperature} {unit}manyunyu ya theluji ", + "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} manyunyu ya theluji na machweo ya ncha za dunia baadaye leo", + "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit}manyunyu ya theluji na machweo ya ncha za dunia", + "{temperature} {unit} snow later today" : "{temperature} {unit}theluji baadaye leo ", + "{temperature} {unit} snow" : "{temperature} {unit}theluji", + "{temperature} {unit} fair weather later today" : "{temperature} {unit}hali ya hewa nzuri baadaye leo", + "{temperature} {unit} fair weather" : "{temperature} {unit} hali ya hewa nzuri", + "{temperature} {unit} partly cloudy later today" : "{temperature} {unit}mawingu sehemu baadaye leo ", + "{temperature} {unit} partly cloudy" : "{temperature} {unit}mawingu sehemu ", + "{temperature} {unit} foggy later today" : "{temperature} {unit}ukungu baadaye leo ", + "{temperature} {unit} foggy" : "{temperature} {unit}ukungu ", + "{temperature} {unit} light rainfall later today" : "{temperature} {unit}mvua nyepesi baadaye leo ", + "{temperature} {unit} light rainfall" : "{temperature} {unit}mvua nyepesi ", + "{temperature} {unit} rainfall later today" : "{temperature} {unit}mvua baadaye leo ", + "{temperature} {unit} rainfall" : "{temperature} {unit} mvua", + "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} mvua kubwa baadaye leo", + "{temperature} {unit} heavy rainfall" : "{temperature} {unit} mvua kubwa", + "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} mvua ya manyunyu baadaye leo", + "{temperature} {unit} rainfall showers" : "{temperature} {unit}mvua ya manyunyu", + "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} manyunyu ya mvua nyepesi baadaye leo", + "{temperature} {unit} light rainfall showers" : "{temperature} {unit}manyunyu ya mvua nyepesi", + "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} manyunyu ya mvua kubwa leo baadaye", + "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit}manyunyu ya mvua kubwa", + "More weather for {adr}" : " Hali ya hewa zaidi kwa {adr}", + "Loading weather" : "Inapakia hali ya hewa", + "Set location for weather" : "Weka eneo kwa hali ya hewa", + "Remove from favorites" : "Ondoa kutoka katika pendwa", + "Add as favorite" : "Ongeza kama kipendwa", + "You are not logged in." : "Hujaingia kwenye akaunti.", + "There was an error getting the weather status information." : "Kulikuwa na hitilafu kupata taarifa za hali ya hewa.", + "No weather information found" : "Hakuna taarifa za hali ya hewa zilizopatikana", + "Location not found" : "Mahali hapajulikani", + "There was an error setting the location address." : "Kulikuwa na hitilafu katika kuweka anwani ya eneo.", + "There was an error setting the location." : "Kulikuwa na hitilafu katika kuweka eneo.", + "There was an error saving the mode." : "Kulikuwa na hitilafu katika kuhifadhi hali.", + "There was an error using personal address." : "Kulikuwa na hitilafu katika kutumia anwani ya kibinafsi.", + "Unknown weather code" : "Msimbo wa hali ya hewa usiojulikana", + "Detect location" : "Tambua eneo", + "Set custom address" : "Weka anwani maalum", + "Favorites" : "Vipendwa" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/workflowengine/l10n/sw.js b/apps/workflowengine/l10n/sw.js new file mode 100644 index 00000000000..302055b39f2 --- /dev/null +++ b/apps/workflowengine/l10n/sw.js @@ -0,0 +1,123 @@ +OC.L10N.register( + "workflowengine", + { + "The given operator is invalid" : "Opereta uliyopewa si sahihi", + "The given regular expression is invalid" : "Msemo wa kawaida uliotolewa si sahihi", + "The given file size is invalid" : "Ukubwa wa faili uliotolewa si sahihi", + "The given tag id is invalid" : "Kitambulisho cha lebo kilichotolewa si sahihi", + "The given IP range is invalid" : "Anuwai ya IP iliyotolewa si sahihi", + "The given IP range is not valid for IPv4" : "Anuwai ya IP iliyotolewa si halali kwa IPv4", + "The given IP range is not valid for IPv6" : "Anuwai ya IP iliyotolewa si halali kwa IPv6", + "The given time span is invalid" : "Muda uliyopewa si sahihi", + "The given start time is invalid" : "Muda wa kuanza uliyopewa si sahihi", + "The given end time is invalid" : "Muda wa kumaliza uliyopewa ni batili", + "The given group does not exist" : "Kundi lililotolewa halipo", + "File" : "Faili", + "File created" : "Faili imeundwa", + "File updated" : "Faili imesasishwa", + "File renamed" : "Faili imepewa jina upya", + "File deleted" : "Faili imefutwa", + "File accessed" : "Faili imefikiwa", + "File copied" : "Faili imenakiliwa", + "Tag assigned" : "Lebo imetolewa", + "Someone" : "Mtu fulani", + "%s created %s" : "%s imeundwa %s", + "%s modified %s" : "%s imeboreshwa %s", + "%s deleted %s" : "%s imefutwa %s", + "%s accessed %s" : "%s imefikiwa %s", + "%s renamed %s" : "%s imepewa jina jipya %s", + "%s copied %s" : "%s imenakiliwa %s", + "%s assigned %s to %s" : "%simekabidhiwa %s kwa %s", + "Operation #%s does not exist" : "Operesheni #%s haipo", + "Entity %s does not exist" : "Huluki %s haipo", + "Entity %s is invalid" : "Huluki %s si sahihi", + "No events are chosen." : "Hakuna matukio yaliyochaguliwa.", + "Entity %s has no event %s" : "Huluki %s haina tukio %s", + "Operation %s does not exist" : "Operesheni %s haipo", + "Operation %s is invalid" : "Operesheni %s si sahihi", + "At least one check needs to be provided" : "Angalau hundi moja inahitaji kutolewa", + "The provided operation data is too long" : "Taarifa za operesheni zilizotolewa ni ndefu sana", + "Invalid check provided" : "Hundi batili imetolewa", + "Check %s does not exist" : "Angalia %s haipo", + "Check %s is invalid" : "Angalia %s si sahihi", + "Check %s is not allowed with this entity" : "Kukagua %s hairuhusiwi na huluki hii", + "The provided check value is too long" : "Thamani ya hundi iliyotolewa ni ndefu sana", + "Check #%s does not exist" : "Ukaguzi #%s haupo", + "Check %s is invalid or does not exist" : "Angalia %s si sahihi au haipo", + "Flow" : "Mtiririko", + "Nextcloud workflow engine" : "Injini ya mtiririko wa kazi ya Nextcloud", + "Select a filter" : "Chagua kichujio", + "Select a comparator" : "Chagua kipimajoto", + "Remove filter" : "Ondoa kichujio", + "Folder" : "Kisanduku", + "Images" : "Picha", + "Office documents" : "Nyaraka za ofisi", + "PDF documents" : "Nyaraka za PDF", + "Custom MIME type" : "Aina ya MIME ya kawaida", + "Custom mimetype" : "Aina maalum ya mime", + "Select a file type" : "Chagua aina ya faili", + "e.g. httpd/unix-directory" : "e.g. httpd/unix-directory", + "Please enter a valid time span" : "Tafadhali ingiza muda halali", + "Files WebDAV" : "Faili za WebDAV", + "Custom URL" : "URL maalum", + "Select a request URL" : "Chagua URL ya ombi", + "Android client" : "Mteja wa Android", + "iOS client" : "Mteja wa iOS", + "Desktop client" : "Mteja wa eneo-kazi", + "Thunderbird & Outlook addons" : "Viongezeo vya Thunderbird na Outlook", + "Custom user agent" : "Wakala maalum wa mtumiaji ", + "Select a user agent" : "Chagua wakala wa mtumiaji", + "Select groups" : "Chagua makundi", + "Groups" : "Makundi", + "Type to search for group …" : "Andika kutafuta kikundi …", + "Select a trigger" : "Chagua kichocheo", + "At least one event must be selected" : "Angalau tukio moja lazima lichaguliwe", + "Add new flow" : "Ongeza mtiririko mpya", + "The configuration is invalid" : "Usanidi si sahihi", + "Active" : "Hai", + "Save" : "Hifadhi", + "When" : "Lini", + "and" : "na", + "Add a new filter" : "Ongeza kichujio kipya", + "Cancel" : "Sitisha", + "Delete" : "Futa", + "Available flows" : "Mitiririko inayopatikana", + "For details on how to write your own flow, check out the development documentation." : "Kwa maelezo kuhusu jinsi ya kuandika mtiririko wako mwenyewe, angalia nyaraka za maendeleo.", + "No flows installed" : "Hakuna mtiririko uliowekwa", + "Ask your administrator to install new flows." : "Muulize msimamizi wako aweke mitiririko mipya.", + "More flows" : "Mtiririko zaidi", + "Browse the App Store" : "Vinjari hifadhi ya Programu", + "Show less" : "Onesha kidogo", + "Show more" : "Onesha zaidi", + "Configured flows" : "Mitiririko iliyosanidiwa", + "Your flows" : "Mitiririko yako", + "No flows configured" : "Hakuna mitiririko iliyosanidiwa", + "matches" : "inafanana", + "does not match" : "haifanani", + "is" : "ni", + "is not" : "si", + "File name" : "Jina la faili", + "File MIME type" : "Aina ya MIME ya faili", + "File size (upload)" : "Ukubwa wa faili (kupakia)", + "less" : "chini", + "less or equals" : "chini au sawa na", + "greater or equals" : "kubwa au sawa na", + "greater" : "kubwa", + "Request remote address" : "Omba anwani ya mbali", + "matches IPv4" : "Inafanana na IPv4", + "does not match IPv4" : "haifanani na IPv4", + "matches IPv6" : "inafanana na IPv6", + "does not match IPv6" : "haifanani na IPv6", + "File system tag" : "Lebo ya mfumo wa faili", + "is tagged with" : "Imewekewa alama na", + "is not tagged with" : "haijawekewa alama na", + "Request URL" : "Omba URL", + "Request time" : "Muda wa ombi", + "between" : "kati ya", + "not between" : "si kati ya", + "Request user agent" : "Omba wakala wa mtumiaji", + "Group membership" : "Uanachama wa kikundi", + "is member of" : "ni mwanachama wa", + "is not member of" : "si mwanachama wa" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/workflowengine/l10n/sw.json b/apps/workflowengine/l10n/sw.json new file mode 100644 index 00000000000..a0d1179f2d9 --- /dev/null +++ b/apps/workflowengine/l10n/sw.json @@ -0,0 +1,121 @@ +{ "translations": { + "The given operator is invalid" : "Opereta uliyopewa si sahihi", + "The given regular expression is invalid" : "Msemo wa kawaida uliotolewa si sahihi", + "The given file size is invalid" : "Ukubwa wa faili uliotolewa si sahihi", + "The given tag id is invalid" : "Kitambulisho cha lebo kilichotolewa si sahihi", + "The given IP range is invalid" : "Anuwai ya IP iliyotolewa si sahihi", + "The given IP range is not valid for IPv4" : "Anuwai ya IP iliyotolewa si halali kwa IPv4", + "The given IP range is not valid for IPv6" : "Anuwai ya IP iliyotolewa si halali kwa IPv6", + "The given time span is invalid" : "Muda uliyopewa si sahihi", + "The given start time is invalid" : "Muda wa kuanza uliyopewa si sahihi", + "The given end time is invalid" : "Muda wa kumaliza uliyopewa ni batili", + "The given group does not exist" : "Kundi lililotolewa halipo", + "File" : "Faili", + "File created" : "Faili imeundwa", + "File updated" : "Faili imesasishwa", + "File renamed" : "Faili imepewa jina upya", + "File deleted" : "Faili imefutwa", + "File accessed" : "Faili imefikiwa", + "File copied" : "Faili imenakiliwa", + "Tag assigned" : "Lebo imetolewa", + "Someone" : "Mtu fulani", + "%s created %s" : "%s imeundwa %s", + "%s modified %s" : "%s imeboreshwa %s", + "%s deleted %s" : "%s imefutwa %s", + "%s accessed %s" : "%s imefikiwa %s", + "%s renamed %s" : "%s imepewa jina jipya %s", + "%s copied %s" : "%s imenakiliwa %s", + "%s assigned %s to %s" : "%simekabidhiwa %s kwa %s", + "Operation #%s does not exist" : "Operesheni #%s haipo", + "Entity %s does not exist" : "Huluki %s haipo", + "Entity %s is invalid" : "Huluki %s si sahihi", + "No events are chosen." : "Hakuna matukio yaliyochaguliwa.", + "Entity %s has no event %s" : "Huluki %s haina tukio %s", + "Operation %s does not exist" : "Operesheni %s haipo", + "Operation %s is invalid" : "Operesheni %s si sahihi", + "At least one check needs to be provided" : "Angalau hundi moja inahitaji kutolewa", + "The provided operation data is too long" : "Taarifa za operesheni zilizotolewa ni ndefu sana", + "Invalid check provided" : "Hundi batili imetolewa", + "Check %s does not exist" : "Angalia %s haipo", + "Check %s is invalid" : "Angalia %s si sahihi", + "Check %s is not allowed with this entity" : "Kukagua %s hairuhusiwi na huluki hii", + "The provided check value is too long" : "Thamani ya hundi iliyotolewa ni ndefu sana", + "Check #%s does not exist" : "Ukaguzi #%s haupo", + "Check %s is invalid or does not exist" : "Angalia %s si sahihi au haipo", + "Flow" : "Mtiririko", + "Nextcloud workflow engine" : "Injini ya mtiririko wa kazi ya Nextcloud", + "Select a filter" : "Chagua kichujio", + "Select a comparator" : "Chagua kipimajoto", + "Remove filter" : "Ondoa kichujio", + "Folder" : "Kisanduku", + "Images" : "Picha", + "Office documents" : "Nyaraka za ofisi", + "PDF documents" : "Nyaraka za PDF", + "Custom MIME type" : "Aina ya MIME ya kawaida", + "Custom mimetype" : "Aina maalum ya mime", + "Select a file type" : "Chagua aina ya faili", + "e.g. httpd/unix-directory" : "e.g. httpd/unix-directory", + "Please enter a valid time span" : "Tafadhali ingiza muda halali", + "Files WebDAV" : "Faili za WebDAV", + "Custom URL" : "URL maalum", + "Select a request URL" : "Chagua URL ya ombi", + "Android client" : "Mteja wa Android", + "iOS client" : "Mteja wa iOS", + "Desktop client" : "Mteja wa eneo-kazi", + "Thunderbird & Outlook addons" : "Viongezeo vya Thunderbird na Outlook", + "Custom user agent" : "Wakala maalum wa mtumiaji ", + "Select a user agent" : "Chagua wakala wa mtumiaji", + "Select groups" : "Chagua makundi", + "Groups" : "Makundi", + "Type to search for group …" : "Andika kutafuta kikundi …", + "Select a trigger" : "Chagua kichocheo", + "At least one event must be selected" : "Angalau tukio moja lazima lichaguliwe", + "Add new flow" : "Ongeza mtiririko mpya", + "The configuration is invalid" : "Usanidi si sahihi", + "Active" : "Hai", + "Save" : "Hifadhi", + "When" : "Lini", + "and" : "na", + "Add a new filter" : "Ongeza kichujio kipya", + "Cancel" : "Sitisha", + "Delete" : "Futa", + "Available flows" : "Mitiririko inayopatikana", + "For details on how to write your own flow, check out the development documentation." : "Kwa maelezo kuhusu jinsi ya kuandika mtiririko wako mwenyewe, angalia nyaraka za maendeleo.", + "No flows installed" : "Hakuna mtiririko uliowekwa", + "Ask your administrator to install new flows." : "Muulize msimamizi wako aweke mitiririko mipya.", + "More flows" : "Mtiririko zaidi", + "Browse the App Store" : "Vinjari hifadhi ya Programu", + "Show less" : "Onesha kidogo", + "Show more" : "Onesha zaidi", + "Configured flows" : "Mitiririko iliyosanidiwa", + "Your flows" : "Mitiririko yako", + "No flows configured" : "Hakuna mitiririko iliyosanidiwa", + "matches" : "inafanana", + "does not match" : "haifanani", + "is" : "ni", + "is not" : "si", + "File name" : "Jina la faili", + "File MIME type" : "Aina ya MIME ya faili", + "File size (upload)" : "Ukubwa wa faili (kupakia)", + "less" : "chini", + "less or equals" : "chini au sawa na", + "greater or equals" : "kubwa au sawa na", + "greater" : "kubwa", + "Request remote address" : "Omba anwani ya mbali", + "matches IPv4" : "Inafanana na IPv4", + "does not match IPv4" : "haifanani na IPv4", + "matches IPv6" : "inafanana na IPv6", + "does not match IPv6" : "haifanani na IPv6", + "File system tag" : "Lebo ya mfumo wa faili", + "is tagged with" : "Imewekewa alama na", + "is not tagged with" : "haijawekewa alama na", + "Request URL" : "Omba URL", + "Request time" : "Muda wa ombi", + "between" : "kati ya", + "not between" : "si kati ya", + "Request user agent" : "Omba wakala wa mtumiaji", + "Group membership" : "Uanachama wa kikundi", + "is member of" : "ni mwanachama wa", + "is not member of" : "si mwanachama wa" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file |