diff options
105 files changed, 1338 insertions, 501 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index a8c86ce6e..3ace36057 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,21 +1,56 @@ # Changelog All notable changes to this project will be documented in this file. +## 14.0.2 โ 2022-05-26 +### Changed +- Add "Others" section to shared items tab to list unknown items + [#7350](https://github.com/nextcloud/spreed/pull/7350) + +### Fixed +- Only declare changed sessions as such instead of all sessions of that participant + [#7382](https://github.com/nextcloud/spreed/pull/7382) +- Ensure display name of conversation owner is stored correctly + [#7376](https://github.com/nextcloud/spreed/pull/7376) +- Don't show promotion options for circles and groups + [#7404](https://github.com/nextcloud/spreed/pull/7404) +- Don't show permissions options for circles and groups + [#7360](https://github.com/nextcloud/spreed/pull/7360) +- Don't show reactions option for command messages + [#7345](https://github.com/nextcloud/spreed/pull/7345) +- Fix forwarding replies + [#7343](https://github.com/nextcloud/spreed/pull/7343) + +## 13.0.6 โ 2022-05-26 +### Fixed +- Ensure display name of conversation owner is stored correctly + [#7377](https://github.com/nextcloud/spreed/pull/7377) +- Don't show promotion options for circles and groups + [#7409](https://github.com/nextcloud/spreed/pull/7409) +- Don't show permissions options for circles and groups + [#7405](https://github.com/nextcloud/spreed/pull/7405) + +## 12.2.6 โ 2022-05-26 +### Fixed +- Ensure display name of conversation owner is stored correctly + [#7378](https://github.com/nextcloud/spreed/pull/7378) +- Don't show promotion options for circles and groups + [#7406](https://github.com/nextcloud/spreed/pull/7406) + ## 14.0.1 โ 2022-05-07 ### Fixed - Fix memory consumption with emoji picker in conversations with a lot of chat messages with reactions - [7328](https://github.com/nextcloud/spreed/pull/7328) + [#7328](https://github.com/nextcloud/spreed/pull/7328) - Fix endless offer loop with SIP participants - [7288](https://github.com/nextcloud/spreed/pull/7288) + [#7288](https://github.com/nextcloud/spreed/pull/7288) - Fix room selector in deck and maps integration - [7290](https://github.com/nextcloud/spreed/pull/7290) - [7294](https://github.com/nextcloud/spreed/pull/7294) + [#7290](https://github.com/nextcloud/spreed/pull/7290) + [#7294](https://github.com/nextcloud/spreed/pull/7294) - Fix transceiver kind for participants without the HPB - [7263](https://github.com/nextcloud/spreed/pull/7263) + [#7263](https://github.com/nextcloud/spreed/pull/7263) - Fix error on console when initiating a screenshare - [7330](https://github.com/nextcloud/spreed/pull/7330) + [#7330](https://github.com/nextcloud/spreed/pull/7330) - Add missing translations of 24 branch - [7330](https://github.com/nextcloud/spreed/pull/7330) + [#7330](https://github.com/nextcloud/spreed/pull/7330) ## 14.0.0 โ 2022-05-02 ### Added @@ -35,30 +70,30 @@ All notable changes to this project will be documented in this file. ### Fixed - Make reactions work for guests and handle guests without name in the summary - [7217](https://github.com/nextcloud/spreed/pull/7217) + [#7217](https://github.com/nextcloud/spreed/pull/7217) - Add a link to notification sound settings from talk settings - [7224](https://github.com/nextcloud/spreed/pull/7224) + [#7224](https://github.com/nextcloud/spreed/pull/7224) - Fix migration with Postgres and Oracle - [7211](https://github.com/nextcloud/spreed/pull/7211) + [#7211](https://github.com/nextcloud/spreed/pull/7211) - Add programmatic output options to talk:active-calls command - [7227](https://github.com/nextcloud/spreed/pull/7227) + [#7227](https://github.com/nextcloud/spreed/pull/7227) - Fix media tab and reactions summary in read-only rooms - [7236](https://github.com/nextcloud/spreed/pull/7236) + [#7236](https://github.com/nextcloud/spreed/pull/7236) ## 14.0.0-rc.3 โ 2022-04-22 ### Fixed - Move message.reactions.self to message.reactionsSelf to not merge different data structures - [7182](https://github.com/nextcloud/spreed/pull/7182) + [#7182](https://github.com/nextcloud/spreed/pull/7182) - Use actor and time information from the reaction not the message author - [7190](https://github.com/nextcloud/spreed/pull/7190) + [#7190](https://github.com/nextcloud/spreed/pull/7190) - Fix migration of attachment types for media - [7196](https://github.com/nextcloud/spreed/pull/7196) + [#7196](https://github.com/nextcloud/spreed/pull/7196) - Open chat tab by default in sidebar while in a call - [7201](https://github.com/nextcloud/spreed/pull/7201) + [#7201](https://github.com/nextcloud/spreed/pull/7201) - Fix access to undefined key - [7195](https://github.com/nextcloud/spreed/pull/7195) + [#7195](https://github.com/nextcloud/spreed/pull/7195) - Only set header when the value changed and the status is not 304 - [7200](https://github.com/nextcloud/spreed/pull/7200) + [#7200](https://github.com/nextcloud/spreed/pull/7200) ### Still in progress - Media tab showing all shared items of the conversation diff --git a/docs/call.md b/docs/call.md index 0dc3d788a..92fadce89 100644 --- a/docs/call.md +++ b/docs/call.md @@ -38,6 +38,7 @@ field | type | Description ---|---|--- `flags` | int | Flags what streams are provided by the participant (see [Constants - Participant in-call flag](constants.md#participant-in-call-flag)) + `silent` | bool | Disable start call notifications for group/public calls * Response: - Status code: diff --git a/docs/capabilities.md b/docs/capabilities.md index 25084a2e2..ce4507633 100644 --- a/docs/capabilities.md +++ b/docs/capabilities.md @@ -94,8 +94,11 @@ title: Capabilities * `rich-object-delete` - When the API allows to delete chat messages which are file or rich object shares ## 15 +* `unified-search` - When the extended attributes of unified search results are there * `chat-permission` - When permission 128 is required to post chat messages, reaction or share items to the conversation * `silent-send` - Whether the chat API allows to send chat messages without triggering notifications * `sip-support-nopin` - Whether SIP can be configured to not require a custom attendee PIN * `send-call-notification` - When the API allows to resend call notifications for individual users that did not join yet +* `silent-call` - Allow to start calls without sending notification * `config => call => enabled` - Whether calling is enabled on the instance or not +* `config => signaling => session-ping-limit` - Number of sessions the HPB is allowed to ping in the same request diff --git a/l10n/bg.js b/l10n/bg.js index 501aaf488..d64272907 100644 --- a/l10n/bg.js +++ b/l10n/bg.js @@ -1020,6 +1020,7 @@ OC.L10N.register( "Add groups" : "ะะพะฑะฐะฒัะฝะต ะฝะฐ ะณััะฟะธ", "Add emails" : "ะะพะฑะฐะฒัะฝะต ะฝะฐ ะธะผะตะนะปะธ", "Add circles" : "ะะพะฑะฐะฒัะฝะต ะฝะฐ ะบััะณะพะฒะต", + "Integrations" : "ะะฝัะตะณัะฐัะธะธ", "Add federated users" : "ะะพะฑะฐะฒัะฝะต ะฝะฐ ัะตะดะตัะธัะฐะฝะธ ะฟะพััะตะฑะธัะตะปะธ", "Searching โฆ" : "ะขัััะตะฝะต ...", "No results" : "ะัะผะฐ ัะตะทัะปัะฐัะธ", diff --git a/l10n/bg.json b/l10n/bg.json index ee6dc7597..6fa660e38 100644 --- a/l10n/bg.json +++ b/l10n/bg.json @@ -1018,6 +1018,7 @@ "Add groups" : "ะะพะฑะฐะฒัะฝะต ะฝะฐ ะณััะฟะธ", "Add emails" : "ะะพะฑะฐะฒัะฝะต ะฝะฐ ะธะผะตะนะปะธ", "Add circles" : "ะะพะฑะฐะฒัะฝะต ะฝะฐ ะบััะณะพะฒะต", + "Integrations" : "ะะฝัะตะณัะฐัะธะธ", "Add federated users" : "ะะพะฑะฐะฒัะฝะต ะฝะฐ ัะตะดะตัะธัะฐะฝะธ ะฟะพััะตะฑะธัะตะปะธ", "Searching โฆ" : "ะขัััะตะฝะต ...", "No results" : "ะัะผะฐ ัะตะทัะปัะฐัะธ", diff --git a/l10n/ca.js b/l10n/ca.js index a5daf679b..0cb3b51ee 100644 --- a/l10n/ca.js +++ b/l10n/ca.js @@ -734,6 +734,7 @@ OC.L10N.register( "Add groups" : "Afegeix grups", "Add emails" : "Afegir correus electrรฒnics", "Add circles" : "Afegeix cercles", + "Integrations" : "Integracions", "Searching โฆ" : "Cercant โฆ", "No results" : "No hi ha resultats", "Search for more users" : "Cercar mรฉs usuaris", diff --git a/l10n/ca.json b/l10n/ca.json index 0c5e3141b..0a938fac3 100644 --- a/l10n/ca.json +++ b/l10n/ca.json @@ -732,6 +732,7 @@ "Add groups" : "Afegeix grups", "Add emails" : "Afegir correus electrรฒnics", "Add circles" : "Afegeix cercles", + "Integrations" : "Integracions", "Searching โฆ" : "Cercant โฆ", "No results" : "No hi ha resultats", "Search for more users" : "Cercar mรฉs usuaris", diff --git a/l10n/cs.js b/l10n/cs.js index 0b6f28f5a..8baec8ace 100644 --- a/l10n/cs.js +++ b/l10n/cs.js @@ -985,6 +985,7 @@ OC.L10N.register( "Upload new files" : "Nahrรกt novรฉ soubory", "Share from Files" : "Sdรญlet ze Souborลฏ", "Add emoji" : "Pลidat emoji", + "Send silently" : "Poslat tiลกe", "Send message" : "Poslat zprรกvu", "File to share" : "Soubor ke sdรญlenรญ", "This conversation has been locked" : "Tato konverzace byla uzamฤena", @@ -1035,6 +1036,7 @@ OC.L10N.register( "Add groups" : "Pลidat skupiny", "Add emails" : "Pลidat e-maily", "Add circles" : "Pลidat okruhy", + "Integrations" : "Napojenรญ", "Add federated users" : "Pลidat federovanรฉ uลพivatele", "Searching โฆ" : "Hledรกnรญโฆ", "No results" : "ลฝรกdnรฉ vรฝsledky", diff --git a/l10n/cs.json b/l10n/cs.json index 72f86c074..c2eeeb632 100644 --- a/l10n/cs.json +++ b/l10n/cs.json @@ -983,6 +983,7 @@ "Upload new files" : "Nahrรกt novรฉ soubory", "Share from Files" : "Sdรญlet ze Souborลฏ", "Add emoji" : "Pลidat emoji", + "Send silently" : "Poslat tiลกe", "Send message" : "Poslat zprรกvu", "File to share" : "Soubor ke sdรญlenรญ", "This conversation has been locked" : "Tato konverzace byla uzamฤena", @@ -1033,6 +1034,7 @@ "Add groups" : "Pลidat skupiny", "Add emails" : "Pลidat e-maily", "Add circles" : "Pลidat okruhy", + "Integrations" : "Napojenรญ", "Add federated users" : "Pลidat federovanรฉ uลพivatele", "Searching โฆ" : "Hledรกnรญโฆ", "No results" : "ลฝรกdnรฉ vรฝsledky", diff --git a/l10n/da.js b/l10n/da.js index e80b1f4e6..b34f35b07 100644 --- a/l10n/da.js +++ b/l10n/da.js @@ -391,6 +391,7 @@ OC.L10N.register( "Add groups" : "Tilfรธj grupper", "Add emails" : "Tilfรธj emails", "Add circles" : "Tilfรธj cirkler", + "Integrations" : "Integrationer", "Searching โฆ" : "Sรธger ...", "No results" : "Ingen resultater", "Add users or groups" : "Add users or groups", diff --git a/l10n/da.json b/l10n/da.json index 43290f40c..9368b0b8d 100644 --- a/l10n/da.json +++ b/l10n/da.json @@ -389,6 +389,7 @@ "Add groups" : "Tilfรธj grupper", "Add emails" : "Tilfรธj emails", "Add circles" : "Tilfรธj cirkler", + "Integrations" : "Integrationer", "Searching โฆ" : "Sรธger ...", "No results" : "Ingen resultater", "Add users or groups" : "Add users or groups", diff --git a/l10n/de.js b/l10n/de.js index daa796516..1581cbd04 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -1035,6 +1035,7 @@ OC.L10N.register( "Add groups" : "Gruppen hinzufรผgen", "Add emails" : "E-Mails hinzufรผgen", "Add circles" : "Kreise hinzufรผgen", + "Integrations" : "Einbindungen", "Add federated users" : "Federated-Benutzer hinzufรผgen", "Searching โฆ" : "Suche โฆ", "No results" : "Keine Ergebnisse", diff --git a/l10n/de.json b/l10n/de.json index 1b1c596b1..d55040631 100644 --- a/l10n/de.json +++ b/l10n/de.json @@ -1033,6 +1033,7 @@ "Add groups" : "Gruppen hinzufรผgen", "Add emails" : "E-Mails hinzufรผgen", "Add circles" : "Kreise hinzufรผgen", + "Integrations" : "Einbindungen", "Add federated users" : "Federated-Benutzer hinzufรผgen", "Searching โฆ" : "Suche โฆ", "No results" : "Keine Ergebnisse", diff --git a/l10n/de_DE.js b/l10n/de_DE.js index 1d01f973b..ca5d77964 100644 --- a/l10n/de_DE.js +++ b/l10n/de_DE.js @@ -985,6 +985,7 @@ OC.L10N.register( "Upload new files" : "Neue Dateien hochladen", "Share from Files" : "Aus Dateien heraus teilen", "Add emoji" : "Emoji hinzufรผgen", + "Send silently" : "Stumm senden", "Send message" : "Nachricht senden", "File to share" : "Zu teilende Datei", "This conversation has been locked" : "Diese Unterhaltung wurde gesperrt", @@ -1035,6 +1036,7 @@ OC.L10N.register( "Add groups" : "Gruppen hinzufรผgen", "Add emails" : "E-Mails hinzufรผgen", "Add circles" : "Kreise hinzufรผgen", + "Integrations" : "Einbindungen", "Add federated users" : "Federated-Benutzer hinzufรผgen", "Searching โฆ" : "Suche โฆ", "No results" : "Keine Ergebnisse", diff --git a/l10n/de_DE.json b/l10n/de_DE.json index 83bd5f715..670353dbf 100644 --- a/l10n/de_DE.json +++ b/l10n/de_DE.json @@ -983,6 +983,7 @@ "Upload new files" : "Neue Dateien hochladen", "Share from Files" : "Aus Dateien heraus teilen", "Add emoji" : "Emoji hinzufรผgen", + "Send silently" : "Stumm senden", "Send message" : "Nachricht senden", "File to share" : "Zu teilende Datei", "This conversation has been locked" : "Diese Unterhaltung wurde gesperrt", @@ -1033,6 +1034,7 @@ "Add groups" : "Gruppen hinzufรผgen", "Add emails" : "E-Mails hinzufรผgen", "Add circles" : "Kreise hinzufรผgen", + "Integrations" : "Einbindungen", "Add federated users" : "Federated-Benutzer hinzufรผgen", "Searching โฆ" : "Suche โฆ", "No results" : "Keine Ergebnisse", diff --git a/l10n/el.js b/l10n/el.js index 7ae2a185b..8ae8f448f 100644 --- a/l10n/el.js +++ b/l10n/el.js @@ -859,6 +859,7 @@ OC.L10N.register( "Add groups" : "ฮ ฯฮฟฯฮธฮฎฮบฮท ฮฟฮผฮฌฮดฯฮฝ", "Add emails" : "ฮ ฯฮฟฯฮธฮฎฮบฮท emails", "Add circles" : "ฮ ฯฮฟฯฮธฮฎฮบฮท ฮบฯฮบฮปฯฮฝ", + "Integrations" : "ฮฮฝฯฯฮผฮฑฯฯฯฮตฮนฯ", "Searching โฆ" : "ฮฮฝฮฑฮถฮฎฯฮทฯฮท ...", "No results" : "ฮฮฑฮฝฮญฮฝฮฑ ฮฑฯฮฟฯฮญฮปฮตฯฮผฮฑ", "Search for more users" : "ฮฮฝฮฑฮถฮฎฯฮทฯฮท ฯฮตฯฮนฯฯฯฯฮตฯฯฮฝ ฯฯฮทฯฯฯฮฝ", diff --git a/l10n/el.json b/l10n/el.json index 06ee40854..f09ee1386 100644 --- a/l10n/el.json +++ b/l10n/el.json @@ -857,6 +857,7 @@ "Add groups" : "ฮ ฯฮฟฯฮธฮฎฮบฮท ฮฟฮผฮฌฮดฯฮฝ", "Add emails" : "ฮ ฯฮฟฯฮธฮฎฮบฮท emails", "Add circles" : "ฮ ฯฮฟฯฮธฮฎฮบฮท ฮบฯฮบฮปฯฮฝ", + "Integrations" : "ฮฮฝฯฯฮผฮฑฯฯฯฮตฮนฯ", "Searching โฆ" : "ฮฮฝฮฑฮถฮฎฯฮทฯฮท ...", "No results" : "ฮฮฑฮฝฮญฮฝฮฑ ฮฑฯฮฟฯฮญฮปฮตฯฮผฮฑ", "Search for more users" : "ฮฮฝฮฑฮถฮฎฯฮทฯฮท ฯฮตฯฮนฯฯฯฯฮตฯฯฮฝ ฯฯฮทฯฯฯฮฝ", diff --git a/l10n/es.js b/l10n/es.js index deccf856a..b32c6a21f 100644 --- a/l10n/es.js +++ b/l10n/es.js @@ -43,10 +43,13 @@ OC.L10N.register( "- A preview of your audio and video is shown before joining a call" : "- Una previsualizaciรณn de tu audio y vรญdeo se mostrarรก antes de unirte a la llamada", "- You can now blur your background in the newly designed call view" : "- Ahora puedes difuminar tu fondo en la vista de llamada rediseรฑada", "- Moderators can now assign general and individual permissions to participants" : "- Ahora los moderadores pueden asignar permisos generales e individuales a los participantes", + "- You can now react to chat message" : "- Ahora puedes reaccionar al mensaje de chat", + "- In the sidebar you can now find an overview of the latest shared items" : "- En la barra lateral ahora puedes encontrar un resumen de los รบltimos artรญculos compartidos", "There are currently no commands available." : "Actualmente no hay comandos disponibles.", "The command does not exist" : "El comando no existe", "An error occurred while running the command. Please ask an administrator to check the logs." : "Se ha producido un error al ejecutar el comando. Por favor, contacte con el administrador para que compruebe los registros.", "Talk updates โ
" : "Actualizaciones de Talk โ
", + "Reaction deleted by author" : "Reacciรณn borrada por el autor", "{actor} created the conversation" : "{actor} creaรณ la conversaciรณn", "You created the conversation" : "Has creado la conversaciรณn", "An administrator created the conversation" : "Un administrador ha creado la conversaciรณn", @@ -148,6 +151,8 @@ OC.L10N.register( "You stopped Matterbridge" : "Tu detuviste Matterbridge", "{actor} deleted a message" : "{actor} eliminรณ un mensaje", "You deleted a message" : "Has eliminado un mensaje", + "{actor} deleted a reaction" : "{actor} borrรณ una reacciรณn", + "You deleted a reaction" : "Has borrado una reacciรณn", "{actor} cleared the history of the conversation" : "{actor} ha vaciado el historial de la conversaciรณn", "You cleared the history of the conversation" : "Ha vaciado el historial de la conversaciรณn", "Message deleted by author" : "Mensaje eliminado por el autor", @@ -207,6 +212,11 @@ OC.L10N.register( "A deleted user replied to your message in conversation {call}" : "Un usuario borrado respondiรณ a a su mensaje en la conversaciรณn {call}", "{guest} (guest) replied to your message in conversation {call}" : "{guest} (guest) respondiรณ su mensaje en la conversaciรณn {call}", "A guest replied to your message in conversation {call}" : "Un invitado respondiรณ a su mensaje en la conversaciรณn {call}", + "{user} reacted with {reaction} to your private message" : "{user} reaccionรณ con {reaction} a su mensaje privado", + "{user} reacted with {reaction} to your message in conversation {call}" : "{user} reaccionรณ con {reaction} a su mensaje en la conversaciรณn {call}", + "A deleted user reacted with {reaction} to your message in conversation {call}" : "Un usuario eliminado reaccionรณ con {reaction} a su mensaje en la conversaciรณn {call}", + "{guest} (guest) reacted with {reaction} to your message in conversation {call}" : "{guest} (guest) reaccionรณ con {reaction} a su mensaje en la conversaciรณn {call}", + "A guest reacted with {reaction} to your message in conversation {call}" : "Un invitado reaccionรณ con {reaction} a su mensaje en la conversaciรณn {call}", "{user} mentioned you in a private conversation" : "{user} te ha mencionado en una conversaciรณn privada", "{user} mentioned you in conversation {call}" : "{user} te ha mencionado en {call}", "A deleted user mentioned you in conversation {call}" : "Un usuario eliminado te ha mencionado en {call}", @@ -539,6 +549,7 @@ OC.L10N.register( "Everyone" : "Todo el mundo", "Users and moderators" : "Usuarios y moderadores", "Moderators only" : "Sรณlo moderadores", + "Disable calls" : "Deshabilitar llamadas", "Save changes" : "Guardar cambios", "Saving โฆ" : "Guardando โฆ", "Saved!" : "Guardado", @@ -594,6 +605,7 @@ OC.L10N.register( "Downloading โฆ" : "Descargando โฆ", "Install Talk Matterbridge" : "Instalar Talk Matterbridge", "Installed version: {version}" : "Versiรณn instalada: {version}", + "You can install the Matterbridge to link Nextcloud Talk to some other services, visit their {linkstart1}GitHub page{linkend} for more details. Downloading and installing the app can take a while. In case it times out, please install it manually from the {linkstart2}Nextcloud App Store{linkend}." : "Puedes instalar Matterbridge para enlazar Nextcloud Talk con algunos otros servicios, visita su pรกgina {linkstart1}GitHub{linkend} para mรกs detalles. La descarga e instalaciรณn de la aplicaciรณn puede llevar un tiempo. En caso de que se agote, instรกlala manualmente desde la {linkstart2}Nextcloud App Store{linkend}.", "Matterbridge binary has incorrect permissions. Please make sure the Matterbridge binary file is owned by the correct user and can be executed. It can be found in \"/.../nextcloud/apps/talk_matterbridge/bin/\"." : "El binario de Matterbridge tiene permisos incorrectos. Asegรบrate de que el archivo binario de Matterbridge tiene como propietario el usuario correcto y se puede ejecutar. Lo encontrarรกs en ยซ/โฆ/nextcloud/apps/talk_matterbridge/bin/ยป.", "Matterbridge binary was not found or couldn't be executed." : "El binario de Matterbridge no se ha encontrado o no se ha podido ejecutar.", "You can also set the path to the Matterbridge binary manually via the config. Check the {linkstart}Matterbridge integration documentation{linkend} for more information." : "Tambiรฉn puedes configurar manualmente la ruta al binario de Matterbridge mediante la configuraciรณn. Consulta la {linkstart}documentaciรณn de integraciรณn de Matterbridge{linkend} para mรกs informaciรณn.", @@ -615,6 +627,8 @@ OC.L10N.register( "OK: Running version: {version}" : "OK: Versiรณn en uso: {version}", "Error: Cannot connect to server" : "Error: No se puede conectar con el servidor", "Error: Server did not respond with proper JSON" : "Error: El servidor no ha respondido con JSON correcto", + "Could not get version" : "No se pudo obtener la versiรณn", + "Error: Running version: {version}; Server needs to be updated to be compatible with this version of Talk" : "Error: Versiรณn en ejecuciรณn: {versiรณn}; El servidor necesita ser actualizado para ser compatible con esta versiรณn de Talk", "Error: Server responded with: {error}" : "Error: El servidor ha respondido con: {error}", "Error: Unknown error occurred" : "Error: Ha sucedido un error desconocido", "High-performance backend" : "Motor de alto rendimiento", @@ -641,11 +655,13 @@ OC.L10N.register( "TURN servers" : "Servidores TURN.", "A TURN server is used to proxy the traffic from participants behind a firewall. If individual participants cannot connect to others a TURN server is most likely required. See {linkstart}this documentation{linkend} for setup instructions." : "Un servidor TURN se utiliza para hacer de proxy del trรกfico de los participantes trรกs un firewall. Si los participantes individuales no pueden conectarse a otros, lo mรกs probable es que se necesite un servidor TURN. Consulte {linkstart}esta documentaciรณn{linkend} para obtener instrucciones de configuraciรณn.", "Web server setup checks" : "Comprobaciones de la configuraciรณn del servidor web", + "Files required for background blur can be loaded" : "Los archivos necesarios para background blur se pueden cargar", "Failed" : "Fallado", "OK" : "OK", "Checking โฆ" : "Comprobando ...", "Failed: WebAssembly is disabled or not supported in this browser. Please enable WebAssembly or use a browser with support for it to do the check." : "Fallo: WebAssembly estรก deshabilitado o no estรก soportado por este navegador. Por favor, activa WebAssembly o usa un navegador con soporte para que haga la comprobaciรณn.", "Failed: \".wasm\" and \".tflite\" files were not properly returned by the web server. Please check \"System requirements\" section in Talk documentation." : "Fallo: los archivos \".wasm\" y \".tflite\" no han sido devueltos correctamente por el servidor web. Por favor compruebe la secciรณn \"Requisitos del sistema\" en la documentaciรณn de Talk.", + "OK: \".wasm\" and \".tflite\" files were properly returned by the web server." : "OK: los archivos \".wasm\" y \".tflite\" han sido devueltos correctamente por el servidor web", "{nickName} raised their hand." : "{nickName} ha levantado la mano", "A participant raised their hand." : "Alguien ha levantado la mano.", "Previous page of videos" : "Pรกgina anterior de vรญdeos", @@ -658,6 +674,8 @@ OC.L10N.register( "You can invite others in the participant tab of the sidebar" : "Puedes invitar a otros en la pestaรฑa de participantes en la barra lateral", "You can invite others in the participant tab of the sidebar or share this link to invite others!" : "Puede invitar a otras personas en la pestaรฑa de participantes de la barra lateral o compartir este enlace para invitar a otras personas", "Share this link to invite others!" : "Comparte este enlace para invitar a otras personas.", + "Conversation link copied to clipboard" : "Enlace de la conversaciรณn copiado al portapapeles.", + "The link could not be copied" : "El enlace no se pudo copiar.", "Dismiss" : "Descartar", "Show your screen" : "Muestre su pantalla", "Stop screensharing" : "Detenga el compartir pantalla", @@ -714,6 +732,7 @@ OC.L10N.register( "An error occurred while starting screensharing." : "Ocurriรณ un error al inciar el compartir pantalla", "Back" : "Volver", "Access to camera was denied" : "Se ha denegado el acceso a la cรกmara", + "Error while accessing camera: It is likely in use by another program" : "Error al acceder a la cรกmara: puede que la estรฉ usando otro programa", "Error while accessing camera" : "Error al acceder a la cรกmara", "You have been muted by a moderator" : "Has sido silenciado por un moderador", "You" : "Tรบ", @@ -864,6 +883,8 @@ OC.L10N.register( "Notify about calls in this conversation" : "Notifรญcame de las llamadas en esta conversaciรณn", "Allow participants to join from a phone." : "Permite que los participantes se unan por telรฉfono.", "Enable SIP dial-in" : "Habilitar conexiรณn telefรณnica SIP", + "Allow to dial-in without a PIN" : "Permitir la marcaciรณn sin PIN", + "SIP dial-in is now possible without PIN requirement" : "Ahora es posible la marcaciรณn SIP sin necesidad de PIN", "SIP dial-in is now enabled" : "Se ha habilitado la conexiรณn telefรณnica SIP", "SIP dial-in is now disabled" : "Se ha deshabilitado la conexiรณn telefรณnica SIP", "Error occurred when enabling SIP dial-in" : "Se ha producido un error al habilitar la conexiรณn telefรณnica SIP", @@ -925,6 +946,7 @@ OC.L10N.register( "Not enough free space to upload file" : "No hay espacio libre suficiente para subir el archivo", "You are not allowed to share files" : "No estรกs autorizado a compartir archivos", "You cannot send messages to this conversation at the moment" : "No puedes enviar mensajes a esta conversaciรณn en este momento", + "No permission to post reactions in this conversation" : "No estรก permitido publicar reacciones en esta conversaciรณn", "Deleting message" : "Eliminando mensaje", "Message deleted successfully, but Matterbridge is configured and the message might already be distributed to other services" : "Mensaje borrado con รฉxito, pero estรก configurado Matterbridge y el mensaje puede haber sido filtrado a otros servicios", "Message deleted successfully" : "Mensaje eliminado con รฉxito", @@ -937,6 +959,7 @@ OC.L10N.register( "Mark as unread" : "Marcar como no leรญdo", "Go to file" : "Ir al archivo", "Forward message" : "Reenviar mensaje", + "Message link copied to clipboard" : "Link del mensaje copiado al portapapeles.", "Your browser does not support playing audio files" : "Su navegador no admite la reproducciรณn de archivos de audio", "Contact" : "Contacto", "{stack} in {board}" : "{stack} en {board}", @@ -970,6 +993,7 @@ OC.L10N.register( "Invalid path selected" : "Ruta de archivo seleccionada no vรกlida.", "Start a call" : "Iniciar una llamada", "Skip the lobby" : "Saltarse el lobby", + "Can post messages and reactions" : "Puede publicar mensajes y reacciones", "Enable the microphone" : "Habilitar el micrรณfono", "Enable the camera" : "Habilitar la cรกmara", "Share the screen" : "Compartir la pantalla", @@ -988,6 +1012,7 @@ OC.L10N.register( "Grant all permissions" : "Otorgar todos los permisos", "Remove all permissions" : "Retirar todos los permisos", "Resend invitation" : "Reenviar invitaciรณn", + "Send call notification" : "Enviar notificaciรณn de llamada", "Remove group and members" : "Eliminar grupo y miembros", "Remove participant" : "Eliminar participante", "Settings for participant \"{user}\"" : "Ajustes para participante ยซ{user}ยป", @@ -997,7 +1022,10 @@ OC.L10N.register( "Joined with video" : "Participa con vรญdeo", "Joined via phone" : "Participa por telรฉfono", "Raised their hand" : "Levantaron la mano", + "Invitation was sent to {actorId}" : "Se ha enviado la invitaciรณn a {actorId}.", "Could not send invitation to {actorId}" : "No se ha enviado la invitaciรณn a {actorId}.", + "Notification was sent to {displayName}" : "La notificaciรณn fue enviada a {displayName}", + "Could not send notification to {displayName}" : "No se ha podido enviar la notificaciรณn a {displayName}", "Permissions granted to {displayName}" : "Se han otorgado permisos a {displayName}", "Could not modify permissions for {displayName}" : "No se ha podido modificar los permisos para {displayName}", "Permissions removed for {displayName}" : "Permisos borrados para {displayName}", @@ -1007,6 +1035,7 @@ OC.L10N.register( "Add groups" : "Aรฑadir grupos", "Add emails" : "Aรฑade correos electrรณnicos", "Add circles" : "Aรฑadir cรญrculos", + "Integrations" : "Integraciones", "Add federated users" : "Aรฑadir usuarios federados", "Searching โฆ" : "Buscando โฆ", "No results" : "Sin resultados", @@ -1022,17 +1051,26 @@ OC.L10N.register( "Chat" : "Chat", "Details" : "Detalles", "Settings" : "Ajustes", + "Shared items" : "Elementos compartidos", "Participants ({count})" : "Participantes ({count})", "Projects" : "Proyectos", + "Show all media" : "Mostrar todos los medios", "Show all files" : "Mostrar todos los archivos", + "Show all deck cards" : "Mostrar todas las tarjetas", + "Show all voice messages" : "Mostrar todos los mensajes de voz", + "Show all locations" : "Mostrar todas las ubicaciones", + "Show all audio" : "Mostrar todos los audios", + "Show all other" : "Mostrar todos los demรกs", "Meeting ID: {meetingId}" : "ID de reuniรณn: {meetingId}", "Your PIN: {attendeePin}" : "Tu PIN: {attendeePin}", + "Display name: <strong>{name}</strong>" : "Mostrar nombre: <strong>{name}</strong>", "Attachments folder" : "Carpeta de adjuntos", "Privacy" : "Privacidad", "Share my read-status and show the read-status of others" : "Mostrar mi confirmaciรณn de lectura y ver la de los demรกs", "Sounds" : "Sonidos", "Play sounds when participants join or leave a call" : "Reproducir sonidos cuando los participantes se unen o abandonan una llamada", "Sounds can currently not be played in Safari browser and iPad and iPhone devices due to technical restrictions by the manufacturer." : "En estos momentos los sonidos no se pueden reproducir en navegadores Safari, dispositivos iPad o iPhone debido a una restricciรณn tรฉcnica impuesta por el fabricante.", + "Sounds for chat and call notifications can be adjusted in the personal settings." : "Los sonidos de las notificaciones del chat y de las llamadas pueden ajustarse en los ajustes personales.", "Keyboard shortcuts" : "Atajos de teclado", "Speed up your Talk experience with these quick shortcuts." : "Acelera tu experiencia de Talk con estos atajos rรกpidos.", "Focus the chat input" : "Foco en la entrada del chat", @@ -1040,6 +1078,7 @@ OC.L10N.register( "Fullscreen the chat or call" : "Poner el chat o llamada a pantalla completa", "Search" : "Buscar", "Shortcuts while in a call" : "Atajos durante una llamada", + "Camera on and off" : "Encendido y apagado de la cรกmara", "Microphone on and off" : "Micrรณfono encendido y apagado", "Space bar" : "Barra espaciadora", "Push to talk or push to mute" : "Pulsar para hablar o para silenciar", @@ -1080,8 +1119,14 @@ OC.L10N.register( "Link to a conversation" : "Enlace a una conversaciรณn", "You joined the conversation in another window or device. This is currently not supported by Nextcloud Talk so this session was closed." : "Te has unido a la conversaciรณn en otra ventana o dispositivo. Nextcloud Talk no admite esto en la actualidad, por lo que se ha cerrado esta sesiรณn.", "Join a conversation or start a new one" : "รnete a una conversaciรณn o empieza una nueva", + "Deck card has been posted to the selected <a href=\"{link}\">conversation</a>" : "La tarjeta de Deck se ha publicado en la <a href=\"{link}\">conversaciรณn</a> seleccionada", + "An error occurred while posting deck card to conversation" : "Se ha producido un error al publicar la tarjeta de mazo en la conversaciรณn", "Post to a conversation" : "Publicar en una conversaciรณn", "Post to conversation" : "Publicar en la conversaciรณn", + "Location has been posted to the selected <a href=\"{link}\">conversation</a>" : "La ubicaciรณn ha sido publicada en la conversaciรณn seleccionada", + "An error occurred while posting location to conversation" : "Se ha producido un error al publicar la ubicaciรณn en la conversaciรณn", + "Share to a conversation" : "Compartir en la conversaciรณn", + "Share to conversation" : "Compartir en la conversaciรณn", "The browser you're using is not fully supported by Nextcloud Talk. Please use the latest version of Mozilla Firefox, Microsoft Edge, Google Chrome, Opera or Apple Safari." : "Este navegador no es completamente compatible con Nextcloud Talk. Por favor, usa la รบltima versiรณn de Mozilla Firefox, Microsoft Edge, Google Chrome, Opera o Apple Safari.", "Calls are not supported in your browser" : "Tu navegador no admite llamadas", "Access to microphone is only possible with HTTPS" : "El acceso al micrรณfono solo es posible con HTTPS", @@ -1091,6 +1136,8 @@ OC.L10N.register( "An error occurred while fetching the participants" : "Ha ocurrido un error al recuperar los participantes", "Media" : "Multimedia", "Files" : "Archivos", + "Deck cards" : "Tarjetas Deck", + "Voice messages" : "Mensajes de voz", "Locations" : "Ubicaciones", "Audio" : "Audio", "Other" : "Otro", @@ -1102,7 +1149,10 @@ OC.L10N.register( "Not enough free space to upload file \"{fileName}\"" : "No hay espacio libre suficiente para subir el archivo \"{fileName}\"", "Error while uploading file \"{fileName}\"" : "Error al subir el archivo \"{fileName}\".", "An error happened when trying to share your file" : "Se ha producido un error al intentar compartir el archivo", + "{guest} (guest)" : "{guest} (guest)", "Could not post message: {errorMessage}" : "No se ha podido publicar el mensaje: {errorMessage}", + "Failed to add reaction" : "Fallo en la adiciรณn de la reacciรณn", + "Failed to remove reaction" : "No se ha podido eliminar la reacciรณn", "Failed to join the conversation. Try to reload the page." : "Error al unirte a la conversaciรณn. Prueba a recargar la pรกgina.", "You are trying to join a conversation while having an active session in another window or device. This is currently not supported by Nextcloud Talk. What do you want to do?" : "Estรกs intentando unirte a una conversaciรณn mientras tienes activa una sesiรณn en otra ventana o dispositivo. Nextcloud Talk no admite esto en la actualidad. ยฟQuรฉ prefieres hacer?", "Join here" : "Unirte aquรญ", diff --git a/l10n/es.json b/l10n/es.json index cb29dcab8..958f49b39 100644 --- a/l10n/es.json +++ b/l10n/es.json @@ -41,10 +41,13 @@ "- A preview of your audio and video is shown before joining a call" : "- Una previsualizaciรณn de tu audio y vรญdeo se mostrarรก antes de unirte a la llamada", "- You can now blur your background in the newly designed call view" : "- Ahora puedes difuminar tu fondo en la vista de llamada rediseรฑada", "- Moderators can now assign general and individual permissions to participants" : "- Ahora los moderadores pueden asignar permisos generales e individuales a los participantes", + "- You can now react to chat message" : "- Ahora puedes reaccionar al mensaje de chat", + "- In the sidebar you can now find an overview of the latest shared items" : "- En la barra lateral ahora puedes encontrar un resumen de los รบltimos artรญculos compartidos", "There are currently no commands available." : "Actualmente no hay comandos disponibles.", "The command does not exist" : "El comando no existe", "An error occurred while running the command. Please ask an administrator to check the logs." : "Se ha producido un error al ejecutar el comando. Por favor, contacte con el administrador para que compruebe los registros.", "Talk updates โ
" : "Actualizaciones de Talk โ
", + "Reaction deleted by author" : "Reacciรณn borrada por el autor", "{actor} created the conversation" : "{actor} creaรณ la conversaciรณn", "You created the conversation" : "Has creado la conversaciรณn", "An administrator created the conversation" : "Un administrador ha creado la conversaciรณn", @@ -146,6 +149,8 @@ "You stopped Matterbridge" : "Tu detuviste Matterbridge", "{actor} deleted a message" : "{actor} eliminรณ un mensaje", "You deleted a message" : "Has eliminado un mensaje", + "{actor} deleted a reaction" : "{actor} borrรณ una reacciรณn", + "You deleted a reaction" : "Has borrado una reacciรณn", "{actor} cleared the history of the conversation" : "{actor} ha vaciado el historial de la conversaciรณn", "You cleared the history of the conversation" : "Ha vaciado el historial de la conversaciรณn", "Message deleted by author" : "Mensaje eliminado por el autor", @@ -205,6 +210,11 @@ "A deleted user replied to your message in conversation {call}" : "Un usuario borrado respondiรณ a a su mensaje en la conversaciรณn {call}", "{guest} (guest) replied to your message in conversation {call}" : "{guest} (guest) respondiรณ su mensaje en la conversaciรณn {call}", "A guest replied to your message in conversation {call}" : "Un invitado respondiรณ a su mensaje en la conversaciรณn {call}", + "{user} reacted with {reaction} to your private message" : "{user} reaccionรณ con {reaction} a su mensaje privado", + "{user} reacted with {reaction} to your message in conversation {call}" : "{user} reaccionรณ con {reaction} a su mensaje en la conversaciรณn {call}", + "A deleted user reacted with {reaction} to your message in conversation {call}" : "Un usuario eliminado reaccionรณ con {reaction} a su mensaje en la conversaciรณn {call}", + "{guest} (guest) reacted with {reaction} to your message in conversation {call}" : "{guest} (guest) reaccionรณ con {reaction} a su mensaje en la conversaciรณn {call}", + "A guest reacted with {reaction} to your message in conversation {call}" : "Un invitado reaccionรณ con {reaction} a su mensaje en la conversaciรณn {call}", "{user} mentioned you in a private conversation" : "{user} te ha mencionado en una conversaciรณn privada", "{user} mentioned you in conversation {call}" : "{user} te ha mencionado en {call}", "A deleted user mentioned you in conversation {call}" : "Un usuario eliminado te ha mencionado en {call}", @@ -537,6 +547,7 @@ "Everyone" : "Todo el mundo", "Users and moderators" : "Usuarios y moderadores", "Moderators only" : "Sรณlo moderadores", + "Disable calls" : "Deshabilitar llamadas", "Save changes" : "Guardar cambios", "Saving โฆ" : "Guardando โฆ", "Saved!" : "Guardado", @@ -592,6 +603,7 @@ "Downloading โฆ" : "Descargando โฆ", "Install Talk Matterbridge" : "Instalar Talk Matterbridge", "Installed version: {version}" : "Versiรณn instalada: {version}", + "You can install the Matterbridge to link Nextcloud Talk to some other services, visit their {linkstart1}GitHub page{linkend} for more details. Downloading and installing the app can take a while. In case it times out, please install it manually from the {linkstart2}Nextcloud App Store{linkend}." : "Puedes instalar Matterbridge para enlazar Nextcloud Talk con algunos otros servicios, visita su pรกgina {linkstart1}GitHub{linkend} para mรกs detalles. La descarga e instalaciรณn de la aplicaciรณn puede llevar un tiempo. En caso de que se agote, instรกlala manualmente desde la {linkstart2}Nextcloud App Store{linkend}.", "Matterbridge binary has incorrect permissions. Please make sure the Matterbridge binary file is owned by the correct user and can be executed. It can be found in \"/.../nextcloud/apps/talk_matterbridge/bin/\"." : "El binario de Matterbridge tiene permisos incorrectos. Asegรบrate de que el archivo binario de Matterbridge tiene como propietario el usuario correcto y se puede ejecutar. Lo encontrarรกs en ยซ/โฆ/nextcloud/apps/talk_matterbridge/bin/ยป.", "Matterbridge binary was not found or couldn't be executed." : "El binario de Matterbridge no se ha encontrado o no se ha podido ejecutar.", "You can also set the path to the Matterbridge binary manually via the config. Check the {linkstart}Matterbridge integration documentation{linkend} for more information." : "Tambiรฉn puedes configurar manualmente la ruta al binario de Matterbridge mediante la configuraciรณn. Consulta la {linkstart}documentaciรณn de integraciรณn de Matterbridge{linkend} para mรกs informaciรณn.", @@ -613,6 +625,8 @@ "OK: Running version: {version}" : "OK: Versiรณn en uso: {version}", "Error: Cannot connect to server" : "Error: No se puede conectar con el servidor", "Error: Server did not respond with proper JSON" : "Error: El servidor no ha respondido con JSON correcto", + "Could not get version" : "No se pudo obtener la versiรณn", + "Error: Running version: {version}; Server needs to be updated to be compatible with this version of Talk" : "Error: Versiรณn en ejecuciรณn: {versiรณn}; El servidor necesita ser actualizado para ser compatible con esta versiรณn de Talk", "Error: Server responded with: {error}" : "Error: El servidor ha respondido con: {error}", "Error: Unknown error occurred" : "Error: Ha sucedido un error desconocido", "High-performance backend" : "Motor de alto rendimiento", @@ -639,11 +653,13 @@ "TURN servers" : "Servidores TURN.", "A TURN server is used to proxy the traffic from participants behind a firewall. If individual participants cannot connect to others a TURN server is most likely required. See {linkstart}this documentation{linkend} for setup instructions." : "Un servidor TURN se utiliza para hacer de proxy del trรกfico de los participantes trรกs un firewall. Si los participantes individuales no pueden conectarse a otros, lo mรกs probable es que se necesite un servidor TURN. Consulte {linkstart}esta documentaciรณn{linkend} para obtener instrucciones de configuraciรณn.", "Web server setup checks" : "Comprobaciones de la configuraciรณn del servidor web", + "Files required for background blur can be loaded" : "Los archivos necesarios para background blur se pueden cargar", "Failed" : "Fallado", "OK" : "OK", "Checking โฆ" : "Comprobando ...", "Failed: WebAssembly is disabled or not supported in this browser. Please enable WebAssembly or use a browser with support for it to do the check." : "Fallo: WebAssembly estรก deshabilitado o no estรก soportado por este navegador. Por favor, activa WebAssembly o usa un navegador con soporte para que haga la comprobaciรณn.", "Failed: \".wasm\" and \".tflite\" files were not properly returned by the web server. Please check \"System requirements\" section in Talk documentation." : "Fallo: los archivos \".wasm\" y \".tflite\" no han sido devueltos correctamente por el servidor web. Por favor compruebe la secciรณn \"Requisitos del sistema\" en la documentaciรณn de Talk.", + "OK: \".wasm\" and \".tflite\" files were properly returned by the web server." : "OK: los archivos \".wasm\" y \".tflite\" han sido devueltos correctamente por el servidor web", "{nickName} raised their hand." : "{nickName} ha levantado la mano", "A participant raised their hand." : "Alguien ha levantado la mano.", "Previous page of videos" : "Pรกgina anterior de vรญdeos", @@ -656,6 +672,8 @@ "You can invite others in the participant tab of the sidebar" : "Puedes invitar a otros en la pestaรฑa de participantes en la barra lateral", "You can invite others in the participant tab of the sidebar or share this link to invite others!" : "Puede invitar a otras personas en la pestaรฑa de participantes de la barra lateral o compartir este enlace para invitar a otras personas", "Share this link to invite others!" : "Comparte este enlace para invitar a otras personas.", + "Conversation link copied to clipboard" : "Enlace de la conversaciรณn copiado al portapapeles.", + "The link could not be copied" : "El enlace no se pudo copiar.", "Dismiss" : "Descartar", "Show your screen" : "Muestre su pantalla", "Stop screensharing" : "Detenga el compartir pantalla", @@ -712,6 +730,7 @@ "An error occurred while starting screensharing." : "Ocurriรณ un error al inciar el compartir pantalla", "Back" : "Volver", "Access to camera was denied" : "Se ha denegado el acceso a la cรกmara", + "Error while accessing camera: It is likely in use by another program" : "Error al acceder a la cรกmara: puede que la estรฉ usando otro programa", "Error while accessing camera" : "Error al acceder a la cรกmara", "You have been muted by a moderator" : "Has sido silenciado por un moderador", "You" : "Tรบ", @@ -862,6 +881,8 @@ "Notify about calls in this conversation" : "Notifรญcame de las llamadas en esta conversaciรณn", "Allow participants to join from a phone." : "Permite que los participantes se unan por telรฉfono.", "Enable SIP dial-in" : "Habilitar conexiรณn telefรณnica SIP", + "Allow to dial-in without a PIN" : "Permitir la marcaciรณn sin PIN", + "SIP dial-in is now possible without PIN requirement" : "Ahora es posible la marcaciรณn SIP sin necesidad de PIN", "SIP dial-in is now enabled" : "Se ha habilitado la conexiรณn telefรณnica SIP", "SIP dial-in is now disabled" : "Se ha deshabilitado la conexiรณn telefรณnica SIP", "Error occurred when enabling SIP dial-in" : "Se ha producido un error al habilitar la conexiรณn telefรณnica SIP", @@ -923,6 +944,7 @@ "Not enough free space to upload file" : "No hay espacio libre suficiente para subir el archivo", "You are not allowed to share files" : "No estรกs autorizado a compartir archivos", "You cannot send messages to this conversation at the moment" : "No puedes enviar mensajes a esta conversaciรณn en este momento", + "No permission to post reactions in this conversation" : "No estรก permitido publicar reacciones en esta conversaciรณn", "Deleting message" : "Eliminando mensaje", "Message deleted successfully, but Matterbridge is configured and the message might already be distributed to other services" : "Mensaje borrado con รฉxito, pero estรก configurado Matterbridge y el mensaje puede haber sido filtrado a otros servicios", "Message deleted successfully" : "Mensaje eliminado con รฉxito", @@ -935,6 +957,7 @@ "Mark as unread" : "Marcar como no leรญdo", "Go to file" : "Ir al archivo", "Forward message" : "Reenviar mensaje", + "Message link copied to clipboard" : "Link del mensaje copiado al portapapeles.", "Your browser does not support playing audio files" : "Su navegador no admite la reproducciรณn de archivos de audio", "Contact" : "Contacto", "{stack} in {board}" : "{stack} en {board}", @@ -968,6 +991,7 @@ "Invalid path selected" : "Ruta de archivo seleccionada no vรกlida.", "Start a call" : "Iniciar una llamada", "Skip the lobby" : "Saltarse el lobby", + "Can post messages and reactions" : "Puede publicar mensajes y reacciones", "Enable the microphone" : "Habilitar el micrรณfono", "Enable the camera" : "Habilitar la cรกmara", "Share the screen" : "Compartir la pantalla", @@ -986,6 +1010,7 @@ "Grant all permissions" : "Otorgar todos los permisos", "Remove all permissions" : "Retirar todos los permisos", "Resend invitation" : "Reenviar invitaciรณn", + "Send call notification" : "Enviar notificaciรณn de llamada", "Remove group and members" : "Eliminar grupo y miembros", "Remove participant" : "Eliminar participante", "Settings for participant \"{user}\"" : "Ajustes para participante ยซ{user}ยป", @@ -995,7 +1020,10 @@ "Joined with video" : "Participa con vรญdeo", "Joined via phone" : "Participa por telรฉfono", "Raised their hand" : "Levantaron la mano", + "Invitation was sent to {actorId}" : "Se ha enviado la invitaciรณn a {actorId}.", "Could not send invitation to {actorId}" : "No se ha enviado la invitaciรณn a {actorId}.", + "Notification was sent to {displayName}" : "La notificaciรณn fue enviada a {displayName}", + "Could not send notification to {displayName}" : "No se ha podido enviar la notificaciรณn a {displayName}", "Permissions granted to {displayName}" : "Se han otorgado permisos a {displayName}", "Could not modify permissions for {displayName}" : "No se ha podido modificar los permisos para {displayName}", "Permissions removed for {displayName}" : "Permisos borrados para {displayName}", @@ -1005,6 +1033,7 @@ "Add groups" : "Aรฑadir grupos", "Add emails" : "Aรฑade correos electrรณnicos", "Add circles" : "Aรฑadir cรญrculos", + "Integrations" : "Integraciones", "Add federated users" : "Aรฑadir usuarios federados", "Searching โฆ" : "Buscando โฆ", "No results" : "Sin resultados", @@ -1020,17 +1049,26 @@ "Chat" : "Chat", "Details" : "Detalles", "Settings" : "Ajustes", + "Shared items" : "Elementos compartidos", "Participants ({count})" : "Participantes ({count})", "Projects" : "Proyectos", + "Show all media" : "Mostrar todos los medios", "Show all files" : "Mostrar todos los archivos", + "Show all deck cards" : "Mostrar todas las tarjetas", + "Show all voice messages" : "Mostrar todos los mensajes de voz", + "Show all locations" : "Mostrar todas las ubicaciones", + "Show all audio" : "Mostrar todos los audios", + "Show all other" : "Mostrar todos los demรกs", "Meeting ID: {meetingId}" : "ID de reuniรณn: {meetingId}", "Your PIN: {attendeePin}" : "Tu PIN: {attendeePin}", + "Display name: <strong>{name}</strong>" : "Mostrar nombre: <strong>{name}</strong>", "Attachments folder" : "Carpeta de adjuntos", "Privacy" : "Privacidad", "Share my read-status and show the read-status of others" : "Mostrar mi confirmaciรณn de lectura y ver la de los demรกs", "Sounds" : "Sonidos", "Play sounds when participants join or leave a call" : "Reproducir sonidos cuando los participantes se unen o abandonan una llamada", "Sounds can currently not be played in Safari browser and iPad and iPhone devices due to technical restrictions by the manufacturer." : "En estos momentos los sonidos no se pueden reproducir en navegadores Safari, dispositivos iPad o iPhone debido a una restricciรณn tรฉcnica impuesta por el fabricante.", + "Sounds for chat and call notifications can be adjusted in the personal settings." : "Los sonidos de las notificaciones del chat y de las llamadas pueden ajustarse en los ajustes personales.", "Keyboard shortcuts" : "Atajos de teclado", "Speed up your Talk experience with these quick shortcuts." : "Acelera tu experiencia de Talk con estos atajos rรกpidos.", "Focus the chat input" : "Foco en la entrada del chat", @@ -1038,6 +1076,7 @@ "Fullscreen the chat or call" : "Poner el chat o llamada a pantalla completa", "Search" : "Buscar", "Shortcuts while in a call" : "Atajos durante una llamada", + "Camera on and off" : "Encendido y apagado de la cรกmara", "Microphone on and off" : "Micrรณfono encendido y apagado", "Space bar" : "Barra espaciadora", "Push to talk or push to mute" : "Pulsar para hablar o para silenciar", @@ -1078,8 +1117,14 @@ "Link to a conversation" : "Enlace a una conversaciรณn", "You joined the conversation in another window or device. This is currently not supported by Nextcloud Talk so this session was closed." : "Te has unido a la conversaciรณn en otra ventana o dispositivo. Nextcloud Talk no admite esto en la actualidad, por lo que se ha cerrado esta sesiรณn.", "Join a conversation or start a new one" : "รnete a una conversaciรณn o empieza una nueva", + "Deck card has been posted to the selected <a href=\"{link}\">conversation</a>" : "La tarjeta de Deck se ha publicado en la <a href=\"{link}\">conversaciรณn</a> seleccionada", + "An error occurred while posting deck card to conversation" : "Se ha producido un error al publicar la tarjeta de mazo en la conversaciรณn", "Post to a conversation" : "Publicar en una conversaciรณn", "Post to conversation" : "Publicar en la conversaciรณn", + "Location has been posted to the selected <a href=\"{link}\">conversation</a>" : "La ubicaciรณn ha sido publicada en la conversaciรณn seleccionada", + "An error occurred while posting location to conversation" : "Se ha producido un error al publicar la ubicaciรณn en la conversaciรณn", + "Share to a conversation" : "Compartir en la conversaciรณn", + "Share to conversation" : "Compartir en la conversaciรณn", "The browser you're using is not fully supported by Nextcloud Talk. Please use the latest version of Mozilla Firefox, Microsoft Edge, Google Chrome, Opera or Apple Safari." : "Este navegador no es completamente compatible con Nextcloud Talk. Por favor, usa la รบltima versiรณn de Mozilla Firefox, Microsoft Edge, Google Chrome, Opera o Apple Safari.", "Calls are not supported in your browser" : "Tu navegador no admite llamadas", "Access to microphone is only possible with HTTPS" : "El acceso al micrรณfono solo es posible con HTTPS", @@ -1089,6 +1134,8 @@ "An error occurred while fetching the participants" : "Ha ocurrido un error al recuperar los participantes", "Media" : "Multimedia", "Files" : "Archivos", + "Deck cards" : "Tarjetas Deck", + "Voice messages" : "Mensajes de voz", "Locations" : "Ubicaciones", "Audio" : "Audio", "Other" : "Otro", @@ -1100,7 +1147,10 @@ "Not enough free space to upload file \"{fileName}\"" : "No hay espacio libre suficiente para subir el archivo \"{fileName}\"", "Error while uploading file \"{fileName}\"" : "Error al subir el archivo \"{fileName}\".", "An error happened when trying to share your file" : "Se ha producido un error al intentar compartir el archivo", + "{guest} (guest)" : "{guest} (guest)", "Could not post message: {errorMessage}" : "No se ha podido publicar el mensaje: {errorMessage}", + "Failed to add reaction" : "Fallo en la adiciรณn de la reacciรณn", + "Failed to remove reaction" : "No se ha podido eliminar la reacciรณn", "Failed to join the conversation. Try to reload the page." : "Error al unirte a la conversaciรณn. Prueba a recargar la pรกgina.", "You are trying to join a conversation while having an active session in another window or device. This is currently not supported by Nextcloud Talk. What do you want to do?" : "Estรกs intentando unirte a una conversaciรณn mientras tienes activa una sesiรณn en otra ventana o dispositivo. Nextcloud Talk no admite esto en la actualidad. ยฟQuรฉ prefieres hacer?", "Join here" : "Unirte aquรญ", diff --git a/l10n/eu.js b/l10n/eu.js index ac8e58431..d315f11cb 100644 --- a/l10n/eu.js +++ b/l10n/eu.js @@ -45,6 +45,7 @@ OC.L10N.register( "The command does not exist" : "Komandoa ez da existitzen", "An error occurred while running the command. Please ask an administrator to check the logs." : "Errore bat gertatu da komandoa exekutatzean. Eskatu administratzaile bati egunkariak egiaztatzeko", "Talk updates โ
" : "Talk eguneraketak โ
", + "Reaction deleted by author" : "Egileak erreakzioa ezabatu du", "{actor} created the conversation" : "{actor} erabiltzaileak elkarrizketa sortu du", "You created the conversation" : "Elkarrizketa zuk sortu duzu", "An administrator created the conversation" : "Administratzaile batek elkarrizketa sortu du", @@ -146,6 +147,8 @@ OC.L10N.register( "You stopped Matterbridge" : "Matterbridge gelditu duzu", "{actor} deleted a message" : "{actor}(e)k mezua ezabatu du", "You deleted a message" : "Mezu bat ezabatu duzu", + "{actor} deleted a reaction" : "{actor}-(e)k erreakzio bat ezabatu du", + "You deleted a reaction" : "Erreakzio bat ezabatu duzu", "{actor} cleared the history of the conversation" : "{actor} elkarrizketaren historia ezabatu du", "You cleared the history of the conversation" : "Elkarrizketaren historia ezabatu duzu", "Message deleted by author" : "Egileak mezua ezabatu du", @@ -537,6 +540,7 @@ OC.L10N.register( "Everyone" : "Edonor", "Users and moderators" : "Erabiltzaileak eta moderatzaileak", "Moderators only" : "Moderatzaileak soilik", + "Disable calls" : "Desgaitu deiak", "Save changes" : "Gorde aldaketak", "Saving โฆ" : "Gordetzen โฆ", "Saved!" : "Gordeta!", @@ -655,6 +659,8 @@ OC.L10N.register( "You can invite others in the participant tab of the sidebar" : "Besteak gonbidatu ditzakezu alboko barrako parte-hartzaileak fitxan", "You can invite others in the participant tab of the sidebar or share this link to invite others!" : "Besteak gonbidatu ditzakezu alboko barrako parte-hartzaileak fitxan edo esteka hau partekatuz!", "Share this link to invite others!" : "Partekatu esteka hau besteak gonbidatzeko!", + "Conversation link copied to clipboard" : "Elkarrizketaren esteka arbelera kopiatu da", + "The link could not be copied" : "Ezin izan da esteka kopiatu", "Dismiss" : "Baztertu", "Show your screen" : "Erakutsi zure pantaila", "Stop screensharing" : "Utzi pantaila partekatzeari", @@ -934,6 +940,7 @@ OC.L10N.register( "Mark as unread" : "Markatu ez irakurri gisa", "Go to file" : "Joan fitxategira", "Forward message" : "Birbidali mezua", + "Message link copied to clipboard" : "Mezuaren esteka arbelera kopiatu da", "Your browser does not support playing audio files" : "Zure nabigatzaileak ez du audio fitxategiak erreproduzitzeko euskarririk", "Contact" : "Kontaktua", "{stack} in {board}" : "{stack} {board}-(e)n", @@ -985,6 +992,7 @@ OC.L10N.register( "Grant all permissions" : "Eman baimen guztiak", "Remove all permissions" : "Kendu baimen guztiak", "Resend invitation" : "Birbidali gonbidapena", + "Send call notification" : "Bidali dei jakinarazpena", "Remove group and members" : "Kendu taldea eta kideak", "Remove participant" : "Kendu parte-hartzailea", "Settings for participant \"{user}\"" : "\"{user}\" parte-hartzailearen ezarpenak", @@ -994,7 +1002,9 @@ OC.L10N.register( "Joined with video" : "Bideoarekin batuta", "Joined via phone" : "Telefonoarekin batuta", "Raised their hand" : "Eskua jaso dute", + "Invitation was sent to {actorId}" : "{actorId}-(e)ri gonbidapena bidali zaio", "Could not send invitation to {actorId}" : "Ezin izan da gonbidapena {actorId}(r)i bidali", + "Notification was sent to {displayName}" : "{displayName}-(e)ri jakinarazpena bidali zaio", "Permissions granted to {displayName}" : "Baimenak emanda {displayName}(r)i", "Could not modify permissions for {displayName}" : "Ezin izan dira {displayName}(r)en baimenak aldatu", "Permissions removed for {displayName}" : "Baimenak kendu zaizkio {displayName}(r)i", @@ -1004,6 +1014,7 @@ OC.L10N.register( "Add groups" : "Gehitu taldeak", "Add emails" : "Gehitu helbide elektronikoa", "Add circles" : "Gehitu zirkuluak", + "Integrations" : "Integrazioak", "Add federated users" : "Gehitu erabiltzaile federatuak", "Searching โฆ" : "Bilatzen โฆ", "No results" : "Emaitzarik ez", @@ -1022,7 +1033,12 @@ OC.L10N.register( "Shared items" : "Partekatutako elementuak", "Participants ({count})" : "Parte-hartzaileak ({count})", "Projects" : "Proiektuak", + "Show all media" : "Erakutsi multimedia guztia", "Show all files" : "Erakustsi fitxategi guztiak", + "Show all voice messages" : "Erakutsi ahots-mezu guztiak", + "Show all locations" : "Erakutsi kokaleku guztiak", + "Show all audio" : "Erakutsi audio guztia", + "Show all other" : "Erakutsi beste guztiak", "Meeting ID: {meetingId}" : "Bileraren ID: {meetingId}", "Your PIN: {attendeePin}" : "Zure PINa: {attendeePin}", "Attachments folder" : "Eranskinen karpeta", @@ -1079,8 +1095,11 @@ OC.L10N.register( "Link to a conversation" : "Esteka elkarrizketara", "You joined the conversation in another window or device. This is currently not supported by Nextcloud Talk so this session was closed." : "Elkarrizketara batu zara beste leiho edo gailu batean. Nextcloud Talkek ez du hau onartzen une honetan, beraz saioa itxi egin da.", "Join a conversation or start a new one" : "Batu elkarrizketa batera edo hasi berri bat", + "Deck card has been posted to the selected <a href=\"{link}\">conversation</a>" : "Deck txartel bat argitaratu da hautaturiko <a href=\"{link}\">elkarrizketan</a>", + "An error occurred while posting deck card to conversation" : "Errore bat gertatu da elkarrizketan deck txartela argitaratzean", "Post to a conversation" : "Argitaratu elkarrizketa batera", "Post to conversation" : "Argitaratu elkarrizketan", + "An error occurred while posting location to conversation" : "Errorea gertatu da elkarrizketara kokalekua bidaltzean", "Share to a conversation" : "Partekatu elkarrizketa batera", "Share to conversation" : "Partekatu elkarrizketara", "The browser you're using is not fully supported by Nextcloud Talk. Please use the latest version of Mozilla Firefox, Microsoft Edge, Google Chrome, Opera or Apple Safari." : "Nextcloud Talkek ez dauka erabateko euskarria erabiltzen ari zaren nabigatzailearentzat. Erabili Mozilla Firefox, Microsoft Edge, Google Chrome, Opera edo Apple Safari nabigatzaileen bertsio berriena.", diff --git a/l10n/eu.json b/l10n/eu.json index 69985efe4..65237d218 100644 --- a/l10n/eu.json +++ b/l10n/eu.json @@ -43,6 +43,7 @@ "The command does not exist" : "Komandoa ez da existitzen", "An error occurred while running the command. Please ask an administrator to check the logs." : "Errore bat gertatu da komandoa exekutatzean. Eskatu administratzaile bati egunkariak egiaztatzeko", "Talk updates โ
" : "Talk eguneraketak โ
", + "Reaction deleted by author" : "Egileak erreakzioa ezabatu du", "{actor} created the conversation" : "{actor} erabiltzaileak elkarrizketa sortu du", "You created the conversation" : "Elkarrizketa zuk sortu duzu", "An administrator created the conversation" : "Administratzaile batek elkarrizketa sortu du", @@ -144,6 +145,8 @@ "You stopped Matterbridge" : "Matterbridge gelditu duzu", "{actor} deleted a message" : "{actor}(e)k mezua ezabatu du", "You deleted a message" : "Mezu bat ezabatu duzu", + "{actor} deleted a reaction" : "{actor}-(e)k erreakzio bat ezabatu du", + "You deleted a reaction" : "Erreakzio bat ezabatu duzu", "{actor} cleared the history of the conversation" : "{actor} elkarrizketaren historia ezabatu du", "You cleared the history of the conversation" : "Elkarrizketaren historia ezabatu duzu", "Message deleted by author" : "Egileak mezua ezabatu du", @@ -535,6 +538,7 @@ "Everyone" : "Edonor", "Users and moderators" : "Erabiltzaileak eta moderatzaileak", "Moderators only" : "Moderatzaileak soilik", + "Disable calls" : "Desgaitu deiak", "Save changes" : "Gorde aldaketak", "Saving โฆ" : "Gordetzen โฆ", "Saved!" : "Gordeta!", @@ -653,6 +657,8 @@ "You can invite others in the participant tab of the sidebar" : "Besteak gonbidatu ditzakezu alboko barrako parte-hartzaileak fitxan", "You can invite others in the participant tab of the sidebar or share this link to invite others!" : "Besteak gonbidatu ditzakezu alboko barrako parte-hartzaileak fitxan edo esteka hau partekatuz!", "Share this link to invite others!" : "Partekatu esteka hau besteak gonbidatzeko!", + "Conversation link copied to clipboard" : "Elkarrizketaren esteka arbelera kopiatu da", + "The link could not be copied" : "Ezin izan da esteka kopiatu", "Dismiss" : "Baztertu", "Show your screen" : "Erakutsi zure pantaila", "Stop screensharing" : "Utzi pantaila partekatzeari", @@ -932,6 +938,7 @@ "Mark as unread" : "Markatu ez irakurri gisa", "Go to file" : "Joan fitxategira", "Forward message" : "Birbidali mezua", + "Message link copied to clipboard" : "Mezuaren esteka arbelera kopiatu da", "Your browser does not support playing audio files" : "Zure nabigatzaileak ez du audio fitxategiak erreproduzitzeko euskarririk", "Contact" : "Kontaktua", "{stack} in {board}" : "{stack} {board}-(e)n", @@ -983,6 +990,7 @@ "Grant all permissions" : "Eman baimen guztiak", "Remove all permissions" : "Kendu baimen guztiak", "Resend invitation" : "Birbidali gonbidapena", + "Send call notification" : "Bidali dei jakinarazpena", "Remove group and members" : "Kendu taldea eta kideak", "Remove participant" : "Kendu parte-hartzailea", "Settings for participant \"{user}\"" : "\"{user}\" parte-hartzailearen ezarpenak", @@ -992,7 +1000,9 @@ "Joined with video" : "Bideoarekin batuta", "Joined via phone" : "Telefonoarekin batuta", "Raised their hand" : "Eskua jaso dute", + "Invitation was sent to {actorId}" : "{actorId}-(e)ri gonbidapena bidali zaio", "Could not send invitation to {actorId}" : "Ezin izan da gonbidapena {actorId}(r)i bidali", + "Notification was sent to {displayName}" : "{displayName}-(e)ri jakinarazpena bidali zaio", "Permissions granted to {displayName}" : "Baimenak emanda {displayName}(r)i", "Could not modify permissions for {displayName}" : "Ezin izan dira {displayName}(r)en baimenak aldatu", "Permissions removed for {displayName}" : "Baimenak kendu zaizkio {displayName}(r)i", @@ -1002,6 +1012,7 @@ "Add groups" : "Gehitu taldeak", "Add emails" : "Gehitu helbide elektronikoa", "Add circles" : "Gehitu zirkuluak", + "Integrations" : "Integrazioak", "Add federated users" : "Gehitu erabiltzaile federatuak", "Searching โฆ" : "Bilatzen โฆ", "No results" : "Emaitzarik ez", @@ -1020,7 +1031,12 @@ "Shared items" : "Partekatutako elementuak", "Participants ({count})" : "Parte-hartzaileak ({count})", "Projects" : "Proiektuak", + "Show all media" : "Erakutsi multimedia guztia", "Show all files" : "Erakustsi fitxategi guztiak", + "Show all voice messages" : "Erakutsi ahots-mezu guztiak", + "Show all locations" : "Erakutsi kokaleku guztiak", + "Show all audio" : "Erakutsi audio guztia", + "Show all other" : "Erakutsi beste guztiak", "Meeting ID: {meetingId}" : "Bileraren ID: {meetingId}", "Your PIN: {attendeePin}" : "Zure PINa: {attendeePin}", "Attachments folder" : "Eranskinen karpeta", @@ -1077,8 +1093,11 @@ "Link to a conversation" : "Esteka elkarrizketara", "You joined the conversation in another window or device. This is currently not supported by Nextcloud Talk so this session was closed." : "Elkarrizketara batu zara beste leiho edo gailu batean. Nextcloud Talkek ez du hau onartzen une honetan, beraz saioa itxi egin da.", "Join a conversation or start a new one" : "Batu elkarrizketa batera edo hasi berri bat", + "Deck card has been posted to the selected <a href=\"{link}\">conversation</a>" : "Deck txartel bat argitaratu da hautaturiko <a href=\"{link}\">elkarrizketan</a>", + "An error occurred while posting deck card to conversation" : "Errore bat gertatu da elkarrizketan deck txartela argitaratzean", "Post to a conversation" : "Argitaratu elkarrizketa batera", "Post to conversation" : "Argitaratu elkarrizketan", + "An error occurred while posting location to conversation" : "Errorea gertatu da elkarrizketara kokalekua bidaltzean", "Share to a conversation" : "Partekatu elkarrizketa batera", "Share to conversation" : "Partekatu elkarrizketara", "The browser you're using is not fully supported by Nextcloud Talk. Please use the latest version of Mozilla Firefox, Microsoft Edge, Google Chrome, Opera or Apple Safari." : "Nextcloud Talkek ez dauka erabateko euskarria erabiltzen ari zaren nabigatzailearentzat. Erabili Mozilla Firefox, Microsoft Edge, Google Chrome, Opera edo Apple Safari nabigatzaileen bertsio berriena.", diff --git a/l10n/fi.js b/l10n/fi.js index 5ba99bbb9..b301aa22f 100644 --- a/l10n/fi.js +++ b/l10n/fi.js @@ -751,6 +751,7 @@ OC.L10N.register( "Add groups" : "Lisรครค ryhmiรค", "Add emails" : "Lisรครค sรคhkรถpostiosoitteita", "Add circles" : "Lisรครค piirejรค", + "Integrations" : "Integraatiot", "Add federated users" : "Lisรครค federoituja kรคyttรคjiรค", "Searching โฆ" : "Haetaanโฆ", "No results" : "Ei tuloksia", diff --git a/l10n/fi.json b/l10n/fi.json index a3d9145ff..aed5e1ff9 100644 --- a/l10n/fi.json +++ b/l10n/fi.json @@ -749,6 +749,7 @@ "Add groups" : "Lisรครค ryhmiรค", "Add emails" : "Lisรครค sรคhkรถpostiosoitteita", "Add circles" : "Lisรครค piirejรค", + "Integrations" : "Integraatiot", "Add federated users" : "Lisรครค federoituja kรคyttรคjiรค", "Searching โฆ" : "Haetaanโฆ", "No results" : "Ei tuloksia", diff --git a/l10n/fr.js b/l10n/fr.js index 07b9a44f6..f85cd7266 100644 --- a/l10n/fr.js +++ b/l10n/fr.js @@ -1022,6 +1022,7 @@ OC.L10N.register( "Add groups" : "Ajouter des groupes", "Add emails" : "Ajouter des adresses emails", "Add circles" : "Ajouter des cercles", + "Integrations" : "Intรฉgrations", "Add federated users" : "Ajouter des utilisateurs fรฉdรฉrรฉs", "Searching โฆ" : "Recherche โฆ", "No results" : "Aucun rรฉsultat", diff --git a/l10n/fr.json b/l10n/fr.json index 2a63b0d3b..74bab61b4 100644 --- a/l10n/fr.json +++ b/l10n/fr.json @@ -1020,6 +1020,7 @@ "Add groups" : "Ajouter des groupes", "Add emails" : "Ajouter des adresses emails", "Add circles" : "Ajouter des cercles", + "Integrations" : "Intรฉgrations", "Add federated users" : "Ajouter des utilisateurs fรฉdรฉrรฉs", "Searching โฆ" : "Recherche โฆ", "No results" : "Aucun rรฉsultat", diff --git a/l10n/gl.js b/l10n/gl.js index 5d6e73639..dea37509b 100644 --- a/l10n/gl.js +++ b/l10n/gl.js @@ -862,6 +862,7 @@ OC.L10N.register( "Add groups" : "Engadir grupos", "Add emails" : "Engadir correos", "Add circles" : "Engadir cรญrculos", + "Integrations" : "Integraciรณns", "Searching โฆ" : "Buscandoโฆ", "No results" : "Sen resultados", "Search for more users" : "Buscar mรกis usuarios", diff --git a/l10n/gl.json b/l10n/gl.json index 9198961a6..139460b84 100644 --- a/l10n/gl.json +++ b/l10n/gl.json @@ -860,6 +860,7 @@ "Add groups" : "Engadir grupos", "Add emails" : "Engadir correos", "Add circles" : "Engadir cรญrculos", + "Integrations" : "Integraciรณns", "Searching โฆ" : "Buscandoโฆ", "No results" : "Sen resultados", "Search for more users" : "Buscar mรกis usuarios", diff --git a/l10n/he.js b/l10n/he.js index 09a98f505..ab4aeee42 100644 --- a/l10n/he.js +++ b/l10n/he.js @@ -523,6 +523,7 @@ OC.L10N.register( "Add groups" : "ืืืกืคืช ืงืืืฆืืช", "Add emails" : "ืืืกืคืช ืืชืืืืช ืืืืดื", "Add circles" : "ืืืกืคืช ืืขืืืื", + "Integrations" : "ืฉืืืืืื", "Searching โฆ" : "ืืชืืฆืข ืืืคืืฉโฆ", "No results" : "ืืื ืชืืฆืืืช", "Add users or groups" : "ืืืกืคืช ืืฉืชืืฉืื ืื ืงืืืฆืืช", diff --git a/l10n/he.json b/l10n/he.json index 1758cb08e..19d50fe9b 100644 --- a/l10n/he.json +++ b/l10n/he.json @@ -521,6 +521,7 @@ "Add groups" : "ืืืกืคืช ืงืืืฆืืช", "Add emails" : "ืืืกืคืช ืืชืืืืช ืืืืดื", "Add circles" : "ืืืกืคืช ืืขืืืื", + "Integrations" : "ืฉืืืืืื", "Searching โฆ" : "ืืชืืฆืข ืืืคืืฉโฆ", "No results" : "ืืื ืชืืฆืืืช", "Add users or groups" : "ืืืกืคืช ืืฉืชืืฉืื ืื ืงืืืฆืืช", diff --git a/l10n/hr.js b/l10n/hr.js index 8db3c1115..d4e9c1c85 100644 --- a/l10n/hr.js +++ b/l10n/hr.js @@ -987,6 +987,7 @@ OC.L10N.register( "Add groups" : "Dodaj grupe", "Add emails" : "Dodaj adrese e-poลกte", "Add circles" : "Dodaj krugove", + "Integrations" : "Integracije", "Searching โฆ" : "Traลพenjeโฆ", "No results" : "Nema rezultata", "Search for more users" : "Potraลพi joลก korisnika", diff --git a/l10n/hr.json b/l10n/hr.json index b36b8fdcf..514e78ebf 100644 --- a/l10n/hr.json +++ b/l10n/hr.json @@ -985,6 +985,7 @@ "Add groups" : "Dodaj grupe", "Add emails" : "Dodaj adrese e-poลกte", "Add circles" : "Dodaj krugove", + "Integrations" : "Integracije", "Searching โฆ" : "Traลพenjeโฆ", "No results" : "Nema rezultata", "Search for more users" : "Potraลพi joลก korisnika", diff --git a/l10n/hu.js b/l10n/hu.js index 4dbd61598..73ab6e87b 100644 --- a/l10n/hu.js +++ b/l10n/hu.js @@ -1035,6 +1035,7 @@ OC.L10N.register( "Add groups" : "Csoportok hozzรกadรกsa", "Add emails" : "E-mailek hozzรกadรกsa", "Add circles" : "Kรถrรถk hozzรกadรกsa", + "Integrations" : "Integrรกciรณk", "Add federated users" : "Fรถderรกlt felhasznรกlรณk hozzรกadรกsa", "Searching โฆ" : "Keresรฉsโฆ", "No results" : "Nincs talรกlat", diff --git a/l10n/hu.json b/l10n/hu.json index c21ad89d3..67891e000 100644 --- a/l10n/hu.json +++ b/l10n/hu.json @@ -1033,6 +1033,7 @@ "Add groups" : "Csoportok hozzรกadรกsa", "Add emails" : "E-mailek hozzรกadรกsa", "Add circles" : "Kรถrรถk hozzรกadรกsa", + "Integrations" : "Integrรกciรณk", "Add federated users" : "Fรถderรกlt felhasznรกlรณk hozzรกadรกsa", "Searching โฆ" : "Keresรฉsโฆ", "No results" : "Nincs talรกlat", diff --git a/l10n/it.js b/l10n/it.js index c54384ccc..9bc3ce204 100644 --- a/l10n/it.js +++ b/l10n/it.js @@ -1017,6 +1017,7 @@ OC.L10N.register( "Add groups" : "Aggiungi gruppi", "Add emails" : "Aggiungi email", "Add circles" : "Aggiungi cerchie", + "Integrations" : "Integrazioni", "Add federated users" : "Aggiungi utenti federati", "Searching โฆ" : "Ricerca in corso...", "No results" : "Nessun risultato", diff --git a/l10n/it.json b/l10n/it.json index 308947dca..039374dcb 100644 --- a/l10n/it.json +++ b/l10n/it.json @@ -1015,6 +1015,7 @@ "Add groups" : "Aggiungi gruppi", "Add emails" : "Aggiungi email", "Add circles" : "Aggiungi cerchie", + "Integrations" : "Integrazioni", "Add federated users" : "Aggiungi utenti federati", "Searching โฆ" : "Ricerca in corso...", "No results" : "Nessun risultato", diff --git a/l10n/ja.js b/l10n/ja.js index 0d4b40943..38acad659 100644 --- a/l10n/ja.js +++ b/l10n/ja.js @@ -969,6 +969,7 @@ OC.L10N.register( "Add groups" : "ใฐใซใผใใ่ฟฝๅ ", "Add emails" : "ใกใผใซใ่ฟฝๅ ", "Add circles" : "ใตใผใฏใซใ่ฟฝๅ ", + "Integrations" : "ใคใณใใฐใฌใผใทใงใณ", "Searching โฆ" : "ๆค็ดขใใฆใใพใโฆ", "No results" : "่ฉฒๅฝใชใ", "Search for more users" : "ใใใซใฆใผใถใผใๆขใ", diff --git a/l10n/ja.json b/l10n/ja.json index a693959e6..96c18355e 100644 --- a/l10n/ja.json +++ b/l10n/ja.json @@ -967,6 +967,7 @@ "Add groups" : "ใฐใซใผใใ่ฟฝๅ ", "Add emails" : "ใกใผใซใ่ฟฝๅ ", "Add circles" : "ใตใผใฏใซใ่ฟฝๅ ", + "Integrations" : "ใคใณใใฐใฌใผใทใงใณ", "Searching โฆ" : "ๆค็ดขใใฆใใพใโฆ", "No results" : "่ฉฒๅฝใชใ", "Search for more users" : "ใใใซใฆใผใถใผใๆขใ", diff --git a/l10n/nb.js b/l10n/nb.js index 1eeaecc90..c6e9a9ead 100644 --- a/l10n/nb.js +++ b/l10n/nb.js @@ -530,6 +530,7 @@ OC.L10N.register( "Demote from moderator" : "Fjern moderatorstatus", "Promote to moderator" : "Gi moderatorstatus", "Remove participant" : "Fjern deltaker", + "Integrations" : "Integreringer", "Searching โฆ" : "Sรธker ...", "No results" : "Ingen resultater", "Add users or groups" : "Legg til bruker eller gruppe", diff --git a/l10n/nb.json b/l10n/nb.json index 5f1fd068f..6c50a04d8 100644 --- a/l10n/nb.json +++ b/l10n/nb.json @@ -528,6 +528,7 @@ "Demote from moderator" : "Fjern moderatorstatus", "Promote to moderator" : "Gi moderatorstatus", "Remove participant" : "Fjern deltaker", + "Integrations" : "Integreringer", "Searching โฆ" : "Sรธker ...", "No results" : "Ingen resultater", "Add users or groups" : "Legg til bruker eller gruppe", diff --git a/l10n/nl.js b/l10n/nl.js index c0e20363e..7d4c326b5 100644 --- a/l10n/nl.js +++ b/l10n/nl.js @@ -1010,6 +1010,7 @@ OC.L10N.register( "Add groups" : "Toevoegen groepen", "Add emails" : "Toevoegen e-mailadressen", "Add circles" : "Toevoegen kringen", + "Integrations" : "Integraties", "Add federated users" : "Voeg gefedereerde gebruikers toe", "Searching โฆ" : "Zoeken ...", "No results" : "Geen resultaten", diff --git a/l10n/nl.json b/l10n/nl.json index 3c8feecfb..3c529ff05 100644 --- a/l10n/nl.json +++ b/l10n/nl.json @@ -1008,6 +1008,7 @@ "Add groups" : "Toevoegen groepen", "Add emails" : "Toevoegen e-mailadressen", "Add circles" : "Toevoegen kringen", + "Integrations" : "Integraties", "Add federated users" : "Voeg gefedereerde gebruikers toe", "Searching โฆ" : "Zoeken ...", "No results" : "Geen resultaten", diff --git a/l10n/oc.js b/l10n/oc.js index 52673e2de..8721d8b03 100644 --- a/l10n/oc.js +++ b/l10n/oc.js @@ -902,6 +902,7 @@ OC.L10N.register( "Add groups" : "Apondre grops", "Add emails" : "Apondre emails", "Add circles" : "Apondre cercles", + "Integrations" : "Integracions", "Add federated users" : "Apondre dโutilizaires federats", "Searching โฆ" : "Recรจrcaโฆ", "No results" : "Pas cap de resultat", @@ -982,6 +983,9 @@ OC.L10N.register( "Join a conversation or start a new one" : "Rejรณnher una conversacion o ne crear una", "Post to a conversation" : "Publicar dins una conversacion", "Post to conversation" : "Publicar a la conversacion", + "An error occurred while posting location to conversation" : "Error en publicant la localizacion dins la conversacion", + "Share to a conversation" : "Partejar dins una conversacion", + "Share to conversation" : "Partejar dins una conversacion", "The browser you're using is not fully supported by Nextcloud Talk. Please use the latest version of Mozilla Firefox, Microsoft Edge, Google Chrome, Opera or Apple Safari." : "Lo navegador quโutilizatz es pas complรจtament pres en cargar per Nextcloud Talk. Mercรฉs dโutilizar la darriรจra version de Mozilla Firefox, Microsoft Edge, Google Chrome o Apple Safari.", "Calls are not supported in your browser" : "Vรฒstre navegador pren pas encarga las sonadas", "Access to microphone is only possible with HTTPS" : "Lโaccรจs al microfรฒn es sonque possibla amb HTTPS", diff --git a/l10n/oc.json b/l10n/oc.json index 85e5e61ae..040c95eaa 100644 --- a/l10n/oc.json +++ b/l10n/oc.json @@ -900,6 +900,7 @@ "Add groups" : "Apondre grops", "Add emails" : "Apondre emails", "Add circles" : "Apondre cercles", + "Integrations" : "Integracions", "Add federated users" : "Apondre dโutilizaires federats", "Searching โฆ" : "Recรจrcaโฆ", "No results" : "Pas cap de resultat", @@ -980,6 +981,9 @@ "Join a conversation or start a new one" : "Rejรณnher una conversacion o ne crear una", "Post to a conversation" : "Publicar dins una conversacion", "Post to conversation" : "Publicar a la conversacion", + "An error occurred while posting location to conversation" : "Error en publicant la localizacion dins la conversacion", + "Share to a conversation" : "Partejar dins una conversacion", + "Share to conversation" : "Partejar dins una conversacion", "The browser you're using is not fully supported by Nextcloud Talk. Please use the latest version of Mozilla Firefox, Microsoft Edge, Google Chrome, Opera or Apple Safari." : "Lo navegador quโutilizatz es pas complรจtament pres en cargar per Nextcloud Talk. Mercรฉs dโutilizar la darriรจra version de Mozilla Firefox, Microsoft Edge, Google Chrome o Apple Safari.", "Calls are not supported in your browser" : "Vรฒstre navegador pren pas encarga las sonadas", "Access to microphone is only possible with HTTPS" : "Lโaccรจs al microfรฒn es sonque possibla amb HTTPS", diff --git a/l10n/pl.js b/l10n/pl.js index 8060731a0..142364b3a 100644 --- a/l10n/pl.js +++ b/l10n/pl.js @@ -985,6 +985,7 @@ OC.L10N.register( "Upload new files" : "Wyลlij nowe pliki", "Share from Files" : "Udostฤpnij z Plikรณw", "Add emoji" : "Dodaj emoji", + "Send silently" : "Wyลlij po cichu", "Send message" : "Wyลlij wiadomoลฤ", "File to share" : "Plik do udostฤpnienia", "This conversation has been locked" : "Ta rozmowa zostaลa zablokowana", @@ -1035,6 +1036,7 @@ OC.L10N.register( "Add groups" : "Dodaj grupy", "Add emails" : "Dodaj e-maile", "Add circles" : "Dodaj krฤgi", + "Integrations" : "Integracje", "Add federated users" : "Dodaj uลผytkownikรณw federacyjnych", "Searching โฆ" : "Wyszukiwanieโฆ", "No results" : "Brak wynikรณw", diff --git a/l10n/pl.json b/l10n/pl.json index 63968f875..6d274b72a 100644 --- a/l10n/pl.json +++ b/l10n/pl.json @@ -983,6 +983,7 @@ "Upload new files" : "Wyลlij nowe pliki", "Share from Files" : "Udostฤpnij z Plikรณw", "Add emoji" : "Dodaj emoji", + "Send silently" : "Wyลlij po cichu", "Send message" : "Wyลlij wiadomoลฤ", "File to share" : "Plik do udostฤpnienia", "This conversation has been locked" : "Ta rozmowa zostaลa zablokowana", @@ -1033,6 +1034,7 @@ "Add groups" : "Dodaj grupy", "Add emails" : "Dodaj e-maile", "Add circles" : "Dodaj krฤgi", + "Integrations" : "Integracje", "Add federated users" : "Dodaj uลผytkownikรณw federacyjnych", "Searching โฆ" : "Wyszukiwanieโฆ", "No results" : "Brak wynikรณw", diff --git a/l10n/pt_BR.js b/l10n/pt_BR.js index d78650bfa..79c721ed6 100644 --- a/l10n/pt_BR.js +++ b/l10n/pt_BR.js @@ -549,6 +549,7 @@ OC.L10N.register( "Everyone" : "Qualquer um", "Users and moderators" : "Usuรกrios e moderadores", "Moderators only" : "Somente moderadores", + "Disable calls" : "Desativar chamadas", "Save changes" : "Salvar alteraรงรตes", "Saving โฆ" : "Salvando...", "Saved!" : "Salvo!", @@ -604,6 +605,7 @@ OC.L10N.register( "Downloading โฆ" : "Baixandoโฆ", "Install Talk Matterbridge" : "Instalar Talk Matterbridge", "Installed version: {version}" : "Versรฃo instalada: {version}", + "You can install the Matterbridge to link Nextcloud Talk to some other services, visit their {linkstart1}GitHub page{linkend} for more details. Downloading and installing the app can take a while. In case it times out, please install it manually from the {linkstart2}Nextcloud App Store{linkend}." : "Vocรช pode instalar o Matterbridge para vincular o Nextcloud Talk a alguns outros serviรงos, visite a {linkstart1}pรกgina do GitHub{linkend} para obter mais detalhes. Baixar e instalar o aplicativo pode demorar um pouco. Caso expire, instale-o manualmente a partir da {linkstart2}Nextcloud App Store{linkend}.", "Matterbridge binary has incorrect permissions. Please make sure the Matterbridge binary file is owned by the correct user and can be executed. It can be found in \"/.../nextcloud/apps/talk_matterbridge/bin/\"." : "O binรกrio Matterbridge tem permissรตes incorretas. Certifique-se de que o arquivo binรกrio Matterbridge pertence ao usuรกrio correto e pode ser executado. Ele pode ser encontrado em \"/.../nextcloud/apps/talk_matterbridge/bin/\".", "Matterbridge binary was not found or couldn't be executed." : "O binรกrio Matterbridge nรฃo foi encontrado ou nรฃo pรดde ser executado.", "You can also set the path to the Matterbridge binary manually via the config. Check the {linkstart}Matterbridge integration documentation{linkend} for more information." : "Vocรช tambรฉm pode definir o caminho para o binรกrio Matterbridge manualmente por meio da configuraรงรฃo. Verifique a {linkstart}documentaรงรฃo de integraรงรฃo do Matterbridge{linkend} para mais informaรงรตes.", @@ -672,6 +674,8 @@ OC.L10N.register( "You can invite others in the participant tab of the sidebar" : "Vocรช pode convidar outros na guia do participante da barra lateral", "You can invite others in the participant tab of the sidebar or share this link to invite others!" : "Vocรช pode convidar outros na guia \"Participantes\" da barra lateral ou compartilhar esse link para convidar outras pessoas!", "Share this link to invite others!" : "Compartilhe este link para convidar outros!", + "Conversation link copied to clipboard" : "Link da conversa copiado para a รกrea de transferรชncia", + "The link could not be copied" : "O link nรฃo pรดde ser copiado", "Dismiss" : "Dispensar", "Show your screen" : "Exibir sua tela", "Stop screensharing" : "Parar de compartilhar tela", @@ -955,6 +959,7 @@ OC.L10N.register( "Mark as unread" : "Marcar como nรฃo lido", "Go to file" : "Ir para o arquivo", "Forward message" : "Enviar mensagem", + "Message link copied to clipboard" : "Link da mensagem copiado para a รกrea de transferรชncia", "Your browser does not support playing audio files" : "Seu navegador nรฃo suporta a reproduรงรฃo de arquivos de รกudio", "Contact" : "Contato", "{stack} in {board}" : "{stack} de {board}", @@ -980,6 +985,7 @@ OC.L10N.register( "Upload new files" : "Enviar novos arquivos", "Share from Files" : "Compartilhar de Arquivos", "Add emoji" : "Adicionar emoji", + "Send silently" : "Enviar silenciosamente", "Send message" : "Enviar mensagem", "File to share" : "Arquivo a compartilhar", "This conversation has been locked" : "Esta conversa estรก bloqueada", @@ -1007,6 +1013,7 @@ OC.L10N.register( "Grant all permissions" : "Conceder todas as permissรตes", "Remove all permissions" : "Remova todas as permissรตes", "Resend invitation" : "Reenviar convite", + "Send call notification" : "Enviar notificaรงรฃo de chamada", "Remove group and members" : "Remover grupo e membros", "Remove participant" : "Remover participante", "Settings for participant \"{user}\"" : "Configuraรงรตes para o participante \"{user}\"", @@ -1016,7 +1023,10 @@ OC.L10N.register( "Joined with video" : "Entrou com video", "Joined via phone" : "Entrou via telefone", "Raised their hand" : "Levantou a mรฃo", + "Invitation was sent to {actorId}" : "O convite foi enviado para {actorId}", "Could not send invitation to {actorId}" : "Nรฃo foi possรญvel enviar o convite para {actorId}", + "Notification was sent to {displayName}" : "A notificaรงรฃo foi enviada para {displayName}", + "Could not send notification to {displayName}" : "Nรฃo foi possรญvel enviar a notificaรงรฃo para {displayName}", "Permissions granted to {displayName}" : "Permissรตes concedidas a {displayName} ", "Could not modify permissions for {displayName}" : "Nรฃo foi possรญvel modificar as permissรตes para {displayName} ", "Permissions removed for {displayName}" : "Permissรตes removidas para {displayName} ", @@ -1026,6 +1036,7 @@ OC.L10N.register( "Add groups" : "Adicionar grupos", "Add emails" : "Adicionar e-mails", "Add circles" : "Adicionar cรญrculos", + "Integrations" : "Integraรงรตes", "Add federated users" : "Adicionar usuรกrios federados", "Searching โฆ" : "Pesquisando...", "No results" : "Nenhum resultado", @@ -1109,6 +1120,8 @@ OC.L10N.register( "Link to a conversation" : "Link para uma conversa", "You joined the conversation in another window or device. This is currently not supported by Nextcloud Talk so this session was closed." : "Vocรช ingressou na conversa em outra janela ou dispositivo. No momento, isso nรฃo รฉ suportado pelo Nextcloud Talk e portanto esta sessรฃo foi encerrada.", "Join a conversation or start a new one" : "Junte-se a uma conversa ou inicie outra", + "Deck card has been posted to the selected <a href=\"{link}\">conversation</a>" : "A carta do Deck foi postada na selecionado <a href=\"{link}\">conversaรงรฃo</a>", + "An error occurred while posting deck card to conversation" : "Ocorreu um erro ao postar o cartรฃo do Deck na conversa", "Post to a conversation" : "Enviar para uma conversa", "Post to conversation" : "Enviar para a conversa", "Location has been posted to the selected <a href=\"{link}\">conversation</a>" : "A localizaรงรฃo foi postada para o selecionado <a href=\"{link}\">conversaรงรฃo</a>", diff --git a/l10n/pt_BR.json b/l10n/pt_BR.json index e142aed2e..647bd48c3 100644 --- a/l10n/pt_BR.json +++ b/l10n/pt_BR.json @@ -547,6 +547,7 @@ "Everyone" : "Qualquer um", "Users and moderators" : "Usuรกrios e moderadores", "Moderators only" : "Somente moderadores", + "Disable calls" : "Desativar chamadas", "Save changes" : "Salvar alteraรงรตes", "Saving โฆ" : "Salvando...", "Saved!" : "Salvo!", @@ -602,6 +603,7 @@ "Downloading โฆ" : "Baixandoโฆ", "Install Talk Matterbridge" : "Instalar Talk Matterbridge", "Installed version: {version}" : "Versรฃo instalada: {version}", + "You can install the Matterbridge to link Nextcloud Talk to some other services, visit their {linkstart1}GitHub page{linkend} for more details. Downloading and installing the app can take a while. In case it times out, please install it manually from the {linkstart2}Nextcloud App Store{linkend}." : "Vocรช pode instalar o Matterbridge para vincular o Nextcloud Talk a alguns outros serviรงos, visite a {linkstart1}pรกgina do GitHub{linkend} para obter mais detalhes. Baixar e instalar o aplicativo pode demorar um pouco. Caso expire, instale-o manualmente a partir da {linkstart2}Nextcloud App Store{linkend}.", "Matterbridge binary has incorrect permissions. Please make sure the Matterbridge binary file is owned by the correct user and can be executed. It can be found in \"/.../nextcloud/apps/talk_matterbridge/bin/\"." : "O binรกrio Matterbridge tem permissรตes incorretas. Certifique-se de que o arquivo binรกrio Matterbridge pertence ao usuรกrio correto e pode ser executado. Ele pode ser encontrado em \"/.../nextcloud/apps/talk_matterbridge/bin/\".", "Matterbridge binary was not found or couldn't be executed." : "O binรกrio Matterbridge nรฃo foi encontrado ou nรฃo pรดde ser executado.", "You can also set the path to the Matterbridge binary manually via the config. Check the {linkstart}Matterbridge integration documentation{linkend} for more information." : "Vocรช tambรฉm pode definir o caminho para o binรกrio Matterbridge manualmente por meio da configuraรงรฃo. Verifique a {linkstart}documentaรงรฃo de integraรงรฃo do Matterbridge{linkend} para mais informaรงรตes.", @@ -670,6 +672,8 @@ "You can invite others in the participant tab of the sidebar" : "Vocรช pode convidar outros na guia do participante da barra lateral", "You can invite others in the participant tab of the sidebar or share this link to invite others!" : "Vocรช pode convidar outros na guia \"Participantes\" da barra lateral ou compartilhar esse link para convidar outras pessoas!", "Share this link to invite others!" : "Compartilhe este link para convidar outros!", + "Conversation link copied to clipboard" : "Link da conversa copiado para a รกrea de transferรชncia", + "The link could not be copied" : "O link nรฃo pรดde ser copiado", "Dismiss" : "Dispensar", "Show your screen" : "Exibir sua tela", "Stop screensharing" : "Parar de compartilhar tela", @@ -953,6 +957,7 @@ "Mark as unread" : "Marcar como nรฃo lido", "Go to file" : "Ir para o arquivo", "Forward message" : "Enviar mensagem", + "Message link copied to clipboard" : "Link da mensagem copiado para a รกrea de transferรชncia", "Your browser does not support playing audio files" : "Seu navegador nรฃo suporta a reproduรงรฃo de arquivos de รกudio", "Contact" : "Contato", "{stack} in {board}" : "{stack} de {board}", @@ -978,6 +983,7 @@ "Upload new files" : "Enviar novos arquivos", "Share from Files" : "Compartilhar de Arquivos", "Add emoji" : "Adicionar emoji", + "Send silently" : "Enviar silenciosamente", "Send message" : "Enviar mensagem", "File to share" : "Arquivo a compartilhar", "This conversation has been locked" : "Esta conversa estรก bloqueada", @@ -1005,6 +1011,7 @@ "Grant all permissions" : "Conceder todas as permissรตes", "Remove all permissions" : "Remova todas as permissรตes", "Resend invitation" : "Reenviar convite", + "Send call notification" : "Enviar notificaรงรฃo de chamada", "Remove group and members" : "Remover grupo e membros", "Remove participant" : "Remover participante", "Settings for participant \"{user}\"" : "Configuraรงรตes para o participante \"{user}\"", @@ -1014,7 +1021,10 @@ "Joined with video" : "Entrou com video", "Joined via phone" : "Entrou via telefone", "Raised their hand" : "Levantou a mรฃo", + "Invitation was sent to {actorId}" : "O convite foi enviado para {actorId}", "Could not send invitation to {actorId}" : "Nรฃo foi possรญvel enviar o convite para {actorId}", + "Notification was sent to {displayName}" : "A notificaรงรฃo foi enviada para {displayName}", + "Could not send notification to {displayName}" : "Nรฃo foi possรญvel enviar a notificaรงรฃo para {displayName}", "Permissions granted to {displayName}" : "Permissรตes concedidas a {displayName} ", "Could not modify permissions for {displayName}" : "Nรฃo foi possรญvel modificar as permissรตes para {displayName} ", "Permissions removed for {displayName}" : "Permissรตes removidas para {displayName} ", @@ -1024,6 +1034,7 @@ "Add groups" : "Adicionar grupos", "Add emails" : "Adicionar e-mails", "Add circles" : "Adicionar cรญrculos", + "Integrations" : "Integraรงรตes", "Add federated users" : "Adicionar usuรกrios federados", "Searching โฆ" : "Pesquisando...", "No results" : "Nenhum resultado", @@ -1107,6 +1118,8 @@ "Link to a conversation" : "Link para uma conversa", "You joined the conversation in another window or device. This is currently not supported by Nextcloud Talk so this session was closed." : "Vocรช ingressou na conversa em outra janela ou dispositivo. No momento, isso nรฃo รฉ suportado pelo Nextcloud Talk e portanto esta sessรฃo foi encerrada.", "Join a conversation or start a new one" : "Junte-se a uma conversa ou inicie outra", + "Deck card has been posted to the selected <a href=\"{link}\">conversation</a>" : "A carta do Deck foi postada na selecionado <a href=\"{link}\">conversaรงรฃo</a>", + "An error occurred while posting deck card to conversation" : "Ocorreu um erro ao postar o cartรฃo do Deck na conversa", "Post to a conversation" : "Enviar para uma conversa", "Post to conversation" : "Enviar para a conversa", "Location has been posted to the selected <a href=\"{link}\">conversation</a>" : "A localizaรงรฃo foi postada para o selecionado <a href=\"{link}\">conversaรงรฃo</a>", diff --git a/l10n/ro.js b/l10n/ro.js index 255153cc0..9bc0f4f8b 100644 --- a/l10n/ro.js +++ b/l10n/ro.js @@ -1,6 +1,33 @@ OC.L10N.register( "spreed", { + "a conversation" : "o conversaศie", + "(Duration %s)" : "(Durata %s)", + "You attended a call with {user1}" : "Aศi participat la un apel cu {user1}", + "You attended a call with {user1} and {user2}" : "Aศi participat la un apel cu {user1} ศi {user2}.", + "You attended a call with {user1}, {user2} and {user3}" : "Aศi participat la un apel cu {user1}, {user2} ศi {user3}", + "You attended a call with {user1}, {user2}, {user3} and {user4}" : "Aศi participat la un apel cu {user1}, {user2}, {user3} ศi {user4}.", + "You attended a call with {user1}, {user2}, {user3}, {user4} and {user5}" : "Aศi participat la un apel cu {user1}, {user2}, {user3}, {user4} ศi {user5}", + "{actor} invited you to {call}" : "{actor} te-a invitat la {call}", + "You were invited to a <strong>conversation</strong> or had a <strong>call</strong>" : "Aศi fost invitat la o <strong>conversaศie</strong> sau aศi primit un <strong>apel</strong>", + "Other activities" : "Alte activitฤศi", + "Talk" : "Discuศie", + "Guest" : "Invitat", + "Welcome to Nextcloud Talk!\nIn this conversation you will be informed about new features available in Nextcloud Talk." : "Bine aศi venit la Nextcloud Talk!\nรn aceastฤ conversaศie veศi fi informat despre noile caracteristici disponibile รฎn Nextcloud Talk.", + "New in Talk %s" : "Nou รฎn Discuศii %s", + "- Microsoft Edge and Safari can now be used to participate in audio and video calls" : "- Microsoft Edge ศi Safari pot fi folosite acum pentru a participa la apeluri audio ศi video", + "- One-to-one conversations are now persistent and cannot be turned into group conversations by accident anymore. Also when one of the participants leaves the conversation, the conversation is not automatically deleted anymore. Only if both participants leave, the conversation is deleted from the server" : "- Conversaศiile individuale sunt acum persistente ศi nu mai pot fi transformate din greศealฤ รฎn conversaศii de grup. De asemenea, atunci cรขnd unul dintre participanศi pฤrฤseศte conversaศia, aceasta nu mai este ศtearsฤ automat. Numai dacฤ ambii participanศi pleacฤ, conversaศia este ศtearsฤ de pe server", + "- You can now notify all participants by posting \"@all\" into the chat" : "- Acum puteศi notifica toศi participanศii prin postarea \"@all\" รฎn chat.", + "- With the \"arrow-up\" key you can repost your last message" : "- Cu ajutorul tastei \"sฤgeatฤ รฎn sus\" puteศi reposta ultimul mesaj.", + "- Talk can now have commands, send \"/help\" as a chat message to see if your administrator configured some" : "- Talk poate avea acum comenzi, trimiteศi \"/help\" ca mesaj de chat pentru a vedea dacฤ administratorul dvs. a configurat cรขteva", + "- With projects you can create quick links between conversations, files and other items" : "- Cu ajutorul proiectelor puteศi crea legฤturi rapide รฎntre conversaศii, fiศiere ศi alte elemente.", + "- You can now mention guests in the chat" : "- Acum puteศi menศiona oaspeศii รฎn chat", + "- Conversations can now have a lobby. This will allow moderators to join the chat and call already to prepare the meeting, while users and guests have to wait" : "- Conversaศiile pot avea acum un lobby. Acest lucru va permite moderatorilor sฤ se alฤture conversaศiei ศi sฤ sune deja pentru a pregฤti รฎntรขlnirea, รฎn timp ce utilizatorii ศi invitaศii trebuie sฤ aศtepte", + "- You can now directly reply to messages giving the other users more context what your message is about" : "- Acum puteศi rฤspunde direct la mesaje, oferindu-le celorlalศi utilizatori mai mult context despre ce este vorba รฎn mesajul dvs.", + "- Searching for conversations and participants will now also filter your existing conversations, making it much easier to find previous conversations" : "- Cฤutarea conversaศiilor ศi a participanศilor va filtra acum ศi conversaศiile existente, facilitรขnd astfel gฤsirea conversaศiilor anterioare", + "- You can now add custom user groups to conversations when the circles app is installed" : "- Acum puteศi adฤuga grupuri de utilizatori personalizaศi la conversaศii atunci cรขnd este instalatฤ aplicaศia cercuri", + "- Check out the new grid and call view" : "- Consultaศi noua grilฤ ศi vizualizarea apelurilor", + "- You can now upload and drag'n'drop files directly from your device into the chat" : "- Acum puteศi รฎncฤrca ศi glisa fiศiere direct de pe dispozitiv รฎn chat.", "File is too big" : "Fiศierul este prea mare", "Invalid file provided" : "Numele fiศierului pe care l-ai oferit este invalid", "Invalid image" : "Imagine invalidฤ", @@ -263,6 +290,7 @@ OC.L10N.register( "Pending" : "รn aศteptare", "Error" : "Eroare", "Blocked" : "Blocat", + "Active" : "Activ", "Saved" : "Salvat", "OK" : "OK", "Copy link" : "Copizฤ link", @@ -288,7 +316,10 @@ OC.L10N.register( "Loading" : "Loading", "Groups" : "Grupuri", "Circles" : "Cercuri", + "Create a new group conversation" : "Creaศi o nouฤ conversaศie de grup", "Password protect" : "Protejare cu parolฤ", + "Create conversation" : "Creaศi o conversaศie", + "Add participants" : "Adฤugaศi participanศi", "Close" : "รnchide", "Reply" : "Rฤspunde", "Contact" : "Contact", diff --git a/l10n/ro.json b/l10n/ro.json index 1e0f5decb..cb2166a86 100644 --- a/l10n/ro.json +++ b/l10n/ro.json @@ -1,4 +1,31 @@ { "translations": { + "a conversation" : "o conversaศie", + "(Duration %s)" : "(Durata %s)", + "You attended a call with {user1}" : "Aศi participat la un apel cu {user1}", + "You attended a call with {user1} and {user2}" : "Aศi participat la un apel cu {user1} ศi {user2}.", + "You attended a call with {user1}, {user2} and {user3}" : "Aศi participat la un apel cu {user1}, {user2} ศi {user3}", + "You attended a call with {user1}, {user2}, {user3} and {user4}" : "Aศi participat la un apel cu {user1}, {user2}, {user3} ศi {user4}.", + "You attended a call with {user1}, {user2}, {user3}, {user4} and {user5}" : "Aศi participat la un apel cu {user1}, {user2}, {user3}, {user4} ศi {user5}", + "{actor} invited you to {call}" : "{actor} te-a invitat la {call}", + "You were invited to a <strong>conversation</strong> or had a <strong>call</strong>" : "Aศi fost invitat la o <strong>conversaศie</strong> sau aศi primit un <strong>apel</strong>", + "Other activities" : "Alte activitฤศi", + "Talk" : "Discuศie", + "Guest" : "Invitat", + "Welcome to Nextcloud Talk!\nIn this conversation you will be informed about new features available in Nextcloud Talk." : "Bine aศi venit la Nextcloud Talk!\nรn aceastฤ conversaศie veศi fi informat despre noile caracteristici disponibile รฎn Nextcloud Talk.", + "New in Talk %s" : "Nou รฎn Discuศii %s", + "- Microsoft Edge and Safari can now be used to participate in audio and video calls" : "- Microsoft Edge ศi Safari pot fi folosite acum pentru a participa la apeluri audio ศi video", + "- One-to-one conversations are now persistent and cannot be turned into group conversations by accident anymore. Also when one of the participants leaves the conversation, the conversation is not automatically deleted anymore. Only if both participants leave, the conversation is deleted from the server" : "- Conversaศiile individuale sunt acum persistente ศi nu mai pot fi transformate din greศealฤ รฎn conversaศii de grup. De asemenea, atunci cรขnd unul dintre participanศi pฤrฤseศte conversaศia, aceasta nu mai este ศtearsฤ automat. Numai dacฤ ambii participanศi pleacฤ, conversaศia este ศtearsฤ de pe server", + "- You can now notify all participants by posting \"@all\" into the chat" : "- Acum puteศi notifica toศi participanศii prin postarea \"@all\" รฎn chat.", + "- With the \"arrow-up\" key you can repost your last message" : "- Cu ajutorul tastei \"sฤgeatฤ รฎn sus\" puteศi reposta ultimul mesaj.", + "- Talk can now have commands, send \"/help\" as a chat message to see if your administrator configured some" : "- Talk poate avea acum comenzi, trimiteศi \"/help\" ca mesaj de chat pentru a vedea dacฤ administratorul dvs. a configurat cรขteva", + "- With projects you can create quick links between conversations, files and other items" : "- Cu ajutorul proiectelor puteศi crea legฤturi rapide รฎntre conversaศii, fiศiere ศi alte elemente.", + "- You can now mention guests in the chat" : "- Acum puteศi menศiona oaspeศii รฎn chat", + "- Conversations can now have a lobby. This will allow moderators to join the chat and call already to prepare the meeting, while users and guests have to wait" : "- Conversaศiile pot avea acum un lobby. Acest lucru va permite moderatorilor sฤ se alฤture conversaศiei ศi sฤ sune deja pentru a pregฤti รฎntรขlnirea, รฎn timp ce utilizatorii ศi invitaศii trebuie sฤ aศtepte", + "- You can now directly reply to messages giving the other users more context what your message is about" : "- Acum puteศi rฤspunde direct la mesaje, oferindu-le celorlalศi utilizatori mai mult context despre ce este vorba รฎn mesajul dvs.", + "- Searching for conversations and participants will now also filter your existing conversations, making it much easier to find previous conversations" : "- Cฤutarea conversaศiilor ศi a participanศilor va filtra acum ศi conversaศiile existente, facilitรขnd astfel gฤsirea conversaศiilor anterioare", + "- You can now add custom user groups to conversations when the circles app is installed" : "- Acum puteศi adฤuga grupuri de utilizatori personalizaศi la conversaศii atunci cรขnd este instalatฤ aplicaศia cercuri", + "- Check out the new grid and call view" : "- Consultaศi noua grilฤ ศi vizualizarea apelurilor", + "- You can now upload and drag'n'drop files directly from your device into the chat" : "- Acum puteศi รฎncฤrca ศi glisa fiศiere direct de pe dispozitiv รฎn chat.", "File is too big" : "Fiศierul este prea mare", "Invalid file provided" : "Numele fiศierului pe care l-ai oferit este invalid", "Invalid image" : "Imagine invalidฤ", @@ -261,6 +288,7 @@ "Pending" : "รn aศteptare", "Error" : "Eroare", "Blocked" : "Blocat", + "Active" : "Activ", "Saved" : "Salvat", "OK" : "OK", "Copy link" : "Copizฤ link", @@ -286,7 +314,10 @@ "Loading" : "Loading", "Groups" : "Grupuri", "Circles" : "Cercuri", + "Create a new group conversation" : "Creaศi o nouฤ conversaศie de grup", "Password protect" : "Protejare cu parolฤ", + "Create conversation" : "Creaศi o conversaศie", + "Add participants" : "Adฤugaศi participanศi", "Close" : "รnchide", "Reply" : "Rฤspunde", "Contact" : "Contact", diff --git a/l10n/ru.js b/l10n/ru.js index 14aec1549..dc8d35c5e 100644 --- a/l10n/ru.js +++ b/l10n/ru.js @@ -1010,6 +1010,7 @@ OC.L10N.register( "Add groups" : "ะะพะฑะฐะฒะธัั ะณััะฟะฟั", "Add emails" : "ะะพะฑะฐะฒะธัั ะฟะพ ะฐะดัะตัะฐะผ ัะป. ะฟะพััั", "Add circles" : "ะะพะฑะฐะฒะธัั ะบััะณะธ", + "Integrations" : "ะะฝัะตะณัะฐัะธะธ", "Add federated users" : "ะะพะฑะฐะฒะธัั ัะตะดะตัะฐัะธะฒะฝัั
ะฟะพะปัะทะพะฒะฐัะตะปะตะน", "Searching โฆ" : "ะะพะธัะบโฆ", "No results" : "ะะตั ัะตะทัะปััะฐัะพะฒ", diff --git a/l10n/ru.json b/l10n/ru.json index 2777a7f9c..ba9feefc8 100644 --- a/l10n/ru.json +++ b/l10n/ru.json @@ -1008,6 +1008,7 @@ "Add groups" : "ะะพะฑะฐะฒะธัั ะณััะฟะฟั", "Add emails" : "ะะพะฑะฐะฒะธัั ะฟะพ ะฐะดัะตัะฐะผ ัะป. ะฟะพััั", "Add circles" : "ะะพะฑะฐะฒะธัั ะบััะณะธ", + "Integrations" : "ะะฝัะตะณัะฐัะธะธ", "Add federated users" : "ะะพะฑะฐะฒะธัั ัะตะดะตัะฐัะธะฒะฝัั
ะฟะพะปัะทะพะฒะฐัะตะปะตะน", "Searching โฆ" : "ะะพะธัะบโฆ", "No results" : "ะะตั ัะตะทัะปััะฐัะพะฒ", diff --git a/l10n/sc.js b/l10n/sc.js index afb2fc1a2..f91c84cc3 100644 --- a/l10n/sc.js +++ b/l10n/sc.js @@ -933,6 +933,7 @@ OC.L10N.register( "Add groups" : "Agiunghe grupos", "Add emails" : "Agiunghe email", "Add circles" : "Agiunghe giros", + "Integrations" : "Integratziones", "Searching โฆ" : "Chirchende โฆ", "No results" : "Perunu resurtadu", "Search for more users" : "Chirca ร teras utรจntzias", diff --git a/l10n/sc.json b/l10n/sc.json index 843e2cff0..20e96e8e8 100644 --- a/l10n/sc.json +++ b/l10n/sc.json @@ -931,6 +931,7 @@ "Add groups" : "Agiunghe grupos", "Add emails" : "Agiunghe email", "Add circles" : "Agiunghe giros", + "Integrations" : "Integratziones", "Searching โฆ" : "Chirchende โฆ", "No results" : "Perunu resurtadu", "Search for more users" : "Chirca ร teras utรจntzias", diff --git a/l10n/sk.js b/l10n/sk.js index e8506a25c..ede5c1296 100644 --- a/l10n/sk.js +++ b/l10n/sk.js @@ -1020,6 +1020,7 @@ OC.L10N.register( "Add groups" : "Pridaลฅ skupiny", "Add emails" : "Pridaลฅ e-maily", "Add circles" : "Pridaลฅ okruhy", + "Integrations" : "Integrรกcie", "Add federated users" : "Pridajte federatรญvnych uลพรญvateฤพov", "Searching โฆ" : "Hฤพadรก sa โฆ", "No results" : "ลฝiadne vรฝsledky", diff --git a/l10n/sk.json b/l10n/sk.json index 5e78284ac..bcb5c8edf 100644 --- a/l10n/sk.json +++ b/l10n/sk.json @@ -1018,6 +1018,7 @@ "Add groups" : "Pridaลฅ skupiny", "Add emails" : "Pridaลฅ e-maily", "Add circles" : "Pridaลฅ okruhy", + "Integrations" : "Integrรกcie", "Add federated users" : "Pridajte federatรญvnych uลพรญvateฤพov", "Searching โฆ" : "Hฤพadรก sa โฆ", "No results" : "ลฝiadne vรฝsledky", diff --git a/l10n/sl.js b/l10n/sl.js index fdeb46a5c..e25725880 100644 --- a/l10n/sl.js +++ b/l10n/sl.js @@ -980,6 +980,7 @@ OC.L10N.register( "Add groups" : "Dodaj skupine", "Add emails" : "Dodaj elektronske naslove", "Add circles" : "Dodaj kroge", + "Integrations" : "Zdruลพevalniki", "Add federated users" : "Dodaj zvezne uporabnike", "Searching โฆ" : "Poteka iskanje ...", "No results" : "Ni zadetkov", diff --git a/l10n/sl.json b/l10n/sl.json index c80f797f8..c6518ae02 100644 --- a/l10n/sl.json +++ b/l10n/sl.json @@ -978,6 +978,7 @@ "Add groups" : "Dodaj skupine", "Add emails" : "Dodaj elektronske naslove", "Add circles" : "Dodaj kroge", + "Integrations" : "Zdruลพevalniki", "Add federated users" : "Dodaj zvezne uporabnike", "Searching โฆ" : "Poteka iskanje ...", "No results" : "Ni zadetkov", diff --git a/l10n/sr.js b/l10n/sr.js index c70a856b1..5131004a9 100644 --- a/l10n/sr.js +++ b/l10n/sr.js @@ -504,6 +504,7 @@ OC.L10N.register( "Promote to moderator" : "ะฃะฝะฐะฟัะตะดะธ ะฝะฐ ะผะพะดะตัะฐัะพัะฐ", "Remove participant" : "ะฃะบะปะพะฝะธ ััะตัะฝะธะบะฐ", "Add groups" : "ะะพะดะฐั ะณััะฟะต", + "Integrations" : "ะะฝัะตะณัะฐัะธัะต", "Searching โฆ" : "ะขัะฐะถะธะผโฆ", "No results" : "ะะตะผะฐ ัะตะทัะปัะฐัะฐ", "Add users or groups" : "ะะพะดะฐั ะบะพัะธัะฝะธะบะต ะธะปะธ ะณััะฟะต", diff --git a/l10n/sr.json b/l10n/sr.json index 2c033dff7..34b9db731 100644 --- a/l10n/sr.json +++ b/l10n/sr.json @@ -502,6 +502,7 @@ "Promote to moderator" : "ะฃะฝะฐะฟัะตะดะธ ะฝะฐ ะผะพะดะตัะฐัะพัะฐ", "Remove participant" : "ะฃะบะปะพะฝะธ ััะตัะฝะธะบะฐ", "Add groups" : "ะะพะดะฐั ะณััะฟะต", + "Integrations" : "ะะฝัะตะณัะฐัะธัะต", "Searching โฆ" : "ะขัะฐะถะธะผโฆ", "No results" : "ะะตะผะฐ ัะตะทัะปัะฐัะฐ", "Add users or groups" : "ะะพะดะฐั ะบะพัะธัะฝะธะบะต ะธะปะธ ะณััะฟะต", diff --git a/l10n/th.js b/l10n/th.js index 42e15aba6..73e47797c 100644 --- a/l10n/th.js +++ b/l10n/th.js @@ -22,6 +22,7 @@ OC.L10N.register( "Language" : "เธ เธฒเธฉเธฒ", "Country" : "เธเธฃเธฐเนเธเธจ", "Status" : "เธชเธเธฒเธเธฐ", + "Created at" : "เธชเธฃเนเธฒเธเนเธกเธทเนเธญ", "Pending" : "เธญเธขเธนเนเธฃเธฐเธซเธงเนเธฒเธเธเธณเนเธเธดเธเธเธฒเธฃ", "Error" : "เธเนเธญเธเธดเธเธเธฅเธฒเธ", "Saved" : "เธเธฑเธเธเธถเธเนเธฅเนเธง", diff --git a/l10n/th.json b/l10n/th.json index 1bd3c47cd..10ed3f3b4 100644 --- a/l10n/th.json +++ b/l10n/th.json @@ -20,6 +20,7 @@ "Language" : "เธ เธฒเธฉเธฒ", "Country" : "เธเธฃเธฐเนเธเธจ", "Status" : "เธชเธเธฒเธเธฐ", + "Created at" : "เธชเธฃเนเธฒเธเนเธกเธทเนเธญ", "Pending" : "เธญเธขเธนเนเธฃเธฐเธซเธงเนเธฒเธเธเธณเนเธเธดเธเธเธฒเธฃ", "Error" : "เธเนเธญเธเธดเธเธเธฅเธฒเธ", "Saved" : "เธเธฑเธเธเธถเธเนเธฅเนเธง", diff --git a/l10n/tr.js b/l10n/tr.js index 6bc5118a3..7a2930722 100644 --- a/l10n/tr.js +++ b/l10n/tr.js @@ -3,28 +3,28 @@ OC.L10N.register( { "a conversation" : "bir gรถrรผลme", "(Duration %s)" : "(Sรผre %s)", - "You attended a call with {user1}" : "{user1} ile bir gรถrรผลmeye katฤฑldฤฑnฤฑz", + "You attended a call with {user1}" : "{user1} ile bir รงaฤrฤฑya katฤฑldฤฑnฤฑz", "_%n guest_::_%n guests_" : ["%n konuk","%n konuk"], - "You attended a call with {user1} and {user2}" : "{user1} ve {user2} ile bir gรถrรผลmeye katฤฑldฤฑnฤฑz", - "You attended a call with {user1}, {user2} and {user3}" : "{user1}, {user2} ve {user3} ile bir gรถrรผลmeye katฤฑldฤฑnฤฑz", - "You attended a call with {user1}, {user2}, {user3} and {user4}" : "{user1}, {user2}, {user3} ve {user4} ile bir gรถrรผลmeye katฤฑldฤฑnฤฑz", - "You attended a call with {user1}, {user2}, {user3}, {user4} and {user5}" : "{user1}, {user2}, {user3}, {user4} ve {user5} ile bir gรถrรผลmeye katฤฑldฤฑnฤฑz", + "You attended a call with {user1} and {user2}" : "{user1} ve {user2} ile bir รงaฤrฤฑya katฤฑldฤฑnฤฑz", + "You attended a call with {user1}, {user2} and {user3}" : "{user1}, {user2} ve {user3} ile bir รงaฤrฤฑya katฤฑldฤฑnฤฑz", + "You attended a call with {user1}, {user2}, {user3} and {user4}" : "{user1}, {user2}, {user3} ve {user4} ile bir รงaฤrฤฑya katฤฑldฤฑnฤฑz", + "You attended a call with {user1}, {user2}, {user3}, {user4} and {user5}" : "{user1}, {user2}, {user3}, {user4} ve {user5} ile bir รงaฤrฤฑya katฤฑldฤฑnฤฑz", "_%n other_::_%n others_" : ["%n diฤer","%n diฤer"], - "{actor} invited you to {call}" : "{actor} sizi {call} gรถrรผลmesine รงaฤฤฑrdฤฑ", - "You were invited to a <strong>conversation</strong> or had a <strong>call</strong>" : "Bir <strong>gรถrรผลmeye รงaฤrฤฑldฤฑnฤฑz</strong> ya da bir <strong>รงaฤrฤฑnฤฑz</strong> var", + "{actor} invited you to {call}" : "{actor} sizi {call} iรงin รงaฤฤฑrdฤฑ", + "You were invited to a <strong>conversation</strong> or had a <strong>call</strong>" : "Bir <strong>รงaฤrฤฑya รงaฤrฤฑldฤฑnฤฑz</strong> ya da bir <strong>รงaฤrฤฑ</strong> aldฤฑnฤฑz", "Other activities" : "Diฤer iลlemler", "Talk" : "Talk", "Guest" : "Konuk", "Welcome to Nextcloud Talk!\nIn this conversation you will be informed about new features available in Nextcloud Talk." : "Nextcloud Talk uygulamasฤฑna hoล geldiniz!\nBu gรถrรผลmede yeni Nextcloud Talk รถzellikleri hakkฤฑnda bilgilendirileceksiniz.", "New in Talk %s" : "Talk %s uygulamasฤฑndaki yenilikler", - "- Microsoft Edge and Safari can now be used to participate in audio and video calls" : "- Sesli ve gรถrรผntรผlรผ gรถrรผลmelere katฤฑlmak iรงin Microsoft Edge ve Safari kullanฤฑlabilir", + "- Microsoft Edge and Safari can now be used to participate in audio and video calls" : "- Sesli ve gรถrรผntรผlรผ รงaฤrฤฑlara katฤฑlmak iรงin Microsoft Edge ve Safari kullanฤฑlabilir", "- One-to-one conversations are now persistent and cannot be turned into group conversations by accident anymore. Also when one of the participants leaves the conversation, the conversation is not automatically deleted anymore. Only if both participants leave, the conversation is deleted from the server" : "- Bire bir gรถrรผลmeler artฤฑk kalฤฑcฤฑ oldu ve bunlarฤฑn kazayla grup gรถrรผลmelerine dรถnรผลtรผrรผlmesi engellendi. Ayrฤฑca artฤฑk katฤฑlฤฑmcฤฑlardan biri gรถrรผลmeden ayrฤฑldฤฑฤฤฑnda, gรถrรผลme otomatik olarak silinmiyor. Gรถrรผลme ancak her iki katฤฑlฤฑmcฤฑ da ayrฤฑlฤฑrsa sunucudan siliniyor.", "- You can now notify all participants by posting \"@all\" into the chat" : "- Artฤฑk sohbet sฤฑrasฤฑnda \"@all\" yazarak tรผm katฤฑlฤฑmcฤฑlarฤฑ bilgilendirebilirsiniz", "- With the \"arrow-up\" key you can repost your last message" : "- \"Yukarฤฑ ok\" tuลuyla son iletinizi รงaฤฤฑrabilirsiniz", "- Talk can now have commands, send \"/help\" as a chat message to see if your administrator configured some" : "- Talk รผzerinde artฤฑk komutlar kullanฤฑlabilir, Yรถneticinizin yapฤฑlandฤฑrdฤฑฤฤฑ komutlar varsa \"/help\" yazฤฑp gรถndererek sohbet iletisi olarak gรถrebilirsiniz ", "- With projects you can create quick links between conversations, files and other items" : "- Projeleri kullanarak gรถrรผลmeler, dosyalar ve diฤer รถgeler arasฤฑnda hฤฑzlฤฑ baฤlantฤฑlar oluลturabilirsiniz", "- You can now mention guests in the chat" : "- Artฤฑk sohbetteki konuklarฤฑ anabilirsiniz", - "- Conversations can now have a lobby. This will allow moderators to join the chat and call already to prepare the meeting, while users and guests have to wait" : "- Artฤฑk gรถrรผลmelerin bir giriลi olabiliyor. Bรถylece kullanฤฑcฤฑlar ve konuklar beklerken sorumlular รถnceden sohbete katฤฑlฤฑp gerekli hazฤฑrlฤฑklarฤฑ yapabiliyor", + "- Conversations can now have a lobby. This will allow moderators to join the chat and call already to prepare the meeting, while users and guests have to wait" : "- Artฤฑk gรถrรผลmelerin bir giriลi olabiliyor. Bรถylece kullanฤฑcฤฑlar ve konuklar beklerken sorumlular รถnceden sohbete ya da รงaฤrฤฑya katฤฑlฤฑp gerekli hazฤฑrlฤฑklarฤฑ yapabiliyor", "- You can now directly reply to messages giving the other users more context what your message is about" : "- Artฤฑk diฤer kullanฤฑcฤฑlara iletinizin ne hakkฤฑnda olduฤu ile ilgili daha fazla bilgi vererek iletileri doฤrudan yanฤฑtlayabilirsiniz.", "- Searching for conversations and participants will now also filter your existing conversations, making it much easier to find previous conversations" : "- Artฤฑk gรถrรผลme ve katฤฑlฤฑmcฤฑ aramalarฤฑnda var olan gรถrรผลmeleriniz de sรผzรผlรผr. Bรถylece yakฤฑn zamandaki gรถrรผลmeler daha kolay bulunabilir", "- You can now add custom user groups to conversations when the circles app is installed" : "- รevreler uygulamasฤฑ kurulduฤunda gรถrรผลmelere รถzel kullanฤฑcฤฑ gruplarฤฑ eklenebilir", @@ -33,15 +33,15 @@ OC.L10N.register( "- Shared files are now opened directly inside the chat view with the viewer apps" : "- Paylaลฤฑlan dosyalar artฤฑk doฤrudan sohbet gรถrรผnรผmรผnde gรถrรผntรผleyici uygulamalar ile aรงฤฑlabilir", "- You can now search for chats and messages in the unified search in the top bar" : "- Artฤฑk sohbet ve iletileri รผst รงubuktaki birleลik aramayฤฑ kullanarak arayabilirsiniz", "- Spice up your messages with emojis from the emoji picker" : "- ฤฐletilerinizi emoji seรงiciden ekleyeceฤiniz emojiler ile zenginleลtirin", - "- You can now change your camera and microphone while being in a call" : "- Artฤฑk bir gรถrรผลme sรผrerken kamera ve mikrofonunuzu deฤiลtirebilirsiniz", + "- You can now change your camera and microphone while being in a call" : "- Artฤฑk bir รงaฤrฤฑ sรผrerken kamera ve mikrofonunuzu deฤiลtirebilirsiniz", "- Give your conversations some context with a description and open it up so logged in users can find it and join themselves" : "- Gรถrรผลmelerinize bir aรงฤฑklama ekleyerek kapsamฤฑnฤฑ belirleyip aรงabilirsiniz. Bรถylece oturum aรงmฤฑล kullanฤฑcฤฑlar gรถrรผลmeyi bularak kendi kendilerine katฤฑlabilir", "- See a read status and send failed messages again" : "- Okunma durumunu gรถrerek gรถnderilmeyen iletileri yeniden gรถnderebilirsiniz", - "- Raise your hand in a call with the R key" : "- Gรถrรผลmelerde R tuลuna basarak el kaldฤฑrabilirsiniz", - "- Join the same conversation and call from multiple devices" : "- Aynฤฑ gรถrรผลmeye katฤฑlฤฑn ve รงeลitli aygฤฑtlardan arayฤฑn", + "- Raise your hand in a call with the R key" : "- รaฤrฤฑlarda R tuลuna basarak el kaldฤฑrabilirsiniz", + "- Join the same conversation and call from multiple devices" : "- Aynฤฑ gรถrรผลmeye katฤฑlฤฑn ve รงeลitli aygฤฑtlardan รงaฤrฤฑ yapฤฑn", "- Send voice messages, share your location or contact details" : "- Sesli iletiler gรถnderin, konumunuzu veya iletiลim bilgilerinizi paylaลฤฑn", "- Add groups to a conversation and new group members will automatically be added as participants" : "- Bir gรถrรผลmeye gruplar ekleyin ve yeni grup รผyelerinin otomatik olarak katฤฑlmasฤฑnฤฑ saฤlayฤฑn", - "- A preview of your audio and video is shown before joining a call" : "- Bir aramaya katฤฑlmadan รถnce sesinizin ve gรถrรผntรผnรผzรผn รถn izlemesi sunulur", - "- You can now blur your background in the newly designed call view" : "- Artฤฑk yeni tasarlanmฤฑล arama gรถrรผnรผmรผnde arka planฤฑnฤฑzฤฑ bulanฤฑklaลtฤฑrabilirsiniz", + "- A preview of your audio and video is shown before joining a call" : "- Bir รงaฤrฤฑya katฤฑlmadan รถnce sesinizin ve gรถrรผntรผnรผzรผn รถn izlemesi sunulur", + "- You can now blur your background in the newly designed call view" : "- Artฤฑk yeni tasarlanmฤฑล รงaฤrฤฑ gรถrรผnรผmรผnde arka planฤฑnฤฑzฤฑ bulanฤฑklaลtฤฑrabilirsiniz", "- Moderators can now assign general and individual permissions to participants" : "- Artฤฑk sorumlular katฤฑlฤฑmcฤฑlara genel ve kiลisel izinler atayabilir", "- You can now react to chat message" : "- Artฤฑk sohbet iletilerine tepki verebilirsiniz", "- In the sidebar you can now find an overview of the latest shared items" : "- Artฤฑk yan รงubukta son paylaลฤฑlan รถgelerin รถzetini gรถrebilirsiniz", @@ -62,12 +62,12 @@ OC.L10N.register( "{actor} removed the description" : "{actor} aรงฤฑklamayฤฑ kaldฤฑrdฤฑ", "You removed the description" : "Aรงฤฑklamayฤฑ kaldฤฑrdฤฑnฤฑz", "An administrator removed the description" : "Bir yรถnetici aรงฤฑklamayฤฑ kaldฤฑrdฤฑ", - "{actor} started a call" : "{actor} bir gรถrรผลme baลlattฤฑ", - "You started a call" : "Bir gรถrรผลme baลlattฤฑnฤฑz", - "{actor} joined the call" : "{actor} gรถrรผลmeye katฤฑldฤฑ", - "You joined the call" : "Bir gรถrรผลmeye katฤฑldฤฑnฤฑz", - "{actor} left the call" : "{actor} gรถrรผลmeden ayrฤฑldฤฑ", - "You left the call" : "Bir gรถrรผลmeden ayrฤฑldฤฑnฤฑz", + "{actor} started a call" : "{actor} bir รงaฤrฤฑ baลlattฤฑ", + "You started a call" : "Bir รงaฤrฤฑ baลlattฤฑnฤฑz", + "{actor} joined the call" : "{actor} รงaฤrฤฑya katฤฑldฤฑ", + "You joined the call" : "Bir รงaฤrฤฑya katฤฑldฤฑnฤฑz", + "{actor} left the call" : "{actor} รงaฤrฤฑdan ayrฤฑldฤฑ", + "You left the call" : "Bir รงaฤrฤฑdan ayrฤฑldฤฑnฤฑz", "{actor} unlocked the conversation" : "{actor} gรถrรผลmenin kilidini aรงtฤฑ", "You unlocked the conversation" : "Gรถrรผลmenin kilidini aรงtฤฑnฤฑz", "An administrator unlocked the conversation" : "Bir yรถnetici gรถrรผลmenin kilidini aรงtฤฑ", @@ -161,18 +161,18 @@ OC.L10N.register( "Deleted user" : "Kullanฤฑcฤฑyฤฑ sildi ", "%s (guest)" : "%s (konuk)", "You missed a call from {user}" : "{user} kullanฤฑcฤฑsฤฑ sizi aramฤฑล", - "You tried to call {user}" : "{user} kullanฤฑcฤฑsฤฑnฤฑ aramayฤฑ denediniz", - "_Call with %n guest (Duration {duration})_::_Call with %n guests (Duration {duration})_" : ["%n konuk ile gรถrรผลme (Sรผre {duration})","%n konuk ile gรถrรผลme (Sรผre {duration})"], - "_{actor} ended the call with %n guest (Duration {duration})_::_{actor} ended the call with %n guests (Duration {duration})_" : ["{actor}, %n konukla gรถrรผลmeyi sonlandฤฑrdฤฑ (Sรผre {duration})","{actor}, %n konukla gรถrรผลmeyi sonlandฤฑrdฤฑ (Sรผre {duration})"], - "Call with {user1} and {user2} (Duration {duration})" : "{user1} ve {user2} ile gรถrรผลme (Sรผre {duration})", - "{actor} ended the call with {user1} (Duration {duration})" : "{actor}, {user1} ile gรถrรผลmeyi sonlandฤฑrdฤฑ (Sรผre {duration})", - "{actor} ended the call with {user1} and {user2} (Duration {duration})" : "{actor}, {user1} ve {user2} ile gรถrรผลmeyi sonlandฤฑrdฤฑ (Sรผre {duration})", - "Call with {user1}, {user2} and {user3} (Duration {duration})" : "{user1}, {user2} ve {user3} ile gรถrรผลme (Sรผre {duration})", - "{actor} ended the call with {user1}, {user2} and {user3} (Duration {duration})" : "{actor}, {user1}, {user2} ve {user3} ile gรถrรผลmeyi sonlandฤฑrdฤฑ (Sรผre {duration})", - "Call with {user1}, {user2}, {user3} and {user4} (Duration {duration})" : "{user1}, {user2}, {user3} ve {user4} ile gรถrรผลme (Sรผre {duration})", - "{actor} ended the call with {user1}, {user2}, {user3} and {user4} (Duration {duration})" : "{actor}, {user1}, {user2}, {user3} ve {user4} ile gรถrรผลmeyi sonlandฤฑrdฤฑ (Sรผre {duration})", - "Call with {user1}, {user2}, {user3}, {user4} and {user5} (Duration {duration})" : "{user1}, {user2}, {user3}, {user4} ve {user5} ile gรถrรผลme (Sรผre {duration})", - "{actor} ended the call with {user1}, {user2}, {user3}, {user4} and {user5} (Duration {duration})" : "{actor}, {user1}, {user2}, {user3}, {user4} ve {user5} ile gรถrรผลmeyi sonlandฤฑrdฤฑ (Sรผre {duration})", + "You tried to call {user}" : "{user} kullanฤฑcฤฑsฤฑnฤฑ รงaฤฤฑrmayฤฑ denediniz", + "_Call with %n guest (Duration {duration})_::_Call with %n guests (Duration {duration})_" : ["%n konuk ile รงaฤrฤฑ (Sรผre {duration})","%n konuk ile รงaฤrฤฑ (Sรผre {duration})"], + "_{actor} ended the call with %n guest (Duration {duration})_::_{actor} ended the call with %n guests (Duration {duration})_" : ["{actor}, %n konukla รงaฤrฤฑyฤฑ sonlandฤฑrdฤฑ (Sรผre {duration})","{actor}, %n konukla รงaฤrฤฑyฤฑ sonlandฤฑrdฤฑ (Sรผre {duration})"], + "Call with {user1} and {user2} (Duration {duration})" : "{user1} ve {user2} ile รงaฤrฤฑ (Sรผre {duration})", + "{actor} ended the call with {user1} (Duration {duration})" : "{actor}, {user1} ile รงaฤrฤฑyฤฑ sonlandฤฑrdฤฑ (Sรผre {duration})", + "{actor} ended the call with {user1} and {user2} (Duration {duration})" : "{actor}, {user1} ve {user2} ile รงaฤrฤฑyฤฑ sonlandฤฑrdฤฑ (Sรผre {duration})", + "Call with {user1}, {user2} and {user3} (Duration {duration})" : "{user1}, {user2} ve {user3} ile รงaฤrฤฑ (Sรผre {duration})", + "{actor} ended the call with {user1}, {user2} and {user3} (Duration {duration})" : "{actor}, {user1}, {user2} ve {user3} ile รงaฤrฤฑyฤฑ sonlandฤฑrdฤฑ (Sรผre {duration})", + "Call with {user1}, {user2}, {user3} and {user4} (Duration {duration})" : "{user1}, {user2}, {user3} ve {user4} ile รงaฤrฤฑ (Sรผre {duration})", + "{actor} ended the call with {user1}, {user2}, {user3} and {user4} (Duration {duration})" : "{actor}, {user1}, {user2}, {user3} ve {user4} ile รงaฤrฤฑyฤฑ sonlandฤฑrdฤฑ (Sรผre {duration})", + "Call with {user1}, {user2}, {user3}, {user4} and {user5} (Duration {duration})" : "{user1}, {user2}, {user3}, {user4} ve {user5} ile รงaฤrฤฑ (Sรผre {duration})", + "{actor} ended the call with {user1}, {user2}, {user3}, {user4} and {user5} (Duration {duration})" : "{actor}, {user1}, {user2}, {user3}, {user4} ve {user5} ile รงaฤrฤฑyฤฑ sonlandฤฑrdฤฑ (Sรผre {duration})", "Talk to %s" : "%s ile gรถrรผลรผn", "File is not shared, or shared but not with the user" : "Dosya paylaลฤฑlmamฤฑล ya da paylaลฤฑlmฤฑล ancak kullanฤฑcฤฑ ile deฤil.", "No account available to delete." : "Silinebilecek bir hesap yok.", @@ -224,12 +224,12 @@ OC.L10N.register( "A guest mentioned you in conversation {call}" : "Bir konuk {call} gรถrรผลmesinde sizi andฤฑ", "View chat" : "Sohbeti gรถrรผntรผle", "{user} invited you to a private conversation" : "{user} sizi รถzel bir gรถrรผลmeye รงaฤฤฑrdฤฑ", - "Join call" : "Gรถrรผลmeye katฤฑl", + "Join call" : "รaฤrฤฑya katฤฑl", "{user} invited you to a group conversation: {call}" : "{user} sizi bir grup gรถrรผลmesine รงaฤฤฑrdฤฑ: {call}", "Answer call" : "รaฤrฤฑyฤฑ yanฤฑtla", "{user} would like to talk with you" : "{user} sizinle gรถrรผลmek istiyor", "Call back" : "Geri ara", - "A group call has started in {call}" : "{call} iรงinde bir grup gรถrรผลmesi baลlatฤฑldฤฑ", + "A group call has started in {call}" : "{call} iรงinde bir grup รงaฤrฤฑsฤฑ baลlatฤฑldฤฑ", "You missed a group call in {call}" : "{call} grubu sizi aramฤฑล", "{email} is requesting the password to access {file}" : "{email}, {file} dosyasฤฑna eriลme parolasฤฑnฤฑ istiyor", "{email} tried to request the password to access {file}" : "{email}, {file} dosyasฤฑna eriลme parolasฤฑnฤฑ istemeyi denedi", @@ -524,10 +524,10 @@ OC.L10N.register( "Conversation not found" : "Gรถrรผลme bulunamadฤฑ", "Path is already shared with this room" : "Bu yol bu gรถrรผลme ile zaten paylaลฤฑlmฤฑล", "Chat, video & audio-conferencing using WebRTC" : "WebRTC kullanarak yazฤฑlฤฑ, sesli ve gรถrรผntรผlรผ gรถrรผลmeler yapabilirsiniz", - "Chat, video & audio-conferencing using WebRTC\n\n* ๐ฌ **Chat integration!** Nextcloud Talk comes with a simple text chat. Allowing you to share files from your Nextcloud and mentioning other participants.\n* ๐ฅ **Private, group, public and password protected calls!** Just invite somebody, a whole group or send a public link to invite to a call.\n* ๐ป **Screen sharing!** Share your screen with participants of your call. You just need to use Firefox version 66 (or newer), latest Edge or Chrome 72 (or newer, also possible using Chrome 49 with this [Chrome extension](https://chrome.google.com/webstore/detail/screensharing-for-nextclo/kepnpjhambipllfmgmbapncekcmabkol)).\n* ๐ **Integration with other Nextcloud apps** like Files, Contacts and Deck. More to come.\n\nAnd in the works for the [coming versions](https://github.com/nextcloud/spreed/milestones/):\n* โ [Federated calls](https://github.com/nextcloud/spreed/issues/21), to call people on other Nextclouds" : "WebRTC รผzerinden yazฤฑlฤฑ, gรถrรผntรผtรผlรผ ve sesli gรถrรผลme yapฤฑlabilmesini saฤlar\n\n* ๐ฌ **Gรถrรผลme bรผtรผnlรผฤรผ!** Nextcloud Talk uygulamasฤฑ basit metin ile yazฤฑลma desteฤi sunar. Nextcloud รผzerindeki dosyalarฤฑ paylaลabilir, diฤer katฤฑlฤฑmcฤฑlarฤฑ anabilirsiniz.\n* ๐ฅ **รzel, grup, herkese aรงฤฑk ve parola korumalฤฑ gรถrรผลmeler!** Gรถrรผลmek istediฤiniz bir kiลiyi ya da bir grubun tamamฤฑnฤฑ รงaฤฤฑrabilir, gรถrรผลme รงaฤrฤฑsฤฑ iรงin herkese aรงฤฑk bir baฤlantฤฑ kullanabilirsiniz.\n* ๐ป **Ekran paylaลฤฑmฤฑ!** Gรถrรผลme katฤฑlฤฑmcฤฑlarฤฑ ile ekranฤฑnฤฑzฤฑ paylaลabilirsiniz. Firefox 66 (ya da รผzeri), Edge son sรผrรผmรผ ya da Chrome 72 (ya da รผzeri ve ayrฤฑca [bu Chrome eklentisi ile](https://chrome.google.com/webstore/detail/screensharing-for-nextclo/kepnpjhambipllfmgmbapncekcmabkol) Chrome 49) bir tarayฤฑcฤฑ sรผrรผmรผ kullanmanฤฑz yeterlidir.\n* ๐ **Diฤer Nextcloud uygulamalarฤฑ ile bรผtรผnlรผk** ลu anda Files, Contacts ve Deck. Gerisi gelecek.\n\n[Gelecek sรผrรผmler](https://github.com/nextcloud/spreed/milestones/) รผzerinde รงalฤฑลฤฑyoruz:\n* โ [Birleลik gรถrรผลmeler](https://github.com/nextcloud/spreed/issues/21), ile baลka Nextcloud kopyalarฤฑ kullanan kiลiler ile gรถrรผลebilirsiniz", - "Navigating away from the page will leave the call in {conversation}" : "Sayfadan ayrฤฑlฤฑrsanฤฑz {conversation} gรถrรผลmesinden รงฤฑkacaksฤฑnฤฑz", - "Leave call" : "Gรถrรผลmeden ayrฤฑl", - "Stay in call" : "Gรถrรผลmede kal", + "Chat, video & audio-conferencing using WebRTC\n\n* ๐ฌ **Chat integration!** Nextcloud Talk comes with a simple text chat. Allowing you to share files from your Nextcloud and mentioning other participants.\n* ๐ฅ **Private, group, public and password protected calls!** Just invite somebody, a whole group or send a public link to invite to a call.\n* ๐ป **Screen sharing!** Share your screen with participants of your call. You just need to use Firefox version 66 (or newer), latest Edge or Chrome 72 (or newer, also possible using Chrome 49 with this [Chrome extension](https://chrome.google.com/webstore/detail/screensharing-for-nextclo/kepnpjhambipllfmgmbapncekcmabkol)).\n* ๐ **Integration with other Nextcloud apps** like Files, Contacts and Deck. More to come.\n\nAnd in the works for the [coming versions](https://github.com/nextcloud/spreed/milestones/):\n* โ [Federated calls](https://github.com/nextcloud/spreed/issues/21), to call people on other Nextclouds" : "WebRTC รผzerinden yazฤฑlฤฑ, gรถrรผntรผtรผlรผ ve sesli gรถrรผลme yapฤฑlabilmesini saฤlar\n\n* ๐ฌ **Gรถrรผลme bรผtรผnlรผฤรผ!** Nextcloud Talk uygulamasฤฑ basit metin ile yazฤฑลma desteฤi sunar. Nextcloud รผzerindeki dosyalarฤฑ paylaลabilir, diฤer katฤฑlฤฑmcฤฑlarฤฑ anabilirsiniz.\n* ๐ฅ **รzel, grup, herkese aรงฤฑk ve parola korumalฤฑ รงaฤrฤฑlar!** Gรถrรผลmek istediฤiniz bir kiลiyi ya da bir grubun tamamฤฑnฤฑ รงaฤฤฑrabilir, gรถrรผลme รงaฤrฤฑsฤฑ iรงin herkese aรงฤฑk bir baฤlantฤฑ kullanabilirsiniz.\n* ๐ป **Ekran paylaลฤฑmฤฑ!** รaฤrฤฑ katฤฑlฤฑmcฤฑlarฤฑ ile ekranฤฑnฤฑzฤฑ paylaลabilirsiniz. Firefox 66 (ya da รผzeri), Edge son sรผrรผmรผ ya da Chrome 72 (ya da รผzeri ve ayrฤฑca [bu Chrome eklentisi ile](https://chrome.google.com/webstore/detail/screensharing-for-nextclo/kepnpjhambipllfmgmbapncekcmabkol) Chrome 49) bir tarayฤฑcฤฑ sรผrรผmรผ kullanmanฤฑz yeterlidir.\n* ๐ **Diฤer Nextcloud uygulamalarฤฑ ile bรผtรผnlรผk** ลu anda Files, Contacts ve Deck. Gerisi gelecek.\n\n[Gelecek sรผrรผmler](https://github.com/nextcloud/spreed/milestones/) รผzerinde รงalฤฑลฤฑyoruz:\n* โ [Birleลik รงaฤrฤฑlar](https://github.com/nextcloud/spreed/issues/21), ile baลka Nextcloud kopyalarฤฑ kullanan kiลileri รงaฤฤฑrabilirsiniz", + "Navigating away from the page will leave the call in {conversation}" : "Sayfadan ayrฤฑlฤฑrsanฤฑz {conversation} รงaฤrฤฑsฤฑndan รงฤฑkacaksฤฑnฤฑz", + "Leave call" : "รaฤrฤฑdan ayrฤฑl", + "Stay in call" : "รaฤrฤฑda kal", "Duplicate session" : "รift oturum", "Discuss this file" : "Bu dosya hakkฤฑnda gรถrรผล", "Share this file with others to discuss it" : "Bu dosyayฤฑ, hakkฤฑnda gรถrรผลmek iรงin baลkalarฤฑ ile paylaล", @@ -543,8 +543,8 @@ OC.L10N.register( "Limit using Talk" : "Talk uygulamasฤฑnฤฑn kullanฤฑmฤฑ sฤฑnฤฑrlansฤฑn", "Limit creating a public and group conversation" : "Herkese aรงฤฑk ve grup gรถrรผลmesi oluลturma sฤฑnฤฑrlansฤฑn", "Limit creating conversations" : "Gรถrรผลme oluลturmayฤฑ sฤฑnฤฑrla", - "Limit starting a call" : "Bir gรถrรผลme baลlatmayฤฑ sฤฑnฤฑrla", - "Limit starting calls" : "Gรถrรผลmeleri baลlatmayฤฑ sฤฑnฤฑrla", + "Limit starting a call" : "Bir รงaฤrฤฑ baลlatmayฤฑ sฤฑnฤฑrla", + "Limit starting calls" : "รaฤrฤฑlarฤฑ baลlatmayฤฑ sฤฑnฤฑrla", "When a call has started, everyone with access to the conversation can join the call." : "Bir รงaฤrฤฑ yapฤฑldฤฑฤฤฑnda, gรถrรผลmeye eriลimi olan herkes รงaฤrฤฑya katฤฑlabilir.", "Everyone" : "Herkes", "Users and moderators" : "Kullanฤฑcฤฑlar ve sorumlular", @@ -635,9 +635,9 @@ OC.L10N.register( "Saved" : "Kaydedildi", "Add a new server" : "Yeni sunucu ekle", "An external signaling server should optionally be used for larger installations. Leave empty to use the internal signaling server." : "Bรผyรผk kurulumlar iรงin isteฤe gรถre bir dฤฑล signaling sunucusu kullanฤฑlmalฤฑdฤฑr. ฤฐรง signaling sunucusunu kullanmak iรงin boล bฤฑrakฤฑn.", - "Please note that calls with more than 4 participants without external signaling server, participants can experience connectivity issues and cause high load on participating devices." : "Bir dฤฑล signaling sunucusu olmadan 4 kiลiden fazlasฤฑ ile yapฤฑlan gรถrรผลmelerde baฤlantฤฑ sorunlarฤฑ yaลanabileceฤini ve baฤlanan aygฤฑtlarda aลฤฑrฤฑ iลlem yรผkรผ oluลabileceฤini unutmayฤฑn.", + "Please note that calls with more than 4 participants without external signaling server, participants can experience connectivity issues and cause high load on participating devices." : "Bir dฤฑล signaling sunucusu olmadan 4 kiลiden fazlasฤฑ ile yapฤฑlan รงaฤrฤฑlarda baฤlantฤฑ sorunlarฤฑ yaลanabileceฤini ve baฤlanan aygฤฑtlarda aลฤฑrฤฑ iลlem yรผkรผ oluลabileceฤini unutmayฤฑn.", "It is highly recommended to set up a distributed cache when using Nextcloud Talk together with a High Performance Back-end." : "Nextcloud Talk uygulamasฤฑ ile yรผksek baลarฤฑmlฤฑ bir arka plan kullanฤฑyorsanฤฑz daฤฤฑtฤฑlmฤฑล รถn bellek kullanmanฤฑz รถnemle รถnerilir.", - "Don't warn about connectivity issues in calls with more than 4 participants" : "4 kiลiden fazla katฤฑlฤฑmcฤฑsฤฑ olan gรถrรผลmelerde baฤlantฤฑ sorunlarฤฑ uyarฤฑsฤฑ gรถrรผntรผlenmesin", + "Don't warn about connectivity issues in calls with more than 4 participants" : "4 kiลiden fazla katฤฑlฤฑmcฤฑsฤฑ olan รงaฤrฤฑlarda baฤlantฤฑ sorunlarฤฑ uyarฤฑsฤฑ gรถrรผntรผlenmesin", "STUN server URL" : "STUN sunucusunun adresi", "STUN servers" : "STUN sunucularฤฑ", "A STUN server is used to determine the public IP address of participants behind a router." : "STUN sunucusu bir yรถnelticinin arkasฤฑndaki katฤฑlฤฑmcฤฑnฤฑn herkese aรงฤฑk adresinin belirlenmesinde kullanฤฑlฤฑr.", @@ -670,7 +670,7 @@ OC.L10N.register( "Expand stripe" : "ลeridi geniลlet", "Copy link" : "Baฤlantฤฑyฤฑ kopyala", "Connecting โฆ" : "Baฤlantฤฑ kuruluyor โฆ", - "Waiting for others to join the call โฆ" : "Diฤerlerinin gรถrรผลmeye katฤฑlmasฤฑ bekleniyor โฆ", + "Waiting for others to join the call โฆ" : "Diฤerlerinin รงaฤrฤฑya katฤฑlmasฤฑ bekleniyor โฆ", "You can invite others in the participant tab of the sidebar" : "Diฤer kiลileri yan รงubuktaki katฤฑlฤฑmcฤฑ sekmesinden รงaฤฤฑrabilirsiniz", "You can invite others in the participant tab of the sidebar or share this link to invite others!" : "Diฤer kiลileri yan รงubuktaki katฤฑlฤฑmcฤฑ sekmesinden ya da bu baฤlantฤฑyฤฑ paylaลarak รงaฤฤฑrabilirsiniz!", "Share this link to invite others!" : "Diฤer kiลileri รงaฤฤฑrmak iรงin bu baฤlantฤฑyฤฑ paylaลฤฑn!", @@ -991,7 +991,7 @@ OC.L10N.register( "No permission to post messages in this conversation" : "Bu gรถrรผลmeye ileti gรถnderme izniniz yok", "Write message, @ to mention someone โฆ" : "ฤฐleti yazฤฑn, @ ile baลkalarฤฑnฤฑ anabilirsiniz โฆ", "Invalid path selected" : "Seรงilen yol geรงersiz", - "Start a call" : "Bir gรถrรผลme baลlat", + "Start a call" : "Bir รงaฤrฤฑ baลlat", "Skip the lobby" : "Giriลi atla", "Can post messages and reactions" : "ฤฐleti ve tepki gรถnderebilir", "Enable the microphone" : "Mikrofonu aรง", @@ -1035,6 +1035,7 @@ OC.L10N.register( "Add groups" : "Grup ekle", "Add emails" : "E-posta adreslerini ekle", "Add circles" : "รevre ekle", + "Integrations" : "Bรผtรผnleลtirmeler", "Add federated users" : "Birleลtirilmiล kullanฤฑcฤฑlar ekle", "Searching โฆ" : "Aranฤฑyor โฆ", "No results" : "Herhangi bir sonuรง bulunamadฤฑ", @@ -1067,16 +1068,16 @@ OC.L10N.register( "Privacy" : "Gizlilik", "Share my read-status and show the read-status of others" : "Okundu durumumu paylaล ve diฤerlerinin okundu durumunu gรถrรผntรผle", "Sounds" : "Sesler", - "Play sounds when participants join or leave a call" : "Katฤฑlฤฑmcฤฑlar gรถrรผลmeye girdiฤinde ya da รงฤฑktฤฑฤฤฑnda ses รงalฤฑnsฤฑn", + "Play sounds when participants join or leave a call" : "Katฤฑlฤฑmcฤฑlar รงaฤrฤฑya katฤฑldฤฑฤฤฑnda ya da ayrฤฑldฤฑฤฤฑnda ses รงalฤฑnsฤฑn", "Sounds can currently not be played in Safari browser and iPad and iPhone devices due to technical restrictions by the manufacturer." : "รreticinin sฤฑnฤฑrlamalarฤฑ nedeniyle, sesler ลu anda Safari web tarayฤฑcฤฑsฤฑ, iPad ve iPhone aygฤฑtlarฤฑnda รงalฤฑnamฤฑyor. ", "Sounds for chat and call notifications can be adjusted in the personal settings." : "Sohbet ve รงaฤrฤฑ bildirimlerinin kiลisel ayarlar bรถlรผmรผnden belirlenebilen sesleri.", "Keyboard shortcuts" : "Kฤฑsayol tuลlarฤฑ", "Speed up your Talk experience with these quick shortcuts." : "ลu kฤฑsayol tuลlarฤฑnฤฑ kullanarak Talk deneyiminizi hฤฑzlandฤฑrabilirsiniz.", "Focus the chat input" : "Sohbet giriลine odaklan", "Unfocus the chat input to use shortcuts" : "Kฤฑsayol tuลlarฤฑnฤฑ kullanmak iรงin odaฤฤฑ sohbet giriลinden al", - "Fullscreen the chat or call" : "Sohbet ya da gรถrรผลmeyi tam ekrana bรผyรผt", + "Fullscreen the chat or call" : "Sohbet ya da รงaฤrฤฑyฤฑ tam ekrana bรผyรผt", "Search" : "Arama", - "Shortcuts while in a call" : "Gรถrรผลme sฤฑrasฤฑnda kullanฤฑlabilecek kฤฑsayol tuลlarฤฑ", + "Shortcuts while in a call" : "รaฤrฤฑ sฤฑrasฤฑnda kullanฤฑlabilecek kฤฑsayol tuลlarฤฑ", "Camera on and off" : "Kamerayฤฑ aรงma ve kapatma", "Microphone on and off" : "Mikrofonu aรงma ve kapatma", "Space bar" : "Boลluk tuลu", @@ -1091,9 +1092,9 @@ OC.L10N.register( "Sounds setting saved" : "Ses ayarlarฤฑ kaydedildi", "Error while saving sounds setting" : "Ses ayarlarฤฑ kaydedilirken sorun รงฤฑktฤฑ", "End meeting for all" : "Toplantฤฑyฤฑ herkes iรงin sonlandฤฑr", - "Start call" : "Gรถrรผลmeyi baลlat", - "Nextcloud Talk was updated, you need to reload the page before you can start or join a call." : "Nextcloud Talk gรผncellenmiล. Bir gรถrรผลmeye baลlamadan รถnce sayfayฤฑ yeniden yรผklemelisiniz.", - "You will be able to join the call only after a moderator starts it." : "Gรถrรผลmeye ancak bir sorumlu gรถrรผลmeyi baลlattฤฑktan sonra katฤฑlabilirsiniz.", + "Start call" : "รaฤrฤฑyฤฑ baลlat", + "Nextcloud Talk was updated, you need to reload the page before you can start or join a call." : "Nextcloud Talk gรผncellenmiล. Bir รงaฤrฤฑya baลlamadan รถnce sayfayฤฑ yeniden yรผklemelisiniz.", + "You will be able to join the call only after a moderator starts it." : "รaฤrฤฑya ancak bir sorumlu รงaฤrฤฑyฤฑ baลlattฤฑktan sonra katฤฑlabilirsiniz.", "Conversation actions" : "Gรถrรผลme iลlemleri", "Toggle fullscreen" : "Tam ekranฤฑ aรง/kapat", "Rename conversation" : "Gรถrรผลmeyi yeniden adlandฤฑr", diff --git a/l10n/tr.json b/l10n/tr.json index 9e75a697d..e76aa6ad5 100644 --- a/l10n/tr.json +++ b/l10n/tr.json @@ -1,28 +1,28 @@ { "translations": { "a conversation" : "bir gรถrรผลme", "(Duration %s)" : "(Sรผre %s)", - "You attended a call with {user1}" : "{user1} ile bir gรถrรผลmeye katฤฑldฤฑnฤฑz", + "You attended a call with {user1}" : "{user1} ile bir รงaฤrฤฑya katฤฑldฤฑnฤฑz", "_%n guest_::_%n guests_" : ["%n konuk","%n konuk"], - "You attended a call with {user1} and {user2}" : "{user1} ve {user2} ile bir gรถrรผลmeye katฤฑldฤฑnฤฑz", - "You attended a call with {user1}, {user2} and {user3}" : "{user1}, {user2} ve {user3} ile bir gรถrรผลmeye katฤฑldฤฑnฤฑz", - "You attended a call with {user1}, {user2}, {user3} and {user4}" : "{user1}, {user2}, {user3} ve {user4} ile bir gรถrรผลmeye katฤฑldฤฑnฤฑz", - "You attended a call with {user1}, {user2}, {user3}, {user4} and {user5}" : "{user1}, {user2}, {user3}, {user4} ve {user5} ile bir gรถrรผลmeye katฤฑldฤฑnฤฑz", + "You attended a call with {user1} and {user2}" : "{user1} ve {user2} ile bir รงaฤrฤฑya katฤฑldฤฑnฤฑz", + "You attended a call with {user1}, {user2} and {user3}" : "{user1}, {user2} ve {user3} ile bir รงaฤrฤฑya katฤฑldฤฑnฤฑz", + "You attended a call with {user1}, {user2}, {user3} and {user4}" : "{user1}, {user2}, {user3} ve {user4} ile bir รงaฤrฤฑya katฤฑldฤฑnฤฑz", + "You attended a call with {user1}, {user2}, {user3}, {user4} and {user5}" : "{user1}, {user2}, {user3}, {user4} ve {user5} ile bir รงaฤrฤฑya katฤฑldฤฑnฤฑz", "_%n other_::_%n others_" : ["%n diฤer","%n diฤer"], - "{actor} invited you to {call}" : "{actor} sizi {call} gรถrรผลmesine รงaฤฤฑrdฤฑ", - "You were invited to a <strong>conversation</strong> or had a <strong>call</strong>" : "Bir <strong>gรถrรผลmeye รงaฤrฤฑldฤฑnฤฑz</strong> ya da bir <strong>รงaฤrฤฑnฤฑz</strong> var", + "{actor} invited you to {call}" : "{actor} sizi {call} iรงin รงaฤฤฑrdฤฑ", + "You were invited to a <strong>conversation</strong> or had a <strong>call</strong>" : "Bir <strong>รงaฤrฤฑya รงaฤrฤฑldฤฑnฤฑz</strong> ya da bir <strong>รงaฤrฤฑ</strong> aldฤฑnฤฑz", "Other activities" : "Diฤer iลlemler", "Talk" : "Talk", "Guest" : "Konuk", "Welcome to Nextcloud Talk!\nIn this conversation you will be informed about new features available in Nextcloud Talk." : "Nextcloud Talk uygulamasฤฑna hoล geldiniz!\nBu gรถrรผลmede yeni Nextcloud Talk รถzellikleri hakkฤฑnda bilgilendirileceksiniz.", "New in Talk %s" : "Talk %s uygulamasฤฑndaki yenilikler", - "- Microsoft Edge and Safari can now be used to participate in audio and video calls" : "- Sesli ve gรถrรผntรผlรผ gรถrรผลmelere katฤฑlmak iรงin Microsoft Edge ve Safari kullanฤฑlabilir", + "- Microsoft Edge and Safari can now be used to participate in audio and video calls" : "- Sesli ve gรถrรผntรผlรผ รงaฤrฤฑlara katฤฑlmak iรงin Microsoft Edge ve Safari kullanฤฑlabilir", "- One-to-one conversations are now persistent and cannot be turned into group conversations by accident anymore. Also when one of the participants leaves the conversation, the conversation is not automatically deleted anymore. Only if both participants leave, the conversation is deleted from the server" : "- Bire bir gรถrรผลmeler artฤฑk kalฤฑcฤฑ oldu ve bunlarฤฑn kazayla grup gรถrรผลmelerine dรถnรผลtรผrรผlmesi engellendi. Ayrฤฑca artฤฑk katฤฑlฤฑmcฤฑlardan biri gรถrรผลmeden ayrฤฑldฤฑฤฤฑnda, gรถrรผลme otomatik olarak silinmiyor. Gรถrรผลme ancak her iki katฤฑlฤฑmcฤฑ da ayrฤฑlฤฑrsa sunucudan siliniyor.", "- You can now notify all participants by posting \"@all\" into the chat" : "- Artฤฑk sohbet sฤฑrasฤฑnda \"@all\" yazarak tรผm katฤฑlฤฑmcฤฑlarฤฑ bilgilendirebilirsiniz", "- With the \"arrow-up\" key you can repost your last message" : "- \"Yukarฤฑ ok\" tuลuyla son iletinizi รงaฤฤฑrabilirsiniz", "- Talk can now have commands, send \"/help\" as a chat message to see if your administrator configured some" : "- Talk รผzerinde artฤฑk komutlar kullanฤฑlabilir, Yรถneticinizin yapฤฑlandฤฑrdฤฑฤฤฑ komutlar varsa \"/help\" yazฤฑp gรถndererek sohbet iletisi olarak gรถrebilirsiniz ", "- With projects you can create quick links between conversations, files and other items" : "- Projeleri kullanarak gรถrรผลmeler, dosyalar ve diฤer รถgeler arasฤฑnda hฤฑzlฤฑ baฤlantฤฑlar oluลturabilirsiniz", "- You can now mention guests in the chat" : "- Artฤฑk sohbetteki konuklarฤฑ anabilirsiniz", - "- Conversations can now have a lobby. This will allow moderators to join the chat and call already to prepare the meeting, while users and guests have to wait" : "- Artฤฑk gรถrรผลmelerin bir giriลi olabiliyor. Bรถylece kullanฤฑcฤฑlar ve konuklar beklerken sorumlular รถnceden sohbete katฤฑlฤฑp gerekli hazฤฑrlฤฑklarฤฑ yapabiliyor", + "- Conversations can now have a lobby. This will allow moderators to join the chat and call already to prepare the meeting, while users and guests have to wait" : "- Artฤฑk gรถrรผลmelerin bir giriลi olabiliyor. Bรถylece kullanฤฑcฤฑlar ve konuklar beklerken sorumlular รถnceden sohbete ya da รงaฤrฤฑya katฤฑlฤฑp gerekli hazฤฑrlฤฑklarฤฑ yapabiliyor", "- You can now directly reply to messages giving the other users more context what your message is about" : "- Artฤฑk diฤer kullanฤฑcฤฑlara iletinizin ne hakkฤฑnda olduฤu ile ilgili daha fazla bilgi vererek iletileri doฤrudan yanฤฑtlayabilirsiniz.", "- Searching for conversations and participants will now also filter your existing conversations, making it much easier to find previous conversations" : "- Artฤฑk gรถrรผลme ve katฤฑlฤฑmcฤฑ aramalarฤฑnda var olan gรถrรผลmeleriniz de sรผzรผlรผr. Bรถylece yakฤฑn zamandaki gรถrรผลmeler daha kolay bulunabilir", "- You can now add custom user groups to conversations when the circles app is installed" : "- รevreler uygulamasฤฑ kurulduฤunda gรถrรผลmelere รถzel kullanฤฑcฤฑ gruplarฤฑ eklenebilir", @@ -31,15 +31,15 @@ "- Shared files are now opened directly inside the chat view with the viewer apps" : "- Paylaลฤฑlan dosyalar artฤฑk doฤrudan sohbet gรถrรผnรผmรผnde gรถrรผntรผleyici uygulamalar ile aรงฤฑlabilir", "- You can now search for chats and messages in the unified search in the top bar" : "- Artฤฑk sohbet ve iletileri รผst รงubuktaki birleลik aramayฤฑ kullanarak arayabilirsiniz", "- Spice up your messages with emojis from the emoji picker" : "- ฤฐletilerinizi emoji seรงiciden ekleyeceฤiniz emojiler ile zenginleลtirin", - "- You can now change your camera and microphone while being in a call" : "- Artฤฑk bir gรถrรผลme sรผrerken kamera ve mikrofonunuzu deฤiลtirebilirsiniz", + "- You can now change your camera and microphone while being in a call" : "- Artฤฑk bir รงaฤrฤฑ sรผrerken kamera ve mikrofonunuzu deฤiลtirebilirsiniz", "- Give your conversations some context with a description and open it up so logged in users can find it and join themselves" : "- Gรถrรผลmelerinize bir aรงฤฑklama ekleyerek kapsamฤฑnฤฑ belirleyip aรงabilirsiniz. Bรถylece oturum aรงmฤฑล kullanฤฑcฤฑlar gรถrรผลmeyi bularak kendi kendilerine katฤฑlabilir", "- See a read status and send failed messages again" : "- Okunma durumunu gรถrerek gรถnderilmeyen iletileri yeniden gรถnderebilirsiniz", - "- Raise your hand in a call with the R key" : "- Gรถrรผลmelerde R tuลuna basarak el kaldฤฑrabilirsiniz", - "- Join the same conversation and call from multiple devices" : "- Aynฤฑ gรถrรผลmeye katฤฑlฤฑn ve รงeลitli aygฤฑtlardan arayฤฑn", + "- Raise your hand in a call with the R key" : "- รaฤrฤฑlarda R tuลuna basarak el kaldฤฑrabilirsiniz", + "- Join the same conversation and call from multiple devices" : "- Aynฤฑ gรถrรผลmeye katฤฑlฤฑn ve รงeลitli aygฤฑtlardan รงaฤrฤฑ yapฤฑn", "- Send voice messages, share your location or contact details" : "- Sesli iletiler gรถnderin, konumunuzu veya iletiลim bilgilerinizi paylaลฤฑn", "- Add groups to a conversation and new group members will automatically be added as participants" : "- Bir gรถrรผลmeye gruplar ekleyin ve yeni grup รผyelerinin otomatik olarak katฤฑlmasฤฑnฤฑ saฤlayฤฑn", - "- A preview of your audio and video is shown before joining a call" : "- Bir aramaya katฤฑlmadan รถnce sesinizin ve gรถrรผntรผnรผzรผn รถn izlemesi sunulur", - "- You can now blur your background in the newly designed call view" : "- Artฤฑk yeni tasarlanmฤฑล arama gรถrรผnรผmรผnde arka planฤฑnฤฑzฤฑ bulanฤฑklaลtฤฑrabilirsiniz", + "- A preview of your audio and video is shown before joining a call" : "- Bir รงaฤrฤฑya katฤฑlmadan รถnce sesinizin ve gรถrรผntรผnรผzรผn รถn izlemesi sunulur", + "- You can now blur your background in the newly designed call view" : "- Artฤฑk yeni tasarlanmฤฑล รงaฤrฤฑ gรถrรผnรผmรผnde arka planฤฑnฤฑzฤฑ bulanฤฑklaลtฤฑrabilirsiniz", "- Moderators can now assign general and individual permissions to participants" : "- Artฤฑk sorumlular katฤฑlฤฑmcฤฑlara genel ve kiลisel izinler atayabilir", "- You can now react to chat message" : "- Artฤฑk sohbet iletilerine tepki verebilirsiniz", "- In the sidebar you can now find an overview of the latest shared items" : "- Artฤฑk yan รงubukta son paylaลฤฑlan รถgelerin รถzetini gรถrebilirsiniz", @@ -60,12 +60,12 @@ "{actor} removed the description" : "{actor} aรงฤฑklamayฤฑ kaldฤฑrdฤฑ", "You removed the description" : "Aรงฤฑklamayฤฑ kaldฤฑrdฤฑnฤฑz", "An administrator removed the description" : "Bir yรถnetici aรงฤฑklamayฤฑ kaldฤฑrdฤฑ", - "{actor} started a call" : "{actor} bir gรถrรผลme baลlattฤฑ", - "You started a call" : "Bir gรถrรผลme baลlattฤฑnฤฑz", - "{actor} joined the call" : "{actor} gรถrรผลmeye katฤฑldฤฑ", - "You joined the call" : "Bir gรถrรผลmeye katฤฑldฤฑnฤฑz", - "{actor} left the call" : "{actor} gรถrรผลmeden ayrฤฑldฤฑ", - "You left the call" : "Bir gรถrรผลmeden ayrฤฑldฤฑnฤฑz", + "{actor} started a call" : "{actor} bir รงaฤrฤฑ baลlattฤฑ", + "You started a call" : "Bir รงaฤrฤฑ baลlattฤฑnฤฑz", + "{actor} joined the call" : "{actor} รงaฤrฤฑya katฤฑldฤฑ", + "You joined the call" : "Bir รงaฤrฤฑya katฤฑldฤฑnฤฑz", + "{actor} left the call" : "{actor} รงaฤrฤฑdan ayrฤฑldฤฑ", + "You left the call" : "Bir รงaฤrฤฑdan ayrฤฑldฤฑnฤฑz", "{actor} unlocked the conversation" : "{actor} gรถrรผลmenin kilidini aรงtฤฑ", "You unlocked the conversation" : "Gรถrรผลmenin kilidini aรงtฤฑnฤฑz", "An administrator unlocked the conversation" : "Bir yรถnetici gรถrรผลmenin kilidini aรงtฤฑ", @@ -159,18 +159,18 @@ "Deleted user" : "Kullanฤฑcฤฑyฤฑ sildi ", "%s (guest)" : "%s (konuk)", "You missed a call from {user}" : "{user} kullanฤฑcฤฑsฤฑ sizi aramฤฑล", - "You tried to call {user}" : "{user} kullanฤฑcฤฑsฤฑnฤฑ aramayฤฑ denediniz", - "_Call with %n guest (Duration {duration})_::_Call with %n guests (Duration {duration})_" : ["%n konuk ile gรถrรผลme (Sรผre {duration})","%n konuk ile gรถrรผลme (Sรผre {duration})"], - "_{actor} ended the call with %n guest (Duration {duration})_::_{actor} ended the call with %n guests (Duration {duration})_" : ["{actor}, %n konukla gรถrรผลmeyi sonlandฤฑrdฤฑ (Sรผre {duration})","{actor}, %n konukla gรถrรผลmeyi sonlandฤฑrdฤฑ (Sรผre {duration})"], - "Call with {user1} and {user2} (Duration {duration})" : "{user1} ve {user2} ile gรถrรผลme (Sรผre {duration})", - "{actor} ended the call with {user1} (Duration {duration})" : "{actor}, {user1} ile gรถrรผลmeyi sonlandฤฑrdฤฑ (Sรผre {duration})", - "{actor} ended the call with {user1} and {user2} (Duration {duration})" : "{actor}, {user1} ve {user2} ile gรถrรผลmeyi sonlandฤฑrdฤฑ (Sรผre {duration})", - "Call with {user1}, {user2} and {user3} (Duration {duration})" : "{user1}, {user2} ve {user3} ile gรถrรผลme (Sรผre {duration})", - "{actor} ended the call with {user1}, {user2} and {user3} (Duration {duration})" : "{actor}, {user1}, {user2} ve {user3} ile gรถrรผลmeyi sonlandฤฑrdฤฑ (Sรผre {duration})", - "Call with {user1}, {user2}, {user3} and {user4} (Duration {duration})" : "{user1}, {user2}, {user3} ve {user4} ile gรถrรผลme (Sรผre {duration})", - "{actor} ended the call with {user1}, {user2}, {user3} and {user4} (Duration {duration})" : "{actor}, {user1}, {user2}, {user3} ve {user4} ile gรถrรผลmeyi sonlandฤฑrdฤฑ (Sรผre {duration})", - "Call with {user1}, {user2}, {user3}, {user4} and {user5} (Duration {duration})" : "{user1}, {user2}, {user3}, {user4} ve {user5} ile gรถrรผลme (Sรผre {duration})", - "{actor} ended the call with {user1}, {user2}, {user3}, {user4} and {user5} (Duration {duration})" : "{actor}, {user1}, {user2}, {user3}, {user4} ve {user5} ile gรถrรผลmeyi sonlandฤฑrdฤฑ (Sรผre {duration})", + "You tried to call {user}" : "{user} kullanฤฑcฤฑsฤฑnฤฑ รงaฤฤฑrmayฤฑ denediniz", + "_Call with %n guest (Duration {duration})_::_Call with %n guests (Duration {duration})_" : ["%n konuk ile รงaฤrฤฑ (Sรผre {duration})","%n konuk ile รงaฤrฤฑ (Sรผre {duration})"], + "_{actor} ended the call with %n guest (Duration {duration})_::_{actor} ended the call with %n guests (Duration {duration})_" : ["{actor}, %n konukla รงaฤrฤฑyฤฑ sonlandฤฑrdฤฑ (Sรผre {duration})","{actor}, %n konukla รงaฤrฤฑyฤฑ sonlandฤฑrdฤฑ (Sรผre {duration})"], + "Call with {user1} and {user2} (Duration {duration})" : "{user1} ve {user2} ile รงaฤrฤฑ (Sรผre {duration})", + "{actor} ended the call with {user1} (Duration {duration})" : "{actor}, {user1} ile รงaฤrฤฑyฤฑ sonlandฤฑrdฤฑ (Sรผre {duration})", + "{actor} ended the call with {user1} and {user2} (Duration {duration})" : "{actor}, {user1} ve {user2} ile รงaฤrฤฑyฤฑ sonlandฤฑrdฤฑ (Sรผre {duration})", + "Call with {user1}, {user2} and {user3} (Duration {duration})" : "{user1}, {user2} ve {user3} ile รงaฤrฤฑ (Sรผre {duration})", + "{actor} ended the call with {user1}, {user2} and {user3} (Duration {duration})" : "{actor}, {user1}, {user2} ve {user3} ile รงaฤrฤฑyฤฑ sonlandฤฑrdฤฑ (Sรผre {duration})", + "Call with {user1}, {user2}, {user3} and {user4} (Duration {duration})" : "{user1}, {user2}, {user3} ve {user4} ile รงaฤrฤฑ (Sรผre {duration})", + "{actor} ended the call with {user1}, {user2}, {user3} and {user4} (Duration {duration})" : "{actor}, {user1}, {user2}, {user3} ve {user4} ile รงaฤrฤฑyฤฑ sonlandฤฑrdฤฑ (Sรผre {duration})", + "Call with {user1}, {user2}, {user3}, {user4} and {user5} (Duration {duration})" : "{user1}, {user2}, {user3}, {user4} ve {user5} ile รงaฤrฤฑ (Sรผre {duration})", + "{actor} ended the call with {user1}, {user2}, {user3}, {user4} and {user5} (Duration {duration})" : "{actor}, {user1}, {user2}, {user3}, {user4} ve {user5} ile รงaฤrฤฑyฤฑ sonlandฤฑrdฤฑ (Sรผre {duration})", "Talk to %s" : "%s ile gรถrรผลรผn", "File is not shared, or shared but not with the user" : "Dosya paylaลฤฑlmamฤฑล ya da paylaลฤฑlmฤฑล ancak kullanฤฑcฤฑ ile deฤil.", "No account available to delete." : "Silinebilecek bir hesap yok.", @@ -222,12 +222,12 @@ "A guest mentioned you in conversation {call}" : "Bir konuk {call} gรถrรผลmesinde sizi andฤฑ", "View chat" : "Sohbeti gรถrรผntรผle", "{user} invited you to a private conversation" : "{user} sizi รถzel bir gรถrรผลmeye รงaฤฤฑrdฤฑ", - "Join call" : "Gรถrรผลmeye katฤฑl", + "Join call" : "รaฤrฤฑya katฤฑl", "{user} invited you to a group conversation: {call}" : "{user} sizi bir grup gรถrรผลmesine รงaฤฤฑrdฤฑ: {call}", "Answer call" : "รaฤrฤฑyฤฑ yanฤฑtla", "{user} would like to talk with you" : "{user} sizinle gรถrรผลmek istiyor", "Call back" : "Geri ara", - "A group call has started in {call}" : "{call} iรงinde bir grup gรถrรผลmesi baลlatฤฑldฤฑ", + "A group call has started in {call}" : "{call} iรงinde bir grup รงaฤrฤฑsฤฑ baลlatฤฑldฤฑ", "You missed a group call in {call}" : "{call} grubu sizi aramฤฑล", "{email} is requesting the password to access {file}" : "{email}, {file} dosyasฤฑna eriลme parolasฤฑnฤฑ istiyor", "{email} tried to request the password to access {file}" : "{email}, {file} dosyasฤฑna eriลme parolasฤฑnฤฑ istemeyi denedi", @@ -522,10 +522,10 @@ "Conversation not found" : "Gรถrรผลme bulunamadฤฑ", "Path is already shared with this room" : "Bu yol bu gรถrรผลme ile zaten paylaลฤฑlmฤฑล", "Chat, video & audio-conferencing using WebRTC" : "WebRTC kullanarak yazฤฑlฤฑ, sesli ve gรถrรผntรผlรผ gรถrรผลmeler yapabilirsiniz", - "Chat, video & audio-conferencing using WebRTC\n\n* ๐ฌ **Chat integration!** Nextcloud Talk comes with a simple text chat. Allowing you to share files from your Nextcloud and mentioning other participants.\n* ๐ฅ **Private, group, public and password protected calls!** Just invite somebody, a whole group or send a public link to invite to a call.\n* ๐ป **Screen sharing!** Share your screen with participants of your call. You just need to use Firefox version 66 (or newer), latest Edge or Chrome 72 (or newer, also possible using Chrome 49 with this [Chrome extension](https://chrome.google.com/webstore/detail/screensharing-for-nextclo/kepnpjhambipllfmgmbapncekcmabkol)).\n* ๐ **Integration with other Nextcloud apps** like Files, Contacts and Deck. More to come.\n\nAnd in the works for the [coming versions](https://github.com/nextcloud/spreed/milestones/):\n* โ [Federated calls](https://github.com/nextcloud/spreed/issues/21), to call people on other Nextclouds" : "WebRTC รผzerinden yazฤฑlฤฑ, gรถrรผntรผtรผlรผ ve sesli gรถrรผลme yapฤฑlabilmesini saฤlar\n\n* ๐ฌ **Gรถrรผลme bรผtรผnlรผฤรผ!** Nextcloud Talk uygulamasฤฑ basit metin ile yazฤฑลma desteฤi sunar. Nextcloud รผzerindeki dosyalarฤฑ paylaลabilir, diฤer katฤฑlฤฑmcฤฑlarฤฑ anabilirsiniz.\n* ๐ฅ **รzel, grup, herkese aรงฤฑk ve parola korumalฤฑ gรถrรผลmeler!** Gรถrรผลmek istediฤiniz bir kiลiyi ya da bir grubun tamamฤฑnฤฑ รงaฤฤฑrabilir, gรถrรผลme รงaฤrฤฑsฤฑ iรงin herkese aรงฤฑk bir baฤlantฤฑ kullanabilirsiniz.\n* ๐ป **Ekran paylaลฤฑmฤฑ!** Gรถrรผลme katฤฑlฤฑmcฤฑlarฤฑ ile ekranฤฑnฤฑzฤฑ paylaลabilirsiniz. Firefox 66 (ya da รผzeri), Edge son sรผrรผmรผ ya da Chrome 72 (ya da รผzeri ve ayrฤฑca [bu Chrome eklentisi ile](https://chrome.google.com/webstore/detail/screensharing-for-nextclo/kepnpjhambipllfmgmbapncekcmabkol) Chrome 49) bir tarayฤฑcฤฑ sรผrรผmรผ kullanmanฤฑz yeterlidir.\n* ๐ **Diฤer Nextcloud uygulamalarฤฑ ile bรผtรผnlรผk** ลu anda Files, Contacts ve Deck. Gerisi gelecek.\n\n[Gelecek sรผrรผmler](https://github.com/nextcloud/spreed/milestones/) รผzerinde รงalฤฑลฤฑyoruz:\n* โ [Birleลik gรถrรผลmeler](https://github.com/nextcloud/spreed/issues/21), ile baลka Nextcloud kopyalarฤฑ kullanan kiลiler ile gรถrรผลebilirsiniz", - "Navigating away from the page will leave the call in {conversation}" : "Sayfadan ayrฤฑlฤฑrsanฤฑz {conversation} gรถrรผลmesinden รงฤฑkacaksฤฑnฤฑz", - "Leave call" : "Gรถrรผลmeden ayrฤฑl", - "Stay in call" : "Gรถrรผลmede kal", + "Chat, video & audio-conferencing using WebRTC\n\n* ๐ฌ **Chat integration!** Nextcloud Talk comes with a simple text chat. Allowing you to share files from your Nextcloud and mentioning other participants.\n* ๐ฅ **Private, group, public and password protected calls!** Just invite somebody, a whole group or send a public link to invite to a call.\n* ๐ป **Screen sharing!** Share your screen with participants of your call. You just need to use Firefox version 66 (or newer), latest Edge or Chrome 72 (or newer, also possible using Chrome 49 with this [Chrome extension](https://chrome.google.com/webstore/detail/screensharing-for-nextclo/kepnpjhambipllfmgmbapncekcmabkol)).\n* ๐ **Integration with other Nextcloud apps** like Files, Contacts and Deck. More to come.\n\nAnd in the works for the [coming versions](https://github.com/nextcloud/spreed/milestones/):\n* โ [Federated calls](https://github.com/nextcloud/spreed/issues/21), to call people on other Nextclouds" : "WebRTC รผzerinden yazฤฑlฤฑ, gรถrรผntรผtรผlรผ ve sesli gรถrรผลme yapฤฑlabilmesini saฤlar\n\n* ๐ฌ **Gรถrรผลme bรผtรผnlรผฤรผ!** Nextcloud Talk uygulamasฤฑ basit metin ile yazฤฑลma desteฤi sunar. Nextcloud รผzerindeki dosyalarฤฑ paylaลabilir, diฤer katฤฑlฤฑmcฤฑlarฤฑ anabilirsiniz.\n* ๐ฅ **รzel, grup, herkese aรงฤฑk ve parola korumalฤฑ รงaฤrฤฑlar!** Gรถrรผลmek istediฤiniz bir kiลiyi ya da bir grubun tamamฤฑnฤฑ รงaฤฤฑrabilir, gรถrรผลme รงaฤrฤฑsฤฑ iรงin herkese aรงฤฑk bir baฤlantฤฑ kullanabilirsiniz.\n* ๐ป **Ekran paylaลฤฑmฤฑ!** รaฤrฤฑ katฤฑlฤฑmcฤฑlarฤฑ ile ekranฤฑnฤฑzฤฑ paylaลabilirsiniz. Firefox 66 (ya da รผzeri), Edge son sรผrรผmรผ ya da Chrome 72 (ya da รผzeri ve ayrฤฑca [bu Chrome eklentisi ile](https://chrome.google.com/webstore/detail/screensharing-for-nextclo/kepnpjhambipllfmgmbapncekcmabkol) Chrome 49) bir tarayฤฑcฤฑ sรผrรผmรผ kullanmanฤฑz yeterlidir.\n* ๐ **Diฤer Nextcloud uygulamalarฤฑ ile bรผtรผnlรผk** ลu anda Files, Contacts ve Deck. Gerisi gelecek.\n\n[Gelecek sรผrรผmler](https://github.com/nextcloud/spreed/milestones/) รผzerinde รงalฤฑลฤฑyoruz:\n* โ [Birleลik รงaฤrฤฑlar](https://github.com/nextcloud/spreed/issues/21), ile baลka Nextcloud kopyalarฤฑ kullanan kiลileri รงaฤฤฑrabilirsiniz", + "Navigating away from the page will leave the call in {conversation}" : "Sayfadan ayrฤฑlฤฑrsanฤฑz {conversation} รงaฤrฤฑsฤฑndan รงฤฑkacaksฤฑnฤฑz", + "Leave call" : "รaฤrฤฑdan ayrฤฑl", + "Stay in call" : "รaฤrฤฑda kal", "Duplicate session" : "รift oturum", "Discuss this file" : "Bu dosya hakkฤฑnda gรถrรผล", "Share this file with others to discuss it" : "Bu dosyayฤฑ, hakkฤฑnda gรถrรผลmek iรงin baลkalarฤฑ ile paylaล", @@ -541,8 +541,8 @@ "Limit using Talk" : "Talk uygulamasฤฑnฤฑn kullanฤฑmฤฑ sฤฑnฤฑrlansฤฑn", "Limit creating a public and group conversation" : "Herkese aรงฤฑk ve grup gรถrรผลmesi oluลturma sฤฑnฤฑrlansฤฑn", "Limit creating conversations" : "Gรถrรผลme oluลturmayฤฑ sฤฑnฤฑrla", - "Limit starting a call" : "Bir gรถrรผลme baลlatmayฤฑ sฤฑnฤฑrla", - "Limit starting calls" : "Gรถrรผลmeleri baลlatmayฤฑ sฤฑnฤฑrla", + "Limit starting a call" : "Bir รงaฤrฤฑ baลlatmayฤฑ sฤฑnฤฑrla", + "Limit starting calls" : "รaฤrฤฑlarฤฑ baลlatmayฤฑ sฤฑnฤฑrla", "When a call has started, everyone with access to the conversation can join the call." : "Bir รงaฤrฤฑ yapฤฑldฤฑฤฤฑnda, gรถrรผลmeye eriลimi olan herkes รงaฤrฤฑya katฤฑlabilir.", "Everyone" : "Herkes", "Users and moderators" : "Kullanฤฑcฤฑlar ve sorumlular", @@ -633,9 +633,9 @@ "Saved" : "Kaydedildi", "Add a new server" : "Yeni sunucu ekle", "An external signaling server should optionally be used for larger installations. Leave empty to use the internal signaling server." : "Bรผyรผk kurulumlar iรงin isteฤe gรถre bir dฤฑล signaling sunucusu kullanฤฑlmalฤฑdฤฑr. ฤฐรง signaling sunucusunu kullanmak iรงin boล bฤฑrakฤฑn.", - "Please note that calls with more than 4 participants without external signaling server, participants can experience connectivity issues and cause high load on participating devices." : "Bir dฤฑล signaling sunucusu olmadan 4 kiลiden fazlasฤฑ ile yapฤฑlan gรถrรผลmelerde baฤlantฤฑ sorunlarฤฑ yaลanabileceฤini ve baฤlanan aygฤฑtlarda aลฤฑrฤฑ iลlem yรผkรผ oluลabileceฤini unutmayฤฑn.", + "Please note that calls with more than 4 participants without external signaling server, participants can experience connectivity issues and cause high load on participating devices." : "Bir dฤฑล signaling sunucusu olmadan 4 kiลiden fazlasฤฑ ile yapฤฑlan รงaฤrฤฑlarda baฤlantฤฑ sorunlarฤฑ yaลanabileceฤini ve baฤlanan aygฤฑtlarda aลฤฑrฤฑ iลlem yรผkรผ oluลabileceฤini unutmayฤฑn.", "It is highly recommended to set up a distributed cache when using Nextcloud Talk together with a High Performance Back-end." : "Nextcloud Talk uygulamasฤฑ ile yรผksek baลarฤฑmlฤฑ bir arka plan kullanฤฑyorsanฤฑz daฤฤฑtฤฑlmฤฑล รถn bellek kullanmanฤฑz รถnemle รถnerilir.", - "Don't warn about connectivity issues in calls with more than 4 participants" : "4 kiลiden fazla katฤฑlฤฑmcฤฑsฤฑ olan gรถrรผลmelerde baฤlantฤฑ sorunlarฤฑ uyarฤฑsฤฑ gรถrรผntรผlenmesin", + "Don't warn about connectivity issues in calls with more than 4 participants" : "4 kiลiden fazla katฤฑlฤฑmcฤฑsฤฑ olan รงaฤrฤฑlarda baฤlantฤฑ sorunlarฤฑ uyarฤฑsฤฑ gรถrรผntรผlenmesin", "STUN server URL" : "STUN sunucusunun adresi", "STUN servers" : "STUN sunucularฤฑ", "A STUN server is used to determine the public IP address of participants behind a router." : "STUN sunucusu bir yรถnelticinin arkasฤฑndaki katฤฑlฤฑmcฤฑnฤฑn herkese aรงฤฑk adresinin belirlenmesinde kullanฤฑlฤฑr.", @@ -668,7 +668,7 @@ "Expand stripe" : "ลeridi geniลlet", "Copy link" : "Baฤlantฤฑyฤฑ kopyala", "Connecting โฆ" : "Baฤlantฤฑ kuruluyor โฆ", - "Waiting for others to join the call โฆ" : "Diฤerlerinin gรถrรผลmeye katฤฑlmasฤฑ bekleniyor โฆ", + "Waiting for others to join the call โฆ" : "Diฤerlerinin รงaฤrฤฑya katฤฑlmasฤฑ bekleniyor โฆ", "You can invite others in the participant tab of the sidebar" : "Diฤer kiลileri yan รงubuktaki katฤฑlฤฑmcฤฑ sekmesinden รงaฤฤฑrabilirsiniz", "You can invite others in the participant tab of the sidebar or share this link to invite others!" : "Diฤer kiลileri yan รงubuktaki katฤฑlฤฑmcฤฑ sekmesinden ya da bu baฤlantฤฑyฤฑ paylaลarak รงaฤฤฑrabilirsiniz!", "Share this link to invite others!" : "Diฤer kiลileri รงaฤฤฑrmak iรงin bu baฤlantฤฑyฤฑ paylaลฤฑn!", @@ -989,7 +989,7 @@ "No permission to post messages in this conversation" : "Bu gรถrรผลmeye ileti gรถnderme izniniz yok", "Write message, @ to mention someone โฆ" : "ฤฐleti yazฤฑn, @ ile baลkalarฤฑnฤฑ anabilirsiniz โฆ", "Invalid path selected" : "Seรงilen yol geรงersiz", - "Start a call" : "Bir gรถrรผลme baลlat", + "Start a call" : "Bir รงaฤrฤฑ baลlat", "Skip the lobby" : "Giriลi atla", "Can post messages and reactions" : "ฤฐleti ve tepki gรถnderebilir", "Enable the microphone" : "Mikrofonu aรง", @@ -1033,6 +1033,7 @@ "Add groups" : "Grup ekle", "Add emails" : "E-posta adreslerini ekle", "Add circles" : "รevre ekle", + "Integrations" : "Bรผtรผnleลtirmeler", "Add federated users" : "Birleลtirilmiล kullanฤฑcฤฑlar ekle", "Searching โฆ" : "Aranฤฑyor โฆ", "No results" : "Herhangi bir sonuรง bulunamadฤฑ", @@ -1065,16 +1066,16 @@ "Privacy" : "Gizlilik", "Share my read-status and show the read-status of others" : "Okundu durumumu paylaล ve diฤerlerinin okundu durumunu gรถrรผntรผle", "Sounds" : "Sesler", - "Play sounds when participants join or leave a call" : "Katฤฑlฤฑmcฤฑlar gรถrรผลmeye girdiฤinde ya da รงฤฑktฤฑฤฤฑnda ses รงalฤฑnsฤฑn", + "Play sounds when participants join or leave a call" : "Katฤฑlฤฑmcฤฑlar รงaฤrฤฑya katฤฑldฤฑฤฤฑnda ya da ayrฤฑldฤฑฤฤฑnda ses รงalฤฑnsฤฑn", "Sounds can currently not be played in Safari browser and iPad and iPhone devices due to technical restrictions by the manufacturer." : "รreticinin sฤฑnฤฑrlamalarฤฑ nedeniyle, sesler ลu anda Safari web tarayฤฑcฤฑsฤฑ, iPad ve iPhone aygฤฑtlarฤฑnda รงalฤฑnamฤฑyor. ", "Sounds for chat and call notifications can be adjusted in the personal settings." : "Sohbet ve รงaฤrฤฑ bildirimlerinin kiลisel ayarlar bรถlรผmรผnden belirlenebilen sesleri.", "Keyboard shortcuts" : "Kฤฑsayol tuลlarฤฑ", "Speed up your Talk experience with these quick shortcuts." : "ลu kฤฑsayol tuลlarฤฑnฤฑ kullanarak Talk deneyiminizi hฤฑzlandฤฑrabilirsiniz.", "Focus the chat input" : "Sohbet giriลine odaklan", "Unfocus the chat input to use shortcuts" : "Kฤฑsayol tuลlarฤฑnฤฑ kullanmak iรงin odaฤฤฑ sohbet giriลinden al", - "Fullscreen the chat or call" : "Sohbet ya da gรถrรผลmeyi tam ekrana bรผyรผt", + "Fullscreen the chat or call" : "Sohbet ya da รงaฤrฤฑyฤฑ tam ekrana bรผyรผt", "Search" : "Arama", - "Shortcuts while in a call" : "Gรถrรผลme sฤฑrasฤฑnda kullanฤฑlabilecek kฤฑsayol tuลlarฤฑ", + "Shortcuts while in a call" : "รaฤrฤฑ sฤฑrasฤฑnda kullanฤฑlabilecek kฤฑsayol tuลlarฤฑ", "Camera on and off" : "Kamerayฤฑ aรงma ve kapatma", "Microphone on and off" : "Mikrofonu aรงma ve kapatma", "Space bar" : "Boลluk tuลu", @@ -1089,9 +1090,9 @@ "Sounds setting saved" : "Ses ayarlarฤฑ kaydedildi", "Error while saving sounds setting" : "Ses ayarlarฤฑ kaydedilirken sorun รงฤฑktฤฑ", "End meeting for all" : "Toplantฤฑyฤฑ herkes iรงin sonlandฤฑr", - "Start call" : "Gรถrรผลmeyi baลlat", - "Nextcloud Talk was updated, you need to reload the page before you can start or join a call." : "Nextcloud Talk gรผncellenmiล. Bir gรถrรผลmeye baลlamadan รถnce sayfayฤฑ yeniden yรผklemelisiniz.", - "You will be able to join the call only after a moderator starts it." : "Gรถrรผลmeye ancak bir sorumlu gรถrรผลmeyi baลlattฤฑktan sonra katฤฑlabilirsiniz.", + "Start call" : "รaฤrฤฑyฤฑ baลlat", + "Nextcloud Talk was updated, you need to reload the page before you can start or join a call." : "Nextcloud Talk gรผncellenmiล. Bir รงaฤrฤฑya baลlamadan รถnce sayfayฤฑ yeniden yรผklemelisiniz.", + "You will be able to join the call only after a moderator starts it." : "รaฤrฤฑya ancak bir sorumlu รงaฤrฤฑyฤฑ baลlattฤฑktan sonra katฤฑlabilirsiniz.", "Conversation actions" : "Gรถrรผลme iลlemleri", "Toggle fullscreen" : "Tam ekranฤฑ aรง/kapat", "Rename conversation" : "Gรถrรผลmeyi yeniden adlandฤฑr", diff --git a/l10n/uk.js b/l10n/uk.js index 1294d8695..4dc71b011 100644 --- a/l10n/uk.js +++ b/l10n/uk.js @@ -4,12 +4,20 @@ OC.L10N.register( "a conversation" : "ัะพะทะผะพะฒะฐ", "(Duration %s)" : "(ะขัะธะฒะฐะปัััั %s)", "_%n guest_::_%n guests_" : ["%n ะณัััั","%n ะณะพััั","%n ะณะพััะตะน","%n ะณะพััะตะน"], + "_%n other_::_%n others_" : ["%nัะฝัะธะน","%nัะฝัะธั
","%n ัะฝัะธั
","%n ัะฝัะธั
"], + "Other activities" : "ะะฝัะฐ ะฐะบัะธะฒะฝัััั", "Talk" : "ะ ะพะทะผะพะฒะธ", "Guest" : "ะัััั", + "Welcome to Nextcloud Talk!\nIn this conversation you will be informed about new features available in Nextcloud Talk." : "ะะฐัะบะฐะฒะพ ะฟัะพัะธะผะพ ะดะพ Nextcloud Talk!\nะฃ ััะน ัะพะทะผะพะฒั ะะธ ะฑัะดะตัะต ะพััะธะผัะฒะฐัะธ ะฟะพะฒัะดะพะผะปะตะฝะฝั ะฟัะพ ะฝะพะฒั ััะฝะบััั ะฒ Nextcloud Talk!", "- Conversations can now have a lobby. This will allow moderators to join the chat and call already to prepare the meeting, while users and guests have to wait" : "ะะพะทะฒะพะปะธัะธ ะณะพัััะผ ะฟัะธัะดะฝัะฒะฐัะธัั ัะตัะตะท ะฟะพัะธะปะฐะฝะฝั", "The command does not exist" : "ะะพะผะฐะฝะดะฐ ะฒัะดัััะฝั", + "Reaction deleted by author" : "ะ ะตะฐะบััั ะฒะธะปััะตะฝะพ ะฐะฒัะพัะพะผ", "{actor} created the conversation" : "{actor} ััะฒะพัะธะฒ ัะพะทะผะพะฒั", "You created the conversation" : "ะะธ ััะฒะพัะธะปะธ ัะพะทะผะพะฒั", + "An administrator created the conversation" : "ะะดะผัะฝััััะฐัะพั ััะฒะพัะธะฒ ัะพะทะผะพะฒั", + "{actor} renamed the conversation from \"%1$s\" to \"%2$s\"" : "{actor} ะทะผัะฝะธะฒ ะฝะฐะทะฒั ัะพะทะผะพะฒะธ ะท \"%1$s\" ะฝะฐ \"%2$s\"", + "You renamed the conversation from \"%1$s\" to \"%2$s\"" : "ะะธ ะทะผัะฝะธะปะธ ะฝะฐะทะฒั ัะพะทะผะพะฒะธ ะท \"%1$s\" ะฝะฐ \"%2$s\"", + "An administrator renamed the conversation from \"%1$s\" to \"%2$s\"" : "ะะดะผัะฝััััะฐัะพั ะทะผัะฝะธะฒ ะฝะฐะทะฒั ัะพะทะผะพะฒะธ ะท \"%1$s\" ะฝะฐ \"%2$s\"", "{actor} started a call" : "{actor} ัะพะทะฟะพัะฐะฒ ัะพะทะผะพะฒั", "You started a call" : "ะะธ ะฟะพัะฐะปะธ ะฒะธะบะปะธะบ", "{actor} joined the call" : "{actor} ะฟัะธัะดะฝะฐะฒัั ะดะพ ัะพะทะผะพะฒะธ", @@ -149,7 +157,7 @@ OC.L10N.register( "Share files to the conversation" : "ะะพะดัะปะธัะธัั ัะฐะนะปะฐะผะธ ะฟัะด ัะฐั ัะพะทะผะพะฒะธ", "Upload new files" : "ะะพะดะฐัะธ ัะฐะนะป", "Share from Files" : "ะัะดะบัะธัะธ ะคะฐะนะปะธ", - "Send message" : "ะะฐะดััะปะฐัะธะฟะพะฒัะดะพะผะปะตะฝะฝั", + "Send message" : "ะะฐะดััะปะฐัะธ ะฟะพะฒัะดะพะผะปะตะฝะฝั", "File to share" : "ะะธะฑะตัััั ัะฐะนะป ะดะปั ะฝะฐะดะฐะฝะฝั ะดะพัััะฟั", "Write message, @ to mention someone โฆ" : "ะะฐะฟะธัะฐัะธ ะฟะพะฒัะดะพะผะปะตะฝะฝั, @ัะผ'ั ะดะปั ะทะณะฐะดะบะธ ะฟัะพ ะบะพัะธัััะฒะฐัะฐโฆ", "Invalid path selected" : "ะะธะฑัะฐะฝะพ ะฝะตะฟัะฐะฒะธะปัะฝะธะน ัะปัั
", diff --git a/l10n/uk.json b/l10n/uk.json index cf1d93d20..132c01b39 100644 --- a/l10n/uk.json +++ b/l10n/uk.json @@ -2,12 +2,20 @@ "a conversation" : "ัะพะทะผะพะฒะฐ", "(Duration %s)" : "(ะขัะธะฒะฐะปัััั %s)", "_%n guest_::_%n guests_" : ["%n ะณัััั","%n ะณะพััั","%n ะณะพััะตะน","%n ะณะพััะตะน"], + "_%n other_::_%n others_" : ["%nัะฝัะธะน","%nัะฝัะธั
","%n ัะฝัะธั
","%n ัะฝัะธั
"], + "Other activities" : "ะะฝัะฐ ะฐะบัะธะฒะฝัััั", "Talk" : "ะ ะพะทะผะพะฒะธ", "Guest" : "ะัััั", + "Welcome to Nextcloud Talk!\nIn this conversation you will be informed about new features available in Nextcloud Talk." : "ะะฐัะบะฐะฒะพ ะฟัะพัะธะผะพ ะดะพ Nextcloud Talk!\nะฃ ััะน ัะพะทะผะพะฒั ะะธ ะฑัะดะตัะต ะพััะธะผัะฒะฐัะธ ะฟะพะฒัะดะพะผะปะตะฝะฝั ะฟัะพ ะฝะพะฒั ััะฝะบััั ะฒ Nextcloud Talk!", "- Conversations can now have a lobby. This will allow moderators to join the chat and call already to prepare the meeting, while users and guests have to wait" : "ะะพะทะฒะพะปะธัะธ ะณะพัััะผ ะฟัะธัะดะฝัะฒะฐัะธัั ัะตัะตะท ะฟะพัะธะปะฐะฝะฝั", "The command does not exist" : "ะะพะผะฐะฝะดะฐ ะฒัะดัััะฝั", + "Reaction deleted by author" : "ะ ะตะฐะบััั ะฒะธะปััะตะฝะพ ะฐะฒัะพัะพะผ", "{actor} created the conversation" : "{actor} ััะฒะพัะธะฒ ัะพะทะผะพะฒั", "You created the conversation" : "ะะธ ััะฒะพัะธะปะธ ัะพะทะผะพะฒั", + "An administrator created the conversation" : "ะะดะผัะฝััััะฐัะพั ััะฒะพัะธะฒ ัะพะทะผะพะฒั", + "{actor} renamed the conversation from \"%1$s\" to \"%2$s\"" : "{actor} ะทะผัะฝะธะฒ ะฝะฐะทะฒั ัะพะทะผะพะฒะธ ะท \"%1$s\" ะฝะฐ \"%2$s\"", + "You renamed the conversation from \"%1$s\" to \"%2$s\"" : "ะะธ ะทะผัะฝะธะปะธ ะฝะฐะทะฒั ัะพะทะผะพะฒะธ ะท \"%1$s\" ะฝะฐ \"%2$s\"", + "An administrator renamed the conversation from \"%1$s\" to \"%2$s\"" : "ะะดะผัะฝััััะฐัะพั ะทะผัะฝะธะฒ ะฝะฐะทะฒั ัะพะทะผะพะฒะธ ะท \"%1$s\" ะฝะฐ \"%2$s\"", "{actor} started a call" : "{actor} ัะพะทะฟะพัะฐะฒ ัะพะทะผะพะฒั", "You started a call" : "ะะธ ะฟะพัะฐะปะธ ะฒะธะบะปะธะบ", "{actor} joined the call" : "{actor} ะฟัะธัะดะฝะฐะฒัั ะดะพ ัะพะทะผะพะฒะธ", @@ -147,7 +155,7 @@ "Share files to the conversation" : "ะะพะดัะปะธัะธัั ัะฐะนะปะฐะผะธ ะฟัะด ัะฐั ัะพะทะผะพะฒะธ", "Upload new files" : "ะะพะดะฐัะธ ัะฐะนะป", "Share from Files" : "ะัะดะบัะธัะธ ะคะฐะนะปะธ", - "Send message" : "ะะฐะดััะปะฐัะธะฟะพะฒัะดะพะผะปะตะฝะฝั", + "Send message" : "ะะฐะดััะปะฐัะธ ะฟะพะฒัะดะพะผะปะตะฝะฝั", "File to share" : "ะะธะฑะตัััั ัะฐะนะป ะดะปั ะฝะฐะดะฐะฝะฝั ะดะพัััะฟั", "Write message, @ to mention someone โฆ" : "ะะฐะฟะธัะฐัะธ ะฟะพะฒัะดะพะผะปะตะฝะฝั, @ัะผ'ั ะดะปั ะทะณะฐะดะบะธ ะฟัะพ ะบะพัะธัััะฒะฐัะฐโฆ", "Invalid path selected" : "ะะธะฑัะฐะฝะพ ะฝะตะฟัะฐะฒะธะปัะฝะธะน ัะปัั
", diff --git a/l10n/vi.js b/l10n/vi.js index 6420a2f6c..b21f98f9e 100644 --- a/l10n/vi.js +++ b/l10n/vi.js @@ -635,6 +635,7 @@ OC.L10N.register( "Add groups" : "Thรชm nhรณm", "Add emails" : "Thรชm email", "Add circles" : "Thรชm vรฒng kแบฟt nแปi", + "Integrations" : "Cรกc bแป tรญch hแปฃp", "Searching โฆ" : "ฤang tรฌm kiแบฟm ...", "No results" : "Khรดng cรณ kแบฟt quแบฃ", "Search for more users" : "Tรฌm kiแบฟm thรชm ngฦฐแปi dรนng", diff --git a/l10n/vi.json b/l10n/vi.json index fb7924da7..7c03fa457 100644 --- a/l10n/vi.json +++ b/l10n/vi.json @@ -633,6 +633,7 @@ "Add groups" : "Thรชm nhรณm", "Add emails" : "Thรชm email", "Add circles" : "Thรชm vรฒng kแบฟt nแปi", + "Integrations" : "Cรกc bแป tรญch hแปฃp", "Searching โฆ" : "ฤang tรฌm kiแบฟm ...", "No results" : "Khรดng cรณ kแบฟt quแบฃ", "Search for more users" : "Tรฌm kiแบฟm thรชm ngฦฐแปi dรนng", diff --git a/l10n/zh_CN.js b/l10n/zh_CN.js index 5e9f9dea1..b97e9354b 100644 --- a/l10n/zh_CN.js +++ b/l10n/zh_CN.js @@ -1012,6 +1012,7 @@ OC.L10N.register( "Add groups" : "ๆทปๅ ๅ็ป", "Add emails" : "ๆทปๅ ็ตๅญ้ฎไปถ", "Add circles" : "ๆทปๅ ๅๅญ", + "Integrations" : "้ๆ", "Add federated users" : "ๆทปๅ federated ็จๆท", "Searching โฆ" : "ๆญฃๅจๆ็ดข ...", "No results" : "ๆฒกๆ็ปๆ", diff --git a/l10n/zh_CN.json b/l10n/zh_CN.json index 10267c239..05adaef6d 100644 --- a/l10n/zh_CN.json +++ b/l10n/zh_CN.json @@ -1010,6 +1010,7 @@ "Add groups" : "ๆทปๅ ๅ็ป", "Add emails" : "ๆทปๅ ็ตๅญ้ฎไปถ", "Add circles" : "ๆทปๅ ๅๅญ", + "Integrations" : "้ๆ", "Add federated users" : "ๆทปๅ federated ็จๆท", "Searching โฆ" : "ๆญฃๅจๆ็ดข ...", "No results" : "ๆฒกๆ็ปๆ", diff --git a/l10n/zh_HK.js b/l10n/zh_HK.js index 7fd08dbf8..aea9384a9 100644 --- a/l10n/zh_HK.js +++ b/l10n/zh_HK.js @@ -985,6 +985,7 @@ OC.L10N.register( "Upload new files" : "ไธๅณๆฐๆชๆก", "Share from Files" : "ๅพๆชๆก้ฒ่กๅไบซ", "Add emoji" : "ๆทปๅ emoji", + "Send silently" : "้ป้ปๅณ้", "Send message" : "ๅณ้่จๆฏ", "File to share" : "่ฆๅไบซ็ๆชๆก", "This conversation has been locked" : "ๆญคๅฐ่ฉฑๅทฒ่ขซไธ้", @@ -1035,6 +1036,7 @@ OC.L10N.register( "Add groups" : "ๆฐๅข็พค็ต", "Add emails" : "ๆฐๅข้ป้ต", "Add circles" : "ๆฐๅขๅๅญ", + "Integrations" : "ๆดๅ", "Add federated users" : "ๆทปๅ federated ็จๆถ", "Searching โฆ" : "ๆญฃๅจๆๅฐโฆโฆ", "No results" : "ๆฒๆ็ฌฆๅๆๅฐ็้
็ฎ", diff --git a/l10n/zh_HK.json b/l10n/zh_HK.json index 6a262199e..75e678156 100644 --- a/l10n/zh_HK.json +++ b/l10n/zh_HK.json @@ -983,6 +983,7 @@ "Upload new files" : "ไธๅณๆฐๆชๆก", "Share from Files" : "ๅพๆชๆก้ฒ่กๅไบซ", "Add emoji" : "ๆทปๅ emoji", + "Send silently" : "้ป้ปๅณ้", "Send message" : "ๅณ้่จๆฏ", "File to share" : "่ฆๅไบซ็ๆชๆก", "This conversation has been locked" : "ๆญคๅฐ่ฉฑๅทฒ่ขซไธ้", @@ -1033,6 +1034,7 @@ "Add groups" : "ๆฐๅข็พค็ต", "Add emails" : "ๆฐๅข้ป้ต", "Add circles" : "ๆฐๅขๅๅญ", + "Integrations" : "ๆดๅ", "Add federated users" : "ๆทปๅ federated ็จๆถ", "Searching โฆ" : "ๆญฃๅจๆๅฐโฆโฆ", "No results" : "ๆฒๆ็ฌฆๅๆๅฐ็้
็ฎ", diff --git a/l10n/zh_TW.js b/l10n/zh_TW.js index a40b5d15d..cfaa99ca9 100644 --- a/l10n/zh_TW.js +++ b/l10n/zh_TW.js @@ -369,6 +369,7 @@ OC.L10N.register( "guest" : "่จชๅฎข", "Demote from moderator" : "ๅๆถไธปๆไบบ่ณๆ ผ", "Add users" : "ๆฐๅขไฝฟ็จ่
", + "Integrations" : "ๆดๅ", "Searching โฆ" : "ๆญฃๅจๆๅฐโฆโฆ", "No results" : "ๆฒๆ็ฌฆๅๆๅฐ็้
็ฎ", "Add users or groups" : "ๅขๅ ไฝฟ็จ่
ๆ่
็พค็ต", diff --git a/l10n/zh_TW.json b/l10n/zh_TW.json index 85c7856cd..1445cec34 100644 --- a/l10n/zh_TW.json +++ b/l10n/zh_TW.json @@ -367,6 +367,7 @@ "guest" : "่จชๅฎข", "Demote from moderator" : "ๅๆถไธปๆไบบ่ณๆ ผ", "Add users" : "ๆฐๅขไฝฟ็จ่
", + "Integrations" : "ๆดๅ", "Searching โฆ" : "ๆญฃๅจๆๅฐโฆโฆ", "No results" : "ๆฒๆ็ฌฆๅๆๅฐ็้
็ฎ", "Add users or groups" : "ๅขๅ ไฝฟ็จ่
ๆ่
็พค็ต", diff --git a/lib/Capabilities.php b/lib/Capabilities.php index 37f85fee2..57650a54d 100644 --- a/lib/Capabilities.php +++ b/lib/Capabilities.php @@ -102,8 +102,10 @@ class Capabilities implements IPublicCapability { 'conversation-permissions', 'rich-object-list-media', 'rich-object-delete', + 'unified-search', 'chat-permission', 'silent-send', + 'silent-call', 'send-call-notification', ], 'config' => [ @@ -119,7 +121,10 @@ class Capabilities implements IPublicCapability { ], 'conversations' => [], 'previews' => [ - 'max-gif-size' => (int)$this->serverConfig->getAppValue('spreed', 'max-gif-size', '3145728') + 'max-gif-size' => (int)$this->serverConfig->getAppValue('spreed', 'max-gif-size', '3145728'), + ], + 'signaling' => [ + 'session-ping-limit' => max(0, (int)$this->serverConfig->getAppValue('spreed', 'session-ping-limit', '200')), ], ], ]; diff --git a/lib/Chat/Parser/SystemMessage.php b/lib/Chat/Parser/SystemMessage.php index e8165712a..68a794406 100644 --- a/lib/Chat/Parser/SystemMessage.php +++ b/lib/Chat/Parser/SystemMessage.php @@ -716,6 +716,21 @@ class SystemMessage { ]; } + if ($room->getType() !== Room::TYPE_ONE_TO_ONE) { + // Can happen if a user was remove from a one-to-one room. + return [ + $this->l->t('You tried to call {user}'), + [ + 'user' => [ + 'type' => 'highlight', + 'id' => 'deleted_user', + 'name' => $room->getName(), + ], + ], + 'call_tried', + ]; + } + $participants = json_decode($room->getName(), true); $other = ''; foreach ($participants as $participant) { @@ -723,6 +738,7 @@ class SystemMessage { $other = $participant; } } + return [ $this->l->t('You tried to call {user}'), [ diff --git a/lib/Controller/CallController.php b/lib/Controller/CallController.php index 26797eae5..f55b62bc7 100644 --- a/lib/Controller/CallController.php +++ b/lib/Controller/CallController.php @@ -111,7 +111,7 @@ class CallController extends AEnvironmentAwareController { * @param int|null $forcePermissions * @return DataResponse */ - public function joinCall(?int $flags = null, ?int $forcePermissions = null): DataResponse { + public function joinCall(?int $flags = null, ?int $forcePermissions = null, bool $silent = false): DataResponse { $this->participantService->ensureOneToOneRoomIsFilled($this->room); $session = $this->participant->getSession(); @@ -128,7 +128,7 @@ class CallController extends AEnvironmentAwareController { $this->roomService->setPermissions($this->room, 'call', Attendee::PERMISSIONS_MODIFY_SET, $forcePermissions, true); } - $this->participantService->changeInCall($this->room, $this->participant, $flags); + $this->participantService->changeInCall($this->room, $this->participant, $flags, false, $silent); return new DataResponse(); } diff --git a/lib/Controller/PageController.php b/lib/Controller/PageController.php index 2ee61ccc3..0cada87b2 100644 --- a/lib/Controller/PageController.php +++ b/lib/Controller/PageController.php @@ -25,6 +25,7 @@ declare(strict_types=1); namespace OCA\Talk\Controller; +use OCA\Talk\AppInfo\Application; use OCA\Talk\Exceptions\ParticipantNotFoundException; use OCA\Talk\Exceptions\RoomNotFoundException; use OCA\Talk\Config; @@ -251,7 +252,9 @@ class PageController extends Controller { } $this->eventDispatcher->dispatch('\OCP\Collaboration\Resources::loadAdditionalScripts', new GenericEvent()); - $response = new TemplateResponse($this->appName, 'index'); + $response = new TemplateResponse($this->appName, 'index', [ + 'app' => Application::APP_ID, + ]); $csp = new ContentSecurityPolicy(); $csp->addAllowedConnectDomain('*'); $csp->addAllowedMediaDomain('blob:'); diff --git a/lib/Controller/SignalingController.php b/lib/Controller/SignalingController.php index 784036792..4f9bc62ba 100644 --- a/lib/Controller/SignalingController.php +++ b/lib/Controller/SignalingController.php @@ -729,22 +729,6 @@ class SignalingController extends OCSController { } private function backendPing(array $request): DataResponse { - try { - $room = $this->manager->getRoomByToken($request['roomid']); - } catch (RoomNotFoundException $e) { - $this->logger->debug('Tried to ping non existing room {token}', [ - 'token' => $request['roomid'], - 'app' => 'spreed-hpb', - ]); - return new DataResponse([ - 'type' => 'error', - 'error' => [ - 'code' => 'no_such_room', - 'message' => 'No such room.', - ], - ]); - } - $pingSessionIds = []; $now = $this->timeFactory->getTime(); foreach ($request['entries'] as $entry) { @@ -760,12 +744,11 @@ class SignalingController extends OCSController { 'type' => 'room', 'room' => [ 'version' => '1.0', - 'roomid' => $room->getToken(), ], ]; - $this->logger->debug('Pinged {numSessions} sessions in room {token}', [ + $this->logger->debug('Pinged {numSessions} sessions {token}', [ 'numSessions' => count($pingSessionIds), - 'token' => $request['roomid'], + 'token' => !empty($request['roomid']) ? ('in room ' . $request['roomid']) : '', 'app' => 'spreed-hpb', ]); return new DataResponse($response); diff --git a/lib/Events/SilentModifyParticipantEvent.php b/lib/Events/SilentModifyParticipantEvent.php new file mode 100644 index 000000000..1ac9d3806 --- /dev/null +++ b/lib/Events/SilentModifyParticipantEvent.php @@ -0,0 +1,27 @@ +<?php + +declare(strict_types=1); +/** + * @copyright Copyright (c) 2022 Vitor Mattos <vitor@php.rio> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Talk\Events; + +class SilentModifyParticipantEvent extends ModifyParticipantEvent { +} diff --git a/lib/Notification/Listener.php b/lib/Notification/Listener.php index f6913e67a..7ab0d5274 100644 --- a/lib/Notification/Listener.php +++ b/lib/Notification/Listener.php @@ -28,6 +28,7 @@ use OCA\Talk\Events\AddParticipantsEvent; use OCA\Talk\Events\JoinRoomUserEvent; use OCA\Talk\Events\RoomEvent; use OCA\Talk\Events\SendCallNotificationEvent; +use OCA\Talk\Events\SilentModifyParticipantEvent; use OCA\Talk\Model\Attendee; use OCA\Talk\Room; use OCA\Talk\Service\ParticipantService; @@ -90,7 +91,8 @@ class Listener implements IEventListener { $listener = static function (RoomEvent $event): void { $listener = Server::get(self::class); - $listener->checkCallNotifications($event->getRoom()); + $silent = $event instanceof SilentModifyParticipantEvent; + $listener->checkCallNotifications($event->getRoom(), $silent); }; $dispatcher->addListener(Room::EVENT_BEFORE_SESSION_JOIN_CALL, $listener); @@ -188,10 +190,12 @@ class Listener implements IEventListener { /** * Call notification: "{user} wants to talk with you" - * - * @param Room $room */ - public function checkCallNotifications(Room $room): void { + public function checkCallNotifications(Room $room, bool $silent = false): void { + if ($silent) { + $this->shouldSendCallNotification = false; + return; + } if ($room->getActiveSince() instanceof \DateTime) { // Call already active => No new notifications $this->shouldSendCallNotification = false; diff --git a/lib/Service/ParticipantService.php b/lib/Service/ParticipantService.php index 274ed2986..852e33d7f 100644 --- a/lib/Service/ParticipantService.php +++ b/lib/Service/ParticipantService.php @@ -43,6 +43,7 @@ use OCA\Talk\Events\RemoveParticipantEvent; use OCA\Talk\Events\RemoveUserEvent; use OCA\Talk\Events\RoomEvent; use OCA\Talk\Events\SendCallNotificationEvent; +use OCA\Talk\Events\SilentModifyParticipantEvent; use OCA\Talk\Exceptions\ForbiddenException; use OCA\Talk\Exceptions\InvalidPasswordException; use OCA\Talk\Exceptions\ParticipantNotFoundException; @@ -947,7 +948,7 @@ class ParticipantService { $this->dispatcher->dispatch(Room::EVENT_AFTER_END_CALL_FOR_EVERYONE, $event); } - public function changeInCall(Room $room, Participant $participant, int $flags, bool $endCallForEveryone = false): void { + public function changeInCall(Room $room, Participant $participant, int $flags, bool $endCallForEveryone = false, bool $silent = false): void { $session = $participant->getSession(); if (!$session instanceof Session) { return; @@ -962,7 +963,11 @@ class ParticipantService { } if ($flags !== Participant::FLAG_DISCONNECTED) { - $event = new ModifyParticipantEvent($room, $participant, 'inCall', $flags, $session->getInCall()); + if ($silent) { + $event = new SilentModifyParticipantEvent($room, $participant, 'inCall', $flags, $session->getInCall(), $silent); + } else { + $event = new ModifyParticipantEvent($room, $participant, 'inCall', $flags, $session->getInCall(), $silent); + } $this->dispatcher->dispatch(Room::EVENT_BEFORE_SESSION_JOIN_CALL, $event); } else { if ($endCallForEveryone) { diff --git a/lib/Signaling/BackendNotifier.php b/lib/Signaling/BackendNotifier.php index a1c0547d1..139107a9d 100644 --- a/lib/Signaling/BackendNotifier.php +++ b/lib/Signaling/BackendNotifier.php @@ -129,7 +129,7 @@ class BackendNotifier { $hash = hash_hmac('sha256', $random . $body, $this->config->getSignalingSecret()); $headers['Spreed-Signaling-Random'] = $random; $headers['Spreed-Signaling-Checksum'] = $hash; - $headers['Spreed-Signaling-Backend'] = $this->urlGenerator->getBaseUrl(); + $headers['Spreed-Signaling-Backend'] = $this->urlGenerator->getAbsoluteURL(''); $params = [ 'headers' => $headers, diff --git a/package-lock.json b/package-lock.json index 4164dd638..9b02356ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,9 +29,9 @@ "debounce": "^1.2.1", "emoji-regex": "^10.1.0", "escape-html": "^1.0.3", - "extendable-media-recorder": "^6.6.6", - "extendable-media-recorder-wav-encoder": "^7.0.68", - "extendable-media-recorder-wav-encoder-worker": "^8.0.60", + "extendable-media-recorder": "^6.6.7", + "extendable-media-recorder-wav-encoder": "^7.0.73", + "extendable-media-recorder-wav-encoder-worker": "^8.0.66", "hark": "^1.2.3", "leaflet": "^1.8.0", "leaflet-defaulticon-compatibility": "^0.1.1", @@ -78,7 +78,7 @@ "regenerator-runtime": "^0.13.9", "terser-webpack-plugin": "^5.3.1", "ts-loader": "^9.3.0", - "typescript": "^4.6.4", + "typescript": "^4.7.2", "wasm-check": "^2.0.4", "webpack-node-externals": "^3.0.0", "worker-loader": "^3.0.8" @@ -1637,9 +1637,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", - "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz", + "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -5936,11 +5936,11 @@ "integrity": "sha512-8zx/3Bwo/PxqwpNrEm2Zf9ZBCjfkLmLhS7lqzfP1eWH69iD/WyKWFpysben+gYxMSHcO9S94qvseGk4FVxba0g==" }, "node_modules/automation-events": { - "version": "4.0.16", - "resolved": "https://registry.npmjs.org/automation-events/-/automation-events-4.0.16.tgz", - "integrity": "sha512-8mIkcXzjyisUaw2O9HC80wOHscEPPD/ROrh/rEKN2B3VJzt3YJH5w0LcpUHyzprqV24HR0eTCelSKoei1FGg1A==", + "version": "4.0.19", + "resolved": "https://registry.npmjs.org/automation-events/-/automation-events-4.0.19.tgz", + "integrity": "sha512-e8ALmWdXSkDAtDVkmqLcCDMfMMvHcPTwsg+1GsxEO8+Cyg7FQs7F3VKifzdRTADVU6S1aqlPzDE3+KLFsH0sxA==", "dependencies": { - "@babel/runtime": "^7.17.9", + "@babel/runtime": "^7.18.3", "tslib": "^2.4.0" }, "engines": { @@ -6766,14 +6766,14 @@ } }, "node_modules/broker-factory": { - "version": "3.0.61", - "resolved": "https://registry.npmjs.org/broker-factory/-/broker-factory-3.0.61.tgz", - "integrity": "sha512-ns5dmQLu1f5dankjVH5HbrKcif7g0+RSm4na++gcMShn73KG5ZNq1gbZjrD1pJc8/et4cqu4ouf3FDrmKh0t6Q==", + "version": "3.0.65", + "resolved": "https://registry.npmjs.org/broker-factory/-/broker-factory-3.0.65.tgz", + "integrity": "sha512-0z8YLszaRFN3Q91oPjjSXUXmsRQFqEJN9wduzQh9snlYght+BhnPDaGJ3FSkgepBdmgeNCDwCAmG1WMczYW+sQ==", "dependencies": { - "@babel/runtime": "^7.17.9", - "fast-unique-numbers": "^6.0.15", + "@babel/runtime": "^7.18.3", + "fast-unique-numbers": "^6.0.18", "tslib": "^2.4.0", - "worker-factory": "^6.0.61" + "worker-factory": "^6.0.65" } }, "node_modules/broker-factory/node_modules/tslib": { @@ -7790,11 +7790,11 @@ "peer": true }, "node_modules/compilerr": { - "version": "9.0.15", - "resolved": "https://registry.npmjs.org/compilerr/-/compilerr-9.0.15.tgz", - "integrity": "sha512-x1Xpp4+g4LdvipYpiQD8qXPn4rRZ7C4halnvTTfc+8y1t3AIFRhHh4mDDX9ikQ3FImYDbZ7m6AjsFWGVhe1j5A==", + "version": "9.0.19", + "resolved": "https://registry.npmjs.org/compilerr/-/compilerr-9.0.19.tgz", + "integrity": "sha512-SyL2BuRMMXWFXQUxvwZN/BfGGaDMqaWfbv3Y2r1Ig85pgf7UWsju2gl2pNLpehBvQ8oQz2v+eIgE2t4u3N5ZbA==", "dependencies": { - "@babel/runtime": "^7.17.9", + "@babel/runtime": "^7.18.3", "dashify": "^2.0.0", "indefinite-article": "0.0.2", "tslib": "^2.4.0" @@ -11493,38 +11493,38 @@ } }, "node_modules/extendable-media-recorder": { - "version": "6.6.6", - "resolved": "https://registry.npmjs.org/extendable-media-recorder/-/extendable-media-recorder-6.6.6.tgz", - "integrity": "sha512-UZ8UERpnKWxWBSjM7pFZLH8zXrSRC1ghsv3jXW68UN+OLgKqz86GacatbHJZbqZC6pBWn67MGrFTSXUjzrUH3w==", - "dependencies": { - "@babel/runtime": "^7.17.9", - "media-encoder-host": "^8.0.70", - "multi-buffer-data-view": "^3.0.16", - "recorder-audio-worklet": "^5.1.23", - "standardized-audio-context": "^25.3.25", - "subscribable-things": "^2.1.2", + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/extendable-media-recorder/-/extendable-media-recorder-6.6.7.tgz", + "integrity": "sha512-/kEFVMZtJsHiiC0f7bjWRpqF8bAx86LEa9JCNgaedXTDS0AqZtOaj285LUtkpKT6I6rLQMNOkfDCMYjMWNthug==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "media-encoder-host": "^8.0.75", + "multi-buffer-data-view": "^3.0.19", + "recorder-audio-worklet": "^5.1.24", + "standardized-audio-context": "^25.3.28", + "subscribable-things": "^2.1.5", "tslib": "^2.4.0" } }, "node_modules/extendable-media-recorder-wav-encoder": { - "version": "7.0.68", - "resolved": "https://registry.npmjs.org/extendable-media-recorder-wav-encoder/-/extendable-media-recorder-wav-encoder-7.0.68.tgz", - "integrity": "sha512-TAjqUzp9CCTe48asy6EDnCyHepAEKivpUdPlBYzLjuMwSaLtriASbhLX+e7u81E6WnjZAHxvu4CHCYTZ/IFoUg==", + "version": "7.0.73", + "resolved": "https://registry.npmjs.org/extendable-media-recorder-wav-encoder/-/extendable-media-recorder-wav-encoder-7.0.73.tgz", + "integrity": "sha512-tITv5EtY7ZeOKnLEUf74nOmcaGEMalDamqxrnmi2aVK6si45pitUmnRbjYcThykogwlN1zlIuvg153JyCkWTuQ==", "dependencies": { - "@babel/runtime": "^7.17.9", - "extendable-media-recorder-wav-encoder-broker": "^7.0.62", - "extendable-media-recorder-wav-encoder-worker": "^8.0.61", + "@babel/runtime": "^7.18.3", + "extendable-media-recorder-wav-encoder-broker": "^7.0.67", + "extendable-media-recorder-wav-encoder-worker": "^8.0.66", "tslib": "^2.4.0" } }, "node_modules/extendable-media-recorder-wav-encoder-broker": { - "version": "7.0.62", - "resolved": "https://registry.npmjs.org/extendable-media-recorder-wav-encoder-broker/-/extendable-media-recorder-wav-encoder-broker-7.0.62.tgz", - "integrity": "sha512-OiwXwlOdUndvFP/paAwZ0Y+gVLSzUVX28ag5pFv4+S9Rg1Kum2CeeZGHVUoeaHQ8WMCeJevna1EzQ9oOtWwwlw==", + "version": "7.0.67", + "resolved": "https://registry.npmjs.org/extendable-media-recorder-wav-encoder-broker/-/extendable-media-recorder-wav-encoder-broker-7.0.67.tgz", + "integrity": "sha512-AXtiOuk2NviYM4H3cSp2bzLPM28pYR5NTJ9Gw7+YWppICqi3PHjXpOG6jHVb/AIvgYG4AX73UuSmJZUmxbtoWA==", "dependencies": { - "@babel/runtime": "^7.17.9", - "broker-factory": "^3.0.61", - "extendable-media-recorder-wav-encoder-worker": "^8.0.61", + "@babel/runtime": "^7.18.3", + "broker-factory": "^3.0.65", + "extendable-media-recorder-wav-encoder-worker": "^8.0.66", "tslib": "^2.4.0" } }, @@ -11534,13 +11534,13 @@ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "node_modules/extendable-media-recorder-wav-encoder-worker": { - "version": "8.0.61", - "resolved": "https://registry.npmjs.org/extendable-media-recorder-wav-encoder-worker/-/extendable-media-recorder-wav-encoder-worker-8.0.61.tgz", - "integrity": "sha512-WQsdAMOldjJQJsJHW+/4gLtiNDn/XNmaBRpfnit2hR055VIym/3cwD4yosWz07KiKoxXU6eHycRB2fPNiL9PfQ==", + "version": "8.0.66", + "resolved": "https://registry.npmjs.org/extendable-media-recorder-wav-encoder-worker/-/extendable-media-recorder-wav-encoder-worker-8.0.66.tgz", + "integrity": "sha512-tagYFsYKRVP3Afz7cu57DTEMRBBum1KnSU/bskMCwmfx0vbgwHhrNOct3zwD1MSbCxAgKy1/nsIpcZYMKGmSJw==", "dependencies": { - "@babel/runtime": "^7.17.9", + "@babel/runtime": "^7.18.3", "tslib": "^2.4.0", - "worker-factory": "^6.0.61" + "worker-factory": "^6.0.65" } }, "node_modules/extendable-media-recorder-wav-encoder-worker/node_modules/tslib": { @@ -11694,11 +11694,11 @@ "dev": true }, "node_modules/fast-unique-numbers": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/fast-unique-numbers/-/fast-unique-numbers-6.0.15.tgz", - "integrity": "sha512-WcGw5cmMdBBx7v2RmEwSHjaVzHjpfkjZuAEE1H3eyZNeOyPeKOmgwDzKt1cUq9ckpz4ZpxozDDki77FOF51n7g==", + "version": "6.0.18", + "resolved": "https://registry.npmjs.org/fast-unique-numbers/-/fast-unique-numbers-6.0.18.tgz", + "integrity": "sha512-HB9C9Kwn+bcWjjDHzxM8poxm5VjxCvXGkc/XijeeAMGGOlw423QjjqNVcVBx8HLRUAEvhrv6kYoD10x8bXJWuQ==", "dependencies": { - "@babel/runtime": "^7.17.9", + "@babel/runtime": "^7.18.3", "tslib": "^2.4.0" }, "engines": { @@ -15569,25 +15569,25 @@ "dev": true }, "node_modules/media-encoder-host": { - "version": "8.0.70", - "resolved": "https://registry.npmjs.org/media-encoder-host/-/media-encoder-host-8.0.70.tgz", - "integrity": "sha512-mNymonSFpzbU9lSGGjzy+iWuW5n6/VEDpA5o76uqPScO6iQdzZCtJyr0BgbmZr4GIKLzuXrvRREsx6g9V9utrg==", + "version": "8.0.75", + "resolved": "https://registry.npmjs.org/media-encoder-host/-/media-encoder-host-8.0.75.tgz", + "integrity": "sha512-w8ugZFFregPAz5K0Nfr8HtglAHZkf5RmFstGsb6BwbbCIpupc4i7oDfa1yuHf6nlfyjwnTowTKelE/rQuZ/fgA==", "dependencies": { - "@babel/runtime": "^7.17.9", - "media-encoder-host-broker": "^7.0.62", - "media-encoder-host-worker": "^9.0.62", + "@babel/runtime": "^7.18.3", + "media-encoder-host-broker": "^7.0.67", + "media-encoder-host-worker": "^9.0.67", "tslib": "^2.4.0" } }, "node_modules/media-encoder-host-broker": { - "version": "7.0.62", - "resolved": "https://registry.npmjs.org/media-encoder-host-broker/-/media-encoder-host-broker-7.0.62.tgz", - "integrity": "sha512-dfMYczE5ZQ2iTP4afN1fxxtRLGNVx2OPaMTJ+/+eBpe1rHQc4k4KC31y6bOovRvqX/Av1I21AlRGMEz1dpThZA==", - "dependencies": { - "@babel/runtime": "^7.17.9", - "broker-factory": "^3.0.61", - "fast-unique-numbers": "^6.0.15", - "media-encoder-host-worker": "^9.0.62", + "version": "7.0.67", + "resolved": "https://registry.npmjs.org/media-encoder-host-broker/-/media-encoder-host-broker-7.0.67.tgz", + "integrity": "sha512-50fkSxu24TXdctYcvMRGjtvemBNccE8k7Zl3yyIjVpYRFiqilYN8mkOJ+55RCXoeaDFKjG+XAbxZTURrV5ARcQ==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "broker-factory": "^3.0.65", + "fast-unique-numbers": "^6.0.18", + "media-encoder-host-worker": "^9.0.67", "tslib": "^2.4.0" } }, @@ -15597,14 +15597,14 @@ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "node_modules/media-encoder-host-worker": { - "version": "9.0.62", - "resolved": "https://registry.npmjs.org/media-encoder-host-worker/-/media-encoder-host-worker-9.0.62.tgz", - "integrity": "sha512-4jNR8/MV48h2HwVjftcHEDwhmoZMDn9g8474YO3hQlL+hgousdmzUY9WJg1gnxZUGrOKO7vMwa68NXhkp2StJA==", + "version": "9.0.67", + "resolved": "https://registry.npmjs.org/media-encoder-host-worker/-/media-encoder-host-worker-9.0.67.tgz", + "integrity": "sha512-ulwF34fIj3Q9Zys0qz/VEciY4W0vD7NUl25j0Ga7B0Rq+mgjvsGaslsRMWYwe49BgkcXTnOGzwtyFKq1G447IA==", "dependencies": { - "@babel/runtime": "^7.17.9", - "extendable-media-recorder-wav-encoder-broker": "^7.0.62", + "@babel/runtime": "^7.18.3", + "extendable-media-recorder-wav-encoder-broker": "^7.0.67", "tslib": "^2.4.0", - "worker-factory": "^6.0.61" + "worker-factory": "^6.0.65" } }, "node_modules/media-encoder-host-worker/node_modules/tslib": { @@ -15972,11 +15972,11 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "node_modules/multi-buffer-data-view": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/multi-buffer-data-view/-/multi-buffer-data-view-3.0.16.tgz", - "integrity": "sha512-qgoVuop4RGk75PN+E3XB1RCCLyaIZIFW4EmQ9Wy1knsc4gks2MsCh2wYNw2qiefJjq5cNhkBm7BBFKOjjEhciA==", + "version": "3.0.19", + "resolved": "https://registry.npmjs.org/multi-buffer-data-view/-/multi-buffer-data-view-3.0.19.tgz", + "integrity": "sha512-w4RRwd+PDVwRsWIV44HQsscNWScunh0OKCDMSbyfyDNzjMnnl+H+TgNBaAdL2dExNxfabhgQYhBm3luehbL/iA==", "dependencies": { - "@babel/runtime": "^7.17.9", + "@babel/runtime": "^7.18.3", "tslib": "^2.4.0" }, "engines": { @@ -17935,26 +17935,26 @@ } }, "node_modules/recorder-audio-worklet": { - "version": "5.1.23", - "resolved": "https://registry.npmjs.org/recorder-audio-worklet/-/recorder-audio-worklet-5.1.23.tgz", - "integrity": "sha512-YdLxIsQwaorwceq55iIqVfYAXUvsH685TeMMwMBRZbLlE5JSWZk5pIOKwhWEzC1Uo/coM1v7OBpnhQYVRdH5KQ==", - "dependencies": { - "@babel/runtime": "^7.17.9", - "broker-factory": "^3.0.61", - "fast-unique-numbers": "^6.0.15", - "recorder-audio-worklet-processor": "^4.2.10", - "standardized-audio-context": "^25.3.25", - "subscribable-things": "^2.1.2", + "version": "5.1.24", + "resolved": "https://registry.npmjs.org/recorder-audio-worklet/-/recorder-audio-worklet-5.1.24.tgz", + "integrity": "sha512-zdl4NHgA4OtIlMRlVrCk4eteqfFIWcAEzmk/JYFybp1kcQ5K43csKIBkdXdyRtqwRVgGM5kLHFcjSKclllvVMw==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "broker-factory": "^3.0.65", + "fast-unique-numbers": "^6.0.18", + "recorder-audio-worklet-processor": "^4.2.13", + "standardized-audio-context": "^25.3.28", + "subscribable-things": "^2.1.5", "tslib": "^2.4.0", - "worker-factory": "^6.0.61" + "worker-factory": "^6.0.65" } }, "node_modules/recorder-audio-worklet-processor": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/recorder-audio-worklet-processor/-/recorder-audio-worklet-processor-4.2.10.tgz", - "integrity": "sha512-2CwIl/7oE5Kna2kvLJnyHbnj0cdbEusVJcXFMzAMaz9ub+itXHfzTcQJEjE2FbM0iDSscp8LOzo+yiFHIzZ5oQ==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/recorder-audio-worklet-processor/-/recorder-audio-worklet-processor-4.2.13.tgz", + "integrity": "sha512-sgK+PlHZO4Q7dfBJb+t51QDsbP49YK/J+YSlpjgrDpU2nrsheefo1WV0xlJxA77LLxF/NukhLUfTlKYedRkShg==", "dependencies": { - "@babel/runtime": "^7.17.9", + "@babel/runtime": "^7.18.3", "tslib": "^2.4.0" } }, @@ -19492,12 +19492,12 @@ "dev": true }, "node_modules/standardized-audio-context": { - "version": "25.3.25", - "resolved": "https://registry.npmjs.org/standardized-audio-context/-/standardized-audio-context-25.3.25.tgz", - "integrity": "sha512-MiSMIANganaT8GBy6YZ1t8lACfWmi23UqJzZPds65jP/E2qgKfJNUkyF9vWwgjcVT7+ewYbc7VWZ4yfsjQJjsw==", + "version": "25.3.28", + "resolved": "https://registry.npmjs.org/standardized-audio-context/-/standardized-audio-context-25.3.28.tgz", + "integrity": "sha512-w3TIDQ2z5iA76A3qFjL/knf45BAwHYAqQmDNlDrlE2El89kFKv43TjiN94N0joiMr7G3CRmO1bOuQ7wopDon9g==", "dependencies": { - "@babel/runtime": "^7.17.9", - "automation-events": "^4.0.16", + "@babel/runtime": "^7.18.3", + "automation-events": "^4.0.19", "tslib": "^2.4.0" } }, @@ -20277,11 +20277,11 @@ } }, "node_modules/subscribable-things": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/subscribable-things/-/subscribable-things-2.1.2.tgz", - "integrity": "sha512-HhPRj+XP+DLeb6iCgoIBCOUkq5sYdpcipzXAZl97B7PBkH5lrL8MhNjTVd5eVHzeTVh1yx5ZdAxYzvF3Lt4mfg==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/subscribable-things/-/subscribable-things-2.1.5.tgz", + "integrity": "sha512-uxIRhQF+KxhBecK3hHso/6EvPEtMjl5KxOLdo0efzga2Yh/jmCXpmHZOByTV3cfYFlw7AfkBstO6iY350wlj/Q==", "dependencies": { - "@babel/runtime": "^7.17.9", + "@babel/runtime": "^7.18.3", "rxjs-interop": "^2.0.0", "tslib": "^2.4.0" } @@ -21214,9 +21214,9 @@ } }, "node_modules/typescript": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", - "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.2.tgz", + "integrity": "sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -23315,13 +23315,13 @@ } }, "node_modules/worker-factory": { - "version": "6.0.61", - "resolved": "https://registry.npmjs.org/worker-factory/-/worker-factory-6.0.61.tgz", - "integrity": "sha512-KaIJitUDCFGIHSnSbEwMYlQGuD+qkI+H5e3LX1lZICmWJdoHovv112f40PgEcrSgROs14ry+3lFhEsU2rqj5iw==", + "version": "6.0.65", + "resolved": "https://registry.npmjs.org/worker-factory/-/worker-factory-6.0.65.tgz", + "integrity": "sha512-94UnSG5Y164ujaWc7+exuRC9MDci1bfEM8I3qr7k4yjuWa0orgaOgUBwTtdH8HEUtmE9O5O+khAFulGzuief0Q==", "dependencies": { - "@babel/runtime": "^7.17.9", - "compilerr": "^9.0.15", - "fast-unique-numbers": "^6.0.15", + "@babel/runtime": "^7.18.3", + "compilerr": "^9.0.19", + "fast-unique-numbers": "^6.0.18", "tslib": "^2.4.0" } }, @@ -25202,9 +25202,9 @@ } }, "@babel/runtime": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", - "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz", + "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==", "requires": { "regenerator-runtime": "^0.13.4" } @@ -28580,11 +28580,11 @@ "integrity": "sha512-8zx/3Bwo/PxqwpNrEm2Zf9ZBCjfkLmLhS7lqzfP1eWH69iD/WyKWFpysben+gYxMSHcO9S94qvseGk4FVxba0g==" }, "automation-events": { - "version": "4.0.16", - "resolved": "https://registry.npmjs.org/automation-events/-/automation-events-4.0.16.tgz", - "integrity": "sha512-8mIkcXzjyisUaw2O9HC80wOHscEPPD/ROrh/rEKN2B3VJzt3YJH5w0LcpUHyzprqV24HR0eTCelSKoei1FGg1A==", + "version": "4.0.19", + "resolved": "https://registry.npmjs.org/automation-events/-/automation-events-4.0.19.tgz", + "integrity": "sha512-e8ALmWdXSkDAtDVkmqLcCDMfMMvHcPTwsg+1GsxEO8+Cyg7FQs7F3VKifzdRTADVU6S1aqlPzDE3+KLFsH0sxA==", "requires": { - "@babel/runtime": "^7.17.9", + "@babel/runtime": "^7.18.3", "tslib": "^2.4.0" }, "dependencies": { @@ -29285,14 +29285,14 @@ } }, "broker-factory": { - "version": "3.0.61", - "resolved": "https://registry.npmjs.org/broker-factory/-/broker-factory-3.0.61.tgz", - "integrity": "sha512-ns5dmQLu1f5dankjVH5HbrKcif7g0+RSm4na++gcMShn73KG5ZNq1gbZjrD1pJc8/et4cqu4ouf3FDrmKh0t6Q==", + "version": "3.0.65", + "resolved": "https://registry.npmjs.org/broker-factory/-/broker-factory-3.0.65.tgz", + "integrity": "sha512-0z8YLszaRFN3Q91oPjjSXUXmsRQFqEJN9wduzQh9snlYght+BhnPDaGJ3FSkgepBdmgeNCDwCAmG1WMczYW+sQ==", "requires": { - "@babel/runtime": "^7.17.9", - "fast-unique-numbers": "^6.0.15", + "@babel/runtime": "^7.18.3", + "fast-unique-numbers": "^6.0.18", "tslib": "^2.4.0", - "worker-factory": "^6.0.61" + "worker-factory": "^6.0.65" }, "dependencies": { "tslib": { @@ -30112,11 +30112,11 @@ "peer": true }, "compilerr": { - "version": "9.0.15", - "resolved": "https://registry.npmjs.org/compilerr/-/compilerr-9.0.15.tgz", - "integrity": "sha512-x1Xpp4+g4LdvipYpiQD8qXPn4rRZ7C4halnvTTfc+8y1t3AIFRhHh4mDDX9ikQ3FImYDbZ7m6AjsFWGVhe1j5A==", + "version": "9.0.19", + "resolved": "https://registry.npmjs.org/compilerr/-/compilerr-9.0.19.tgz", + "integrity": "sha512-SyL2BuRMMXWFXQUxvwZN/BfGGaDMqaWfbv3Y2r1Ig85pgf7UWsju2gl2pNLpehBvQ8oQz2v+eIgE2t4u3N5ZbA==", "requires": { - "@babel/runtime": "^7.17.9", + "@babel/runtime": "^7.18.3", "dashify": "^2.0.0", "indefinite-article": "0.0.2", "tslib": "^2.4.0" @@ -32901,16 +32901,16 @@ } }, "extendable-media-recorder": { - "version": "6.6.6", - "resolved": "https://registry.npmjs.org/extendable-media-recorder/-/extendable-media-recorder-6.6.6.tgz", - "integrity": "sha512-UZ8UERpnKWxWBSjM7pFZLH8zXrSRC1ghsv3jXW68UN+OLgKqz86GacatbHJZbqZC6pBWn67MGrFTSXUjzrUH3w==", - "requires": { - "@babel/runtime": "^7.17.9", - "media-encoder-host": "^8.0.70", - "multi-buffer-data-view": "^3.0.16", - "recorder-audio-worklet": "^5.1.23", - "standardized-audio-context": "^25.3.25", - "subscribable-things": "^2.1.2", + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/extendable-media-recorder/-/extendable-media-recorder-6.6.7.tgz", + "integrity": "sha512-/kEFVMZtJsHiiC0f7bjWRpqF8bAx86LEa9JCNgaedXTDS0AqZtOaj285LUtkpKT6I6rLQMNOkfDCMYjMWNthug==", + "requires": { + "@babel/runtime": "^7.18.3", + "media-encoder-host": "^8.0.75", + "multi-buffer-data-view": "^3.0.19", + "recorder-audio-worklet": "^5.1.24", + "standardized-audio-context": "^25.3.28", + "subscribable-things": "^2.1.5", "tslib": "^2.4.0" }, "dependencies": { @@ -32922,13 +32922,13 @@ } }, "extendable-media-recorder-wav-encoder": { - "version": "7.0.68", - "resolved": "https://registry.npmjs.org/extendable-media-recorder-wav-encoder/-/extendable-media-recorder-wav-encoder-7.0.68.tgz", - "integrity": "sha512-TAjqUzp9CCTe48asy6EDnCyHepAEKivpUdPlBYzLjuMwSaLtriASbhLX+e7u81E6WnjZAHxvu4CHCYTZ/IFoUg==", + "version": "7.0.73", + "resolved": "https://registry.npmjs.org/extendable-media-recorder-wav-encoder/-/extendable-media-recorder-wav-encoder-7.0.73.tgz", + "integrity": "sha512-tITv5EtY7ZeOKnLEUf74nOmcaGEMalDamqxrnmi2aVK6si45pitUmnRbjYcThykogwlN1zlIuvg153JyCkWTuQ==", "requires": { - "@babel/runtime": "^7.17.9", - "extendable-media-recorder-wav-encoder-broker": "^7.0.62", - "extendable-media-recorder-wav-encoder-worker": "^8.0.61", + "@babel/runtime": "^7.18.3", + "extendable-media-recorder-wav-encoder-broker": "^7.0.67", + "extendable-media-recorder-wav-encoder-worker": "^8.0.66", "tslib": "^2.4.0" }, "dependencies": { @@ -32940,13 +32940,13 @@ } }, "extendable-media-recorder-wav-encoder-broker": { - "version": "7.0.62", - "resolved": "https://registry.npmjs.org/extendable-media-recorder-wav-encoder-broker/-/extendable-media-recorder-wav-encoder-broker-7.0.62.tgz", - "integrity": "sha512-OiwXwlOdUndvFP/paAwZ0Y+gVLSzUVX28ag5pFv4+S9Rg1Kum2CeeZGHVUoeaHQ8WMCeJevna1EzQ9oOtWwwlw==", + "version": "7.0.67", + "resolved": "https://registry.npmjs.org/extendable-media-recorder-wav-encoder-broker/-/extendable-media-recorder-wav-encoder-broker-7.0.67.tgz", + "integrity": "sha512-AXtiOuk2NviYM4H3cSp2bzLPM28pYR5NTJ9Gw7+YWppICqi3PHjXpOG6jHVb/AIvgYG4AX73UuSmJZUmxbtoWA==", "requires": { - "@babel/runtime": "^7.17.9", - "broker-factory": "^3.0.61", - "extendable-media-recorder-wav-encoder-worker": "^8.0.61", + "@babel/runtime": "^7.18.3", + "broker-factory": "^3.0.65", + "extendable-media-recorder-wav-encoder-worker": "^8.0.66", "tslib": "^2.4.0" }, "dependencies": { @@ -32958,13 +32958,13 @@ } }, "extendable-media-recorder-wav-encoder-worker": { - "version": "8.0.61", - "resolved": "https://registry.npmjs.org/extendable-media-recorder-wav-encoder-worker/-/extendable-media-recorder-wav-encoder-worker-8.0.61.tgz", - "integrity": "sha512-WQsdAMOldjJQJsJHW+/4gLtiNDn/XNmaBRpfnit2hR055VIym/3cwD4yosWz07KiKoxXU6eHycRB2fPNiL9PfQ==", + "version": "8.0.66", + "resolved": "https://registry.npmjs.org/extendable-media-recorder-wav-encoder-worker/-/extendable-media-recorder-wav-encoder-worker-8.0.66.tgz", + "integrity": "sha512-tagYFsYKRVP3Afz7cu57DTEMRBBum1KnSU/bskMCwmfx0vbgwHhrNOct3zwD1MSbCxAgKy1/nsIpcZYMKGmSJw==", "requires": { - "@babel/runtime": "^7.17.9", + "@babel/runtime": "^7.18.3", "tslib": "^2.4.0", - "worker-factory": "^6.0.61" + "worker-factory": "^6.0.65" }, "dependencies": { "tslib": { @@ -33084,11 +33084,11 @@ "dev": true }, "fast-unique-numbers": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/fast-unique-numbers/-/fast-unique-numbers-6.0.15.tgz", - "integrity": "sha512-WcGw5cmMdBBx7v2RmEwSHjaVzHjpfkjZuAEE1H3eyZNeOyPeKOmgwDzKt1cUq9ckpz4ZpxozDDki77FOF51n7g==", + "version": "6.0.18", + "resolved": "https://registry.npmjs.org/fast-unique-numbers/-/fast-unique-numbers-6.0.18.tgz", + "integrity": "sha512-HB9C9Kwn+bcWjjDHzxM8poxm5VjxCvXGkc/XijeeAMGGOlw423QjjqNVcVBx8HLRUAEvhrv6kYoD10x8bXJWuQ==", "requires": { - "@babel/runtime": "^7.17.9", + "@babel/runtime": "^7.18.3", "tslib": "^2.4.0" }, "dependencies": { @@ -36183,13 +36183,13 @@ "dev": true }, "media-encoder-host": { - "version": "8.0.70", - "resolved": "https://registry.npmjs.org/media-encoder-host/-/media-encoder-host-8.0.70.tgz", - "integrity": "sha512-mNymonSFpzbU9lSGGjzy+iWuW5n6/VEDpA5o76uqPScO6iQdzZCtJyr0BgbmZr4GIKLzuXrvRREsx6g9V9utrg==", + "version": "8.0.75", + "resolved": "https://registry.npmjs.org/media-encoder-host/-/media-encoder-host-8.0.75.tgz", + "integrity": "sha512-w8ugZFFregPAz5K0Nfr8HtglAHZkf5RmFstGsb6BwbbCIpupc4i7oDfa1yuHf6nlfyjwnTowTKelE/rQuZ/fgA==", "requires": { - "@babel/runtime": "^7.17.9", - "media-encoder-host-broker": "^7.0.62", - "media-encoder-host-worker": "^9.0.62", + "@babel/runtime": "^7.18.3", + "media-encoder-host-broker": "^7.0.67", + "media-encoder-host-worker": "^9.0.67", "tslib": "^2.4.0" }, "dependencies": { @@ -36201,14 +36201,14 @@ } }, "media-encoder-host-broker": { - "version": "7.0.62", - "resolved": "https://registry.npmjs.org/media-encoder-host-broker/-/media-encoder-host-broker-7.0.62.tgz", - "integrity": "sha512-dfMYczE5ZQ2iTP4afN1fxxtRLGNVx2OPaMTJ+/+eBpe1rHQc4k4KC31y6bOovRvqX/Av1I21AlRGMEz1dpThZA==", - "requires": { - "@babel/runtime": "^7.17.9", - "broker-factory": "^3.0.61", - "fast-unique-numbers": "^6.0.15", - "media-encoder-host-worker": "^9.0.62", + "version": "7.0.67", + "resolved": "https://registry.npmjs.org/media-encoder-host-broker/-/media-encoder-host-broker-7.0.67.tgz", + "integrity": "sha512-50fkSxu24TXdctYcvMRGjtvemBNccE8k7Zl3yyIjVpYRFiqilYN8mkOJ+55RCXoeaDFKjG+XAbxZTURrV5ARcQ==", + "requires": { + "@babel/runtime": "^7.18.3", + "broker-factory": "^3.0.65", + "fast-unique-numbers": "^6.0.18", + "media-encoder-host-worker": "^9.0.67", "tslib": "^2.4.0" }, "dependencies": { @@ -36220,14 +36220,14 @@ } }, "media-encoder-host-worker": { - "version": "9.0.62", - "resolved": "https://registry.npmjs.org/media-encoder-host-worker/-/media-encoder-host-worker-9.0.62.tgz", - "integrity": "sha512-4jNR8/MV48h2HwVjftcHEDwhmoZMDn9g8474YO3hQlL+hgousdmzUY9WJg1gnxZUGrOKO7vMwa68NXhkp2StJA==", + "version": "9.0.67", + "resolved": "https://registry.npmjs.org/media-encoder-host-worker/-/media-encoder-host-worker-9.0.67.tgz", + "integrity": "sha512-ulwF34fIj3Q9Zys0qz/VEciY4W0vD7NUl25j0Ga7B0Rq+mgjvsGaslsRMWYwe49BgkcXTnOGzwtyFKq1G447IA==", "requires": { - "@babel/runtime": "^7.17.9", - "extendable-media-recorder-wav-encoder-broker": "^7.0.62", + "@babel/runtime": "^7.18.3", + "extendable-media-recorder-wav-encoder-broker": "^7.0.67", "tslib": "^2.4.0", - "worker-factory": "^6.0.61" + "worker-factory": "^6.0.65" }, "dependencies": { "tslib": { @@ -36520,11 +36520,11 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "multi-buffer-data-view": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/multi-buffer-data-view/-/multi-buffer-data-view-3.0.16.tgz", - "integrity": "sha512-qgoVuop4RGk75PN+E3XB1RCCLyaIZIFW4EmQ9Wy1knsc4gks2MsCh2wYNw2qiefJjq5cNhkBm7BBFKOjjEhciA==", + "version": "3.0.19", + "resolved": "https://registry.npmjs.org/multi-buffer-data-view/-/multi-buffer-data-view-3.0.19.tgz", + "integrity": "sha512-w4RRwd+PDVwRsWIV44HQsscNWScunh0OKCDMSbyfyDNzjMnnl+H+TgNBaAdL2dExNxfabhgQYhBm3luehbL/iA==", "requires": { - "@babel/runtime": "^7.17.9", + "@babel/runtime": "^7.18.3", "tslib": "^2.4.0" }, "dependencies": { @@ -38091,18 +38091,18 @@ } }, "recorder-audio-worklet": { - "version": "5.1.23", - "resolved": "https://registry.npmjs.org/recorder-audio-worklet/-/recorder-audio-worklet-5.1.23.tgz", - "integrity": "sha512-YdLxIsQwaorwceq55iIqVfYAXUvsH685TeMMwMBRZbLlE5JSWZk5pIOKwhWEzC1Uo/coM1v7OBpnhQYVRdH5KQ==", - "requires": { - "@babel/runtime": "^7.17.9", - "broker-factory": "^3.0.61", - "fast-unique-numbers": "^6.0.15", - "recorder-audio-worklet-processor": "^4.2.10", - "standardized-audio-context": "^25.3.25", - "subscribable-things": "^2.1.2", + "version": "5.1.24", + "resolved": "https://registry.npmjs.org/recorder-audio-worklet/-/recorder-audio-worklet-5.1.24.tgz", + "integrity": "sha512-zdl4NHgA4OtIlMRlVrCk4eteqfFIWcAEzmk/JYFybp1kcQ5K43csKIBkdXdyRtqwRVgGM5kLHFcjSKclllvVMw==", + "requires": { + "@babel/runtime": "^7.18.3", + "broker-factory": "^3.0.65", + "fast-unique-numbers": "^6.0.18", + "recorder-audio-worklet-processor": "^4.2.13", + "standardized-audio-context": "^25.3.28", + "subscribable-things": "^2.1.5", "tslib": "^2.4.0", - "worker-factory": "^6.0.61" + "worker-factory": "^6.0.65" }, "dependencies": { "tslib": { @@ -38113,11 +38113,11 @@ } }, "recorder-audio-worklet-processor": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/recorder-audio-worklet-processor/-/recorder-audio-worklet-processor-4.2.10.tgz", - "integrity": "sha512-2CwIl/7oE5Kna2kvLJnyHbnj0cdbEusVJcXFMzAMaz9ub+itXHfzTcQJEjE2FbM0iDSscp8LOzo+yiFHIzZ5oQ==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/recorder-audio-worklet-processor/-/recorder-audio-worklet-processor-4.2.13.tgz", + "integrity": "sha512-sgK+PlHZO4Q7dfBJb+t51QDsbP49YK/J+YSlpjgrDpU2nrsheefo1WV0xlJxA77LLxF/NukhLUfTlKYedRkShg==", "requires": { - "@babel/runtime": "^7.17.9", + "@babel/runtime": "^7.18.3", "tslib": "^2.4.0" }, "dependencies": { @@ -39373,12 +39373,12 @@ "dev": true }, "standardized-audio-context": { - "version": "25.3.25", - "resolved": "https://registry.npmjs.org/standardized-audio-context/-/standardized-audio-context-25.3.25.tgz", - "integrity": "sha512-MiSMIANganaT8GBy6YZ1t8lACfWmi23UqJzZPds65jP/E2qgKfJNUkyF9vWwgjcVT7+ewYbc7VWZ4yfsjQJjsw==", + "version": "25.3.28", + "resolved": "https://registry.npmjs.org/standardized-audio-context/-/standardized-audio-context-25.3.28.tgz", + "integrity": "sha512-w3TIDQ2z5iA76A3qFjL/knf45BAwHYAqQmDNlDrlE2El89kFKv43TjiN94N0joiMr7G3CRmO1bOuQ7wopDon9g==", "requires": { - "@babel/runtime": "^7.17.9", - "automation-events": "^4.0.16", + "@babel/runtime": "^7.18.3", + "automation-events": "^4.0.19", "tslib": "^2.4.0" }, "dependencies": { @@ -39988,11 +39988,11 @@ } }, "subscribable-things": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/subscribable-things/-/subscribable-things-2.1.2.tgz", - "integrity": "sha512-HhPRj+XP+DLeb6iCgoIBCOUkq5sYdpcipzXAZl97B7PBkH5lrL8MhNjTVd5eVHzeTVh1yx5ZdAxYzvF3Lt4mfg==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/subscribable-things/-/subscribable-things-2.1.5.tgz", + "integrity": "sha512-uxIRhQF+KxhBecK3hHso/6EvPEtMjl5KxOLdo0efzga2Yh/jmCXpmHZOByTV3cfYFlw7AfkBstO6iY350wlj/Q==", "requires": { - "@babel/runtime": "^7.17.9", + "@babel/runtime": "^7.18.3", "rxjs-interop": "^2.0.0", "tslib": "^2.4.0" }, @@ -40717,9 +40717,9 @@ } }, "typescript": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", - "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.2.tgz", + "integrity": "sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==", "dev": true }, "ua-parser-js": { @@ -42365,13 +42365,13 @@ } }, "worker-factory": { - "version": "6.0.61", - "resolved": "https://registry.npmjs.org/worker-factory/-/worker-factory-6.0.61.tgz", - "integrity": "sha512-KaIJitUDCFGIHSnSbEwMYlQGuD+qkI+H5e3LX1lZICmWJdoHovv112f40PgEcrSgROs14ry+3lFhEsU2rqj5iw==", + "version": "6.0.65", + "resolved": "https://registry.npmjs.org/worker-factory/-/worker-factory-6.0.65.tgz", + "integrity": "sha512-94UnSG5Y164ujaWc7+exuRC9MDci1bfEM8I3qr7k4yjuWa0orgaOgUBwTtdH8HEUtmE9O5O+khAFulGzuief0Q==", "requires": { - "@babel/runtime": "^7.17.9", - "compilerr": "^9.0.15", - "fast-unique-numbers": "^6.0.15", + "@babel/runtime": "^7.18.3", + "compilerr": "^9.0.19", + "fast-unique-numbers": "^6.0.18", "tslib": "^2.4.0" }, "dependencies": { diff --git a/package.json b/package.json index af7c350eb..41d65eabc 100644 --- a/package.json +++ b/package.json @@ -37,9 +37,9 @@ "debounce": "^1.2.1", "emoji-regex": "^10.1.0", "escape-html": "^1.0.3", - "extendable-media-recorder": "^6.6.6", - "extendable-media-recorder-wav-encoder": "^7.0.68", - "extendable-media-recorder-wav-encoder-worker": "^8.0.60", + "extendable-media-recorder": "^6.6.7", + "extendable-media-recorder-wav-encoder": "^7.0.73", + "extendable-media-recorder-wav-encoder-worker": "^8.0.66", "hark": "^1.2.3", "leaflet": "^1.8.0", "leaflet-defaulticon-compatibility": "^0.1.1", @@ -86,7 +86,7 @@ "regenerator-runtime": "^0.13.9", "terser-webpack-plugin": "^5.3.1", "ts-loader": "^9.3.0", - "typescript": "^4.6.4", + "typescript": "^4.7.2", "wasm-check": "^2.0.4", "webpack-node-externals": "^3.0.0", "worker-loader": "^3.0.8" diff --git a/src/components/LeftSidebar/LeftSidebar.vue b/src/components/LeftSidebar/LeftSidebar.vue index f410d9ddd..1652ddf8a 100644 --- a/src/components/LeftSidebar/LeftSidebar.vue +++ b/src/components/LeftSidebar/LeftSidebar.vue @@ -28,6 +28,7 @@ :is-searching="isSearching" @input="debounceFetchSearchResults" @submit="onInputEnter" + @keydown.enter.native="handleEnter" @abort-search="abortSearch" /> <NewGroupConversation v-if="canStartConversations" /> </div> @@ -490,6 +491,14 @@ export default { this.handleScroll() this.handleUnreadMention() }, 50), + + // Route to the first search result + handleEnter() { + if (this?.conversationsList[0]?.token) { + this.$router.push({ name: 'conversation', params: { token: this.conversationsList[0].token } }) + } + this.handleClickSearchResult() + }, }, } </script> diff --git a/src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/MessageButtonsBar.spec.js b/src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/MessageButtonsBar.spec.js index dc358fd6b..76475e4e1 100644 --- a/src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/MessageButtonsBar.spec.js +++ b/src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/MessageButtonsBar.spec.js @@ -409,7 +409,7 @@ describe('MessageButtonsBar.vue', () => { icon: 'some-icon2', callback: handler2, }]) - testStoreConfig.modules.messageActionsStore.getters.messageActions = actionsGetterMock + testStoreConfig.modules.integrationsStore.getters.messageActions = actionsGetterMock testStoreConfig.modules.messagesStore.getters.message = jest.fn(() => () => messageProps) store = new Store(testStoreConfig) const wrapper = shallowMount(MessageButtonsBar, { diff --git a/src/components/NewMessageForm/NewMessageForm.vue b/src/components/NewMessageForm/NewMessageForm.vue index 8d60e857f..a3dc3ee60 100644 --- a/src/components/NewMessageForm/NewMessageForm.vue +++ b/src/components/NewMessageForm/NewMessageForm.vue @@ -105,17 +105,32 @@ :disabled="disabled" @recording="handleRecording" @audio-file="handleAudioFile" /> - - <Button v-else - :disabled="disabled" - type="tertiary" - native-type="submit" - :aria-label="t('spreed', 'Send message')" - @click.prevent="handleSubmit"> - <Send title="" - :size="16" - decorative /> - </Button> + <!-- Send buttons --> + <template v-else> + <Actions :force-menu="true"> + <!-- Silent send --> + <ActionButton :close-after-click="true" + icon="icon-upload" + :title="t('spreed', 'Send silently')" + @click.prevent="handleSubmit({ silent: true })"> + {{ silentSendInfo }} + <BellOff slot="icon" + :size="16" + decorative + title="" /> + </ActionButton> + </Actions> + <!-- Send --> + <Button :disabled="disabled" + type="tertiary" + native-type="submit" + :aria-label="t('spreed', 'Send message')" + @click.prevent="handleSubmit({ silent: false })"> + <Send title="" + :size="16" + decorative /> + </Button> + </template> </form> </div> </div> @@ -133,9 +148,10 @@ import EmojiPicker from '@nextcloud/vue/dist/Components/EmojiPicker' import { EventBus } from '../../services/EventBus.js' import { shareFile } from '../../services/filesSharingServices.js' import { CONVERSATION, PARTICIPANT } from '../../constants.js' -import Paperclip from 'vue-material-design-icons/Paperclip' -import EmoticonOutline from 'vue-material-design-icons/EmoticonOutline' -import Send from 'vue-material-design-icons/Send' +import Paperclip from 'vue-material-design-icons/Paperclip.vue' +import EmoticonOutline from 'vue-material-design-icons/EmoticonOutline.vue' +import Send from 'vue-material-design-icons/Send.vue' +import BellOff from 'vue-material-design-icons/BellOff.vue' import AudioRecorder from './AudioRecorder/AudioRecorder.vue' const picker = getFilePickerBuilder(t('spreed', 'File to share')) @@ -158,6 +174,7 @@ export default { EmoticonOutline, Send, AudioRecorder, + BellOff, }, props: { @@ -255,6 +272,19 @@ export default { containerElement() { return document.querySelector(this.container) }, + + isOneToOne() { + return this.conversation.type === CONVERSATION.TYPE.ONE_TO_ONE + }, + + silentSendInfo() { + if (this.isOneToOne) { + return t('spreed', 'The participant will not be notified about this message') + } else { + return t('spreed', 'The participants will not be notified about this message') + } + + }, }, watch: { @@ -351,8 +381,10 @@ export default { /** * Sends the new message + * + * @param {object} options the submit options */ - async handleSubmit() { + async handleSubmit(options) { if (OC.debug && this.parsedText.startsWith('/spam ')) { const pattern = /^\/spam (\d+) messages$/i const match = pattern.exec(this.parsedText) @@ -373,7 +405,7 @@ export default { EventBus.$emit('smooth-scroll-chat-to-bottom') // Also remove the message to be replied for this conversation this.$store.dispatch('removeMessageToBeReplied', this.token) - await this.$store.dispatch('postNewMessage', temporaryMessage) + await this.$store.dispatch('postNewMessage', { temporaryMessage, options }) } }, diff --git a/src/components/RightSidebar/Participants/ParticipantsSearchResults/ParticipantsSearchResults.vue b/src/components/RightSidebar/Participants/ParticipantsSearchResults/ParticipantsSearchResults.vue index 371f68b0a..f35fe2755 100644 --- a/src/components/RightSidebar/Participants/ParticipantsSearchResults/ParticipantsSearchResults.vue +++ b/src/components/RightSidebar/Participants/ParticipantsSearchResults/ParticipantsSearchResults.vue @@ -46,6 +46,24 @@ @click="handleClickParticipant" /> </template> + <!-- integrations --> + <template v-if="integrations.length !== 0"> + <AppNavigationCaption :title="t('spreed', 'Integrations')" /> + <ul> + <Button v-for="(integration, index) in integrations" + :key="'integration' + index" + type="tertiary-no-background" + @click="runIntegration(integration)"> + <!-- FIXME: dinamically change the material design icon --> + <AccountPlus slot="icon" + decorative + title="" + :size="20" /> + {{ integration.label }} + </Button> + </ul> + </template> + <template v-if="addableRemotes.length !== 0"> <AppNavigationCaption :title="t('spreed', 'Add federated users')" /> <ParticipantsList :items="addableRemotes" @@ -83,6 +101,8 @@ import ParticipantsList from '../ParticipantsList/ParticipantsList.vue' import AppNavigationCaption from '@nextcloud/vue/dist/Components/AppNavigationCaption' import Hint from '../../../Hint.vue' +import AccountPlus from 'vue-material-design-icons/AccountPlus.vue' +import Button from '@nextcloud/vue/dist/Components/Button' export default { name: 'ParticipantsSearchResults', @@ -91,6 +111,8 @@ export default { ParticipantsList, AppNavigationCaption, Hint, + AccountPlus, + Button, }, props: { @@ -135,6 +157,11 @@ export default { type: Boolean, default: false, }, + + searchText: { + type: String, + default: '', + }, }, computed: { @@ -144,6 +171,10 @@ export default { || (this.isCirclesEnabled && !this.addableCircles.length) }, + integrations() { + return this.$store.getters.participantSearchActions.filter((integration) => integration.show(this.searchText)) + }, + sourcesWithoutResultsList() { if (!this.addableUsers.length) { if (!this.addableGroups.length) { @@ -237,6 +268,12 @@ export default { handleClickHint() { this.$emit('click-search-hint') }, + + runIntegration(integration) { + integration.callback(this.searchText).then((participant) => { + this.$emit('click', participant) + }) + }, }, } </script> diff --git a/src/components/RightSidebar/Participants/ParticipantsTab.vue b/src/components/RightSidebar/Participants/ParticipantsTab.vue index bdec6e8d2..a1af9d333 100644 --- a/src/components/RightSidebar/Participants/ParticipantsTab.vue +++ b/src/components/RightSidebar/Participants/ParticipantsTab.vue @@ -35,6 +35,7 @@ :search-results="searchResults" :contacts-loading="contactsLoading" :no-results="noResults" + :search-text="searchText" @click="addParticipants" /> </div> </template> diff --git a/src/components/RightSidebar/SharedItems/SharedItems.vue b/src/components/RightSidebar/SharedItems/SharedItems.vue index b27323689..3bd6f1f01 100644 --- a/src/components/RightSidebar/SharedItems/SharedItems.vue +++ b/src/components/RightSidebar/SharedItems/SharedItems.vue @@ -136,16 +136,15 @@ export default { } &__other { - width: 100%; margin-left: 8px; + a { text-decoration: underline; &:after { - content: " โ"; - } + content: ' โ'; + } } - } } </style> diff --git a/src/init.js b/src/init.js index e955dfac2..4a87fc3b7 100644 --- a/src/init.js +++ b/src/init.js @@ -49,6 +49,16 @@ window.OCA.Talk.registerMessageAction = ({ label, callback, icon }) => { store.dispatch('addMessageAction', messageAction) } +window.OCA.Talk.registerParticipantSearchAction = ({ label, callback, show, icon }) => { + const participantSearchAction = { + label, + callback, + show, + icon, + } + store.dispatch('addParticipantSearchAction', participantSearchAction) +} + EventBus.$on('signaling-join-room', (payload) => { const token = payload[0] store.dispatch('updateLastJoinedConversationToken', token) diff --git a/src/services/messagesService.js b/src/services/messagesService.js index 3a211a7e5..1cddecac3 100644 --- a/src/services/messagesService.js +++ b/src/services/messagesService.js @@ -76,6 +76,8 @@ const lookForNewMessages = async ({ token, lastKnownMessageId }, options) => { * @param {string} param0.referenceId A reference id to identify the message later again * @param {number} param0.parent The id of the message to be replied to * @param {object} options request options + * @param {boolean} options.silent whether the message should trigger a notifications for the + * recipients or not */ const postNewMessage = async function({ token, message, actorDisplayName, referenceId, parent }, options) { return axios.post(generateOcsUrl('apps/spreed/api/v1/chat/{token}', { token }), { @@ -83,6 +85,7 @@ const postNewMessage = async function({ token, message, actorDisplayName, refere actorDisplayName, referenceId, replyTo: parent, + silent: options.silent, }, options) } diff --git a/src/store/messageActionsStore.js b/src/store/integrationsStore.js index 02698431b..21b262f92 100644 --- a/src/store/messageActionsStore.js +++ b/src/store/integrationsStore.js @@ -21,24 +21,34 @@ */ const state = { messageActions: [], + participantSearchActions: [], } const getters = { messageActions: (state) => { return state.messageActions }, + participantSearchActions: (state) => { + return state.participantSearchActions + }, } const mutations = { addMessageAction(state, messageAction) { state.messageActions.push(messageAction) }, + addParticipantSearchAction(state, participantSearchAction) { + state.participantSearchActions.push(participantSearchAction) + }, } const actions = { addMessageAction({ commit }, messageAction) { commit('addMessageAction', messageAction) }, + addParticipantSearchAction({ commit }, participantSearchAction) { + commit('addParticipantSearchAction', participantSearchAction) + }, } export default { state, mutations, getters, actions } diff --git a/src/store/messagesStore.js b/src/store/messagesStore.js index 7fccbdd7f..0d8b2e977 100644 --- a/src/store/messagesStore.js +++ b/src/store/messagesStore.js @@ -585,7 +585,7 @@ const actions = { * Deletes all messages of a conversation from the store only. * * @param {object} context default store context; - * @param {object} token the token of the conversation to be deleted; + * @param {string} token the token of the conversation to be deleted; */ deleteMessages(context, token) { context.commit('deleteMessages', token) @@ -855,9 +855,11 @@ const actions = { * Sends the given temporary message to the server. * * @param {object} context default store context; - * @param {object} temporaryMessage temporary message, must already have been added to messages list. + * @param {object} data Passed in parameters + * @param {object} data.temporaryMessage temporary message, must already have been added to messages list. + * @param {object} data.options post request options. */ - async postNewMessage(context, temporaryMessage) { + async postNewMessage(context, { temporaryMessage, options }) { const { request, cancel } = CancelableRequest(postNewMessage) context.commit('setCancelPostNewMessage', { messageId: temporaryMessage.id, cancelFunction: cancel }) @@ -870,7 +872,7 @@ const actions = { }, 30000) try { - const response = await request(temporaryMessage) + const response = await request(temporaryMessage, options) clearTimeout(timeout) context.commit('setCancelPostNewMessage', { messageId: temporaryMessage.id, cancelFunction: null }) diff --git a/src/store/messagesStore.spec.js b/src/store/messagesStore.spec.js index 296ec4431..7dd08a5f7 100644 --- a/src/store/messagesStore.spec.js +++ b/src/store/messagesStore.spec.js @@ -1427,7 +1427,7 @@ describe('messagesStore', () => { resolvePromise = resolve })) - const returnedPromise = store.dispatch('postNewMessage', temporaryMessage).catch(() => {}) + const returnedPromise = store.dispatch('postNewMessage', { temporaryMessage, options: { silent: false } }).catch(() => {}) expect(store.getters.isSendingMessages).toBe(true) resolvePromise(response) @@ -1438,7 +1438,7 @@ describe('messagesStore', () => { expect(receivedResponse).toBe(response) - expect(postNewMessage).toHaveBeenCalledWith(temporaryMessage) + expect(postNewMessage).toHaveBeenCalledWith(temporaryMessage, { silent: false }) expect(updateLastCommonReadMessageAction).toHaveBeenCalledWith( expect.anything(), @@ -1471,8 +1471,8 @@ describe('messagesStore', () => { sendingFailure: '', } - store.dispatch('postNewMessage', temporaryMessage).catch(() => {}) - store.dispatch('postNewMessage', temporaryMessage2).catch(() => {}) + store.dispatch('postNewMessage', { temporaryMessage, options: { silent: false } }).catch(() => {}) + store.dispatch('postNewMessage', { temporaryMessage: temporaryMessage2, options: { silent: false } }).catch(() => {}) expect(cancelFunctionMocks[0]).not.toHaveBeenCalled() expect(cancelFunctionMocks[1]).not.toHaveBeenCalled() @@ -1513,7 +1513,7 @@ describe('messagesStore', () => { postNewMessage.mockRejectedValueOnce({ isAxiosError: true, response }) await expect( - store.dispatch('postNewMessage', temporaryMessage) + store.dispatch('postNewMessage', { temporaryMessage, options: { silent: false } }) ).rejects.toMatchObject({ response }) expect(store.getters.isSendingMessages).toBe(false) @@ -1553,7 +1553,7 @@ describe('messagesStore', () => { } store.dispatch('addTemporaryMessage', temporaryMessage) - store.dispatch('postNewMessage', temporaryMessage).catch(() => {}) + store.dispatch('postNewMessage', { temporaryMessage, options: { silent: false } }).catch(() => {}) jest.advanceTimersByTime(60000) @@ -1594,7 +1594,7 @@ describe('messagesStore', () => { postNewMessage.mockResolvedValueOnce(response) store.dispatch('addTemporaryMessage', temporaryMessage) - await store.dispatch('postNewMessage', temporaryMessage) + await store.dispatch('postNewMessage', { temporaryMessage, options: { silent: false } }) jest.advanceTimersByTime(60000) diff --git a/src/store/storeConfig.js b/src/store/storeConfig.js index b3152bf23..656ca3e5a 100644 --- a/src/store/storeConfig.js +++ b/src/store/storeConfig.js @@ -37,7 +37,7 @@ import talkHashStore from './talkHashStore.js' import tokenStore from './tokenStore.js' import uiModeStore from './uiModeStore.js' import windowVisibilityStore from './windowVisibilityStore.js' -import messageActionsStore from './messageActionsStore.js' +import integrationsStore from './integrationsStore.js' import reactionsStore from './reactionsStore.js' import sharedItemStore from './sharedItemsStore.js' @@ -60,7 +60,7 @@ export default { tokenStore, uiModeStore, windowVisibilityStore, - messageActionsStore, + integrationsStore, reactionsStore, sharedItemStore, }, diff --git a/src/types/vendor/l10n.d.ts b/src/types/vendor/l10n.d.ts index 4cf506ee2..eb0ef95f1 100644 --- a/src/types/vendor/l10n.d.ts +++ b/src/types/vendor/l10n.d.ts @@ -1 +1 @@ -declare function t(app: string, string: string, vars?: { [key: string]: string }, count?: number, options?: EscapeOptions): string; +declare function t(app: string, string: string, vars?: { [key: string]: string }, count?: number, options?: any): string; diff --git a/tests/integration/composer.json b/tests/integration/composer.json index e495c284e..eb153e912 100644 --- a/tests/integration/composer.json +++ b/tests/integration/composer.json @@ -2,7 +2,7 @@ "require-dev": { "phpunit/phpunit": "^9.5", "behat/behat": "^3.10", - "guzzlehttp/guzzle": "6.3.3", + "guzzlehttp/guzzle": "6.5.6", "jarnaiz/behat-junit-formatter": "^1.3" } } diff --git a/tests/integration/composer.lock b/tests/integration/composer.lock index 34038ba86..5af9648bc 100644 --- a/tests/integration/composer.lock +++ b/tests/integration/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "2968a9c74295a50244f30bde2e67bb0f", + "content-hash": "85ac73071cd74c8d2b9a4e7aac1ba124", "packages": [], "packages-dev": [ { @@ -277,27 +277,29 @@ }, { "name": "guzzlehttp/guzzle", - "version": "6.3.3", + "version": "6.5.6", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" + "reference": "f092dd734083473658de3ee4bef093ed77d2689c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", - "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f092dd734083473658de3ee4bef093ed77d2689c", + "reference": "f092dd734083473658de3ee4bef093ed77d2689c", "shasum": "" }, "require": { + "ext-json": "*", "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.4", - "php": ">=5.5" + "guzzlehttp/psr7": "^1.6.1", + "php": ">=5.5", + "symfony/polyfill-intl-idn": "^1.17.0" }, "require-dev": { "ext-curl": "*", "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.0" + "psr/log": "^1.1" }, "suggest": { "psr/log": "Required for using the Log middleware" @@ -305,7 +307,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.3-dev" + "dev-master": "6.5-dev" } }, "autoload": { @@ -322,9 +324,39 @@ ], "authors": [ { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Mรกrk Sรกgi-Kazรกr", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" } ], "description": "Guzzle is a PHP HTTP client library", @@ -340,9 +372,23 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/master" + "source": "https://github.com/guzzle/guzzle/tree/6.5.6" }, - "time": "2018-04-22T15:46:56+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2022-05-25T13:19:12+00:00" }, { "name": "guzzlehttp/promises", @@ -371,12 +417,12 @@ } }, "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3334,8 +3380,95 @@ "time": "2021-05-27T12:26:48+00:00" }, { + "name": "symfony/polyfill-intl-idn", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "749045c69efb97c70d25d7463abba812e91f3a44" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", + "reference": "749045c69efb97c70d25d7463abba812e91f3a44", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-09-14T14:02:44+00:00" + }, + { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -3364,12 +3497,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -3399,7 +3532,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" }, "funding": [ { @@ -3419,21 +3552,24 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-mbstring": "*" + }, "suggest": { "ext-mbstring": "For best performance" }, @@ -3448,12 +3584,89 @@ } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", + "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3469,17 +3682,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "mbstring", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.25.0" }, "funding": [ { @@ -3495,7 +3707,7 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2021-05-27T09:17:38+00:00" }, { "name": "symfony/polyfill-php73", @@ -4264,5 +4476,5 @@ "prefer-lowest": false, "platform": [], "platform-dev": [], - "plugin-api-version": "2.2.0" + "plugin-api-version": "2.3.0" } diff --git a/tests/integration/features/bootstrap/FeatureContext.php b/tests/integration/features/bootstrap/FeatureContext.php index 264a57629..6e741187f 100644 --- a/tests/integration/features/bootstrap/FeatureContext.php +++ b/tests/integration/features/bootstrap/FeatureContext.php @@ -1342,6 +1342,22 @@ class FeatureContext implements Context, SnippetAcceptingContext { } /** + * @Then /^user "([^"]*)" pings (user|guest) "([^"]*)" to join call "([^"]*)" with (\d+) \((v4)\)$/ + * + * @param string $user + * @param string $actorType + * @param string $actorId + * @param string $identifier + * @param int $statusCode + * @param string $apiVersion + */ + public function userPingsAttendeeInRoomTo(string $user, string $actorType, string $actorId, string $identifier, int $statusCode, string $apiVersion): void { + $this->setCurrentUser($user); + $this->sendRequest('POST', '/apps/spreed/api/' . $apiVersion . '/call/' . self::$identifierToToken[$identifier] . '/ring/' . self::$userToAttendeeId[$actorType . 's'][$actorId]); + $this->assertStatusCode($this->response, $statusCode); + } + + /** * @Then /^user "([^"]*)" leaves call "([^"]*)" with (\d+) \((v4)\)$/ * * @param string $user @@ -1760,16 +1776,31 @@ class FeatureContext implements Context, SnippetAcceptingContext { return; } - Assert::assertCount(count($formData->getHash()), $messages, 'Message count does not match'); - Assert::assertEquals($formData->getHash(), array_map(function ($message) { - return [ + $expected = $formData->getHash(); + + Assert::assertCount(count($expected), $messages, 'Message count does not match'); + Assert::assertEquals($expected, array_map(function ($message, $expected) { + $data = [ 'room' => self::$tokenToIdentifier[$message['token']], 'actorType' => (string) $message['actorType'], - 'actorId' => ($message['actorType'] === 'guests')? self::$sessionIdToUser[$message['actorId']]: (string) $message['actorId'], - 'actorDisplayName' => (string) $message['actorDisplayName'], + 'actorId' => ($message['actorType'] === 'guests') ? self::$sessionIdToUser[$message['actorId']]: (string) $message['actorId'], 'systemMessage' => (string) $message['systemMessage'], ]; - }, $messages)); + + if (isset($expected['actorDisplayName'])) { + $data['actorDisplayName'] = $message['actorDisplayName']; + } + + if (isset($expected['message'])) { + $data['message'] = $message['message']; + } + + if (isset($expected['messageParameters'])) { + $data['messageParameters'] = json_encode($message['messageParameters']); + } + + return $data; + }, $messages, $expected)); } /** diff --git a/tests/integration/features/callapi/notifications.feature b/tests/integration/features/callapi/notifications.feature new file mode 100644 index 000000000..b1d13c051 --- /dev/null +++ b/tests/integration/features/callapi/notifications.feature @@ -0,0 +1,68 @@ +Feature: chat/notifications + + Background: + Given user "participant1" exists + Given user "participant2" exists + + Scenario: Normal call notification + When user "participant1" creates room "room" (v4) + | roomType | 2 | + | roomName | room | + And user "participant1" adds user "participant2" to room "room" with 200 (v4) + Given user "participant1" joins room "room" with 200 (v4) + Given user "participant2" joins room "room" with 200 (v4) + Given user "participant1" joins call "room" with 200 (v4) + Then user "participant2" has the following notifications + | app | object_type | object_id | subject | + | spreed | call | room | A group call has started in room | + Given user "participant2" joins call "room" with 200 (v4) + Then user "participant2" has the following notifications + | app | object_type | object_id | subject | + + Scenario: Missed call notification + When user "participant1" creates room "room" (v4) + | roomType | 2 | + | roomName | room | + And user "participant1" adds user "participant2" to room "room" with 200 (v4) + Given user "participant1" joins room "room" with 200 (v4) + Given user "participant2" joins room "room" with 200 (v4) + Given user "participant1" joins call "room" with 200 (v4) + Then user "participant2" has the following notifications + | app | object_type | object_id | subject | + | spreed | call | room | A group call has started in room | + Given user "participant1" leaves call "room" with 200 (v4) + Then user "participant2" has the following notifications + | app | object_type | object_id | subject | + | spreed | call | room | You missed a group call in room | + + Scenario: Silent call does not trigger notifications + When user "participant1" creates room "room" (v4) + | roomType | 2 | + | roomName | room | + And user "participant1" adds user "participant2" to room "room" with 200 (v4) + Given user "participant1" joins room "room" with 200 (v4) + Given user "participant2" joins room "room" with 200 (v4) + Given user "participant1" joins call "room" with 200 (v4) + | silent | true | + Then user "participant2" has the following notifications + | app | object_type | object_id | subject | + Given user "participant1" leaves call "room" with 200 (v4) + Then user "participant2" has the following notifications + | app | object_type | object_id | subject | + + Scenario: Silent call with dedicated ping does trigger notifications + When user "participant1" creates room "room" (v4) + | roomType | 2 | + | roomName | room | + And user "participant1" adds user "participant2" to room "room" with 200 (v4) + Given user "participant1" joins room "room" with 200 (v4) + Given user "participant2" joins room "room" with 200 (v4) + Given user "participant1" loads attendees attendee ids in room "room" (v4) + Given user "participant1" joins call "room" with 200 (v4) + | silent | true | + Then user "participant2" has the following notifications + | app | object_type | object_id | subject | + Given user "participant1" pings user "participant2" to join call "room" with 200 (v4) + Then user "participant2" has the following notifications + | app | object_type | object_id | subject | + | spreed | call | room | A group call has started in room | diff --git a/tests/integration/features/chat/notifications.feature b/tests/integration/features/chat/notifications.feature index 8301f8345..ad3a83415 100644 --- a/tests/integration/features/chat/notifications.feature +++ b/tests/integration/features/chat/notifications.feature @@ -82,6 +82,32 @@ Feature: chat/notifications Then user "participant2" has the following notifications | app | object_type | object_id | subject | + Scenario: Reaction in the one-to-one + When user "participant1" creates room "one-to-one room" (v4) + | roomType | 1 | + | invite | participant2 | + # Join and leave to clear the invite notification + Given user "participant2" joins room "one-to-one room" with 200 (v4) + Given user "participant2" leaves room "one-to-one room" with 200 (v4) + When user "participant2" sends message "Message 1" to room "one-to-one room" with 201 + And user "participant1" react with "๐" on message "Message 1" to room "one-to-one room" with 201 + Then user "participant2" has the following notifications + | app | object_type | object_id | subject | + | spreed | chat | one-to-one room/Message 1 | participant1-displayname reacted with ๐ to your private message | + + Scenario: Reaction when recipient disabled notifications in the one-to-one + When user "participant1" creates room "one-to-one room" (v4) + | roomType | 1 | + | invite | participant2 | + # Join and leave to clear the invite notification + Given user "participant2" joins room "one-to-one room" with 200 (v4) + Given user "participant2" leaves room "one-to-one room" with 200 (v4) + When user "participant2" sends message "Message 1" to room "one-to-one room" with 201 + And user "participant2" sets notifications to disabled for room "one-to-one room" (v4) + And user "participant1" react with "๐" on message "Message 1" to room "one-to-one room" with 201 + Then user "participant2" has the following notifications + | app | object_type | object_id | subject | + Scenario: At-all when recipient is online in the one-to-one When user "participant1" creates room "one-to-one room" (v4) | roomType | 1 | @@ -264,3 +290,31 @@ Feature: chat/notifications When user "participant1" deletes message "Message 1" from room "one-to-one room" with 200 (v1) Then user "participant2" has the following notifications | app | object_type | object_id | subject | + + Scenario: Reaction when recipient full enables notifications in the group room + When user "participant1" creates room "room" (v4) + | roomType | 2 | + | roomName | room | + And user "participant1" adds user "participant2" to room "room" with 200 (v4) + # Join and leave to clear the invite notification + Given user "participant2" joins room "room" with 200 (v4) + Given user "participant2" leaves room "room" with 200 (v4) + When user "participant2" sends message "Message 1" to room "room" with 201 + And user "participant2" sets notifications to all for room "room" (v4) + And user "participant1" react with "๐" on message "Message 1" to room "room" with 201 + Then user "participant2" has the following notifications + | app | object_type | object_id | subject | + | spreed | chat | room/Message 1 | participant1-displayname reacted with ๐ to your message in conversation room | + + Scenario: Reaction when recipient has default notifications (disabled) in the group room + When user "participant1" creates room "room" (v4) + | roomType | 2 | + | roomName | room | + And user "participant1" adds user "participant2" to room "room" with 200 (v4) + # Join and leave to clear the invite notification + Given user "participant2" joins room "room" with 200 (v4) + Given user "participant2" leaves room "room" with 200 (v4) + When user "participant2" sends message "Message 1" to room "room" with 201 + And user "participant1" react with "๐" on message "Message 1" to room "room" with 201 + Then user "participant2" has the following notifications + | app | object_type | object_id | subject | diff --git a/tests/integration/features/command/user-remove.feature b/tests/integration/features/command/user-remove.feature index b6e656355..9a9826a16 100644 --- a/tests/integration/features/command/user-remove.feature +++ b/tests/integration/features/command/user-remove.feature @@ -26,3 +26,25 @@ Feature: User remove And user "participant1" sees the following attendees in room "room2" with 200 (v4) | actorType | actorId | participantType | | users | participant1 | 1 | + + Scenario: Remove a user after there was a missed call + Given user "participant1" creates room "room" (v4) + | roomType | 1 | + | invite | participant2 | + Then user "participant1" joins room "room" with 200 (v4) + Then user "participant1" joins call "room" with 200 (v4) + Then user "participant1" leaves call "room" with 200 (v4) + Then user "participant1" leaves room "room" with 200 (v4) + And invoking occ with "talk:user:remove --user participant2" + And the command output contains the text "Users successfully removed from all rooms" + Then the command was successful + And user "participant2" is participant of the following rooms (v4) + And user "participant1" is participant of the following rooms (v4) + | id | name | type | participantType | + | room | participant2-displayname | 2 | 1 | + Then user "participant1" sees the following system messages in room "room" with 200 + | room | actorType | actorId | systemMessage | message | messageParameters | + | room | users | participant1 | call_tried | You tried to call {user} | {"user":{"type":"highlight","id":"deleted_user","name":"participant2-displayname"}} | + | room | users | participant1 | call_left | You left the call | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | + | room | users | participant1 | call_started | You started a call | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | + | room | users | participant1 | conversation_created | You created the conversation | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | diff --git a/tests/php/CapabilitiesTest.php b/tests/php/CapabilitiesTest.php index bac9fbfc3..b52318918 100644 --- a/tests/php/CapabilitiesTest.php +++ b/tests/php/CapabilitiesTest.php @@ -106,8 +106,10 @@ class CapabilitiesTest extends TestCase { 'conversation-permissions', 'rich-object-list-media', 'rich-object-delete', + 'unified-search', 'chat-permission', 'silent-send', + 'silent-call', 'send-call-notification', 'reactions', ]; @@ -134,6 +136,7 @@ class CapabilitiesTest extends TestCase { ['spreed', 'has_reference_id', 'no', 'no'], ['spreed', 'max-gif-size', '3145728', '200000'], ['spreed', 'start_calls', Room::START_CALL_EVERYONE, Room::START_CALL_EVERYONE], + ['spreed', 'session-ping-limit', '200', '200'], ]); $this->assertInstanceOf(IPublicCapability::class, $capabilities); @@ -157,6 +160,9 @@ class CapabilitiesTest extends TestCase { 'previews' => [ 'max-gif-size' => 200000, ], + 'signaling' => [ + 'session-ping-limit' => 200, + ], ], ], ], $capabilities->getCapabilities()); @@ -217,6 +223,7 @@ class CapabilitiesTest extends TestCase { ['spreed', 'has_reference_id', 'no', 'yes'], ['spreed', 'max-gif-size', '3145728', '200000'], ['spreed', 'start_calls', Room::START_CALL_EVERYONE, Room::START_CALL_NOONE], + ['spreed', 'session-ping-limit', '200', '50'], ]); $this->assertInstanceOf(IPublicCapability::class, $capabilities); @@ -246,6 +253,9 @@ class CapabilitiesTest extends TestCase { 'previews' => [ 'max-gif-size' => 200000, ], + 'signaling' => [ + 'session-ping-limit' => 50, + ], ], ], ], $data); diff --git a/tests/php/Controller/SignalingControllerTest.php b/tests/php/Controller/SignalingControllerTest.php index e5879629c..1b6329d26 100644 --- a/tests/php/Controller/SignalingControllerTest.php +++ b/tests/php/Controller/SignalingControllerTest.php @@ -869,45 +869,8 @@ class SignalingControllerTest extends TestCase { ], $result->getData()); } - public function testBackendPingUnknownRoom() { - $roomToken = 'the-room'; - $room = $this->createMock(Room::class); - $this->manager->expects($this->once()) - ->method('getRoomByToken') - ->with($roomToken) - ->willThrowException(new RoomNotFoundException()); - - $result = $this->performBackendRequest([ - 'type' => 'ping', - 'ping' => [ - 'roomid' => $roomToken, - 'entries' => [ - [ - 'userid' => $this->userId, - ], - ], - ], - ]); - $this->assertSame([ - 'type' => 'error', - 'error' => [ - 'code' => 'no_such_room', - 'message' => 'No such room.', - ], - ], $result->getData()); - } - public function testBackendPingUser() { - $roomToken = 'the-room'; $sessionId = 'the-session'; - $room = $this->createMock(Room::class); - $this->manager->expects($this->once()) - ->method('getRoomByToken') - ->with($roomToken) - ->willReturn($room); - $room->expects($this->once()) - ->method('getToken') - ->willReturn($roomToken); $this->timeFactory->method('getTime') ->willReturn(123456); @@ -918,7 +881,6 @@ class SignalingControllerTest extends TestCase { $result = $this->performBackendRequest([ 'type' => 'ping', 'ping' => [ - 'roomid' => $roomToken, 'entries' => [ [ 'userid' => $this->userId, @@ -931,22 +893,12 @@ class SignalingControllerTest extends TestCase { 'type' => 'room', 'room' => [ 'version' => '1.0', - 'roomid' => $roomToken, ], ], $result->getData()); } public function testBackendPingAnonymous() { - $roomToken = 'the-room'; $sessionId = 'the-session'; - $room = $this->createMock(Room::class); - $this->manager->expects($this->once()) - ->method('getRoomByToken') - ->with($roomToken) - ->willReturn($room); - $room->expects($this->once()) - ->method('getToken') - ->willReturn($roomToken); $this->timeFactory->method('getTime') ->willReturn(1234567); @@ -957,7 +909,6 @@ class SignalingControllerTest extends TestCase { $result = $this->performBackendRequest([ 'type' => 'ping', 'ping' => [ - 'roomid' => $roomToken, 'entries' => [ [ 'userid' => '', @@ -970,22 +921,12 @@ class SignalingControllerTest extends TestCase { 'type' => 'room', 'room' => [ 'version' => '1.0', - 'roomid' => $roomToken, ], ], $result->getData()); } public function testBackendPingMixedAndInactive() { - $roomToken = 'the-room'; $sessionId = 'the-session'; - $room = $this->createMock(Room::class); - $this->manager->expects($this->once()) - ->method('getRoomByToken') - ->with($roomToken) - ->willReturn($room); - $room->expects($this->once()) - ->method('getToken') - ->willReturn($roomToken); $this->timeFactory->method('getTime') ->willReturn(234567); @@ -996,7 +937,6 @@ class SignalingControllerTest extends TestCase { $result = $this->performBackendRequest([ 'type' => 'ping', 'ping' => [ - 'roomid' => $roomToken, 'entries' => [ [ 'userid' => '', @@ -1017,7 +957,6 @@ class SignalingControllerTest extends TestCase { 'type' => 'room', 'room' => [ 'version' => '1.0', - 'roomid' => $roomToken, ], ], $result->getData()); } |