Compare commits

...

12 Commits

Author SHA1 Message Date
Sebastien Marinier 858753022b feat: videos for all users and moderators
Users and moderators recording views
2024-08-17 11:50:09 +02:00
Sebastien Marinier 558cc95231 feat: sharing rooms with moderators and users
Dialog and permissions management
2024-08-17 11:47:11 +02:00
Sebastien Marinier 4095cbe52d feat: manage view of rooms for moderators and users 2024-08-16 12:49:12 +02:00
Sebastien Marinier 2a29608c97 fix: 261 remove some backticks
remove backticks interfering with xgettext translations sentences extraction
2024-08-16 12:46:57 +02:00
Nextcloud bot fbb4ae1cf3 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-16 12:45:09 +02:00
Nextcloud bot 57a21b7c08 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-16 12:45:09 +02:00
Nextcloud bot f50a04063e Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-16 12:45:09 +02:00
Nextcloud bot f853802777 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-16 12:45:09 +02:00
Sebastien Marinier 7744169037 fix: 261 wordings that aren't visible in Transifex
Let's try breaking the lines
2024-08-16 12:45:09 +02:00
Nextcloud bot ac8d23521f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-16 12:45:09 +02:00
Nextcloud bot 81e6c01ba1 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-16 12:45:09 +02:00
Nextcloud bot 35a764d13a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-16 12:45:09 +02:00
15 changed files with 48 additions and 29 deletions

View File

