- on iOS safari and chrome, in case we show eg a spinner until we get the videoConferenceJoined event, all `clientResize` are done with size 0 for width/height
- on iOS we never get a `clientResize` call with correct values, except if we force a call by eg opening/closing the chat window
getJwtDisabledButtons which is used as a selector will create a new array every time it is called. This will lead to unneccessary rerenders on every action where there is no difference in the result of getJwtDisabledButtons because the reference of the array will be different.
As part of the PR, it also fixes:
- Removes button aliases
- Unifies the keys in the object returned by getAllToolboxButtons and the button keys
- Makes sure that the number of buttons displayed are always the same as the number of buttons specified in the thresholds and removes the exception for not filling up the main toolbar with buttons from overflow menu when reactions button is disabled.
- Introduces a priority for buttons that will be used to fill empty spaces in the main toolbar.
Out build process does not actually require nodejs. We assume node/npm is installed on the machine. Dropping it so we can use just nvm to control the versions via .npmrc.
* feat: move jwt to URL hash from search parameters
* fix lint
* comments for future work
* comment format
* fix to use ts-ignore like previous parseURLParams case
- settings string contained a string saying "show / hide settings", but
we should match the english string saying only "show settings" as the
button is only used to show the settings (its a dialog you can't go out of, so
there is no way to go back to the settings button to close, the "hide" case
doesn't exist)
- use "Activer" instead of "Rétablir" and "Démarrer" for toggle on states,
as this wording is used accross lots of other buttons, it makes more sense
to use the same wording
- change the unmute/mute audio/video strings to tell the user its *their*
device they toggle. There are a few spots in this app where we label stuff
as "mute microphone", sometimes its for you, sometimes its for other people.
The idea here is to say "Mute your microphone" instead of "Mute microphone"
so that screen reader users fully understand what they do.
Before we were using setAudioMuted and setVideoMuted which was effectively using separate GUM calls for audio and video. This was problematic in the case where GUM permissions prompt was displayed because two separate prompts were displayed.
* feat: allow client JWT in Authorization header
* cleaner check for initial header
* better comment for the reason for sub(8
* allow query value to override authorization header
* fix(notifications): Adds a 60 secs timeout for bridge channel message.
Also indicates that audio might get disrupted in addition to video when ssrc-rewriting is enabled.
* squash: decrease the timeout to 15 secs if the data channel doesn't establish at all.
- Update project files
- Make sure CI uses Xcode 15.2
- Fix custom Xcode build scripts to depend on the Info.plist file
generation
- Combine 2 scripts related to Firebase into a single one
Fixes#14672.
When passing url param config.subject="Example%20Title" we will send config.subject%22%3A%22%2522Example%2520Title%2522%22 which is double quotes.
In certain cases (lib-unbound not found message from lua) we can detect that jvb account is not existing, and we will re-create causing jvb to not able to connect, as password is changed only in prosody.
Many of the events are not used at all or used only on one place. For the rest of them the listeners were added 2 times on promoted visitors and not cleaned at all.
We were using prosody,util.json and cjson at the same time, but the latter is more performant.
Adds some error handling which were missing with the prosody util json one.
In the case where we switch from jvb to p2p when we need to switch the p2p and jvb track, they will be with the same source name. In order to add the streaming status listener we need to check if the isP2P flag is different. Without this check we won't have the correct stream status listener for the track. Normally the Thumbnail and ConnectionIndicator components will update the streaming status the same way and this may mask the problem. But if for some reason the update from the Thumbnail and ConnectionIndicator components don't happen this may lead to showing the avatar instead of the video because of the old track inactive streaming status.
When screensharing source is the first source to be added with ssrc-rewriting enabled, constraints for the camera tile don't get updated when its pinned. Fixes https://github.com/jitsi/jitsi-meet/issues/14501
Fixes#14491.
When a screensharing participant leaves and is unmuted or sharing the tab audio, there is a dominant speaker changed event which stores wrong values in filmstrip state. And because we skip reordering when there is no filmstrip scroll and no screensharers to avoid reordering on every dominant speaker event for small meetings, we fail to evaluate that the screensharere is actually gone and we still show it.
This will not happen if the one sharing is not dominant speaker (muted) or if there are more participants in the meeting (there is a scroll).
There are cases when if you are kicked and the participant pane is
open, the getBreakoutRooms() call will return undefined and since
isBreakoutRoomRenameAllowed is used in useSelector and fails, all
execution will stop leaving us in a broken state.
* fix(visitors): Fixes replacing visitor domain.
Constructing the visitor room jid instead of doing a risky replacement.
The problem is having a room like:
[meet-jit-si-shard]someroomname@conference.meet.jit.si and replacing with 'meet.jit.si', the dots match the -.
* feat: Introduces new rate limit setting.
No can have two different values per ip that is used to limit session creation and one that is used when that stanza rate limit is exceeded.
* feat: Introduces unthrottle logic.
* fix: Bumps default iq rate limits.
* feat: Prints how many times a session hits the rates.
* Update resources/prosody-plugins/mod_rate_limit.lua
Co-authored-by: Aaron van Meerten <aaron.van.meerten@8x8.com>
---------
Co-authored-by: Aaron van Meerten <aaron.van.meerten@8x8.com>
Filters the toolbarButtons in redux depending on the visitor state instead of filtering them every time in mapStateToProps. This will prevent unnecessary rerenders of the toolbar.
Additionally:
- Moves visitor buttons const from features/config in features/toolbox.
- Removes dublicate functions isButtonEnabled and isToolbarButtonEnabled.
- Adds more buttons to the visitor allowed buttons which functionality has been any way accessible trough shortcuts or somewhere else.
- Enables customButtons to be visible for visitors.
The previous version of getToolbarButtons function was actually adding the custom buttons on every call to the config toolbarButtons array, effectively creating dublicates of every custom button. The PR fixes this issue.
Also now we will be running the getToolbarButtons calculation only when needed.
Until this commit we didn't make difference between transcriptions from the recording dialog and subtitles. Now subtitles are not considered recording anymore and only the transcriptions started from recording dialog are considered recording.
Deprecates current component for conference duration. Will wait a bit for mobile to catch up and then we can delete the code.
chore(deps) lib-jitsi-meet@latest
jitsi/lib-jitsi-meet@v1767.0.0+178f9bbf...v1769.0.0+ff9f57c5
It wasn't related to transcriptions but to subtitles, really.
Since we are not going to show subtitles just because transcriptions are
enabled, this setting no longer makes sense.
As we have the jitsi-meet-electron app, lets allow deployments to use it.
Allow deployments to enable desktop deeplinking without the need to re-implement _openDesktopApp()
Disable it by default to keep the current behaviour (deeplinking on mobile on, on desktop off)
This feature is meant as purely opt-in.
Signed-off-by: Christoph Settgast <csett86_git@quicksands.de>
* fix: Fixes leaving the visitor's meeting on promotion.
This was resulting some colibri websockets reconnects as the state of the previous JitsiConference was not cleaned up.
* squash: Update jsdocs, lint error.
Updates the remoteVideoSources set only when neccessary when participant is leaving . This fixes an endless recursion when visitor is promoted or left and there is a screen sharing.
* fix: Fixes wrong warning message.
* fix: Detect enables/disables visitors for a room.
* fix: We need customusername in all cases of auto-allow setting.
* feat: Sends promotion-request to all moderators.
* feat(visitors): Implements request promotion.
* feat(visitors): Implements single moderator and vpass cases for moderators.
* fix: Fixes clearing request instances from UI.
* feat: Implements visitors approval for mobile.
* squash: Drops unused and wrong report for auto allow promotion.
* squash: Returns early based on count.
* squash: Moves translation to common key.
* squash: Adds dependencies for useCallback.
* squash: comments.
* squash: Refactor 1 to unify with native.
* squash: Rename some styles.
* squash: Fixes error dew to fewer hooks error.
* squash: Renames VISITOR_PROMOTION_REQUEST_DENIED.
* squash: Fix renaming component.
* squash: Suggestions.
Events such as "mouse-move", "mouse-leave" and "face-landmark-detected"
reach this code and pollute the logs. It's probably worth investigating
why this is the case and fixing it if necessary, but for now just remove
the log message.
* feat: Adds detection of occupants with no connection.
We saw recently two occasions with rooms with participants but no prosody.full_sessions for those participants and when everyone leaves the meeting it never ends.
* squash: Updates counting.
* ref(transcriptions): refactor transcriptions api
* ref(transcriptions): refactor usage of translation label
Extend IFrame API to allow adding a transcriber in the room without the subtitles needing to be visible.
Allow transcription chunk messages to be passed through the IFrame API if a transcriber is present.
Clean-up transcription messages sent through the IFrame API to not include timeout field and possible conflicting states (stable / unstable /final)
* fix linting
* code review: extend api message to match webhook format
- on 3rd party prejoin, we did not setup the initial devices, resulting in always creating tracks for default device for camera and mic regardless of settings, and for both meeting and 3rd party prejoin to not set the audio output device at all
In the jitsi web app, the poll creator is displayed
for all published votes whereas in the native app
the current username of the participant has been
displayed for all polls regardless of the creator
Currently we are waiting for the user to submit feedback dialog in
order to leave the room. Now the leave and showing the dialog are
executed in parallel.
* fix: Adds check for jitsi_meet_room not being string.
Oct 20 12:22:50 mod_bosh error Traceback[bosh]: /usr/share/jitsi-meet/prosody-plugins/token/util.lib.lua:336: bad argument #1 to 'lower' (string expected, got userdata)
stack traceback:
[C]: in function 'lower'
/usr/share/jitsi-meet/prosody-plugins/token/util.lib.lua:336: in function 'verify_room'
...re/jitsi-meet/prosody-plugins/mod_token_verification.lua:78: in function 'verify_user'
* fix: Adds check for missing speaker stats for occupant.
error Traceback[c2s]: ...itsi-meet/prosody-plugins/mod_speakerstats_component.lua:124: attempt to index field '?' (a nil value)
stack traceback:
...itsi-meet/prosody-plugins/mod_speakerstats_component.lua:124: in function '?'
* fix: Nil check for breakout_rooms.
c2saaaad95a16c0 error Traceback[c2s]: ...re/jitsi-meet/prosody-plugins/mod_muc_breakout_rooms.lua:345: attempt to index local 'main_room' (a nil value)
stack traceback:
...re/jitsi-meet/prosody-plugins/mod_muc_breakout_rooms.lua:345: in function '?'
/usr/share/lua/5.2/prosody/util/events.lua:81: in function </usr/share/lua/5.2/prosody/util/events.lua:77>
(...tail calls...)
/usr/lib/prosody/modules/muc/muc.lib.lua:496: in function </usr/lib/prosody/modules/muc/muc.lib.lua:492>
* fix: Adds nil check in allowners.
c2saaaae3024810 error Traceback[c2s]: /usr/share/jitsi-meet/prosody-plugins/mod_muc_allowners.lua:171: attempt to index local 'room' (a nil value)
stack traceback:
/usr/share/jitsi-meet/prosody-plugins/mod_muc_allowners.lua:171: in function '?'
/usr/share/lua/5.2/prosody/util/events.lua:81: in function </usr/share/lua/5.2/prosody/util/events.lua:77>
* fix: Adds nil check in lobby.
mod_bosh error Traceback[bosh]: ...share/jitsi-meet/prosody-plugins/mod_muc_lobby_rooms.lua:168: attempt to index local 'lobby_room' (a nil value)
stack traceback:
...share/jitsi-meet/prosody-plugins/mod_muc_lobby_rooms.lua:168: in function '?'
/usr/share/lua/5.2/prosody/util/filters.lua:25: in function 'filter'
/usr/lib/prosody/modules/mod_bosh.lua:361: in function 'send'
/usr/lib/prosody/modules/muc/mod_muc.lua:495: in function '?'
* fix: Fixes nil error in fmuc.
s2sinaaaaf2817260 error Traceback[s2s]: /usr/share/jitsi-meet/prosody-plugins/mod_fmuc.lua:295: attempt to index local 'occupant' (a nil value)
stack traceback:
/usr/share/jitsi-meet/prosody-plugins/mod_fmuc.lua:295: in function '?'
/usr/share/lua/5.2/prosody/util/events.lua:81: in function </usr/share/lua/5.2/prosody/util/events.lua:77>
(...tail calls...)
/usr/lib/prosody/modules/muc/muc.lib.lua:1201: in function </usr/lib/prosody/modules/muc/muc.lib.lua:1194>
* fix: Fixes nil occupant.
c2s55f4d5411dd0 error Traceback[c2s]: /usr/share/jitsi-meet/prosody-plugins/mod_muc_flip.lua:120: attempt to index local 'kicked_occupant' (a nil value)
stack traceback:
/usr/share/jitsi-meet/prosody-plugins/mod_muc_flip.lua:120: in function '?'
/usr/share/lua/5.2/prosody/util/events.lua:81: in function </usr/share/lua/5.2/prosody/util/events.lua:77>
(...tail calls...)
/usr/lib/prosody/modules/muc/muc.lib.lua:791: in function </usr/lib/prosody/modules/muc/muc.lib.lua:616>
* fix: Fixes caching main room.
Objects should not be set in room._data as this field is being serialized and we see errors like.
error Traceback[c2s]: /usr/share/lua/5.2/prosody/util/serialization.lua:34: Can't serialize userdata
stack traceback:
[C]: in function 'error'
/usr/share/lua/5.2/prosody/util/serialization.lua:34: in function </usr/share/lua/5.2/prosody/util/serialization.lua:33>
(...tail calls...)
/usr/share/lua/5.2/prosody/util/serialization.lua:199: in function 'serialize_table'
/usr/share/lua/5.2/prosody/util/serialization.lua:197: in function 'serialize_table'
/usr/share/lua/5.2/prosody/util/serialization.lua:197: in function 'serialize_table'
/usr/share/lua/5.2/prosody/util/serialization.lua:219: in function </usr/share/lua/5.2/prosody/util/serialization.lua:217>
(...tail calls...)
/usr/lib/prosody/modules/mod_storage_memory.lua:42: in function </usr/lib/prosody/modules/mod_storage_memory.lua:40>
(...tail calls...)
...re/jitsi-meet/prosody-plugins/mod_muc_breakout_rooms.lua:207: in function 'create_breakout_room'
* fix: Fixes calling save_occupant after changing its role.
* squash: Fixed passed value to type.
It's fired when the API is ready, and it signals the embedder that they
can reveal the meeting from behind an overlay, for example.
The astute reader might notice we are currently sending a
'browser-support' event roughly at the same time. The reason for this
new event is plain simply semantics.
In addition the 'onload' handler is faked by calling it when the new
ready event fires. The original onload event is unreliable. It will be
called even when nothing was ever loaded (try loading a page without
internet and be amused).
On Android we support RestrictionManager, but that already sets it, so
make sure we always save it on the settings.
Editing will be restricted in the Settings dialog if changing it is
restricted anyway.
Fixes: https://github.com/jitsi/jitsi-meet/issues/13994
Sep 22 22:06:01 mod_bosh error Traceback[bosh]: /usr/share/jitsi-meet/prosody-plugins/mod_visitors.lua:305: attempt to index field '?' (a nil value)
stack traceback:
/usr/share/jitsi-meet/prosody-plugins/mod_visitors.lua:305: in function '?'
/usr/share/lua/5.2/prosody/util/events.lua:81: in function </usr/share/lua/5.2/prosody/util/events.lua:77>
* fix(visitors): informs visitor nodes when a participant is kicked.
* remove hooking muc-broadcast-presence event and create a stanza in muc-occupant-left event.
* feat: Check jwt expiration and redirects to auth url if any.
It may happen that the jwt had expired while being in the meeting and there is a network issue requiring to reload.
* squash: Fixes lint error.
* squash: Fixes comments.
Should fix this error:
~~~
Fatal Exception: java.lang.IllegalArgumentException: org.jitsi.meet: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
at android.app.PendingIntent.checkFlags(PendingIntent.java:402)
at android.app.PendingIntent.getActivityAsUser(PendingIntent.java:485)
at android.app.PendingIntent.getActivity(PendingIntent.java:471)
at android.app.PendingIntent.getActivity(PendingIntent.java:435)
at com.google.android.gms.common.GoogleApiAvailabilityLight.getErrorResolutionPendingIntent(com.google.android.gms:play-services-basement@@17.5.0:25)
at com.google.android.gms.common.GoogleApiAvailabilityLight.getErrorResolutionPendingIntent(com.google.android.gms:play-services-basement@@17.5.0:21)
at com.google.android.gms.common.GoogleApiAvailability.getErrorResolutionPendingIntent(com.google.android.gms:play-services-base@@17.5.0:170)
at com.google.android.gms.common.GoogleApiAvailability.getErrorResolutionPendingIntent(com.google.android.gms:play-services-base@@17.5.0:173)
at com.google.android.gms.common.GoogleApiAvailability.zaa(com.google.android.gms:play-services-base@@17.5.0:112)
at com.google.android.gms.common.api.internal.GoogleApiManager.zaa(com.google.android.gms:play-services-base@@17.5.0:252)
at com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zaa(com.google.android.gms:play-services-base@@17.5.0:109)
at com.google.android.gms.common.api.internal.GoogleApiManager$zaa.onConnectionFailed(com.google.android.gms:play-services-base@@17.5.0:75)
at com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zai(com.google.android.gms:play-services-base@@17.5.0:263)
at com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zaa(com.google.android.gms:play-services-base@@17.5.0:133)
at com.google.android.gms.common.api.internal.GoogleApiManager.handleMessage(com.google.android.gms:play-services-base@@17.5.0:164)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:240)
at android.os.Looper.loop(Looper.java:351)
at android.os.HandlerThread.run(HandlerThread.java:67)
~~~
If the conference mapper return an error we show it on deeplinking page. In case the conf mapper receives non authenticated request it may return an error and this is normal so hide it from that page.
* added option to use rtctstats from lib-jitsi-meet
* Addressed review feedback:
- moved rtcstats function into JitsiMeetJS.rtcstats
- changed from callbacks to events
* moved rtcstatsUseLibJitsi from analytics to testing
* fixed linting errors
* use ljm rtcstats
* remove debug logs, additional dependencies
* fix ts and dependency
* address code review
---------
Co-authored-by: Nils Ohlmeier <github@ohlmeier.org>
* fix(video-select): remove video preview from device selection and fix video switch on android browsers
* simplify if statement
* add for all mobile devices the stop stream
* move mobile check to middleware
* code review
* feat: Moves redirected event to connection events.
* feat: Pass room name when connecting.
We need the room name we will join to be able to send the http conference request from ljm.
* squash: Drops dispatching redirected action.
* squash: Updates ljm.
- fixed case when localFlipX was taken from store on it`s value update, before the new value was set into store - so always taking the previous value instead of updated one
- added command for setting the camera facing mode remotely
- enhanced toggleVideo command to optionally accept the facing mode
- fix(startSilent) do not create audio track when start silent
When using useHostPageLocalStorage on the iframe api and local storage
is not throwing error we were writting the passed data to the original
local storage and then switching to the dummy local storage from
jitsiLocalStorage.
It's really the same as the default language at this point with the
caveat that we need to remember to update it in unison with main.json,
so it adds no value.
- Create the tracks early, or there will be on audio on iOS on the first
unmute this includes the unsafe room name screen
- Skip the unsafe room screen if prejoin is disabled, like web
While the host arrives all other participants are waiting in lobby and once the host arrives lobby is destroyed and the participants join the call.
Adds reading some other fields in jwt to extract email.
Introduces tokenLogoutUrl to be used for logout.
The URL is a link to a json file having a mapping kid -> public key.
The mapping can contain also certificates, which will be used to get the public key.
The list is being updated before the cache-control max-age header value is reached, if such a header is returned from the server.
Skip any lobby check when the occupant is jicofo.
In case of serverside turn on lobby on room creation we do not check and allow jicofo to join.
We check for resource and no is_admin as in default configuration admins is set only for the main muc component.
Parsing the API ID happens at import time, which is not great because it
also runs when loading the external API file.
In sites with weird URL patterns, such as Angular this will throw an
exception.
Ignore parsing errors so it's left undefined. When modules/ is
refactored we should look into making this a getter of some sort.
Fixes: https://github.com/jitsi/jitsi-meet/issues/11565
* feat: Returns an error on join request with no display name.
When someone tries to join a room with lobby enabled and display name is not set returns an error.
* squash: Fixes handling DISPLAY_NAME_REQUIRED with preJoin disabled.
* squash: Fixes mobile build.
* squash: Move isDisplayNameRequired redux state in lobby and introduces isDisplayNameRequiredError.
* squash: Drops unused isDisplayNameRequired.
This was used on showing prejoin when connection was established on showing prejoin. We no longer establish it at that time, so it is not possible to hit it and act on it.
- Now when integrated with a host app, sound files will be copied as a part of gradle (build)process. Just a copy from `android/sdk/build.gradle` `mergeAssetsTask` subtask
This issue tracker is only for reporting bugs and tracking issues related to the source code.
**Before posting, please make sure to check if the same or similar bugs have already been reported.**
⚠️ General questions regarding usage, installation, etc. should be posted in our [community forum](https://community.jitsi.org).
- type:textarea
attributes:
label:What happened?
description:Please describe the problem. Be as detailed as possible.
validations:
required:true
- type:checkboxes
attributes:
label:Platform
description:Onwhat platforms can you reproduce the problem?
options:
- label:Chrome (or Chromium based)
- label:Firefox
- label:Safari
- label:Other desktop browser
- label:Android browser
- label:iOS browser
- label:Electron app
- label:Android mobile app
- label:iOS mobile app
- label:Custom app using a mobile SDK
validations:
required:true
- type:input
attributes:
label:Browser / app / sdk version
description:Please provice the version of the browser / app / sdk where the problem manifests.
validations:
required:true
- type:textarea
attributes:
label:Relevant log output
description:Please copy and paste any relevant log output. The browser console JS logs (if applicable) is a good start. This will be automatically formatted into code, so no need for backticks.
render:shell
- type:checkboxes
attributes:
label:Reproducibility
description:Does the problem reproduce on meet.jit.si using Chrome, Firefox or the official mobile apps?
options:
- label:The problem is reproducible on meet.jit.si
- type:textarea
attributes:
label:More details?
description:Please provide more details in case they apply (such as the Jitsi Meet version you are running, if you are hosting your own server).
Using Jitsi Meet is straightforward, as it's browser based. Head over to [meet.jit.si](https://meet.jit.si) and give it a try. It's anonymous, scalable and free to use. All browsers are supported!
Using Jitsi Meet is straightforward, as it's browser based. Head over to [meet.jit.si](https://meet.jit.si) and give it a try. It's scalable and free to use. All you need is a Google, Facebook or GitHub account in order to start a meeting. All browsers are supported!
Using mobile? No problem, you can either use your mobile web browser or our fully-featured
"privateNotice":"Private Nachricht an {{recipient}}",
"sendButton":"Senden",
"smileysPanel":"Emoji-Auswahl",
"systemDisplayName":"System",
"tabs":{
"chat":"Chatten",
"polls":"Umfragen"
@@ -202,7 +210,7 @@
"appNotInstalled":"Sie benötigen die „{{app}}“-App, um der Konferenz auf dem Smartphone beizutreten.",
"description":"Nichts passiert? Wir haben versucht, die Konferenz in {{app}} zu öffnen. Versuchen Sie es erneut oder treten Sie der Konferenz in {{app}} im Web bei.",
"descriptionNew":"Nichts passiert? Wir haben versucht, die Konferenz in {{app}} zu öffnen. <br /><br /> Versuchen Sie es erneut oder treten Sie der Konferenz im Web bei.",
"descriptionWithoutWeb":"Ist nichts passiert? Wir haben versucht, Ihre Besprechung in der „{{app}}“-Desktop-App zu starten.",
"descriptionWithoutWeb":"Ist nichts passiert? Wir haben versucht, Ihre Konferenz in der „{{app}}“-Desktop-App zu starten.",
"downloadApp":"App herunterladen",
"downloadMobileApp":"Aus dem App Store herunterladen",
"ifDoNotHaveApp":"Wenn Sie die App noch nicht haben:",
@@ -212,11 +220,13 @@
"joinInBrowser":"Im Browser",
"launchMeetingLabel":"Wie möchten Sie an der Konferenz teilnehmen?",
"launchWebButton":"Im Web öffnen",
"noDesktopApp":"Sie haben die App noch nicht installiert?",
"noMobileApp":"Sie haben die App noch nicht installiert?",
"termsAndConditions":"Indem Sie fortfahren, stimmen Sie underen<a href='{{termsAndConditionsLink}}' rel='noopener noreferrer' target='_blank'>Nutzungsbedingungen</a> zu.",
"or":"oder",
"termsAndConditions":"Indem Sie fortfahren, stimmen Sie unseren <a href='{{termsAndConditionsLink}}' rel='noopener noreferrer' target='_blank'>Nutzungsbedingungen</a> zu.",
"title":"Die Konferenz wird in {{app}} geöffnet…",
"titleNew":"Konferenz starten ...",
"tryAgainButton":"Erneut mit der nativen Applikation versuchen",
"tryAgainButton":"Erneut versuchen",
"unsupportedBrowser":"Sie verwenden einen Browser, der noch nicht unterstützt wird."
},
"defaultLink":"Bsp.: {{url}}",
@@ -254,6 +264,8 @@
"Share":"Teilen",
"Submit":"OK",
"WaitForHostMsg":"Die Konferenz wurde noch nicht gestartet. Falls Sie die Konferenz leiten, authentifizieren Sie sich bitte. Warten Sie andernfalls, bis die Konferenz gestartet wird.",
"WaitForHostNoAuthMsg":"Die Konferenz wurde noch nicht gestartet. Bitte warten Sie, bis die Konferenz gestartet wird.",
"WaitingForHostButton":"Auf Moderation warten",
"WaitingForHostTitle":"Warten auf den Beginn der Konferenz…",
"Yes":"Ja",
"accessibilityLabel":{
@@ -267,6 +279,8 @@
"addMeetingNote":"Notiz zu dieser Konferenz hinzufügen",
"addOptionalNote":"Notiz hinzufügen (optional):",
"allow":"Erlauben",
"allowToggleCameraDialog":"Wollen Sie {{initiatorName}} erlauben, Ihre Kameraauswahl zu ändern?",
"allowToggleCameraTitle":"Änderung der Kamera zulassen?",
"alreadySharedVideoMsg":"Eine andere Person gibt bereits ein Video weiter. Bei dieser Konferenz ist jeweils nur ein geteiltes Video möglich.",
"alreadySharedVideoTitle":"Nur ein geteiltes Video gleichzeitig",
"applicationWindow":"Anwendungsfenster",
@@ -293,6 +307,8 @@
"contactSupport":"Support kontaktieren",
"copied":"Kopiert",
"copy":"Kopieren",
"demoteParticipantDialog":"Sind Sie sicher, dass Sie diese Person zu den Gästen verschieben möchten?",
"demoteParticipantTitle":"Zu Gästen verschieben",
"dismiss":"OK",
"displayNameRequired":"Hallo! Wie ist Ihr Name?",
"done":"Fertig",
@@ -304,6 +320,7 @@
"embedMeeting":"Besprechung einbetten",
"enterDisplayName":"Bitte geben Sie hier Ihren Namen ein",
"error":"Fehler",
"errorRoomCreationRestriction":"Sie haben versucht, zu schnell beizutreten, bitte versuchen Sie es gleich noch einmal.",
"gracefulShutdown":"Der Dienst steht momentan wegen Wartungsarbeiten nicht zur Verfügung. Bitte versuchen Sie es später noch einmal.",
"grantModeratorDialog":"Möchten Sie wirklich Moderationsrechte an diese Person vergeben?",
"loginQuestion":"Sind Sie sicher, dass sie sich anmelden und die Konferenz verlassen möchten?",
"logoutQuestion":"Sind Sie sicher, dass Sie sich abmelden und die Konferenz verlassen möchten?",
"logoutTitle":"Abmelden",
"maxUsersLimitReached":"Das Limit für die maximale Personenzahl ist erreicht. Die Konferenz ist voll. Bitte wenden Sie sich an die Konferenzleitung oder versuchen Sie es später noch einmal!",
@@ -370,8 +388,6 @@
"permissionCameraRequiredError":"Der Zugriff auf die Kamera wird benötigt, um in Videokonferenzen teilzunehmen. Bitte in den Einstellungen zulassen",
"permissionErrorTitle":"Berechtigung benötigt",
"permissionMicRequiredError":"Der Zugriff auf das Mikrofon wird benötigt, um an Konferenzen mit Ton teilzunehmen. Bitte in den Einstellungen zulassen",
"popupError":"Ihr Browser blockiert Pop-ups von dieser Website. Bitte aktivieren Sie Pop-ups in den Sicherheitseinstellungen des Browsers und versuchen Sie es erneut.",
"sessTerminatedReason":"Die Konferenz wurde beendet",
"sessionRestarted":"Konferenz neugestartet",
"shareAudio":"Fortfahren",
"shareAudioAltText":"Um den gewünschten Inhalt zu teilen: Navigiere zu \"Browser tab\", wähle den Inhalt, aktiviere \"Audio teilen\" Kästchen Und klicke den “Teilen” schaltfläche",
"shareAudioTitle":"Wie kann Audio geteilt werden",
"shareAudioWarningD1":"müssen Sie Ihre Bildschirmfreigabe stoppen, bevor Sie Audio teilen können.",
"shareAudioWarningD2":"müssen Sie Ihre Bildschirmfreigabe neustarten und die Option \"Audio freigeben\" auswählen.",
@@ -438,7 +458,25 @@
"thankYou":"Danke für die Verwendung von {{appName}}!",
"token":"Token",
"tokenAuthFailed":"Sie sind nicht berechtigt, dieser Konferenz beizutreten.",
"tokenAuthFailedReason":{
"audInvalid":"Ungültiger `aud`-Wert. Erwartet wird `jitsi`.",
"contextNotFound":"Das `context`-Objekt fehlt.",
"expInvalid":"Ungültiger `exp`-Wert.",
"featureInvalid":"Ungültiges Feature: {{feature}}, noch nicht implementiert.",
"featureValueInvalid":"Ungültiger Wert für Feature: {{feature}}.",
"lobbyChatStartedNotification":"{{moderator}} hat einen Lobby-Chat mit {{attendee}} gestartet",
"lobbyChatStartedTitle":"{{moderator}} hat einen Lobby-Chat mit Ihnen gestartet.",
"lobbyClosed":"Die Lobby wurde geschlossen.",
"nameField":"Geben Sie Ihren Namen ein",
"notificationLobbyAccessDenied":"{{targetParticipantName}} wurde von {{originParticipantName}} der Zutritt verwehrt",
"notificationLobbyAccessGranted":"{{targetParticipantName}} wurde von {{originParticipantName}} der Zutritt gestattet",
"notificationLobbyDisabled":"{{originParticipantName}} hat die Lobby deaktiviert",
"notificationLobbyEnabled":"{{originParticipantName}} hat die Lobby aktiviert",
"notificationTitle":"Lobby",
"passwordField":"Konferenzpasswort eingeben",
"passwordJoinButton":"Beitreten",
"reject":"Ablehnen",
"rejectAll":"Alle ablehnen",
"title":"Lobby",
"toggleLabel":"Lobby aktivieren"
},
@@ -674,6 +715,8 @@
"sessionToken":"Sitzungs-Token",
"start":"Aufnahme starten",
"stop":"Aufnahme stoppen",
"stopping":"Aufnahme wird gestoppt",
"wait":"Bitte warten Sie während wir Ihre Aufnahme speichern",
"yes":"Ja"
},
"lockRoomPassword":"Passwort",
@@ -695,7 +738,10 @@
"connectedTwoMembers":"{{first}} und {{second}} nehmen am Meeting teil",
"dataChannelClosed":"Schlechte Videoqualität",
"dataChannelClosedDescription":"Die Steuerungsverbindung (Bridge Channel) wurde unterbrochen, daher ist die Videoqulität auf die schlechteste Stufe limitiert.",
"dataChannelClosedDescriptionWithAudio":"Die Steuerungsverbindung (Bridge Channel) wurde unterbrochen, daher können Video- und Tonprobleme auftreten.",
"dataChannelClosedWithAudio":"Ton- und Videoqualität können beeinträchtigt sein",
"disabledIframe":"Die Einbettung ist nur für Demo-Zwecke vorgesehen. Diese Konferenz wird in {{timeout}} Minuten beendet.",
"disabledIframeSecondary":"Die Einbettung von {{domain}} ist nur für Demo-Zwecke vorgesehen. Diese Konferenz wird in {{timeout}} Minuten beendet. Bitte nutzen Sie <a href='{{jaasDomain}}' rel='noopener noreferrer' target='_blank'>Jitsi as a Service</a> für produktive Zwecke!",
"noiseSuppressionDesktopAudioDescription":"Die Rauschunterdrückung kann nicht genutzt werden, wenn der Computersound geteilt wird, bitte zuerst deaktivieren und dann nochmals versuchen.",
"noiseSuppressionFailedTitle":"Rauschunterdrückung konnte nicht gestartet werden",
"oldElectronClientDescription1":"Sie scheinen eine alte Version des Jitsi-Meet-Clients zu nutzen. Diese hat bekannte Schwachstellen. Bitte aktualisieren Sie auf unsere ",
"startSilentTitle":"Sie sind ohne Audioausgabe beigetreten!",
"suboptimalBrowserWarning":"Tut uns leid, aber die Konferenz wird mit {{appName}} kein großartiges Erlebnis. Wir versuchen immer die Situation zu verbessern, bis dahin empfehlen wir aber die Verwendung einer der <a href=\"{{recommendedBrowserPageLink}}\" target=\"_blank\">vollständig unterstützen Browser</a>.",
"suboptimalExperienceTitle":"Browserwarnung",
"suggestRecordingAction":"Starten",
"suggestRecordingDescription":"Möchten Sie eine Aufzeichnung starten?",
"suggestRecordingTitle":"Konferenz aufzeichnen",
"unmute":"Stummschaltung aufheben",
"videoMutedRemotelyDescription":"Sie können sie jederzeit wieder einschalten.",
"videoMutedRemotelyTitle":"Ihre Kamera wurde von {{participantDisplayName}} ausgeschaltet!",
"videoUnmuteBlockedDescription":"Die Kamera und Bildschirmfreigabe kann aus Überlastungsschutzgründen temporär nicht eingeschaltet werden.",
"videoUnmuteBlockedTitle":"Kamera und Bildschirmfreigabe kann nicht aktiviert werden!",
"linkCopied":"Link in die Zwischenablage kopiert",
"lookGood":"Ihr Mikrofon scheint zu funktionieren.",
"lookGood":"Alles scheint zu funktionieren.",
"or":"oder",
"premeeting":"Vorschau",
"proceedAnyway":"Trotzdem fortsetzen",
"recordingWarning":"Diese Konferenz wird möglicherweise von anderen Personen aufgezeichnet",
"screenSharingError":"Fehler bei Bildschirmfreigabe:",
"showScreen":"Konferenzvorschau aktivieren",
"startWithPhone":"Mit Telefonaudio starten",
@@ -957,7 +1017,6 @@
"limitNotificationDescriptionNative":"Wegen hoher Nachfrage ist Ihre Aufnahme auf {{limit}} Min. begrenzt. Für unlimitierte Aufnahmen nutzen Sie bitte <3>{{app}}</3>.",
"limitNotificationDescriptionWeb":"Wegen hoher Nachfrage ist Ihre Aufnahme auf {{limit}} Min. begrenzt. Für unlimitierte Aufnahmen nutzen Sie bitte <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
"linkGenerated":"Link zur Aufzeichnung wurde generiert.",
"live":"LIVE",
"localRecordingNoNotificationWarning":"Die Aufzeichnung wird anderen Anwesenden nicht mitgeteilt. Sie müssen diese selbst darauf hinweisen, dass die Konferenz aufgezeichnet wird.",
"localRecordingNoVideo":"Videos werden nicht aufgenommen",
"localRecordingStartWarning":"Bitte beenden Sie die Aufzeichnung vor dem Verlassen der Konferenz, um die Aufzeichnung zu speichern.",
@@ -974,13 +1033,15 @@
"onBy":"{{name}} startete die Aufnahme",
"onlyRecordSelf":"Nur eigenes Kamerabild und Ton aufzeichnen",
"pending":"Aufzeichnung des Meetings wird vorbereitet…",
"rec":"AUFZ",
"recordAudioAndVideo":"Kamera und Ton aufzeichnen",
"error":"Die Aufzeichnung ist fehlgeschlagen. Bitte versuchen Sie es erneut.",
"expandedLabel":"Transkribieren ist derzeit eingeschaltet",
"failedToStart":"Transkribieren konnte nicht gestartet werden",
"labelToolTip":"Das Meeting wird transkribiert",
"off":"Transkribieren gestoppt",
"pending":"Transkribieren des Meetings wird vorbereitet…",
"sourceLanguageDesc":"Aktuell ist die Sprache der Konferenz auf <b>{{sourceLanguage}}</b> eingestellt. <br/> Sie könne dies hier ",
"sourceLanguageHere":"ändern",
"start":"Anzeige der Untertitel starten",
@@ -1369,6 +1430,7 @@
},
"videothumbnail":{
"connectionInfo":"Verbindungsinformationen",
"demote":"Zu Gästen verschieben",
"domute":"Stummschalten",
"domuteOthers":"Alle anderen stummschalten",
"domuteVideo":"Kamera ausschalten",
@@ -1423,7 +1485,12 @@
"chatIndicator":"(Gast)",
"labelTooltip":"Anzahl Gäste: {{count}}",
"notification":{
"demoteDescription":"Hierhin verschoben von {{actor}}, bitte melden Sie sich um teilzunehmen",
"description":"Bitte melden Sie sich um teilzunehmen",
"noMainParticipantsDescription":"Eine Person muss die Konferenz starten. Bitte versuchen Sie es gleich noch einmal.",
"noMainParticipantsTitle":"Diese Konferenz wurde noch nicht gestartet.",
"noVisitorLobby":"Sie können nicht teilnehmen, solange die Lobby für diese Konferenz aktiviert ist.",
"notAllowedPromotion":"Eine Person muss Ihre Anfrage erst erlauben.",
"title":"Sie sind Gast in der Konferenz"
}
},
@@ -1483,6 +1550,7 @@
"whiteboard":{
"accessibilityLabel":{
"heading":"Whiteboard"
}
},
"screenTitle":"Whiteboard"
}
}
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.