@ -17,6 +17,7 @@ OC.L10N.register(
"Edit" : "Rediger", "Edit" : "Rediger",
"Welcome" : "Velkommen", "Welcome" : "Velkommen",
"Miscellaneous" : "Diverse", "Miscellaneous" : "Diverse",
"Room name" : "Rumnavn",
"Create" : "Opret", "Create" : "Opret",
"Copy to clipboard" : "Kopier til udklipsholder", "Copy to clipboard" : "Kopier til udklipsholder",
"Delete" : "Slet", "Delete" : "Slet",

View File

@ -15,6 +15,7 @@
"Edit" : "Rediger", "Edit" : "Rediger",
"Welcome" : "Velkommen", "Welcome" : "Velkommen",
"Miscellaneous" : "Diverse", "Miscellaneous" : "Diverse",
"Room name" : "Rumnavn",
"Create" : "Opret", "Create" : "Opret",
"Copy to clipboard" : "Kopier til udklipsholder", "Copy to clipboard" : "Kopier til udklipsholder",
"Delete" : "Slet", "Delete" : "Slet",

View File

@ -69,6 +69,7 @@ OC.L10N.register(
"This message is shown to all users in the chat area after they joined." : "Diese Nachricht wird allen Benutzern im Chat-Bereich nach ihrem Beitritt angezeigt.", "This message is shown to all users in the chat area after they joined." : "Diese Nachricht wird allen Benutzern im Chat-Bereich nach ihrem Beitritt angezeigt.",
"Sets a limit on the number of participants for this room. Zero means there is no limit." : "Legt eine Begrenzung der Teilnehmerzahl für diesen Raum fest. Null bedeutet, dass es keine Begrenzung gibt.", "Sets a limit on the number of participants for this room. Zero means there is no limit." : "Legt eine Begrenzung der Teilnehmerzahl für diesen Raum fest. Null bedeutet, dass es keine Begrenzung gibt.",
"If enabled, the moderator is able to start the recording." : "Wenn aktiviert, kann der Moderator die Aufnahme starten.", "If enabled, the moderator is able to start the recording." : "Wenn aktiviert, kann der Moderator die Aufnahme starten.",
"Explanation of the different concepts that constitute access options :<br>- Public: Anyone who has the link can join.- <br>Internal: Only Nextcloud users can join.- <br>Password: Only guests who have the password can join..- <br>Waiting room: A moderator must accept each guest before they can join.- <br>Restricted : Only selected users and groups can access this room." : "Erläuterung der verschiedenen Konzepte bezüglich der Zugriffsrechte:<br>- Öffentlich: Jeder, der den Link hat, kann beitreten. <br>- Intern: Nur Nextcloud-Benutzer können beitreten. <br>- Passwort: Nur Gäste, die das Passwort haben, können beitreten. <br>- Warteraum: Ein Moderator muss jeden Gast vor dem Beitreten bestätigen.<br> Eingeschränkt: Nur ausgewählte Benutzer und Gruppen haben Zugriff auf diesen Raum.",
"A moderator is able to manage all participants in a meeting including kicking, muting or selecting a presenter. Users with the role moderator are also able to close a meeting or change the default settings." : "Ein Moderator kann die Teilnehmer einer Besprechung verwalten, was das Ausschließen, Stummschalten oder Gewährung von Moderatorenrechten beinhaltet. Benutzer mit Moderatorenrechten können auch die Besprechung schließen oder die Standardeinstellungen ändern.", "A moderator is able to manage all participants in a meeting including kicking, muting or selecting a presenter. Users with the role moderator are also able to close a meeting or change the default settings." : "Ein Moderator kann die Teilnehmer einer Besprechung verwalten, was das Ausschließen, Stummschalten oder Gewährung von Moderatorenrechten beinhaltet. Benutzer mit Moderatorenrechten können auch die Besprechung schließen oder die Standardeinstellungen ändern.",
"If enabled, normal users have to wait until a moderator is in the room." : "Wenn aktiviert müssen Benutzer warten, bis ein Moderator den Raum betritt.", "If enabled, normal users have to wait until a moderator is in the room." : "Wenn aktiviert müssen Benutzer warten, bis ein Moderator den Raum betritt.",
"If enabled, a moderator URL is generated which allows access with moderator permission." : "Wenn aktiviert, wird eine Moderator-URL generiert, die den Zugriff mit Moderatorberechtigung ermöglicht.", "If enabled, a moderator URL is generated which allows access with moderator permission." : "Wenn aktiviert, wird eine Moderator-URL generiert, die den Zugriff mit Moderatorberechtigung ermöglicht.",

View File

@ -67,6 +67,7 @@
"This message is shown to all users in the chat area after they joined." : "Diese Nachricht wird allen Benutzern im Chat-Bereich nach ihrem Beitritt angezeigt.", "This message is shown to all users in the chat area after they joined." : "Diese Nachricht wird allen Benutzern im Chat-Bereich nach ihrem Beitritt angezeigt.",
"Sets a limit on the number of participants for this room. Zero means there is no limit." : "Legt eine Begrenzung der Teilnehmerzahl für diesen Raum fest. Null bedeutet, dass es keine Begrenzung gibt.", "Sets a limit on the number of participants for this room. Zero means there is no limit." : "Legt eine Begrenzung der Teilnehmerzahl für diesen Raum fest. Null bedeutet, dass es keine Begrenzung gibt.",
"If enabled, the moderator is able to start the recording." : "Wenn aktiviert, kann der Moderator die Aufnahme starten.", "If enabled, the moderator is able to start the recording." : "Wenn aktiviert, kann der Moderator die Aufnahme starten.",
"Explanation of the different concepts that constitute access options :<br>- Public: Anyone who has the link can join.- <br>Internal: Only Nextcloud users can join.- <br>Password: Only guests who have the password can join..- <br>Waiting room: A moderator must accept each guest before they can join.- <br>Restricted : Only selected users and groups can access this room." : "Erläuterung der verschiedenen Konzepte bezüglich der Zugriffsrechte:<br>- Öffentlich: Jeder, der den Link hat, kann beitreten. <br>- Intern: Nur Nextcloud-Benutzer können beitreten. <br>- Passwort: Nur Gäste, die das Passwort haben, können beitreten. <br>- Warteraum: Ein Moderator muss jeden Gast vor dem Beitreten bestätigen.<br> Eingeschränkt: Nur ausgewählte Benutzer und Gruppen haben Zugriff auf diesen Raum.",
"A moderator is able to manage all participants in a meeting including kicking, muting or selecting a presenter. Users with the role moderator are also able to close a meeting or change the default settings." : "Ein Moderator kann die Teilnehmer einer Besprechung verwalten, was das Ausschließen, Stummschalten oder Gewährung von Moderatorenrechten beinhaltet. Benutzer mit Moderatorenrechten können auch die Besprechung schließen oder die Standardeinstellungen ändern.", "A moderator is able to manage all participants in a meeting including kicking, muting or selecting a presenter. Users with the role moderator are also able to close a meeting or change the default settings." : "Ein Moderator kann die Teilnehmer einer Besprechung verwalten, was das Ausschließen, Stummschalten oder Gewährung von Moderatorenrechten beinhaltet. Benutzer mit Moderatorenrechten können auch die Besprechung schließen oder die Standardeinstellungen ändern.",
"If enabled, normal users have to wait until a moderator is in the room." : "Wenn aktiviert müssen Benutzer warten, bis ein Moderator den Raum betritt.", "If enabled, normal users have to wait until a moderator is in the room." : "Wenn aktiviert müssen Benutzer warten, bis ein Moderator den Raum betritt.",
"If enabled, a moderator URL is generated which allows access with moderator permission." : "Wenn aktiviert, wird eine Moderator-URL generiert, die den Zugriff mit Moderatorberechtigung ermöglicht.", "If enabled, a moderator URL is generated which allows access with moderator permission." : "Wenn aktiviert, wird eine Moderator-URL generiert, die den Zugriff mit Moderatorberechtigung ermöglicht.",

View File

@ -13,6 +13,7 @@ OC.L10N.register(
"Access" : "Acceso", "Access" : "Acceso",
"Edit" : "Editar", "Edit" : "Editar",
"Welcome" : "Bienvenido", "Welcome" : "Bienvenido",
"Miscellaneous" : "Misceláneo",
"Room name" : "Nombre del cuarto", "Room name" : "Nombre del cuarto",
"Create" : "Crear", "Create" : "Crear",
"Copy to clipboard" : "Copiar al portapapeles", "Copy to clipboard" : "Copiar al portapapeles",

View File

@ -11,6 +11,7 @@
"Access" : "Acceso", "Access" : "Acceso",
"Edit" : "Editar", "Edit" : "Editar",
"Welcome" : "Bienvenido", "Welcome" : "Bienvenido",
"Miscellaneous" : "Misceláneo",
"Room name" : "Nombre del cuarto", "Room name" : "Nombre del cuarto",
"Create" : "Crear", "Create" : "Crear",
"Copy to clipboard" : "Copiar al portapapeles", "Copy to clipboard" : "Copiar al portapapeles",

View File

@ -22,7 +22,7 @@ OC.L10N.register(
"API URL or secret not configured. Please contact your administrator." : "URL ou segredo da API sen configurar. Póñase en contacto coa administración desta instancia.", "API URL or secret not configured. Please contact your administrator." : "URL ou segredo da API sen configurar. Póñase en contacto coa administración desta instancia.",
"BigBlueButton Integration" : "Integración de BigBlueButton", "BigBlueButton Integration" : "Integración de BigBlueButton",
"BigBlueButton integration for Nextcloud" : "Integración de BigBlueButton en Nextcloud", "BigBlueButton integration for Nextcloud" : "Integración de BigBlueButton en Nextcloud",
"This app allows to create meetings with an external installation of [BigBlueButton](https://bigbluebutton.org).\n\n* **Room setup** Create multiple room configurations with name, welcome message …\n* **Share guest link** Share the room link with all your guests\n* **Share moderator link** Invite moderators to the room\n* **Share rooms** Share rooms with members, groups or circles\n* **Custom presentation** Start a room with a selected presentation from your file browser\n* **Manage recordings** View, share and delete recordings for your rooms\n* **Restrictions** Restrict room creation to certain groups\n* **Activities** Get an overview of your room activities\n\nQuick start guide and further information in our [readme](https://github.com/sualko/cloud_bbb).\nDo you like this application? Give something back to the open source community and checkout our\n[ways to contribute](https://github.com/sualko/cloud_bbb/blob/master/.github/contributing.md).\n\nDeveloper wanted! If you have time it would be awesome if you could help to enhance this application.\n\n*This app integrates BigBlueButton and is not endorsed or certified by BigBlueButton Inc. BigBlueButton and the BigBlueButton Logo are trademarks of BigBlueButton Inc.*" : "Esta aplicación permite crear xuntanzas cunha instalación externa de [BigBlueButton] (https://bigbluebutton.org).\n\n* **Configuración de salas** Crear múltiples configuracións de salas con nome, mensaxe de benvida …\n* **Compartir a ligazón de convidados** Compartir a ligazón da sala con todos os seus convidados\n* **Compartir ligazón de moderador** Convida moderadores á sala\n* **Compartir salas** Compartir salas con membros, grupos ou círculos\n* **Presentación personalizada** Inicie unha sala cunha presentación seleccionada dende o seu navegador de ficheiros\n* **Xestionar as gravacións** Ver, compartir e eliminar as gravacións das súas salas\n* **Restricións** Restrinxir a creación de salas a determinados grupos\n* ** Actividades** Obteña unha visión xeral das actividades da súa sala\n\nGuía de inicio rápido e máis información no noso [léame](https://github.com/sualko/cloud_bbb).\nGústalle esta aplicación? Devolva algo á comunidade de código aberto e consulte as nosas\n[formas de colaborar](https://github.com/sualko/cloud_bbb/blob/master/.github/contributing.md).\n\nBúscase programador! Se ten tempo, sería incríbel que puidese axudar a mellorar esta aplicación.\n\n*Esta aplicación integra BigBlueButton e non está aprobada nin certificada por BigBlueButton Inc. BigBlueButton e o logotipo de BigBlueButton son marcas comerciais de BigBlueButton Inc.*", "This app allows to create meetings with an external installation of [BigBlueButton](https://bigbluebutton.org).\n\n* **Room setup** Create multiple room configurations with name, welcome message …\n* **Share guest link** Share the room link with all your guests\n* **Share moderator link** Invite moderators to the room\n* **Share rooms** Share rooms with members, groups or circles\n* **Custom presentation** Start a room with a selected presentation from your file browser\n* **Manage recordings** View, share and delete recordings for your rooms\n* **Restrictions** Restrict room creation to certain groups\n* **Activities** Get an overview of your room activities\n\nQuick start guide and further information in our [readme](https://github.com/sualko/cloud_bbb).\nDo you like this application? Give something back to the open source community and checkout our\n[ways to contribute](https://github.com/sualko/cloud_bbb/blob/master/.github/contributing.md).\n\nDeveloper wanted! If you have time it would be awesome if you could help to enhance this application.\n\n*This app integrates BigBlueButton and is not endorsed or certified by BigBlueButton Inc. BigBlueButton and the BigBlueButton Logo are trademarks of BigBlueButton Inc.*" : "Esta aplicación permite crear xuntanzas cunha instalación externa de [BigBlueButton] (https://bigbluebutton.org).\n\n* **Configuración de salas** Crear múltiples configuracións de salas con nome, mensaxe de benvida …\n* **Compartir a ligazón de convidados** Compartir a ligazón da sala con todos os seus convidados\n* **Compartir ligazón de moderador** Convida moderadores á sala\n* **Compartir salas** Compartir salas con membros, grupos ou círculos\n* **Presentación personalizada** Inicie unha sala cunha presentación seleccionada dende o seu navegador de ficheiros\n* **Xestionar as gravacións** Ver, compartir e eliminar as gravacións das súas salas\n* **Restricións** Restrinxir a creación de salas a determinados grupos\n* ** Actividades** Obteña unha vista xeral das actividades da súa sala\n\nGuía de inicio rápido e máis información no noso [léame](https://github.com/sualko/cloud_bbb).\nGústalle esta aplicación? Devolva algo á comunidade de código aberto e consulte as nosas\n[formas de colaborar](https://github.com/sualko/cloud_bbb/blob/master/.github/contributing.md).\n\nBúscase programador! Se ten tempo, sería incríbel que puidese axudar a mellorar esta aplicación.\n\n*Esta aplicación integra BigBlueButton e non está aprobada nin certificada por BigBlueButton Inc. BigBlueButton e o logotipo de BigBlueButton son marcas comerciais de BigBlueButton Inc.*",
"Room not found" : "Non se atopou a sala", "Room not found" : "Non se atopou a sala",
"The room could not be found. Maybe it was deleted?" : "Non foi posíbel atopar a sala. Quizais foi eliminada.", "The room could not be found. Maybe it was deleted?" : "Non foi posíbel atopar a sala. Quizais foi eliminada.",
"Back to %s" : "Volver a %s", "Back to %s" : "Volver a %s",

View File

@ -20,7 +20,7 @@
"API URL or secret not configured. Please contact your administrator." : "URL ou segredo da API sen configurar. Póñase en contacto coa administración desta instancia.", "API URL or secret not configured. Please contact your administrator." : "URL ou segredo da API sen configurar. Póñase en contacto coa administración desta instancia.",
"BigBlueButton Integration" : "Integración de BigBlueButton", "BigBlueButton Integration" : "Integración de BigBlueButton",
"BigBlueButton integration for Nextcloud" : "Integración de BigBlueButton en Nextcloud", "BigBlueButton integration for Nextcloud" : "Integración de BigBlueButton en Nextcloud",
"This app allows to create meetings with an external installation of [BigBlueButton](https://bigbluebutton.org).\n\n* **Room setup** Create multiple room configurations with name, welcome message …\n* **Share guest link** Share the room link with all your guests\n* **Share moderator link** Invite moderators to the room\n* **Share rooms** Share rooms with members, groups or circles\n* **Custom presentation** Start a room with a selected presentation from your file browser\n* **Manage recordings** View, share and delete recordings for your rooms\n* **Restrictions** Restrict room creation to certain groups\n* **Activities** Get an overview of your room activities\n\nQuick start guide and further information in our [readme](https://github.com/sualko/cloud_bbb).\nDo you like this application? Give something back to the open source community and checkout our\n[ways to contribute](https://github.com/sualko/cloud_bbb/blob/master/.github/contributing.md).\n\nDeveloper wanted! If you have time it would be awesome if you could help to enhance this application.\n\n*This app integrates BigBlueButton and is not endorsed or certified by BigBlueButton Inc. BigBlueButton and the BigBlueButton Logo are trademarks of BigBlueButton Inc.*" : "Esta aplicación permite crear xuntanzas cunha instalación externa de [BigBlueButton] (https://bigbluebutton.org).\n\n* **Configuración de salas** Crear múltiples configuracións de salas con nome, mensaxe de benvida …\n* **Compartir a ligazón de convidados** Compartir a ligazón da sala con todos os seus convidados\n* **Compartir ligazón de moderador** Convida moderadores á sala\n* **Compartir salas** Compartir salas con membros, grupos ou círculos\n* **Presentación personalizada** Inicie unha sala cunha presentación seleccionada dende o seu navegador de ficheiros\n* **Xestionar as gravacións** Ver, compartir e eliminar as gravacións das súas salas\n* **Restricións** Restrinxir a creación de salas a determinados grupos\n* ** Actividades** Obteña unha visión xeral das actividades da súa sala\n\nGuía de inicio rápido e máis información no noso [léame](https://github.com/sualko/cloud_bbb).\nGústalle esta aplicación? Devolva algo á comunidade de código aberto e consulte as nosas\n[formas de colaborar](https://github.com/sualko/cloud_bbb/blob/master/.github/contributing.md).\n\nBúscase programador! Se ten tempo, sería incríbel que puidese axudar a mellorar esta aplicación.\n\n*Esta aplicación integra BigBlueButton e non está aprobada nin certificada por BigBlueButton Inc. BigBlueButton e o logotipo de BigBlueButton son marcas comerciais de BigBlueButton Inc.*", "This app allows to create meetings with an external installation of [BigBlueButton](https://bigbluebutton.org).\n\n* **Room setup** Create multiple room configurations with name, welcome message …\n* **Share guest link** Share the room link with all your guests\n* **Share moderator link** Invite moderators to the room\n* **Share rooms** Share rooms with members, groups or circles\n* **Custom presentation** Start a room with a selected presentation from your file browser\n* **Manage recordings** View, share and delete recordings for your rooms\n* **Restrictions** Restrict room creation to certain groups\n* **Activities** Get an overview of your room activities\n\nQuick start guide and further information in our [readme](https://github.com/sualko/cloud_bbb).\nDo you like this application? Give something back to the open source community and checkout our\n[ways to contribute](https://github.com/sualko/cloud_bbb/blob/master/.github/contributing.md).\n\nDeveloper wanted! If you have time it would be awesome if you could help to enhance this application.\n\n*This app integrates BigBlueButton and is not endorsed or certified by BigBlueButton Inc. BigBlueButton and the BigBlueButton Logo are trademarks of BigBlueButton Inc.*" : "Esta aplicación permite crear xuntanzas cunha instalación externa de [BigBlueButton] (https://bigbluebutton.org).\n\n* **Configuración de salas** Crear múltiples configuracións de salas con nome, mensaxe de benvida …\n* **Compartir a ligazón de convidados** Compartir a ligazón da sala con todos os seus convidados\n* **Compartir ligazón de moderador** Convida moderadores á sala\n* **Compartir salas** Compartir salas con membros, grupos ou círculos\n* **Presentación personalizada** Inicie unha sala cunha presentación seleccionada dende o seu navegador de ficheiros\n* **Xestionar as gravacións** Ver, compartir e eliminar as gravacións das súas salas\n* **Restricións** Restrinxir a creación de salas a determinados grupos\n* ** Actividades** Obteña unha vista xeral das actividades da súa sala\n\nGuía de inicio rápido e máis información no noso [léame](https://github.com/sualko/cloud_bbb).\nGústalle esta aplicación? Devolva algo á comunidade de código aberto e consulte as nosas\n[formas de colaborar](https://github.com/sualko/cloud_bbb/blob/master/.github/contributing.md).\n\nBúscase programador! Se ten tempo, sería incríbel que puidese axudar a mellorar esta aplicación.\n\n*Esta aplicación integra BigBlueButton e non está aprobada nin certificada por BigBlueButton Inc. BigBlueButton e o logotipo de BigBlueButton son marcas comerciais de BigBlueButton Inc.*",
"Room not found" : "Non se atopou a sala", "Room not found" : "Non se atopou a sala",
"The room could not be found. Maybe it was deleted?" : "Non foi posíbel atopar a sala. Quizais foi eliminada.", "The room could not be found. Maybe it was deleted?" : "Non foi posíbel atopar a sala. Quizais foi eliminada.",
"Back to %s" : "Volver a %s", "Back to %s" : "Volver a %s",

View File

@ -2,6 +2,7 @@ OC.L10N.register(
"bbb", "bbb",
{ {
"Public" : "Offentlig", "Public" : "Offentlig",
"Internal" : "Intern",
"Back to %s" : "Tillbaka till %s", "Back to %s" : "Tillbaka till %s",
"Save" : "Spara", "Save" : "Spara",
"Community" : "Community", "Community" : "Community",
@ -19,6 +20,7 @@ OC.L10N.register(
"Edit" : "Redigera", "Edit" : "Redigera",
"Welcome" : "Välkommen", "Welcome" : "Välkommen",
"Miscellaneous" : "Diverse", "Miscellaneous" : "Diverse",
"Recording" : "Inspelning",
"Room name" : "Rumsnamn", "Room name" : "Rumsnamn",
"Create" : "Skapa", "Create" : "Skapa",
"Copy to clipboard" : "Kopiera till urklipp", "Copy to clipboard" : "Kopiera till urklipp",
@ -30,6 +32,7 @@ OC.L10N.register(
"Share" : "Dela", "Share" : "Dela",
"Loading" : "Läser in", "Loading" : "Läser in",
"Settings saved" : "Inställningar sparade", "Settings saved" : "Inställningar sparade",
"Send to" : "Skicka till",
"No rooms available!" : "Inga rum tillgängliga!" "No rooms available!" : "Inga rum tillgängliga!"
}, },
"nplurals=2; plural=(n != 1);"); "nplurals=2; plural=(n != 1);");

View File

@ -1,5 +1,6 @@
{ "translations": { { "translations": {
"Public" : "Offentlig", "Public" : "Offentlig",
"Internal" : "Intern",
"Back to %s" : "Tillbaka till %s", "Back to %s" : "Tillbaka till %s",
"Save" : "Spara", "Save" : "Spara",
"Community" : "Community", "Community" : "Community",
@ -17,6 +18,7 @@
"Edit" : "Redigera", "Edit" : "Redigera",
"Welcome" : "Välkommen", "Welcome" : "Välkommen",
"Miscellaneous" : "Diverse", "Miscellaneous" : "Diverse",
"Recording" : "Inspelning",
"Room name" : "Rumsnamn", "Room name" : "Rumsnamn",
"Create" : "Skapa", "Create" : "Skapa",
"Copy to clipboard" : "Kopiera till urklipp", "Copy to clipboard" : "Kopiera till urklipp",
@ -28,6 +30,7 @@
"Share" : "Dela", "Share" : "Dela",
"Loading" : "Läser in", "Loading" : "Läser in",
"Settings saved" : "Inställningar sparade", "Settings saved" : "Inställningar sparade",
"Send to" : "Skicka till",
"No rooms available!" : "Inga rum tillgängliga!" "No rooms available!" : "Inga rum tillgängliga!"
},"pluralForm" :"nplurals=2; plural=(n != 1);" },"pluralForm" :"nplurals=2; plural=(n != 1);"
} }

View File

@ -78,7 +78,7 @@ const ShareSelection: React.FC<Props> = (props) => {
className="suggestion" className="suggestion"
onMouseDown={preventOnBlurEvent} onMouseDown={preventOnBlurEvent}
onClick={() => selectShare(option)}> onClick={() => selectShare(option)}>
{option.label}{option.value.shareType === ShareType.Group ? ` (${t('bbb', 'Group')})` : ''} {option.label}{option.value.shareType === ShareType.Group ? ' (' + t('bbb', 'Group') + ')' : ''}
</li>); </li>);
}; };

View File

@ -65,7 +65,7 @@ const EditRoomDialog: React.FC<Props> = ({ room, restriction, updateProperty, op
function inputElement(label: string, field: string, type: 'text' | 'number' = 'text') { function inputElement(label: string, field: string, type: 'text' | 'number' = 'text') {
return ( return (
<div className="bbb-form-element"> <div className="bbb-form-element">
<label htmlFor={`bbb-${field}`}> <label htmlFor={'bbb-' + field}>
<h3>{label}</h3> <h3>{label}</h3>
</label> </label>
@ -78,7 +78,7 @@ const EditRoomDialog: React.FC<Props> = ({ room, restriction, updateProperty, op
function selectElement(label: string, field: string, value: string, options: { [key: string]: string }, onChange: (value: string) => void) { function selectElement(label: string, field: string, value: string, options: { [key: string]: string }, onChange: (value: string) => void) {
return ( return (
<div className="bbb-form-element"> <div className="bbb-form-element">
<label htmlFor={`bbb-${field}`}> <label htmlFor={'bbb-' + field}>
<h3>{label}</h3> <h3>{label}</h3>
</label> </label>
@ -137,22 +137,22 @@ const EditRoomDialog: React.FC<Props> = ({ room, restriction, updateProperty, op
} }
<div className="bbb-mt-1"> <div className="bbb-mt-1">
<input id={`bbb-everyoneIsModerator-${room.id}`} <input id={'bbb-everyoneIsModerator-' + room.id}
type="checkbox" type="checkbox"
className="checkbox" className="checkbox"
checked={room.everyoneIsModerator} checked={room.everyoneIsModerator}
onChange={(event) => updateProperty('everyoneIsModerator', event.target.checked)} /> onChange={(event) => updateProperty('everyoneIsModerator', event.target.checked)} />
<label htmlFor={`bbb-everyoneIsModerator-${room.id}`}>{t('bbb', 'Every participant is moderator')}</label> <label htmlFor={'bbb-everyoneIsModerator-' + room.id}>{t('bbb', 'Every participant is moderator')}</label>
</div> </div>
<em>{descriptions.moderator}</em> <em>{descriptions.moderator}</em>
<div className="bbb-mt-1"> <div className="bbb-mt-1">
<input id={`bbb-moderatorToken-${room.id}`} <input id={'bbb-moderatorToken-' + room.id}
type="checkbox" type="checkbox"
className="checkbox" className="checkbox"
checked={!!room.moderatorToken} checked={!!room.moderatorToken}
onChange={(event) => updateProperty('moderatorToken', event.target.checked ? 'true' : null)} /> onChange={(event) => updateProperty('moderatorToken', event.target.checked ? 'true' : null)} />
<label htmlFor={`bbb-moderatorToken-${room.id}`}>{t('bbb', 'Moderator access via URL')}</label> <label htmlFor={'bbb-moderatorToken-' + room.id}>{t('bbb', 'Moderator access via URL')}</label>
</div> </div>
{!!room.moderatorToken && <CopyToClipboard text={api.getRoomUrl(room, true)}><input type="text" readOnly={true} className="icon-clippy" value={api.getRoomUrl(room, true)} /></CopyToClipboard>} {!!room.moderatorToken && <CopyToClipboard text={api.getRoomUrl(room, true)}><input type="text" readOnly={true} className="icon-clippy" value={api.getRoomUrl(room, true)} /></CopyToClipboard>}
<em>{descriptions.moderatorToken}</em> <em>{descriptions.moderatorToken}</em>
@ -162,68 +162,68 @@ const EditRoomDialog: React.FC<Props> = ({ room, restriction, updateProperty, op
<h3>{t('bbb', 'Miscellaneous')}</h3> <h3>{t('bbb', 'Miscellaneous')}</h3>
<div> <div>
<div> <div>
<input id={`bbb-record-${room.id}`} <input id={'bbb-record-' + room.id}
type="checkbox" type="checkbox"
className="checkbox" className="checkbox"
checked={room.record} checked={room.record}
disabled={!restriction?.allowRecording} disabled={!restriction?.allowRecording}
onChange={(event) => updateProperty('record', event.target.checked)} /> onChange={(event) => updateProperty('record', event.target.checked)} />
<label htmlFor={`bbb-record-${room.id}`}>{t('bbb', 'Recording')}</label> <label htmlFor={'bbb-record-' + room.id}>{t('bbb', 'Recording')}</label>
</div> </div>
<p><em>{descriptions.recording}</em></p> <p><em>{descriptions.recording}</em></p>
</div> </div>
<div> <div>
<div> <div>
<input id={`bbb-requireModerator-${room.id}`} <input id={'bbb-requireModerator-' + room.id}
type="checkbox" type="checkbox"
className="checkbox" className="checkbox"
checked={room.requireModerator} checked={room.requireModerator}
onChange={(event) => updateProperty('requireModerator', event.target.checked)} /> onChange={(event) => updateProperty('requireModerator', event.target.checked)} />
<label htmlFor={`bbb-requireModerator-${room.id}`}>{t('bbb', 'Require moderator to start room')}</label> <label htmlFor={'bbb-requireModerator-' + room.id}>{t('bbb', 'Require moderator to start room')}</label>
</div> </div>
<p><em>{descriptions.requireModerator}</em></p> <p><em>{descriptions.requireModerator}</em></p>
</div> </div>
<div> <div>
<div> <div>
<input id={`bbb-listenOnly-${room.id}`} <input id={'bbb-listenOnly-' + room.id}
type="checkbox" type="checkbox"
className="checkbox" className="checkbox"
checked={room.listenOnly} checked={room.listenOnly}
onChange={(event) => updateProperty('listenOnly', event.target.checked)} /> onChange={(event) => updateProperty('listenOnly', event.target.checked)} />
<label htmlFor={`bbb-listenOnly-${room.id}`}>{t('bbb', 'Listen only option')}</label> <label htmlFor={'bbb-listenOnly-' + room.id}>{t('bbb', 'Listen only option')}</label>
</div> </div>
<p><em>{descriptions.listenOnly}</em></p> <p><em>{descriptions.listenOnly}</em></p>
</div> </div>
<div> <div>
<div> <div>
<input id={`bbb-mediaCheck-${room.id}`} <input id={'bbb-mediaCheck-' + room.id}
type="checkbox" type="checkbox"
className="checkbox" className="checkbox"
checked={!room.mediaCheck} checked={!room.mediaCheck}
onChange={(event) => updateProperty('mediaCheck', !event.target.checked)} /> onChange={(event) => updateProperty('mediaCheck', !event.target.checked)} />
<label htmlFor={`bbb-mediaCheck-${room.id}`}>{t('bbb', 'Skip media check before usage')}</label> <label htmlFor={'bbb-mediaCheck-' + room.id}>{t('bbb', 'Skip media check before usage')}</label>
</div> </div>
<p><em>{descriptions.mediaCheck}</em></p> <p><em>{descriptions.mediaCheck}</em></p>
</div> </div>
<div> <div>
<div> <div>
<input id={`bbb-cleanLayout-${room.id}`} <input id={'bbb-cleanLayout-' + room.id}
type="checkbox" type="checkbox"
className="checkbox" className="checkbox"
checked={room.cleanLayout} checked={room.cleanLayout}
onChange={(event) => updateProperty('cleanLayout', event.target.checked)} /> onChange={(event) => updateProperty('cleanLayout', event.target.checked)} />
<label htmlFor={`bbb-cleanLayout-${room.id}`}>{t('bbb', 'Clean layout')}</label> <label htmlFor={'bbb-cleanLayout-' + room.id}>{t('bbb', 'Clean layout')}</label>
</div> </div>
<p><em>{descriptions.cleanLayout}</em></p> <p><em>{descriptions.cleanLayout}</em></p>
</div> </div>
<div> <div>
<div> <div>
<input id={`bbb-joinMuted-${room.id}`} <input id={'bbb-joinMuted-' + room.id}
type="checkbox" type="checkbox"
className="checkbox" className="checkbox"
checked={room.joinMuted} checked={room.joinMuted}
onChange={(event) => updateProperty('joinMuted', event.target.checked)} /> onChange={(event) => updateProperty('joinMuted', event.target.checked)} />
<label htmlFor={`bbb-joinMuted-${room.id}`}>{t('bbb', 'Join meeting muted')}</label> <label htmlFor={'bbb-joinMuted-' + room.id}>{t('bbb', 'Join meeting muted')}</label>
</div> </div>
<p><em>{descriptions.joinMuted}</em></p> <p><em>{descriptions.joinMuted}</em></p>
</div> </div>

View File

@ -220,7 +220,11 @@ const RoomRow: React.FC<Props> = (props) => {
<> <>
<tr className={showRecordings ? 'selected-row' : ''}> <tr className={showRecordings ? 'selected-row' : ''}>
<td className="start"> <td className="start">
<a href={api.getRoomUrl(room)} className={`button ${room.running ? 'success' : 'primary'}`} target="_blank" rel="noopener noreferrer" title={t('bbb', 'Open room')}> <a href={api.getRoomUrl(room)}
className={'button ' + (room.running ? 'success' : 'primary')}
target="_blank"
rel="noopener noreferrer"
title={t('bbb', 'Open room')}>
{room.running ? t('bbb', 'Join') : t('bbb', 'Start')} {room.running ? t('bbb', 'Join') : t('bbb', 'Start')}
</a> </a>
</td> </td>
@ -251,8 +255,8 @@ const RoomRow: React.FC<Props> = (props) => {
</td> </td>
{adminRoom && {adminRoom &&
<td className="record bbb-shrink"> <td className="record bbb-shrink">
<input id={`bbb-record-${room.id}`} type="checkbox" className="checkbox" disabled={!props.restriction?.allowRecording} checked={room.record} onChange={(event) => updateRoom('record', event.target.checked)} /> <input id={'bbb-record-' + room.id} type="checkbox" className="checkbox" disabled={!props.restriction?.allowRecording} checked={room.record} onChange={(event) => updateRoom('record', event.target.checked)} />
<label htmlFor={`bbb-record-${room.id}`}></label> <label htmlFor={'bbb-record-' + room.id}></label>
</td> </td>
} }
{!adminRoom && {!adminRoom &&
@ -264,7 +268,10 @@ const RoomRow: React.FC<Props> = (props) => {
{<RecordingsNumber recordings={recordings} showRecordings={showRecordings} setShowRecordings={setShowRecordings} />} {<RecordingsNumber recordings={recordings} showRecordings={showRecordings} setShowRecordings={setShowRecordings} />}
</td> </td>
<td className="clone icon-col"> <td className="clone icon-col">
<button className="action-item" onClick={cloneRow} title={t('bbb', 'Clone Room')}> <button
className="action-item"
onClick={cloneRow}
title={t('bbb', 'Clone room')}>
<span className="icon icon-template-add icon-visible"></span> <span className="icon icon-template-add icon-visible"></span>
</button> </button>
</td> </td>

View File

@ -101,7 +101,7 @@ const ShareWith: React.FC<Props> = ({ room, permission, shares: allShares, setSh
return ( return (
<li key={share.id} className="bbb-shareWith__item"> <li key={share.id} className="bbb-shareWith__item">
<div className="avatardiv"> <div className="avatardiv">
{avatarUrl && <img src={avatarUrl} alt={`Avatar from ${displayName}`} />} {avatarUrl && <img src={avatarUrl} alt={'Avatar from ' + displayName} />}
{share.shareType === ShareType.Group && <span className="icon-group-white"></span>} {share.shareType === ShareType.Group && <span className="icon-group-white"></span>}
{share.shareType === ShareType.Circle && <span className="icon-circle-white"></span>} {share.shareType === ShareType.Circle && <span className="icon-circle-white"></span>}
</div> </div>

View File

@ -63,12 +63,12 @@ const RestrictionRoom: React.FC<Props> = (props) => {
<td className="record bbb-shrink"> <td className="record bbb-shrink">
<input <input
id={`bbb-record-${restriction.id}`} id={'bbb-record-' + restriction.id}
type="checkbox" type="checkbox"
className="checkbox" className="checkbox"
checked={restriction.allowRecording} checked={restriction.allowRecording}
onChange={(event) => updateRestriction('allowRecording', event.target.checked)} /> onChange={(event) => updateRestriction('allowRecording', event.target.checked)} />
<label htmlFor={`bbb-record-${restriction.id}`}></label> <label htmlFor={'bbb-record-' + restriction.id}></label>
</td> </td>
<td className="remove icon-col"> <td className="remove icon-col">