Compare commits

...

55 Commits

Author SHA1 Message Date
Hristo Terezov
bcdccc1dc6 feat(tile-view): Optimize grid dimnsions. 2022-03-10 18:27:37 -06:00
Calinteodor
f282dbb5dc feat(dialog) updated LoginDialog 2022-02-04 16:58:33 +02:00
Mihaela Dumitru
2e8a635373 feat(external-api) add commands to open/close the participants pane 2022-02-04 16:11:08 +02:00
Mihaela Dumitru
01ab415941 feat(external-api) expose breakout rooms actions 2022-02-04 12:51:33 +02:00
Calinteodor
66b4c0cab0 feat(dialog) new native InputDialog 2022-02-04 12:20:47 +02:00
Saúl Ibarra Corretgé
78b117cec6 fix(app) fix member count to filter out hidden participants
When Jibri counts the participants in the meeting other Jibris should
not be accounted for.
2022-02-04 11:18:20 +01:00
Calin Chitu
b5c68c2b6a feat(dialog) removed native CustomDialog 2022-02-04 10:48:39 +02:00
Gabriel Borlea
fa9f4588c2 fix(facial-expressions): set screen size in worker and add constants for worker message types (#10678)
* fix(facial-expressions): set window screen size from worker with the value from main thread

* fix(facial-expressions): refactor worker and add constants for message types
2022-02-04 09:14:52 +02:00
Besnik Bleta
df6eff8804 fix(lang) update sq translation 2022-02-03 20:14:18 +01:00
Mihaela Dumitru
63a4b106ac feat(external-api) notify conference joined with room type flag 2022-02-03 18:12:03 +02:00
Calinteodor
debb63d3d6 feat(dialog) added react-native-dialog dep and updated ConfirmDialog 2022-02-03 17:45:02 +02:00
Tudor D. Pop
b9f3448379 feat(notifications) reset same type notification timeout 2022-02-03 14:17:34 +01:00
Hristo Terezov
2a8d0b6e33 fix(thumbnail): mouse enter is not triggered
Workaround for the issue when the mouse enter event is not triggered in
the use case where the layout changes and the mouse appears onn top of the
thumbnail. Example: Closing the participant pane.
2022-02-02 17:37:08 -06:00
Hristo Terezov
8cb1e1e233 feat(tileView): Display 3 participants in 1 row 2022-02-02 17:37:08 -06:00
Gabriel Borlea
eb70c611c2 feat(speaker-stats) new design for web and mobile 2022-02-01 15:57:30 +01:00
Calin Chitu
40f5f4cd0d feat(welcome) blur room name input onListContainerPress 2022-02-01 16:12:55 +02:00
Calin Chitu
96c977a8ed feat(app) fix navigation from external link 2022-02-01 13:12:09 +01:00
Ali Alhaidary
80d1088645 fix(lang) update Arabic translation 2022-02-01 11:50:59 +01:00
Дамян Минков
5bcdd5173c fix: Restarts jvb after prosody on initial install.
Fixes an issue where on clean install we see:
WARNING: [25] [hostname=localhost id=shard] MucClient.lambda$getConnectAndLoginCallable$7#622: [MucClient id=shard hostname=localhost] error connecting
org.jivesoftware.smack.SmackException$SmackWrappedException: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
2022-01-31 21:51:40 -06:00
Robert Pintilii
b21beecbea fix(title-bar) Fix native titlebar (#10882) 2022-01-31 11:47:53 +02:00
Freddie
beea4b5b62 fix(config) document missing notification
This notification is missing in the array. If array is selectively defined, no pop-up notification is received when participant requests to join the meeting.
2022-01-29 21:02:22 +01:00
JohnProv
0940659070 fix(lang) update Dutch translation 2022-01-29 14:02:03 +01:00
JohnProv
609e4d646d fix(lang) update Dutch translation 2022-01-29 10:48:38 +01:00
Saúl Ibarra Corretgé
9d829003b4 fix(calendar-sync) remove unneeded function
A GUID is just a UUID v4, so let's use that.
2022-01-28 08:47:31 -06:00
Saúl Ibarra Corretgé
fe2c5f6447 chore(deps) microsoft-graph-client@3.0.1 2022-01-28 08:47:31 -06:00
Дамян Минков
43ab8e3ca8 fix: Fixes #10796 authentication in conference. (#10848)
* fix: Fixes #10796 authentication in conference.

* fixup!

* fixup2!

Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
2022-01-28 08:14:54 -06:00
Saúl Ibarra Corretgé
332feefa36 fix(util) never mark UUID room names as insecure
Except the NIL UUID, that is.
2022-01-28 14:53:51 +01:00
Shawn Chin
23b4e93ed9 feat(config) add ability to hide dominant speaker badge 2022-01-28 14:35:01 +01:00
Santiago Vila
5baa2f839f fix(lang) update Spanish translation 2022-01-28 12:08:23 +01:00
Robert Pintilii
7e5c283e3c feat(disableSelfView) Toggle self view on native (#10871)
Added toggle button in overflow menu
Created video menu with connection info and self view toggle buttons for local participant
2022-01-28 12:47:54 +02:00
JohnProv
4b483f7ec8 fix(lang) update Dutch translation 2022-01-28 11:30:32 +01:00
Robert Pintilii
f0118c0fb5 fix(screenshot-capture) Updated feature (#10865)
Added config to choose between recording and always mode
Created function to check if feature should be used
Removed check from stop feature as it now checks if the feature was previously on
Only get video track on feature start
2022-01-28 11:11:35 +02:00
Hristo Terezov
ae5723406d fix(iAmRecorder): middleware bug 2022-01-27 18:11:37 -06:00
Robert Pintilii
02721c0c3d fix(thumbnails) Change local thumbnail aspect ratio (#10861) 2022-01-27 12:55:49 +02:00
Robert Pintilii
c58ebd9792 fix(screenshot-capture) Add initial call for region selection (#10818) 2022-01-27 11:14:48 +02:00
ONO Yoshio
35e97450f9 fix(lang) update Japanese translation 2022-01-27 09:23:59 +01:00
Shawn Chin
a2425f71dd fix(overflow-menu) hide "more moderation controls" option if moderator settings tab disabled 2022-01-27 09:22:26 +01:00
Mihaela Dumitru
c9941dedb9 fix(notifications): support html descriptions 2022-01-26 11:25:04 -06:00
Saúl Ibarra Corretgé
4e8d962027 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/releases/tag/1343-2d21eb5b
2022-01-26 17:27:15 +01:00
Saúl Ibarra Corretgé
6331f8caa0 fix(tools) adapt update-ljm.sh to new ljm release mode 2022-01-26 17:27:15 +01:00
Saúl Ibarra Corretgé
45b8ce8afb feat(build) use lib-jitsi-meet release tarballs
This has 2 benefits:

a) it no longer needs to be built at install time, thus making builds faster

before:

real	0m46.865s
user	1m3.938s
sys	0m22.478s

after:

real	0m27.828s
user	0m25.582s
sys	0m21.699s

b) integrity errors go away since they are not computed over a locally
generated tarball
2022-01-26 15:55:10 +01:00
wfleischer
076b823ea2 fix(lang, shared-video): Reference to YouTube 2022-01-26 10:12:28 +01:00
Shawn
2ac410df00 fix lint errors 2022-01-25 17:14:28 -06:00
Shawn
f5c0d7da5e fix: broken redirect for url with params when welcome page disable 2022-01-25 17:14:28 -06:00
Jaya Allamsetty
64322db56a fix(media) Deprecate startScreenSharing config option for web browsers.
This is no longer supported as per the w3c spec for getDisplayMedia.
2022-01-25 15:05:15 -05:00
tudordan7
b3c4fb6287 feat(notification-button-testid): Add testid to notification buttons. 2022-01-25 09:53:42 -06:00
tudordan7
8258490873 feat(notification-button-testid): Add testid to notification buttons. 2022-01-25 09:53:42 -06:00
Saúl Ibarra Corretgé
95d4c8ffb8 fix(rn,navigation) fix navigating back to the welcome page
The CONFERENCE_WILL_LEAVE reducer in base/conference wipes the state so
we cannot rely on the old room value.

We may want to revisit this in the future.
2022-01-25 16:22:24 +01:00
Saúl Ibarra Corretgé
55aca37eb6 chore(deps) run npm audit fix 2022-01-25 15:08:12 +01:00
Saúl Ibarra Corretgé
19e510a762 fix(rn,settings-drawer) allow for more width 2022-01-25 14:36:59 +01:00
Calinteodor
b9433368ee feat(rn,app) unified navigators 2022-01-25 13:55:57 +01:00
Mihaela Dumitru
49dd007167 fix(config): use hide display name flag for dominant speaker (#10839) 2022-01-25 13:17:27 +02:00
Saúl Ibarra Corretgé
931ef75b4f feat(rn) use the TSC generated lib-jitsi-meet bundle
This way we'll have proper tracebacks now.
2022-01-25 12:15:35 +01:00
Saúl Ibarra Corretgé
a7529aca7f fix(build) remove double slashes 2022-01-25 12:15:35 +01:00
Saúl Ibarra Corretgé
d5f0e3c062 feat(ts) introduce TypeScript
This is the stepping stone for TypeScript support across Jitsi Meet. Currently
it makes it possible for lib-jitsi-meet to use TypeScript without adding any TS
code here yet.
2022-01-25 12:15:35 +01:00
210 changed files with 3822 additions and 2443 deletions

View File

@@ -1,12 +1,12 @@
BUILD_DIR = build
CLEANCSS = ./node_modules/.bin/cleancss
DEPLOY_DIR = libs
LIBJITSIMEET_DIR = node_modules/lib-jitsi-meet/
LIBFLAC_DIR = node_modules/libflacjs/dist/min/
LIBJITSIMEET_DIR = node_modules/lib-jitsi-meet
LIBFLAC_DIR = node_modules/libflacjs/dist/min
OLM_DIR = node_modules/@matrix-org/olm
RNNOISE_WASM_DIR = node_modules/rnnoise-wasm/dist/
RNNOISE_WASM_DIR = node_modules/rnnoise-wasm/dist
TFLITE_WASM = react/features/stream-effects/virtual-background/vendor/tflite
MEET_MODELS_DIR = react/features/stream-effects/virtual-background/vendor/models/
MEET_MODELS_DIR = react/features/stream-effects/virtual-background/vendor/models
FACIAL_MODELS_DIR = react/features/facial-recognition/resources
NODE_SASS = ./node_modules/.bin/sass
NPM = npm
@@ -62,9 +62,9 @@ deploy-appbundle:
deploy-lib-jitsi-meet:
cp \
$(LIBJITSIMEET_DIR)/lib-jitsi-meet.min.js \
$(LIBJITSIMEET_DIR)/lib-jitsi-meet.min.map \
$(LIBJITSIMEET_DIR)/lib-jitsi-meet.e2ee-worker.js \
$(LIBJITSIMEET_DIR)/dist/umd/lib-jitsi-meet.min.js \
$(LIBJITSIMEET_DIR)/dist/umd/lib-jitsi-meet.min.map \
$(LIBJITSIMEET_DIR)/dist/umd/lib-jitsi-meet.e2ee-worker.js \
$(LIBJITSIMEET_DIR)/connection_optimization/external_connect.js \
$(LIBJITSIMEET_DIR)/modules/browser/capabilities.json \
$(DEPLOY_DIR)

View File

@@ -71,8 +71,7 @@ import {
JitsiMediaDevicesEvents,
JitsiParticipantConnectionStatus,
JitsiTrackErrors,
JitsiTrackEvents,
JitsiRecordingConstants
JitsiTrackEvents
} from './react/features/base/lib-jitsi-meet';
import {
getStartWithAudioMuted,
@@ -141,10 +140,10 @@ import {
setJoiningInProgress,
setPrejoinPageVisibility
} from './react/features/prejoin';
import { getActiveSession } from './react/features/recording/functions';
import { disableReceiver, stopReceiver } from './react/features/remote-control';
import { setScreenAudioShareState, isScreenAudioShared } from './react/features/screen-share/';
import { toggleScreenshotCaptureSummary } from './react/features/screenshot-capture';
import { isScreenshotCaptureEnabled } from './react/features/screenshot-capture/functions';
import { AudioMixerEffect } from './react/features/stream-effects/audio-mixer/AudioMixerEffect';
import { createPresenterEffect } from './react/features/stream-effects/presenter';
import { createRnnoiseProcessor } from './react/features/stream-effects/rnnoise';
@@ -486,7 +485,7 @@ export default {
// Always get a handle on the audio input device so that we have statistics (such as "No audio input" or
// "Are you trying to speak?" ) even if the user joins the conference muted.
const initialDevices = config.disableInitialGUM ? [] : [ 'audio' ];
const initialDevices = config.disableInitialGUM ? [] : [ MEDIA_TYPE.AUDIO ];
const requestedAudio = !config.disableInitialGUM;
let requestedVideo = false;
@@ -494,7 +493,7 @@ export default {
&& !options.startWithVideoMuted
&& !options.startAudioOnly
&& !options.startScreenSharing) {
initialDevices.push('video');
initialDevices.push(MEDIA_TYPE.VIDEO);
requestedVideo = true;
}
@@ -518,21 +517,35 @@ export default {
// spend much time displaying the overlay screen. If GUM is not resolved within 15 seconds it will
// probably never resolve.
const timeout = browser.isElectron() ? 15000 : 60000;
const audioOptions = {
devices: [ MEDIA_TYPE.AUDIO ],
timeout,
firePermissionPromptIsShownEvent: true,
fireSlowPromiseEvent: true
};
// FIXME is there any simpler way to rewrite this spaghetti below ?
if (options.startScreenSharing) {
tryCreateLocalTracks = this._createDesktopTrack()
// This option has been deprecated since it is no longer supported as per the w3c spec.
// https://w3c.github.io/mediacapture-screen-share/#dom-mediadevices-getdisplaymedia. If the user has not
// interacted with the webpage before the getDisplayMedia call, the promise will be rejected by the
// browser. This has already been implemented in Firefox and Safari and will be implemented in Chrome soon.
// https://bugs.chromium.org/p/chromium/issues/detail?id=1198918
// Please note that Spot uses the same config option to use an external video input device label as
// screenshare and calls getUserMedia instead of getDisplayMedia for capturing the media. Therefore it
// needs to be supported here if _desktopSharingSourceDevice is provided.
const errMessage = new Error('startScreenSharing config option is no longer supported for web browsers');
const desktopPromise = config._desktopSharingSourceDevice
? this._createDesktopTrack()
: Promise.reject(errMessage);
tryCreateLocalTracks = desktopPromise
.then(([ desktopStream ]) => {
if (!requestedAudio) {
return [ desktopStream ];
}
return createLocalTracksF({
devices: [ 'audio' ],
timeout,
firePermissionPromptIsShownEvent: true,
fireSlowPromiseEvent: true
})
return createLocalTracksF(audioOptions)
.then(([ audioStream ]) =>
[ desktopStream, audioStream ])
.catch(error => {
@@ -545,14 +558,7 @@ export default {
logger.error('Failed to obtain desktop stream', error);
errors.screenSharingError = error;
return requestedAudio
? createLocalTracksF({
devices: [ 'audio' ],
timeout,
firePermissionPromptIsShownEvent: true,
fireSlowPromiseEvent: true
})
: [];
return requestedAudio ? createLocalTracksF(audioOptions) : [];
})
.catch(error => {
errors.audioOnlyError = error;
@@ -587,13 +593,7 @@ export default {
return [];
}
return (
createLocalTracksF({
devices: [ 'audio' ],
timeout,
firePermissionPromptIsShownEvent: true,
fireSlowPromiseEvent: true
}));
return createLocalTracksF(audioOptions);
} else if (requestedAudio && !requestedVideo) {
errors.audioOnlyError = err;
@@ -615,7 +615,7 @@ export default {
// Try video only...
return requestedVideo
? createLocalTracksF({
devices: [ 'video' ],
devices: [ MEDIA_TYPE.VIDEO ],
firePermissionPromptIsShownEvent: true,
fireSlowPromiseEvent: true
})
@@ -1141,8 +1141,11 @@ export default {
return room.getParticipants();
},
/**
* Used by Jibri to detect when it's alone and the meeting should be terminated.
*/
get membersCount() {
return room.getParticipants().length + 1;
return room.getParticipants().filter(p => !p.isHidden()).length + 1;
},
/**
@@ -1571,9 +1574,7 @@ export default {
this._stopProxyConnection();
if (config.enableScreenshotCapture) {
APP.store.dispatch(toggleScreenshotCaptureSummary(false));
}
APP.store.dispatch(toggleScreenshotCaptureSummary(false));
const tracks = APP.store.getState()['features/base/tracks'];
const duration = getLocalVideoTrack(tracks)?.jitsiTrack.getDuration() ?? 0;
@@ -1952,10 +1953,8 @@ export default {
})
.then(() => {
this.videoSwitchInProgress = false;
if (config.enableScreenshotCapture) {
if (getActiveSession(APP.store.getState(), JitsiRecordingConstants.mode.FILE)) {
APP.store.dispatch(toggleScreenshotCaptureSummary(true));
}
if (isScreenshotCaptureEnabled(APP.store.getState(), false, true)) {
APP.store.dispatch(toggleScreenshotCaptureSummary(true));
}
sendAnalytics(createScreenSharingEvent('started'));
logger.log('Screen sharing started');

View File

@@ -98,6 +98,17 @@ var config = {
// Disables self-view settings in UI
// disableSelfViewSettings: false,
// screenshotCapture : {
// Enables the screensharing capture feature.
// enabled: false,
//
// The mode for the screenshot capture feature.
// Can be either 'recording' - screensharing screenshots are taken
// only when the recording is also on,
// or 'always' - screensharing screenshots are always taken.
// mode: 'recording'
// }
// Disables ICE/UDP by filtering out local and remote UDP candidates in
// signalling.
// webrtcIceUdpDisable: false,
@@ -236,7 +247,11 @@ var config = {
// max: 5
// },
// Try to start calls with screen-sharing instead of camera video.
// This option has been deprecated since it is no longer supported as per the w3c spec.
// https://w3c.github.io/mediacapture-screen-share/#dom-mediadevices-getdisplaymedia. If the user has not
// interacted with the webpage before the getDisplayMedia call, the promise will be rejected by the browser. This
// has already been implemented in Firefox and Safari and will be implemented in Chrome soon.
// https://bugs.chromium.org/p/chromium/issues/detail?id=1198918
// startScreenSharing: false,
// Recording
@@ -491,7 +506,10 @@ var config = {
// defaultRemoteDisplayName: 'Fellow Jitster',
// Hides the display name from the participant thumbnail
// hideDisplayName: false
// hideDisplayName: false,
// Hides the dominant speaker name badge that hovers above the toolbox
// hideDominantSpeakerBadge: false,
// Default language for the user interface.
// defaultLanguage: 'en',
@@ -724,6 +742,9 @@ var config = {
// Enables detecting faces of participants and get their expression and send it to other participants
// enableFacialRecognition: true,
// Enables displaying facial expressions in speaker stats
// enableDisplayFacialExpressions: true,
// Controls the percentage of automatic feedback shown to participants when callstats is enabled.
// The default value is 100%. If set to 0, no automatic feedback will be requested
// feedbackPercentage: 100,
@@ -1210,6 +1231,7 @@ var config = {
// 'notify.mutedTitle', // shown when user has been muted upon joining,
// 'notify.newDeviceAudioTitle', // prompts the user to use a newly detected audio device
// 'notify.newDeviceCameraTitle', // prompts the user to use a newly detected camera
// 'notify.participantWantsToJoin', // shown when lobby is enabled and participant requests to join meeting
// 'notify.passwordRemovedRemotely', // shown when a password has been removed remotely
// 'notify.passwordSetRemotely', // shown when a password has been set remotely
// 'notify.raisedHand', // shown when a partcipant used raise hand,

View File

@@ -74,6 +74,10 @@
display: block;
}
.filmstrip__videos.has-scroll {
padding-left: 7px;
}
.remote-videos {
box-sizing: border-box;
@@ -91,7 +95,6 @@
margin-top: auto;
margin-bottom: auto;
justify-content: center;
position: absolute;
.videocontainer {
border: 0;

View File

@@ -1,80 +1,30 @@
.speaker-stats {
list-style: none;
padding: 0;
width: 100%;
font-weight: 500;
.speaker-stats-item__status-dot {
position: relative;
display: block;
width: 9px;
height: 9px;
border-radius: 50%;
margin: 0 auto;
&.status-active {
background: green;
.row{
display: flex;
align-items: center;
.avatar {
width: 32px;
margin-right: 16px;
}
&.status-inactive {
background: gray;
.name-time {
width: calc(100% - 48px);
display: flex;
justify-content: space-between;
align-items: center;
}
}
.status-user-left {
color: $placeHolderColor;
}
.speaker-stats-item__status,
.speaker-stats-item__name,
.speaker-stats-item__time,
.speaker-stats-item__name_expressions_on,
.speaker-stats-item__time_expressions_on,
.speaker-stats-item__expression {
display: inline-block;
margin: 5px 0;
vertical-align: middle;
}
.speaker-stats-item__status {
width: 5%;
}
.speaker-stats-item__name {
width: 40%;
}
.speaker-stats-item__time {
width: 55%;
}
.speaker-stats-item__name_expressions_on {
width: 20%;
}
.speaker-stats-item__time_expressions_on {
width: 25%;
}
.speaker-stats-item__expression {
width: 7%;
text-align: center;
}
@media(max-width: 750px) {
.speaker-stats-item__name_expressions_on {
width: 25%;
.name-time_expressions-on {
width: calc(47% - 48px);
}
.speaker-stats-item__time_expressions_on {
width: 30%;
.expressions {
width: calc(53% - 29px);
display: flex;
justify-content: space-between;
.expression {
width: 30px;
text-align: center;
}
}
.speaker-stats-item__expression {
width: 10%;
}
}
.speaker-stats-item__name,
.speaker-stats-item__time,
.speaker-stats-item__name_expressions_on,
.speaker-stats-item__time_expressions_on,
.speaker-stats-item__expression {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}

View File

@@ -204,6 +204,8 @@ case "$1" in
fi
fi
CERT_ADDED_TO_TRUST="false"
if [ ! -f /var/lib/prosody/$JICOFO_AUTH_DOMAIN.crt ]; then
# prosodyctl takes care for the permissions
# echo for using all default values
@@ -220,6 +222,8 @@ case "$1" in
# store not get re-generated with latest changes
update-ca-certificates -f
CERT_ADDED_TO_TRUST="true"
# don't fail on systems with custom config ($PROSODY_HOST_CONFIG is missing)
if [ -f $PROSODY_HOST_CONFIG ]; then
# now let's add the ssl cert for the auth. domain (we use # as a sed delimiter cause filepaths are confused with default / delimiter)
@@ -232,6 +236,11 @@ case "$1" in
if [ "$PROSODY_CONFIG_PRESENT" = "false" ]; then
invoke-rc.d prosody restart || true
# In case we had updated the certificates and restarted prosody, let's restart and the bridge if possible
if [ -d /run/systemd/system ] && [ "$CERT_ADDED_TO_TRUST" = "true" ]; then
systemctl restart jitsi-videobridge2.service >/dev/null || true
fi
fi
;;

View File

@@ -91,7 +91,7 @@ var interfaceConfig = {
LANG_DETECTION: true, // Allow i18n to detect the system language
LIVE_STREAMING_HELP_LINK: 'https://jitsi.org/live', // Documentation reference for the live streaming feature.
LOCAL_THUMBNAIL_RATIO: 16 / 9, // 16:9
LOCAL_THUMBNAIL_RATIO: 1, // 1:1
/**
* Maximum coefficient of the ratio of the large video to the visible area

View File

@@ -14,10 +14,12 @@
"esUS": "スペイン語 (ラテンアメリカ)",
"et": "エストニア語",
"eu": "バスク語",
"fa": "ペルシア語",
"fi": "フィンランド語",
"fr": "フランス語",
"frCA": "フランス語 (カナダ)",
"he": "ヘブライ語",
"hi": "ヒンディー語",
"hr": "クロアチア語",
"hu": "ハンガリー語",
"hy": "アルメニア語",
@@ -27,18 +29,23 @@
"kab": "カビル語",
"ko": "韓国語",
"lt": "リトアニア語",
"lv": "ラトビア語",
"ml": "マラヤーラム語",
"mr": "マラーティー語",
"nl": "オランダ語",
"oc": "オック語",
"pl": "ポーランド語",
"pt": "ポルトガル語",
"ptBR": "ポルトガル語 (ブラジル)",
"ro": "ルーマニア語",
"ru": "ロシア語",
"sc": "サルデーニャ語",
"sk": "スロバキア語",
"sl": "スロベニア語",
"sq": "アルバニア語",
"sr": "セルビア語",
"sv": "スウェーデン語",
"te": "テルグ語",
"th": "タイ語",
"tr": "トルコ語",
"uk": "ウクライナ語",

View File

@@ -241,7 +241,7 @@
"screenSharingPermissionDeniedError": "",
"serviceUnavailable": "Diens nie beskikbaar nie",
"sessTerminated": "Oproep gestaak",
"shareVideoLinkError": "Gee asb. n korrekte YouTube-skakel.",
"shareVideoLinkError": "Gee asb. n korrekte skakel.",
"shareVideoTitle": "Deel n video",
"shareYourScreen": "Deel u skerm",
"shareYourScreenDisabled": "Skermdeling gedeaktiveer.",
@@ -568,7 +568,7 @@
"remoteMute": "",
"shareRoom": "Nooi iemand",
"shareYourScreen": "Wissel skermdeling",
"sharedvideo": "Wissel YouTube-videodeling",
"sharedvideo": "Wissel videodeling",
"shortcuts": "Wissel kortpaaie",
"show": "",
"speakerStats": "Wissel sprekerstatistiek",
@@ -605,14 +605,14 @@
"raiseHand": "Lig / laat sak u hand",
"raiseYourHand": "",
"shareRoom": "Nooi iemand",
"sharedvideo": "Deel n YouTube-video",
"sharedvideo": "Deel n video",
"shortcuts": "Sien kortpaaie",
"speakerStats": "Sprekerstatistiek",
"startScreenSharing": "",
"startSubtitles": "",
"startvideoblur": "",
"stopScreenSharing": "",
"stopSharedVideo": "Stop YouTube-video",
"stopSharedVideo": "Stop video",
"stopSubtitles": "",
"stopvideoblur": "",
"talkWhileMutedPopup": "Besig om te praat? U is gedemp.",

View File

@@ -365,6 +365,7 @@
"shareVideoTitle": "شارك فيديو",
"shareYourScreen": "شارك شاشتك",
"shareYourScreenDisabled": "مشاركة الشاشة مُعطَّلة",
"sharedVideoDialogError": "",
"sharedVideoLinkPlaceholder": "رابط اليوتيوب او رابط الفيديو المباشر",
"startLiveStreaming": "ابدأ بثًا حيًا",
"startRecording": "ابدأ التسجيل",
@@ -642,6 +643,8 @@
"oldElectronClientDescription1": "يبدو أنَّك تستعمل إصدارًا قديمًا من جيتسي يحوي ثغرة أمنية. تأكد رجاءً من أنَّك حدَّثته إلى ",
"oldElectronClientDescription2": "أحدث إصدار",
"oldElectronClientDescription3": " الآن!",
"participantWantsToJoin": "يريد الانضمام إلى الاجتماع",
"participantsWantToJoin": "يريد الانضمام إلى الاجتماع",
"passwordRemovedRemotely": "أزال أحد المشاركين {{participantDisplayName}}",
"passwordSetRemotely": "ضبط أحد المشاركين $t(lockRoomPasswordUppercase)",
"raiseHandAction": "رفع اليد",
@@ -661,7 +664,9 @@
"videoMutedRemotelyDescription": "You can always turn it on again.",
"videoMutedRemotelyTitle": "Your video has been turned off by {{participantDisplayName}}",
"videoUnmuteBlockedDescription": "تم حظر عملية إلغاء كتم الكاميرا مؤقتًا بسبب قيود النظام.",
"videoUnmuteBlockedTitle": "تم حظر إعادة الكاميرا!"
"videoUnmuteBlockedTitle": "تم حظر إعادة الكاميرا!",
"viewLobby": "مشاهدة اللوبي",
"waitingParticipants": "{{waitingParticipants}} اشخاص"
},
"participantsPane": {
"actions": {
@@ -807,6 +812,7 @@
"title": "الملف الشخصي"
},
"raisedHand": "يرد التحدث",
"raisedHandsLabel": "عدد الأيدي المرفوعة",
"recording": {
"authDropboxText": "رفع إلى Dropbox",
"availableSpace": "المساحة المتاحة: {{spaceLeft}} ميغابايت (ما يقارب {{duration}} دقيقة تسجيل).",
@@ -995,6 +1001,7 @@
"remoteVideoMute": "تعطيل كاميرا المشارك",
"security": "خيارات الحماية",
"selectBackground": "اختر الخلفية",
"selfView": "تبديل الواجهة الذاتية",
"shareRoom": "ادعُ أحدًا",
"shareYourScreen": "بدِّل وضع مشاركة الشاشة",
"shareaudio": "مشاركة الصوت",
@@ -1160,7 +1167,9 @@
"mute": "المشارك مكتوم الصوت",
"muted": "مكتوم",
"remoteControl": "بدء / إيقاف التحكم البعيد",
"screenSharing": "المشارك يشارك شاشته",
"show": "أظهر على المنصة",
"showSelfView": "إظهار الواجهة الذاتية",
"videoMuted": "الكاميرا معطلة",
"videomute": "أوقف المشارك الكاميرا"
},

View File

@@ -272,7 +272,7 @@
"sendPrivateMessageTitle": "Адаслаць асабістае паведамленне?",
"serviceUnavailable": "Служба недаступная",
"sessTerminated": "Сувязь перарвана",
"shareVideoLinkError": "Калі ласка, падайце дакладную спасылку на YouTube.",
"shareVideoLinkError": "Калі ласка, падайце дакладную спасылку.",
"shareVideoTitle": "Падзяліцца відэа",
"shareYourScreen": "Паказаць экран",
"shareYourScreenDisabled": "Дэманстрацыя экрана адключаная.",

View File

@@ -280,7 +280,7 @@
"sendPrivateMessageTitle": "Да се изпрати лично?",
"serviceUnavailable": "Услугата не е налична",
"sessTerminated": "Разговорът приключи",
"shareVideoLinkError": "Моля, въведете правилна връзка към YouTube.",
"shareVideoLinkError": "Моля, въведете правилна връзка.",
"shareVideoTitle": "Сподели видео",
"shareYourScreen": "Споделяне на екрана",
"shareYourScreenDisabled": "Споделянето на екрана не се поддържа.",
@@ -679,7 +679,7 @@
"remoteMute": "Заглуши участник",
"shareRoom": "Добавете някого",
"shareYourScreen": "Споделяне на екрана",
"sharedvideo": "Пускане/спиране на споделеното YouTube видео",
"sharedvideo": "Пускане/спиране на споделеното видео",
"shortcuts": "Бързи клавиши",
"show": "Покажи на главния екран",
"speakerStats": "Показване на статистики за участниците",
@@ -729,14 +729,14 @@
"raiseHand": "Вдигане/сваляне на ръка",
"raiseYourHand": "Поискай думата",
"shareRoom": "Добавете някого",
"sharedvideo": "Споделяне на YouTube видео",
"sharedvideo": "Споделяне на видео",
"shortcuts": "Виж бързите клавиши",
"speakerStats": "Статистика за говорителите",
"startScreenSharing": "Започни споделяне на екрана",
"startSubtitles": "Пускане на субтитри",
"startvideoblur": "Замъгли фона ми",
"stopScreenSharing": "Спиране споделяне на екрана",
"stopSharedVideo": "Спиране на YouTube видео",
"stopSharedVideo": "Спиране на видео",
"stopSubtitles": "Спиране на субтитри",
"stopvideoblur": "Спиране замъгляването на фона",
"talkWhileMutedPopup": "Опитвате се да говорите? В момента микрофонът Ви е заглушен.",

View File

@@ -998,7 +998,7 @@
"shareRoom": "Convida-hi algú",
"shareYourScreen": "Inicia o atura la compartició de pantalla",
"shareaudio": "Comparteix l'àudio",
"sharedvideo": "Activa o desactiva la compartició de vídeo a Youtube",
"sharedvideo": "Activa o desactiva la compartició de vídeo",
"shortcuts": "Activa o desactiva les dreceres",
"show": "Mostra-ho en l'escena",
"silence": "Silenci",

View File

@@ -311,7 +311,7 @@
"sendPrivateMessageTitle": "Poslat soukromě?",
"serviceUnavailable": "Služba není dostupná",
"sessTerminated": "Volání ukončeno",
"shareVideoLinkError": "Zadejte prosím správný odkaz videa na YouTube.",
"shareVideoLinkError": "Zadejte prosím správný odkaz videa.",
"shareVideoTitle": "Sdílet obraz",
"shareYourScreen": "Sdílet obrazovku",
"shareYourScreenDisabled": "Sdílení obrazovky vypnuto.",
@@ -786,7 +786,7 @@
"security": "Možnosti zabezpečení",
"shareRoom": "Pozvat někoho",
"shareYourScreen": "Sdílet obrazovku",
"sharedvideo": "Přepnout sdílení videa z YouTube",
"sharedvideo": "Přepnout sdílení videa",
"shortcuts": "Zobrazit zkratky",
"show": "",
"speakerStats": "Statistika řečníků",
@@ -841,14 +841,14 @@
"raiseYourHand": "Přihlásit se o slovo",
"security": "Možnosti zabezpečení",
"shareRoom": "Pozvat někoho",
"sharedvideo": "Sdílet video z YouTube",
"sharedvideo": "Sdílet video",
"shortcuts": "Klávesové zkratky",
"speakerStats": "Statistiky řečníků",
"startScreenSharing": "Začít sdílet obrazovku",
"startSubtitles": "Zapnout titulky",
"startvideoblur": "Rozmazat pozadí",
"stopScreenSharing": "Zastavit sdílení obrazovky",
"stopSharedVideo": "Zastavit video z YouTube",
"stopSharedVideo": "Zastavit video",
"stopSubtitles": "Vypnout titulky",
"stopvideoblur": "Zrušit rozmazání",
"talkWhileMutedPopup": "Snažíte se mluvit? Máte ztišený mikrofon.",

View File

@@ -267,7 +267,7 @@
"sendPrivateMessageTitle": "Send privat?",
"serviceUnavailable": "Service er ikke tilgængelig",
"sessTerminated": "Møde afsluttet",
"shareVideoLinkError": "Angiv venligst et gyldigt YouTube link.",
"shareVideoLinkError": "Angiv venligst et gyldigt link.",
"shareVideoTitle": "Del en video",
"shareYourScreen": "Del din skærm",
"shareYourScreenDisabled": "Skærmdeling er ikke slået til.",
@@ -612,7 +612,7 @@
"remoteMute": "Slå lyd fra for deltager",
"shareRoom": "Invitér nogen",
"shareYourScreen": "Slå skærmdeling fra/til",
"sharedvideo": "Slå YouTube-videodeling fra/til",
"sharedvideo": "Slå videodeling fra/til",
"shortcuts": "Slå genveje fra/til",
"show": "Vis",
"speakerStats": "Slå højtalerinfo fra/til",
@@ -661,14 +661,14 @@
"raiseHand": "Ræk hånden op / Tag hånden ned",
"raiseYourHand": "Ræk hånden op",
"shareRoom": "Invitér deltagere",
"sharedvideo": "Del en YouTube-video",
"sharedvideo": "Del en video",
"shortcuts": "Vis genveje",
"speakerStats": "Deltagerstatistik",
"startScreenSharing": "Start skærmdeling",
"startSubtitles": "Vis undertekster",
"startvideoblur": "Slå baggrundssløring til",
"stopScreenSharing": "Stop skærmdeling",
"stopSharedVideo": "Stop YouTube-video",
"stopSharedVideo": "Stop video",
"stopSubtitles": "Skjul undertekster",
"stopvideoblur": "Slå baggrundssløring fra",
"talkWhileMutedPopup": "Forsøger du at sige noget? Din lyd er slået fra.",

View File

@@ -361,7 +361,7 @@
"shareScreenWarningD2": "müssen Sie Ihre Audiofreigabe stoppen und dann die Bildschirmfreigabe mit der Option \"Audio freigeben\" starten.",
"shareScreenWarningH1": "Wenn Sie Ihren Bildschirm freigeben wollen:",
"shareScreenWarningTitle": "Sie müssen die Audiofreigabe beenden, bevor Sie den Bildschirm freigeben können",
"shareVideoLinkError": "Bitte einen gültigen YouTube-Link angeben.",
"shareVideoLinkError": "Bitte einen gültigen Link angeben.",
"shareVideoTitle": "Video teilen",
"shareYourScreen": "Bildschirmfreigabe ein-/ausschalten",
"shareYourScreenDisabled": "Bildschirmfreigabe deaktiviert.",
@@ -999,7 +999,7 @@
"shareRoom": "Person einladen",
"shareYourScreen": "Bildschirmfreigabe ein-/ausschalten",
"shareaudio": "Audio teilen",
"sharedvideo": "YouTube-Videofreigabe ein-/ausschalten",
"sharedvideo": "Videofreigabe ein-/ausschalten",
"shortcuts": "Tastenkombinationen ein-/ausblenden",
"show": "Im Vordergrund anzeigen",
"silence": "Stille",
@@ -1076,7 +1076,7 @@
"selectBackground": "Hintergrund auswählen",
"shareRoom": "Person einladen",
"shareaudio": "Audio teilen",
"sharedvideo": "YouTube-Video teilen",
"sharedvideo": "Video teilen",
"shortcuts": "Tastenkürzel anzeigen",
"silence": "Stille",
"speakerStats": "Sprechstatistik",
@@ -1084,7 +1084,7 @@
"startSubtitles": "Untertitel einschalten",
"stopAudioSharing": "Audiofreigabe stoppen",
"stopScreenSharing": "Bildschirmfreigabe stoppen",
"stopSharedVideo": "YouTube-Video stoppen",
"stopSharedVideo": "Video stoppen",
"stopSubtitles": "Untertitel ausschalten",
"surprised": "Überrascht",
"talkWhileMutedPopup": "Versuchen Sie zu sprechen? Ihr Mikrofon ist stummgeschaltet.",

View File

@@ -285,7 +285,7 @@
"sendPrivateMessageTitle": "Θέλετε να στείλετε ιδιωτικά;",
"serviceUnavailable": "Η υπηρεσία δεν είναι διαθέσιμη",
"sessTerminated": "Η κλήση τερματίστηκε",
"shareVideoLinkError": "Παρακαλώ δώστε έναν σωστό σύνδεσμο youtube.",
"shareVideoLinkError": "Παρακαλώ δώστε έναν σωστό σύνδεσμο.",
"shareVideoTitle": "Μοιραστείτε ένα βίντεο",
"shareYourScreen": "Μοιραστείτε την οθόνη σας",
"shareYourScreenDisabled": "Η κοινή χρήση οθόνης απενεργοποιήθηκε.",
@@ -724,7 +724,7 @@
"security": "Επιλογές ασφαλείας",
"shareRoom": "Προσκαλέστε κάποιον",
"shareYourScreen": "Εναλλαγή κοινής χρήσης οθόνης",
"sharedvideo": "Εναλλαγή κοινής χρήσης βίντεο στο Youtube",
"sharedvideo": "Εναλλαγή κοινής χρήσης βίντεο",
"shortcuts": "Εναλλαγή συντομεύσεων",
"show": "Εμφάνιση στη σκηνή",
"speakerStats": "Εναλλαγή στατιστικών ομιλητών",
@@ -778,14 +778,14 @@
"raiseYourHand": "Σηκώστε το χέρι σας",
"security": "Επιλογές ασφαλείας",
"shareRoom": "Προσκαλέστε κάποιον",
"sharedvideo": "Μοιραστείτε βίντεο στο YouTube",
"sharedvideo": "Μοιραστείτε βίντεο",
"shortcuts": "Δείτε τις συντομεύσεις",
"speakerStats": "Στατιστικά ομιλητών",
"startScreenSharing": "Ξεκινήστε την κοινή χρήση οθόνης",
"startSubtitles": "Έναρξη υποτίτλων",
"startvideoblur": "Θόλωσε το φόντο μου",
"stopScreenSharing": "Διακόψτε την κοινή χρήση οθόνης",
"stopSharedVideo": "Σταμάτημα του βίντεο YouTube",
"stopSharedVideo": "Σταμάτημα του βίντεο",
"stopSubtitles": "Σταμάτημα υποτίτλων",
"stopvideoblur": "Απενεργοποίηση θόλωσης του φόντου",
"talkWhileMutedPopup": "Προσπαθείτε να μιλήσετε; Είστε σε σίγαση.",

View File

@@ -272,7 +272,7 @@
"sendPrivateMessageTitle": "",
"serviceUnavailable": "Service unavailable",
"sessTerminated": "Call terminated",
"shareVideoLinkError": "Please provide a correct youtube link.",
"shareVideoLinkError": "Please provide a correct video link.",
"shareVideoTitle": "Share a video",
"shareYourScreen": "Share your screen",
"shareYourScreenDisabled": "Screen sharing disabled.",
@@ -622,7 +622,7 @@
"remoteMute": "Mute participant",
"shareRoom": "Invite someone",
"shareYourScreen": "Toggle screenshare",
"sharedvideo": "Toggle YouTube video sharing",
"sharedvideo": "Toggle video sharing",
"shortcuts": "Toggle shortcuts",
"show": "Show on stage",
"speakerStats": "Toggle speaker statistics",
@@ -659,14 +659,14 @@
"raiseHand": "Raise / Lower your hand",
"raiseYourHand": "Raise your hand",
"shareRoom": "Invite someone",
"sharedvideo": "Share a YouTube video",
"sharedvideo": "Share video",
"shortcuts": "View shortcuts",
"speakerStats": "Speaker stats",
"startScreenSharing": "Start screen sharing",
"startSubtitles": "Start subtitles",
"startvideoblur": "",
"stopScreenSharing": "Stop screen sharing",
"stopSharedVideo": "Stop YouTube video",
"stopSharedVideo": "Stop video",
"stopSubtitles": "Stop subtitles",
"stopvideoblur": "",
"talkWhileMutedPopup": "Trying to speak? You are muted.",

View File

@@ -271,7 +271,7 @@
"sendPrivateMessageTitle": "Sendi private?",
"serviceUnavailable": "Servo ne disponeblas",
"sessTerminated": "Voko finita",
"shareVideoLinkError": "Bonvolu doni ĝustan ligilon de YouTube",
"shareVideoLinkError": "Bonvolu doni ĝustan ligilon",
"shareVideoTitle": "Kundividi videon",
"shareYourScreen": "Kundividi vian ekranon",
"shareYourScreenDisabled": "Kundividado de ekrano malŝaltita.",
@@ -635,7 +635,7 @@
"remoteMute": "Silentigi partoprenanton",
"shareRoom": "Inviti iun",
"shareYourScreen": "Baskuligi kundividadon de ekrano",
"sharedvideo": "Baskuligi kundividadon de videoj el YouTube",
"sharedvideo": "Baskuligi kundividadon de videoj",
"shortcuts": "Baskuligi fulmklavojn",
"show": "Montri sur scenejo",
"speakerStats": "Baskuligi statistikojn pri parolanto",
@@ -686,14 +686,14 @@
"raiseHand": "Levi / Mallevi vian manon",
"raiseYourHand": "Levi vian manon",
"shareRoom": "Inviti iun",
"sharedvideo": "Kundividi videon el YouTube",
"sharedvideo": "Kundividi videon",
"shortcuts": "Vidi fulmklavojn",
"speakerStats": "Statistikoj pri parolintoj",
"startScreenSharing": "Komenci dividadon de ekrano",
"startSubtitles": "Komenci subtekstojn",
"startvideoblur": "Malnetigi mian fonon",
"stopScreenSharing": "Ĉesigi dividadon de ekrano",
"stopSharedVideo": "Haltigi videon el YouTube",
"stopSharedVideo": "Haltigi videon",
"stopSubtitles": "Ĉesigi subtekstojn",
"stopvideoblur": "Ĉesigi malnetigon de fono",
"talkWhileMutedPopup": "Ĉu vi provas paroli? Vi estas silentigita.",

View File

@@ -4,8 +4,8 @@
"addContacts": "Invitar a sus contactos",
"contacts": "contactos",
"copyInvite": "Copiar la invitación a la reunión",
"copyLink": "Copiar el link de la reunión",
"copyStream": "Copiar el link de la transmisión en vivo",
"copyLink": "Copiar el enlace de la reunión",
"copyStream": "Copiar el enlace de la transmisión en vivo",
"countryNotSupported": "Aún no contamos con soporte a este destino.",
"countryReminder": "¿Llamando fuera de los Estados Unidos? ¡Por favor, asegúrese de empezar con el código de país!",
"defaultEmail": "Dirección de correo por defecto",
@@ -20,10 +20,10 @@
"noResults": "No se encontraron coincidencias",
"outlookEmail": "Correo de Outlook",
"phoneNumbers": "números de teléfono",
"searching": "Búscando...",
"searching": "Buscando...",
"shareInvite": "Compartir la invitación a la reunión",
"shareLink": "Compartir el link de la reunion",
"shareStream": "Compartir el link de la transmición en vivo",
"shareLink": "Compartir el enlace de la reunion",
"shareStream": "Compartir el enlace de la transmisión en vivo",
"sipAddresses": "direcciones sip",
"telephone": "Teléfono: {{number}}",
"title": "Invitar a otras personas a esta reunión",
@@ -214,8 +214,8 @@
"confirm": "Confirmar",
"confirmNo": "No",
"confirmYes": "Sí",
"connectError": Oops! Algo salió mal y no fue posible conectarnos a la conferencia.",
"connectErrorWithMsg": Oops! Algo salió mal y no fue posible conectarnos a la conferencia: {{msg}}",
"connectError": Ups! Algo salió mal y no fue posible conectarnos a la conferencia.",
"connectErrorWithMsg": Ups! Algo salió mal y no fue posible conectarnos a la conferencia: {{msg}}",
"connecting": "Conectando",
"contactSupport": "Contacta al soporte técnico",
"copied": "Copiado",
@@ -225,19 +225,19 @@
"done": "Listo",
"e2eeDescription": "El cifrado de extremo a extremo es actualmente EXPERIMENTAL. Tenga en cuenta que activarlo puede deshabilitar servicios como: grabación, transmisión en vivo y participación telefónica. Además, esta reunión solo funcionará con personas que se unan con un navegador.",
"e2eeDisabledDueToMaxModeDescription": "No se puede activar el cifrado de extremo a extremo debido al gran número de participantes en la conferencia.",
"e2eeLabel": "Habilitar cifrado Extremo-a-Extremo",
"e2eeWarning": "ADVERTENCIA: No todos los participantes de esta reunión soportan el cifrado de extremo a extremo. Si usted habilita esta opción, ellos no podrán verlo ni oírlo.",
"e2eeWillDisableDueToMaxModeDescription": "ADVERTENCIA: El cifrado de extremo a extremo se desactivará automáticamente si se unen más participantes a la conferencia.",
"e2eeLabel": "Habilitar cifrado de extremo a extremo",
"e2eeWarning": "ATENCIÓN: No todos los participantes de esta reunión soportan el cifrado de extremo a extremo. Si habilitas esta opción, ellos no podrán verte ni oirte.",
"e2eeWillDisableDueToMaxModeDescription": "ATENCIÓN: El cifrado de extremo a extremo se desactivará automáticamente si se unen más participantes a la reunión.",
"embedMeeting": "Incrustar reunión",
"enterDisplayName": "Por favor ingresa tu nombre aquí",
"error": "Error",
"gracefulShutdown": "Nuestro servicio se encuentra en mantenimiento. Por favor, intente más tarde.",
"grantModeratorDialog": "¿Estas seguro de que quieres convertir a este participante en moderator?",
"grantModeratorDialog": "¿Estás seguro de que quieres convertir a este participante en moderador?",
"grantModeratorTitle": "Convertir en moderador",
"hideShareAudioHelper": "No volver a mostrar este diálogo",
"incorrectPassword": "Nombre de usuario o contraseña incorrecta",
"incorrectRoomLockPassword": "Contraseña incorrecta",
"internalError": Oops! Algo salió mal. El siguiente error ocurrió: {{error}}",
"internalError": Ups! Algo salió mal. El siguiente error ocurrió: {{error}}",
"internalErrorTitle": "Error interno",
"kickMessage": "Puede ponerse en contacto con {{participantDisplayName}} para obtener más detalles.",
"kickParticipantButton": "Expulsar",
@@ -254,7 +254,7 @@
"login": "Iniciar sesión",
"logoutQuestion": "¿Está seguro que desea salir y detener la conferencia?",
"logoutTitle": "Cerrar sesión",
"maxUsersLimitReached": "El límite máximo de participantes ha sido alcanzado. Por favor contacta al organizador o intenta más tarde.",
"maxUsersLimitReached": "Se ha alcanzado el límite máximo de participantes. Por favor contacta con el organizador o inténtalo más tarde.",
"maxUsersLimitReachedTitle": "La reunión está llena.",
"micConstraintFailedError": "El micrófono no satisface algunos de los requerimientos.",
"micNotFoundError": "No se encontró el micrófono.",
@@ -297,7 +297,7 @@
"permissionMicRequiredError": "El permiso de micrófono es necesario para participar en conferencias con sonido. Por favor, permítelo en Ajustes",
"popupError": "Su navegador está bloqueando las ventanas emergentes de este sitio. Habilite las ventanas emergentes en la configuración de seguridad de su navegador y vuelva a intentarlo.",
"popupErrorTitle": "Ventana emergente bloqueada",
"readMore": "mas",
"readMore": "más",
"recording": "Grabando",
"recordingDisabledBecauseOfActiveLiveStreamingTooltip": "No es posible mientras la transmisión en vivo este activa",
"recordingDisabledTooltip": "Inicio de grabación desactivado.",
@@ -317,7 +317,7 @@
"reservationErrorMsg": "Código de error: {{code}}, mensaje: {{msg}}",
"retry": "Reintentar",
"screenSharingAudio": "Compartir audio",
"screenSharingFailed": Oops! ¡Algo salio mal, no se pudo iniciar la compartición de su pantalla!",
"screenSharingFailed": Ups! ¡Algo salió mal, no se pudo iniciar la compartición de su pantalla!",
"screenSharingFailedTitle": "¡Fallo al compartir su pantalla!",
"screenSharingPermissionDeniedError": "¡Uy! Algo salió mal con tus permisos de extensión para compartir pantalla. Vuelve a cargar la página e intenta de nuevo.",
"sendPrivateMessage": "Acabas de recibir un mensaje privado. ¿Deseas responder en privado o a todos?",
@@ -338,7 +338,7 @@
"shareScreenWarningD2": "tienes que dejar de compartir el audio, empezar a compartir la pantalla y marcar la opción \"compartir el audio\".",
"shareScreenWarningH1": "Si quieres compartir sólo tu pantalla:",
"shareScreenWarningTitle": "Tienes que dejar de compartir el audio antes de compartir la pantalla",
"shareVideoLinkError": "Proporciona un enlace de YouTube correcto.",
"shareVideoLinkError": "Proporciona un enlace correcto.",
"shareVideoTitle": "Compartir un vídeo",
"shareYourScreen": "Compartir pantalla",
"shareYourScreenDisabled": "Se desactivó la opción para compartir pantalla.",
@@ -411,7 +411,7 @@
"genericError": "Algo salió mal.",
"inviteLiveStream": "Para ver la transmisión en vivo de esta reunión, haz clic en este enlace: {{url}}",
"invitePhone": "También puedes entrar por llamada telefónica: Marca al número {{number}}, y al escuchar la contestadora introduce {{conferenceID}}#\n",
"invitePhoneAlternatives": "Si necesitas un número telefónico de otro país, revisa los números disponibles en {{url}}\n\n\nSi además de entrar vía llamada vas a usar otro dispositivo, puedes usar este link para entrar sin audio: {{silentUrl}}",
"invitePhoneAlternatives": "Si necesitas un número telefónico de otro país, revisa los números disponibles en {{url}}\n\n\nSi además de entrar vía llamada vas a usar otro dispositivo, puedes usar este enlace para entrar sin audio: {{silentUrl}}",
"inviteSipEndpoint": "Para unirse utilizando la dirección SIP, introduzca esto: {{sipUri}}",
"inviteTextiOSInviteUrl": "Haz clic en el siguiente enlace para unirte: {{inviteUrl}}.",
"inviteTextiOSJoinSilent": "Si marca a través de un teléfono de sala, utilice este enlace para unirse sin conectarse al audio: {{silentUrl}}.",
@@ -419,7 +419,7 @@
"inviteTextiOSPhone": "Para participar por teléfono, utiliza este número: {{number}},,{{conferenceID}}. Si buscas otro número, ésta es la lista completa: {{didUrl}}.",
"inviteURLFirstPartGeneral": "Estás invitado a unirte a una reunión.",
"inviteURLFirstPartPersonal": "{{name}} te esta invitando a una reunión.\n",
"inviteURLSecondPart": "\nLink para unirse a la reunión:\n{{url}}\n",
"inviteURLSecondPart": "\nEnlace para unirse a la reunión:\n{{url}}\n",
"label": "Información de la reunión",
"liveStreamURL": "Transmisión en vivo:",
"moreNumbers": "Más números",
@@ -456,13 +456,13 @@
"mute": "Activar o silenciar el micrófono",
"pushToTalk": "Presiona para hablar",
"raiseHand": "Levantar o bajar la mano",
"showSpeakerStats": "Mostrar estadísticas de los hablantes",
"showSpeakerStats": "Mostrar estadísticas de los participantes",
"toggleChat": "Abrir o cerrar el chat",
"toggleFilmstrip": "Mostrar u ocultar miniaturas de vídeo",
"toggleParticipantsPane": "Mostrar u ocultar el panel de participantes",
"toggleScreensharing": "Cambiar entre cámara y pantalla compartida",
"toggleShortcuts": "Mostrar u ocultar atajos del teclado",
"videoMute": "Prender o apagar la cámara"
"videoMute": "Encender o apagar la cámara"
},
"liveStreaming": {
"busy": "Nuestros servidores andan un poco ocupados. Vuelve a intentarlo en unos minutos.",
@@ -710,7 +710,7 @@
"videoLowQuality": "Prevemos que su video tendrá baja calidad en términos de velocidad de fotogramas y resolución.",
"videoTearing": "Prevemos que su video se pixelará o tendrá artefactos visuales."
},
"copyAndShare": "Copia y comparte el link de la reuinión",
"copyAndShare": "Copia y comparte el enlace de la reunión",
"dialInMeeting": "Entrar con llamada telefónica",
"dialInPin": "Marca a la reunión e ingresa el código:",
"dialing": "Marcando",
@@ -818,7 +818,7 @@
"desktopShareWarning": "Es necesario reiniciar la pantalla compartida para que los nuevos ajustes surtan efecto.",
"devices": "Dispositivos",
"followMe": "Todos me siguen",
"framesPerSecond": "fotogramas-por-segundo",
"framesPerSecond": "fotogramas por segundo",
"incomingMessage": "Mensaje entrante",
"language": "Idioma",
"loggedIn": "Sesión iniciada como {{name}}",
@@ -866,7 +866,7 @@
},
"share": {
"dialInfoText": "\n\n=====\n\n¿Deseas entrar por llamada telefónica?\n\n{{defaultDialInNumber}}La lista de números disponibles para la reunión está disponible aquí: \n{{dialInfoPageUrl}}",
"mainText": "Haz clic en el link para unirte a la reunión:\n{{roomUrl}}"
"mainText": "Haz clic en el enlace para unirte a la reunión:\n{{roomUrl}}"
},
"speaker": "Participante",
"speakerStats": {
@@ -938,7 +938,7 @@
"shareRoom": "Invitar a alguien",
"shareYourScreen": "Alternar pantalla compartida",
"shareaudio": "Compartir audio",
"sharedvideo": "Alternar vídeo compartido de YouTube",
"sharedvideo": "Alternar vídeo compartido",
"shortcuts": "Alternar accesos directos",
"show": "Mostrar en primer",
"silence": "Silencio",
@@ -1013,15 +1013,15 @@
"selectBackground": "Seleccionar fondo",
"shareRoom": "Invitar a alguien",
"shareaudio": "Compartir audio",
"sharedvideo": "Compartir un vídeo de YouTube",
"sharedvideo": "Compartir un vídeo",
"shortcuts": "Ver atajos del teclado",
"silence": "Silencio",
"speakerStats": "Estadísticas de los hablantes",
"speakerStats": "Estadísticas de los participantes",
"startScreenSharing": "Comenzar a compartir pantalla",
"startSubtitles": "Iniciar subtítulos",
"stopAudioSharing": "Dejar de compartir el audio",
"stopScreenSharing": "Dejar de compartir pantalla",
"stopSharedVideo": "Detener vídeo de YouTube",
"stopSharedVideo": "Detener vídeo",
"stopSubtitles": "Detener subtítulos",
"surprised": "Compartir audio",
"talkWhileMutedPopup": "¿Intentas hablar? Estás silenciado.",
@@ -1160,7 +1160,7 @@
"recentList": "Reciente",
"recentListDelete": "Eliminar",
"recentListEmpty": "Tu historial de reuniones está vacío. Reúnete y aparecerán aquí.",
"reducedUIText": "¡Bienvenid@ a {{app}}!",
"reducedUIText": "¡Bienvenido a {{app}}!",
"roomNameAllowedChars": "El nombre de la reunión no debe contener ninguno de estos caracteres: ?, &, :, ', \", %, #.",
"roomname": "Introduce el nombre de la sala",
"roomnameHint": "Introduce el nombre o URL de la sala a la que deseas unirte. Puedes inventar un nombre, simplemente infórmaselo a las personas con las que te reunirás para que introduzcan el mismo nombre.",

View File

@@ -359,7 +359,7 @@
"shareScreenWarningD2": "tienes que dejar de compartir el audio, empezar a compartir la pantalla y marcar la opción \"compartir el audio\".",
"shareScreenWarningH1": "Si quieres compartir sólo tu pantalla:",
"shareScreenWarningTitle": "Tienes que dejar de compartir el audio antes de compartir la pantalla",
"shareVideoLinkError": "Proporciona un enlace de YouTube correcto.",
"shareVideoLinkError": "Proporciona un enlace correcto.",
"shareVideoTitle": "Compartir un video",
"shareYourScreen": "Compartir pantalla",
"shareYourScreenDisabled": "Se desactivó la opción para compartir pantalla.",
@@ -964,7 +964,7 @@
"shareRoom": "Invitar a alguien",
"shareYourScreen": "Alternar pantalla compartida",
"shareaudio": "Compartir audio",
"sharedvideo": "Alternar video compartido de YouTube",
"sharedvideo": "Alternar video compartido",
"shortcuts": "Alternar accesos directos",
"show": "Mostrar en primer plano",
"silence": "Silencio",
@@ -1039,7 +1039,7 @@
"selectBackground": "Seleccionar fondo",
"shareRoom": "Invitar a alguien",
"shareaudio": "Compartir audio",
"sharedvideo": "Compartir un video de YouTube",
"sharedvideo": "Compartir un video",
"shortcuts": "Ver atajos del teclado",
"silence": "Silencio",
"speakerStats": "Estadísticas de los hablantes",
@@ -1048,7 +1048,7 @@
"startvideoblur": "Desenfocar mi fondo",
"stopAudioSharing": "Dejar de compartir el audio",
"stopScreenSharing": "Dejar de compartir pantalla",
"stopSharedVideo": "Detener video de YouTube",
"stopSharedVideo": "Detener video",
"stopSubtitles": "Detener subtítulos",
"stopvideoblur": "Desactivar desenfoque del fondo",
"surprised": "Compartir audio",

View File

@@ -266,7 +266,7 @@
"sendPrivateMessageTitle": "Saada privaatselt?",
"serviceUnavailable": "Teenus pole kättesaadav",
"sessTerminated": "Kõne lõpetatud",
"shareVideoLinkError": "Sisesta korrektne Youtubei link.",
"shareVideoLinkError": "Sisesta korrektne link.",
"shareVideoTitle": "Jaga videot",
"shareYourScreen": "Jaga ekraani",
"shareYourScreenDisabled": "Ekraani jagamine on keelatud.",
@@ -615,7 +615,7 @@
"remoteMute": "Lülita kasutaja mikrofon välja",
"shareRoom": "Kutsu",
"shareYourScreen": "Jaga ekraani",
"sharedvideo": "Kasuta YouTubei video jagamist",
"sharedvideo": "Kasuta video jagamist",
"shortcuts": "Kasuta kiirvalikuid",
"show": "Näita laval",
"speakerStats": "Kõnelejate statistika",
@@ -664,14 +664,14 @@
"raiseHand": "Tõsta/langeta kätt",
"raiseYourHand": "Tõsta kätt",
"shareRoom": "Kutsu",
"sharedvideo": "Jaga YouTubei videot",
"sharedvideo": "Jaga videot",
"shortcuts": "Vaata kiirvalikuid",
"speakerStats": "Kõneleja andmed",
"startScreenSharing": "Alust ekraani jagamist",
"startSubtitles": "Alusta subtiitrite näitamist",
"startvideoblur": "Tausta hägustamine",
"stopScreenSharing": "Lõpeta ekraani jagamine",
"stopSharedVideo": "Lõpeta YouTubei video",
"stopSharedVideo": "Lõpeta video",
"stopSubtitles": "Lõpeta subtiitrite näitamine",
"stopvideoblur": "Lülita tausta hägustamine välja",
"talkWhileMutedPopup": "Soovid rääkida? Mikrofon on välja lülitatud.",

View File

@@ -311,7 +311,7 @@
"serviceUnavailable": "Zerbitzua ez erabilgarria",
"sessTerminated": "Deia amaituta",
"sessionRestarted": "Deia zubiak berrabiarazi du",
"shareVideoLinkError": "Eman YouTube esteka zuzena.",
"shareVideoLinkError": "Eman esteka zuzena.",
"shareVideoTitle": "Partekatu bideoa",
"shareYourScreen": "Partekatu zure pantaila",
"shareYourScreenDisabled": "Pantaila-partekatzea desgaituta.",
@@ -823,7 +823,7 @@
"shareRoom": "norbait gonbidatu",
"shareYourScreen": "Txandakatu pantaila partekatzea",
"shareaudio": "Partekatu audioa",
"sharedvideo": "Txandakatu YouTube bideoa partekatzen",
"sharedvideo": "Txandakatu bideoa partekatzen",
"shortcuts": "Txandakatu lasterbideak",
"show": "Erakutsi",
"speakerStats": "Txandakatu hiztunen estatistikak",
@@ -883,13 +883,13 @@
"selectBackground": "Aukeratu atzeko planoa",
"shareRoom": "Gonbidatu norbait",
"shareaudio": "Partekatu audioa",
"sharedvideo": "Partekatu YouTube bideoa",
"sharedvideo": "Partekatu bideoa",
"shortcuts": "Ikusi lasterbideak",
"speakerStats": "Hizlariaren estatistikak",
"startScreenSharing": "Hasi pantaila partekatzen",
"startSubtitles": "Azpitituluak hasi",
"stopScreenSharing": "Gelditu pantaila partekatzea",
"stopSharedVideo": "YouTuben bideoa gelditu",
"stopSharedVideo": "Bideoa gelditu",
"stopSubtitles": "Azpitituluak gelditu",
"talkWhileMutedPopup": "Hitz egiten saiatzen ari al zara? Mututa zaude.",
"tileViewToggle": "Txandakatu fitxa ikuspegia",

View File

@@ -241,7 +241,7 @@
"screenSharingPermissionDeniedError": "Hups!Jokin meni vikaan näytönjakolaajennuksen käyttöoikeuksissa. Käynnistä uudelleen ja yritä sitten uudelleen.",
"serviceUnavailable": "Palvelu ei käytettävissä",
"sessTerminated": "Puhelu lopetettu",
"shareVideoLinkError": "Anna oikea YouTube-linkki.",
"shareVideoLinkError": "Anna oikea linkki.",
"shareVideoTitle": "Jaa video",
"shareYourScreen": "Jaa näyttö",
"shareYourScreenDisabled": "Näytönjako ei ole käytössä.",
@@ -568,7 +568,7 @@
"remoteMute": "Mykistä osanottaja",
"shareRoom": "Kutsu joku",
"shareYourScreen": "Säädä näytön jakoa",
"sharedvideo": "Säädä YouTube-videon jakoa",
"sharedvideo": "Säädä videon jakoa",
"shortcuts": "Säädä pikanäppäimiä",
"show": "",
"speakerStats": "Säädä puhujatilastoja",
@@ -605,14 +605,14 @@
"raiseHand": "Nosta/laske käsi",
"raiseYourHand": "Nosta käsi",
"shareRoom": "Kutsu joku",
"sharedvideo": "Jaa YouTube-video",
"sharedvideo": "Jaa video",
"shortcuts": "Näytä pikanäppäimet",
"speakerStats": "Puhujatilastot",
"startScreenSharing": "Aloita näytön jako",
"startSubtitles": "Käynnistä tekstitys",
"startvideoblur": "",
"stopScreenSharing": "Lopeta näytön jako",
"stopSharedVideo": "Pysäytä YouTube-video",
"stopSharedVideo": "Pysäytä video",
"stopSubtitles": "Lopeta tekstitys",
"stopvideoblur": "",
"talkWhileMutedPopup": "Yritätkö puhua? Olet mykistettynä.",

View File

@@ -361,7 +361,7 @@
"shareScreenWarningD2": "vous devez arrêter le partage d'audio, démarrer le partage d'écran et cocher l'option \"Partager l'audio\".",
"shareScreenWarningH1": "Si vous voulez partager uniquement votre écran:",
"shareScreenWarningTitle": "Vous devez cesser de partager votre audio avant de partager votre écran",
"shareVideoLinkError": "Veuillez renseigner un lien Youtube fonctionnel.",
"shareVideoLinkError": "Veuillez renseigner un lien de diffusion vidéo fonctionnel.",
"shareVideoTitle": "Partager une vidéo",
"shareYourScreen": "Partager votre écran",
"shareYourScreenDisabled": "Le partage d'écran est désactivé.",
@@ -1003,7 +1003,7 @@
"shareRoom": "Inviter quelqu'un",
"shareYourScreen": "Activer / Désactiver le partage d'écran",
"shareaudio": "Partager l'audio",
"sharedvideo": "Démarrer / Arrêter le partage de vidéo YouTube",
"sharedvideo": "Démarrer / Arrêter le partage de vidéo",
"shortcuts": "Afficher / Masquer les raccourcis",
"show": "Afficher en premier plan",
"silence": "Silence",
@@ -1080,7 +1080,7 @@
"selectBackground": "Sélectionner un arrière-plan",
"shareRoom": "Inviter quelqu'un",
"shareaudio": "Partager l'audio",
"sharedvideo": "Partager une vidéo YouTube",
"sharedvideo": "Partager une vidéo",
"shortcuts": "Afficher les raccourcis",
"silence": "Silence",
"speakerStats": "Statistiques de l'interlocuteur",
@@ -1088,7 +1088,7 @@
"startSubtitles": "Activer les sous-titres",
"stopAudioSharing": "Arrêter le partage son",
"stopScreenSharing": "Arrêter le partage d'écran",
"stopSharedVideo": "Arrêter la vidéo YouTube",
"stopSharedVideo": "Arrêter la vidéo",
"stopSubtitles": "Désactiver les sous-titres",
"surprised": "Surpris",
"talkWhileMutedPopup": "Vous voulez parler ? Votre micro est coupé.",

View File

@@ -251,7 +251,7 @@
"sendPrivateMessageTitle": "Envoyer en privé ?",
"serviceUnavailable": "Service non disponible",
"sessTerminated": "Appel terminé",
"shareVideoLinkError": "Veuillez fournir un lien YouTube correct.",
"shareVideoLinkError": "Veuillez fournir un lien correct.",
"shareVideoTitle": "Partager une vidéo",
"shareYourScreen": "Partager votre écran",
"shareYourScreenDisabled": "Le partage d'écran est désactivé.",
@@ -594,7 +594,7 @@
"remoteMute": "Mettre le participant en sourdine",
"shareRoom": "Inviter quelqu'un",
"shareYourScreen": "Basculement du partage d'écran",
"sharedvideo": "Basculement du partage de vidéo YouTube",
"sharedvideo": "Basculement du partage de vidéo",
"shortcuts": "Basculement des raccourcis",
"show": "",
"speakerStats": "Basculement des statistiques d'intervenant",
@@ -637,14 +637,14 @@
"raiseHand": "Lever / Abaisser votre main",
"raiseYourHand": "Lever votre main",
"shareRoom": "Inviter quelqu'un",
"sharedvideo": "Partager une vidéo YouTube",
"sharedvideo": "Partager une vidéo",
"shortcuts": "Voir les raccourcis",
"speakerStats": "Statistiques d'intervenant",
"startScreenSharing": "Démarrer le partage d'écran",
"startSubtitles": "Activer les sous-titres",
"startvideoblur": "Brouiller mon arrière plan",
"stopScreenSharing": "Arrêter le partage d'écran",
"stopSharedVideo": "Arrêter la vidéo YouTube",
"stopSharedVideo": "Arrêter la vidéo",
"stopSubtitles": "Désactiver les sous-titres",
"stopvideoblur": "Désactiver le brouillage d'arrière-plan",
"talkWhileMutedPopup": "Vous essayez de parler? Vous êtes en sourdine.",

View File

@@ -256,7 +256,7 @@
"sendPrivateMessageTitle": "Enviar por privado?",
"serviceUnavailable": "O servizo non está dispoñíbel",
"sessTerminated": "Terminouse a chamada",
"shareVideoLinkError": "Forneza unha ligazón de YouTube correcta.",
"shareVideoLinkError": "Forneza unha ligazón correcta.",
"shareVideoTitle": "Compartir un vídeo",
"shareYourScreen": "Compartir a súa pantalla",
"shareYourScreenDisabled": "Compartición de pantalla desactivada.",
@@ -599,7 +599,7 @@
"remoteMute": "Silenciar participante",
"shareRoom": "Convidar a alguén",
"shareYourScreen": "Trocar a pantalla compartida",
"sharedvideo": "Trocar a compartición de YouTube",
"sharedvideo": "Trocar a compartición",
"shortcuts": "Trocar atallos",
"show": "Amosar en primeiro plano",
"speakerStats": "Trocar as estatísticas do falante",
@@ -644,14 +644,14 @@
"raiseHand": "Levantar / Baixar a man",
"raiseYourHand": "Levantar a súa man",
"shareRoom": "Convidar a alguén",
"sharedvideo": "Compartir un vídeo de YouTube",
"sharedvideo": "Compartir un vídeo",
"shortcuts": "Ver atallos de teclado",
"speakerStats": "Estatísticas de falante",
"startScreenSharing": "Comezar a compartir pantalla",
"startSubtitles": "Comezar subtítulos",
"startvideoblur": "Difuminar o meu fondo",
"stopScreenSharing": "Parar de compartir pantalla",
"stopSharedVideo": "Parar o vídeo de YouTube",
"stopSharedVideo": "Parar o vídeo",
"stopSubtitles": "Parar subtítulos",
"stopvideoblur": "Desactivar o difuminado do fondo",
"talkWhileMutedPopup": "Está a tentar falar? Está silenciado.",

View File

@@ -246,7 +246,7 @@
"screenSharingPermissionDeniedError": "Uh! Nešto se dogodilo s vašim dijeljenjem dozvola za proširenje na zaslonu. Ponovno učitajte i pokušajte ponovno.",
"serviceUnavailable": "",
"sessTerminated": "",
"shareVideoLinkError": "Unesite točnu vezu na youtube.",
"shareVideoLinkError": "Unesite točnu vezu.",
"shareVideoTitle": "Dijelite videozapis",
"shareYourScreen": "Dijelite vaš ekran",
"shareYourScreenDisabled": "Dijeljenje ekrana je isključeno.",
@@ -610,14 +610,14 @@
"raiseHand": "Podigni / spusti ruku",
"raiseYourHand": "Podigni ruku",
"shareRoom": "Pozovi nekoga",
"sharedvideo": "Podijeli YouTube videozapis",
"sharedvideo": "Podijeli videozapis",
"shortcuts": "Prikaz prečaca",
"speakerStats": "Statistika govornika",
"startScreenSharing": "Pokreni dijeljenje ekrana",
"startSubtitles": "Pokreni podnaslove",
"startvideoblur": "",
"stopScreenSharing": "Zaustavi dijeljenje ekrana",
"stopSharedVideo": "Zaustavi YouTube videozapis",
"stopSharedVideo": "Zaustavi videozapis",
"stopSubtitles": "Zaustavi podnaslove",
"stopvideoblur": "",
"talkWhileMutedPopup": "Pokušavaš govoriti? Utišan si.",

View File

@@ -268,7 +268,7 @@
"sendPrivateMessageTitle": "Privátban legyen elküldve?",
"serviceUnavailable": "Szolgáltatás nem elérhető",
"sessTerminated": "Hívás megszakadt",
"shareVideoLinkError": "Adjon meg egy helyes YouTube linket.",
"shareVideoLinkError": "Adjon meg egy helyes linket.",
"shareVideoTitle": "Videó megosztása",
"shareYourScreen": "Képernyő megosztása",
"shareYourScreenDisabled": "Képernyőmegosztás letiltva.",
@@ -624,7 +624,7 @@
"remoteMute": "Résztvevők némítása",
"shareRoom": "Valaki meghívása",
"shareYourScreen": "Képernyőmegosztás átváltása",
"sharedvideo": "YouTube videó megosztásának átváltása",
"sharedvideo": "Videó megosztásának átváltása",
"shortcuts": "Gyorsbillentyűk átváltása",
"show": "Megjelenítés a színpadon",
"speakerStats": "Beszélő statisztika átváltása",
@@ -674,14 +674,14 @@
"raiseHand": "Kéz felemelése / leengedése",
"raiseYourHand": "Kéz felemelése",
"shareRoom": "Valaki meghívása",
"sharedvideo": "YouTube videó megosztása",
"sharedvideo": "Videó megosztása",
"shortcuts": "Gyorsbillentyűk megtekintése",
"speakerStats": "Beszélő statisztika",
"startScreenSharing": "Képernyőmegosztás kezdése",
"startSubtitles": "Feliratok kezdése",
"startvideoblur": "Háttér elhomályosítása",
"stopScreenSharing": "Képernyőmegosztás leállítása",
"stopSharedVideo": "YouTube videó leállítása",
"stopSharedVideo": "Videó leállítása",
"stopSubtitles": "Felirat leállítása",
"stopvideoblur": "Háttér elhomályosításának letiltása",
"talkWhileMutedPopup": "Úgy tűnik beszélni szeretne, de le van némítva.",

View File

@@ -267,7 +267,7 @@
"sendPrivateMessageTitle": "Send privately?",
"serviceUnavailable": "Service unavailable",
"sessTerminated": "Call terminated",
"shareVideoLinkError": "Please provide a correct youtube link.",
"shareVideoLinkError": "Please provide a correct link.",
"shareVideoTitle": "Share a video",
"shareYourScreen": "Share your screen",
"shareYourScreenDisabled": "Screen sharing disabled.",
@@ -627,7 +627,7 @@
"remoteMute": "Mute participant",
"shareRoom": "Invite someone",
"shareYourScreen": "Toggle screenshare",
"sharedvideo": "Toggle Youtube video sharing",
"sharedvideo": "Toggle video sharing",
"shortcuts": "Toggle shortcuts",
"show": "Show on stage",
"speakerStats": "Toggle speaker statistics",
@@ -677,14 +677,14 @@
"raiseHand": "Raise / Lower your hand",
"raiseYourHand": "Raise your hand",
"shareRoom": "Invite someone",
"sharedvideo": "Share a YouTube video",
"sharedvideo": "Share video",
"shortcuts": "View shortcuts",
"speakerStats": "Speaker stats",
"startScreenSharing": "Start screen sharing",
"startSubtitles": "Start subtitles",
"startvideoblur": "Blur my background",
"stopScreenSharing": "Stop screen sharing",
"stopSharedVideo": "Stop YouTube video",
"stopSharedVideo": "Stop video",
"stopSubtitles": "Stop subtitles",
"stopvideoblur": "Disable background blur",
"talkWhileMutedPopup": "Trying to speak? You are muted.",

View File

@@ -267,7 +267,7 @@
"sendPrivateMessageTitle": "Senda sem einkamál?",
"serviceUnavailable": "Þjónustan er ekki tiltæk",
"sessTerminated": "Símtali er lokið",
"shareVideoLinkError": "Settu inn réttan YouTube-tengil.",
"shareVideoLinkError": "Settu inn réttan tengil.",
"shareVideoTitle": "Deila myndmerki",
"shareYourScreen": "Deila skjánum þínum",
"shareYourScreenDisabled": "Skjádeiling er óvirk.",
@@ -623,7 +623,7 @@
"remoteMute": "Þagga niður í þátttakanda",
"shareRoom": "Bjóddu einhverjum",
"shareYourScreen": "Víxla skjádeilingu af/á",
"sharedvideo": "Víxla deilingu Youtube-myndskeiðs af/á",
"sharedvideo": "Víxla deilingu myndskeiðs af/á",
"shortcuts": "Víxla flýtilyklum af/á",
"show": "Birta í glugga",
"speakerStats": "Víxla tölfræði ræðumanna af/á",
@@ -673,14 +673,14 @@
"raiseHand": "Rétta upp / Leggja niður hönd",
"raiseYourHand": "Rétta upp höndina",
"shareRoom": "Bjóddu einhverjum",
"sharedvideo": "Deila YouTube-myndskeiði",
"sharedvideo": "Deila myndskeiði",
"shortcuts": "Skoða flýtilykla",
"speakerStats": "Tölfræði ræðumanns",
"startScreenSharing": "Hefja skjádeilingu",
"startSubtitles": "Hefja birtingu skjátexta",
"startvideoblur": "Móða bakgrunninn minn",
"stopScreenSharing": "Hætta skjádeilingu",
"stopSharedVideo": "Stöðva YouTube-myndskeið",
"stopSharedVideo": "Stöðva myndskeið",
"stopSubtitles": "Hætta birtingu skjátexta",
"stopvideoblur": "Gera móðun bakgrunns óvirka",
"talkWhileMutedPopup": "Ertu að reyna að tala? Þaggað er niður í þér.",

View File

@@ -338,7 +338,7 @@
"shareScreenWarningD2": "devi fermare la condivisione audio, avvia la condivisione dello schermo e spunta \"condividi audio\" option.",
"shareScreenWarningH1": "Se vuoi condividere solo lo schermo:",
"shareScreenWarningTitle": "Ferma la condivisione audio, per condividere lo schermo",
"shareVideoLinkError": "Fornire un link youtube corretto.",
"shareVideoLinkError": "Fornire un link corretto.",
"shareVideoTitle": "Condividi un video",
"shareYourScreen": "Condividi schermo",
"shareYourScreenDisabled": "Condivisione schermo disabilitata.",
@@ -938,7 +938,7 @@
"shareRoom": "Invita qualcuno",
"shareYourScreen": "Attiva/disattiva condivisione schermo",
"shareaudio": "Condividi audio",
"sharedvideo": "Attiva/disattiva condivisione YouTube",
"sharedvideo": "Attiva/disattiva condivisione",
"shortcuts": "Attiva/disattiva scorciatoie",
"show": "Mostra in primo piano",
"silence": "Silenzio",
@@ -1013,14 +1013,14 @@
"selectBackground": "Scegli sfondo",
"shareRoom": "Invita partecipante",
"shareaudio": "Condividi audio",
"sharedvideo": "Condividi un video Youtube",
"sharedvideo": "Condividi un video",
"shortcuts": "Visualizza scorciatoie",
"silence": "Silenzio",
"speakerStats": "Statistiche",
"startScreenSharing": "Inizia la condivisione dello schermo",
"startSubtitles": "Avvia sottotitoli",
"stopScreenSharing": "Ferma la condivisione dello schermo",
"stopSharedVideo": "Ferma video YouTube",
"stopSharedVideo": "Ferma video",
"stopSubtitles": "Ferma sottotitoli",
"surprised": "Sopresa",
"talkWhileMutedPopup": "Stai provando a parlare? Il microfono è disattivato.",

File diff suppressed because it is too large Load Diff

View File

@@ -938,7 +938,7 @@
"shareRoom": "Snubget-d albaɛḍ",
"shareYourScreen": "Rmed/Sens beṭṭu n ugdil",
"shareaudio": "Bḍu ameslaw",
"sharedvideo": "Rmed/Sens beṭṭu n tvidyut n Youtube",
"sharedvideo": "Rmed/Sens beṭṭu n tvidyut",
"shortcuts": "Rmed/Sens inegzumen",
"show": "Sken ɣef usayes",
"silence": "Tasusmi",
@@ -1013,7 +1013,7 @@
"selectBackground": "Fren agilal",
"shareRoom": "Snubget-d albaɛḍ",
"shareaudio": "Bḍu ameslaw",
"sharedvideo": "Bḍu tavidyut n Youtube",
"sharedvideo": "Bḍu tavidyut",
"shortcuts": "Wali inegzumen",
"silence": "Tasusmi",
"speakerStats": "Addad n yimsiwlen",
@@ -1021,7 +1021,7 @@
"startSubtitles": "Bdu iduzwilen",
"stopAudioSharing": "Seḥbes beṭṭu n umeslaw",
"stopScreenSharing": "Seḥbes beṭṭu n ugdil",
"stopSharedVideo": "Seḥbes tavidyut n Youtube",
"stopSharedVideo": "Seḥbes tavidyut",
"stopSubtitles": "Seḥbes iduzwilen",
"surprised": "Awham",
"talkWhileMutedPopup": "Tettaɛraḍeḍ ad d-temmeslayeḍ? Tettwasgugmeḍ.",

View File

@@ -266,7 +266,7 @@
"sendPrivateMessageTitle": "Siųsti privačiai?",
"serviceUnavailable": "Paslaugos neteikiamos",
"sessTerminated": "Skambutis nutrauktas",
"shareVideoLinkError": "Prašome pateikti teisinga Youtube adresą.",
"shareVideoLinkError": "Prašome pateikti teisinga adresą.",
"shareVideoTitle": "Dalintis video",
"shareYourScreen": "Dalintis ekrano vaizdu",
"shareYourScreenDisabled": "Ekrano dalinimasis negalimas.",
@@ -615,7 +615,7 @@
"remoteMute": "Nutildyti dalyvius",
"shareRoom": "Pakviesti ką nors",
"shareYourScreen": "Perjungti vaizdo dalinimasi",
"sharedvideo": "Perjungti Youtube vaizdo dalinimasi",
"sharedvideo": "Perjungti vaizdo dalinimasi",
"shortcuts": "Perjungti trumpinius",
"show": "Rodyti viešai",
"speakerStats": "Perjungti garsiakalbio nuostatas",
@@ -665,14 +665,14 @@
"raiseHand": "Pakelti / Nuleisti ranką",
"raiseYourHand": "Pakelti ranką",
"shareRoom": "Pakviesti ką nors",
"sharedvideo": "Pasidalinkite Youtube video",
"sharedvideo": "Pasidalinkite video",
"shortcuts": "Peržiūrėti trumpinius",
"speakerStats": "Garsiakalbio pasirinktys",
"startScreenSharing": "Pradėti ekrano dalinimasi",
"startSubtitles": "Įjungti subtitrus",
"startvideoblur": "Sulieti foną",
"stopScreenSharing": "Nebesidalinti vaizdu",
"stopSharedVideo": "Išjungti Youtube vaizdą",
"stopSharedVideo": "Išjungti vaizdą",
"stopSubtitles": "Išjungti subtitrus",
"stopvideoblur": "Nesulieti fono",
"talkWhileMutedPopup": "Ar bandote kalbėti? Jūs esate begarsio rėžime.",

View File

@@ -260,7 +260,7 @@
"sendPrivateMessageTitle": "Vēlaties nosūtīt privātu ziņu?",
"serviceUnavailable": "Pakalpojums nepieejams",
"sessTerminated": "Sesija beigusies",
"shareVideoLinkError": "Lūdzu, norādiet derīgu Youtube saiti.",
"shareVideoLinkError": "Lūdzu, norādiet derīgu saiti.",
"shareVideoTitle": "Kopīgot video",
"shareYourScreen": "Kopīgot ekrānu",
"shareYourScreenDisabled": "Ekrāna kopīgošana izslēgta",
@@ -605,7 +605,7 @@
"remoteMute": "Atslēgt dalībnieka mikrofonu",
"shareRoom": "Nosūtīt uzaicinājumu",
"shareYourScreen": "Ekrāna kopīgošana (iesl./izsl.)",
"sharedvideo": "Pārslēgt Youtube video kopīgošanu (iesl./izsl.)",
"sharedvideo": "Pārslēgt video kopīgošanu (iesl./izsl.)",
"shortcuts": "Īstaustiņi (iesl./izsl.)",
"show": "Rādīt tuvplānā",
"speakerStats": "Statistika (iesl./izsl.)",
@@ -653,14 +653,14 @@
"raiseHand": "Vēlos runāt (pacelt/nolaist roku)",
"raiseYourHand": "Pacelt roku",
"shareRoom": "Nosūtīt uzaicinājumu",
"sharedvideo": "Sākt kopīgot YouTube video",
"sharedvideo": "Sākt kopīgot video",
"shortcuts": "Īstaustiņi (taustiņu kombinācijas)",
"speakerStats": "Statistika",
"startScreenSharing": "Sākt ekrāna kopīgošanu",
"startSubtitles": "Ieslēgt subtitrus",
"startvideoblur": "Kameras fona izpludināšanu ieslēgt",
"stopScreenSharing": "Beigt ekrāna kopīgošanu",
"stopSharedVideo": "Beigt kopīgot YouTube video",
"stopSharedVideo": "Beigt kopīgot video",
"stopSubtitles": "Izslēgt subtitrus",
"stopvideoblur": "Kameras fona izpludināšanu izslēgt",
"talkWhileMutedPopup": "Cenšaties runāt? Jums atlsēgta skaņa.",

View File

@@ -2,6 +2,7 @@
"addPeople": {
"add": "Uitnodigen",
"addContacts": "Nodig uw contacten uit",
"contacts": "contacten",
"copyInvite": "Uitnodiging voor vergadering kopiëren",
"copyLink": "Link naar vergadering kopiëren",
"copyStream": "Link naar livestream kopiëren",
@@ -16,15 +17,10 @@
"inviteMoreMailSubject": "Deelnemen aan {{appName}}-vergadering",
"inviteMorePrompt": "Nodig meer personen uit",
"linkCopied": "Link gekopieerd naar klembord",
"loading": "Personen en telefoonnummers aan het zoeken",
"loadingNumber": "Telefoonnummer aan het valideren",
"loadingPeople": "Personen om uit te nodigen aan het zoeken",
"noResults": "Geen resultaten die overeenkomen met de zoekopdracht",
"noValidNumbers": "Voer een telefoonnummer in",
"outlookEmail": "Outlook e-mail",
"searchNumbers": "Telefoonnummers toevoegen",
"searchPeople": "Personen zoeken",
"searchPeopleAndNumbers": "Personen zoeken of hun telefoonnummers toevoegen",
"phoneNumbers": "telefoonnummers",
"searching": "Zoeken...",
"shareInvite": "Uitnodiging voor vergadering delen",
"shareLink": "Deel de link naar de vergadering om anderen uit te nodigen",
"shareStream": "Deel de link naar de livestream",
@@ -42,6 +38,27 @@
"audioOnly": {
"audioOnly": "Lage bandbreedte"
},
"blankPage": {
"meetingEnded": "Vergadering beëindigd."
},
"breakoutRooms": {
"actions": {
"add": "Aparte vergaderruimte toevoegen",
"close": "Sluiten",
"join": "Deelnemen",
"leaveBreakoutRoom": "Verlaat aparte vergaderruimte",
"more": "Meer",
"remove": "Verwijderen",
"sendToBreakoutRoom": "Stuur deelnemer naar:"
},
"defaultName": "Aparte vergaderruimte #{{index}}",
"mainRoom": "Hoofdruimte",
"notifications": {
"joined": "Aparte vergaderruimte \"{{name}}\" binnentreden",
"joinedMainRoom": "Hoofdruimte binnentreden",
"joinedTitle": "Aparte vergaderruimtes"
}
},
"calendarSync": {
"addMeetingURL": "Een link naar een vergadering toevoegen",
"confirmAddLink": "Wilt u een Jitsi-link aan deze afspraak toevoegen?",
@@ -87,6 +104,7 @@
},
"chromeExtensionBanner": {
"buttonText": "Installeer Chrome Extensie",
"close": "Sluiten",
"dontShowAgain": "Laat me dit niet meer zien",
"installExtensionText": "Installeer de extensie voor Google Calendar en Office 365 integratie"
},
@@ -160,7 +178,8 @@
"joinInApp": "Deelnemen aan deze vergadering met de app",
"launchWebButton": "Starten in web",
"title": "Uw vergadering wordt gestart in {{app}}...",
"tryAgainButton": "Opnieuw proberen in desktop"
"tryAgainButton": "Opnieuw proberen in desktop",
"unsupportedBrowser": "Het lijkt erop dat u een browser gebruikt die wij niet ondersteunen."
},
"defaultLink": "bijv. {{url}}",
"defaultNickname": "bijv. Jannie Roze",
@@ -259,17 +278,21 @@
"micPermissionDeniedError": "U hebt geen toestemming verleend om uw microfoon te gebruiken. U kunt wel deelnemen aan de vergadering, maar anderen kunnen u niet horen. Gebruik de cameraknop in de adresbalk om dit op te lossen.",
"micTimeoutError": "Kan de microfoon niet gebruiken vanwege een timeout fout.",
"micUnknownError": "Kan de microfoon om een onbekende reden niet gebruiken.",
"moderationAudioLabel": "Sta deelnemers toe om voor henzelf dempen op te heffen",
"moderationVideoLabel": "Sta deelnemers toe om hun camera aan te zetten",
"muteEveryoneDialog": "Weet u zeker dat u iedereen wilt dempen? U kunt het dempen niet opheffen, maar zij kunnen dit wel ieder moment zelf doen.",
"muteEveryoneDialogModerationOn": "De deelnemers kunnen te allen tijde een verzoek om te spreken indienen.",
"muteEveryoneElseDialog": "Eenmaal gedempt kunt u het dempen niet opheffen, maar zij kunnen dit wel ieder moment zelf doen.",
"muteEveryoneElseTitle": "Iedereen dempen behalve {{whom}}?",
"muteEveryoneElsesVideoDialog": "Als u de camera's uitzet kan u hem niet meer aanzetten, maar de andere deelnemers kunnen dit wel ieder moment zelf doen.",
"muteEveryoneElsesVideoDialog": "Als u de camera's uitzet kunt u hem niet meer aanzetten, maar de andere deelnemers kunnen dit wel ieder moment zelf doen.",
"muteEveryoneElsesVideoTitle": "De camera van iedereen behalve {{whom}} uitzetten?",
"muteEveryoneSelf": "uzelf",
"muteEveryoneStartMuted": "Iedereen start vanaf nu gedempt",
"muteEveryoneTitle": "Iedereen dempen?",
"muteEveryonesVideoDialog": "Weet u zeker dat u iedereen zijn camera uit wilt zetten? Als u de camera's uitzet kan u hem niet meer aanzetten, maar de andere deelnemers kunnen dit wel ieder moment zelf doen.",
"muteEveryonesVideoDialog": "Weet u zeker dat u de camera van iedereen wilt uitzetten? Als u de camera's uitzet kunt u deze niet meer aanzetten, maar de andere deelnemers kunnen dit wel ieder moment zelf doen.",
"muteEveryonesVideoDialogModerationOn": "De deelnemers kunnen te allen tijde een verzoek om hun camera aan te zetten indienen.",
"muteEveryonesVideoDialogOk": "Uitzetten",
"muteEveryonesVideoTitle": "Iedereen zijn camera uitzetten?",
"muteEveryonesVideoTitle": "Camera van iedereen uitzetten?",
"muteParticipantBody": "U kunt het dempen niet opheffen, maar zij kunnen dit wel ieder moment zelf doen.",
"muteParticipantButton": "Dempen",
"muteParticipantDialog": "Weet u zeker dat u deze deelnemer wilt dempen? U kunt het dempen niet opheffen, maar deze deelnemer kan dit wel ieder moment zelf doen.",
@@ -312,7 +335,7 @@
"serviceUnavailable": "Service niet beschikbaar",
"sessTerminated": "Gesprek beëindigd",
"sessionRestarted": "Gesprek herstart door de server",
"shareVideoLinkError": "Geef een juiste YouTube-link op",
"shareVideoLinkError": "Geef een juiste link op",
"shareVideoTitle": "Een video delen",
"shareYourScreen": "Uw scherm delen",
"shareYourScreenDisabled": "Schermdeling is uitgeschakeld.",
@@ -368,6 +391,7 @@
"addPassword": "$t(lockRoomPasswordUppercase) toevoegen",
"cancelPassword": "$t(lockRoomPasswordUppercase) annuleren",
"conferenceURL": "Link:",
"copyNumber": "Kopieer nummer",
"country": "Land",
"dialANumber": "Om deel te nemen aan uw vergadering, belt u een van deze nummers en voert u vervolgens de pincode in.",
"dialInConferenceID": "Pincode:",
@@ -421,7 +445,7 @@
"toggleFilmstrip": "Videominiaturen weergeven of verbergen",
"toggleScreensharing": "Wisselen tussen camera en schermdeling",
"toggleShortcuts": "Sneltoetsen weergeven of verbergen",
"videoMute": "Uw camera starten of stoppen"
"videoMute": "Uw camera aanzetten of uitzetten"
},
"liveStreaming": {
"busy": "Er wordt gewerkt aan het vrijmaken van streamingmiddelen. Probeer het over enkele minuten opnieuw.",
@@ -458,6 +482,8 @@
"youtubeTerms": "Servicevoorwaarden YouTube"
},
"lobby": {
"admit": "Toelaten",
"admitAll": "Allen toelaten",
"allow": "Toestaan",
"backToKnockModeButton": "Geen wachtwoord, vraag om deel te mogen nemen",
"dialogTitle": "Lobby-modus",
@@ -469,6 +495,7 @@
"enableDialogText": "Met de lobby-modus kunt u uw vergadering beveiligen, door deelnemers alleen toe te laten na een formele goedkeuring van een moderator.",
"enterPasswordButton": "Voer wachtwoord voor vergadering in",
"enterPasswordTitle": "Voer wachtwoord in om deel te nemen aan vergadering",
"errorMissingPassword": "Voer alstublieft het wachtwoord van de vergadering in",
"invalidPassword": "Ongeldig wachtwoord",
"joinRejectedMessage": "Uw verzoek tot deelname is afgewezen door een moderator.",
"joinTitle": "Deelnemen aan vergadering",
@@ -488,6 +515,7 @@
"passwordField": "Voer wachtwoord voor vergadering in",
"passwordJoinButton": "Deelnemen",
"reject": "Afwijzen",
"rejectAll": "Allen afwijzen",
"toggleLabel": "Lobby inschakelen"
},
"localRecording": {
@@ -528,18 +556,35 @@
"me": "ik",
"notify": {
"OldElectronAPPTitle": "Beveiligingskwetsbaarheid!",
"allowAction": "Toestaan",
"allowedUnmute": "U kunt het dempen van uw microfoon opheffen, uw camera aanzetten of uw scherm delen.",
"audioUnmuteBlockedTitle": "Dempen opheffen is geblokkeerd!",
"chatMessages": "Chatberichten",
"connectedOneMember": "{{name}} neemt nu deel aan de vergadering",
"connectedThreePlusMembers": "{{name}} en {{count}} anderen nemen nu deel aan de vergadering",
"connectedTwoMembers": "{{first}} en {{second}} nemen nu deel aan de vergadering",
"disconnected": "verbinding verbroken",
"displayNotifications": "Toon meldingen voor",
"focus": "Focus van vergadering",
"focusFail": "{{component}} niet beschikbaar - probeer over {{ms}} sec. opnieuw",
"grantedTo": "Moderatorrechten verleend aan {{to}}!",
"groupTitle": "Meldingen",
"hostAskedUnmute": "De moderator wil graag dat u spreekt",
"invitedOneMember": "{{name}} is uitgenodigd",
"invitedThreePlusMembers": "{{name}} en {{count}} anderen zijn uitgenodigd",
"invitedTwoMembers": "{{first}} en {{second}} zijn uitgenodigd",
"kickParticipant": "{{kicked}} is verwijderd door {{kicker}}",
"leftOneMember": "{{name}} heeft de vergadering verlaten",
"leftThreePlusMembers": "{{name}} en vele anderen hebben de vergadering verlaten",
"leftTwoMembers": "{{first}} en {{second}} hebben de vergadering verlaten",
"me": "Ik",
"moderationInEffectCSDescription": "Steek uw hand op als u uw scherm wilt delen.",
"moderationInEffectCSTitle": "Schermdelen is geblokkeerd door de moderator",
"moderationInEffectDescription": "Steek uw hand op als u wilt spreken.",
"moderationInEffectTitle": "Uw microfoon is gedempt door de moderator",
"moderationInEffectVideoDescription": "Steek uw hand op als u uw camera wilt aanzetten.",
"moderationInEffectVideoTitle": "Uw camera is geblokkeerd door de moderator",
"moderationRequestFromModerator": "De host vraagt u om dempen op te heffen",
"moderationRequestFromParticipant": "Wil graag spreken",
"moderator": "Moderatorrechten verleend!",
"muted": "U hebt het gesprek gedempt gestart.",
"mutedRemotelyDescription": "U kunt het dempen altijd opheffen wanneer u klaar bent om te spreken. Demp opnieuw wanneer u klaar bent, om ruis buiten de vergadering te houden.",
@@ -551,9 +596,15 @@
"oldElectronClientDescription1": "Het lijkt erop dat u een oude versie van Jitsi Meet gebruikt, waarvan beveiligingskwetsbaarheden bekend zijn. Zorg ervoor dat u nu bijwerkt naar de ",
"oldElectronClientDescription2": "nieuwste versie",
"oldElectronClientDescription3": "!",
"participantWantsToJoin": "Wil deelnemen aan de vergadering",
"participantsWantToJoin": "Willen deelnemen aan de vergadering",
"passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) verwijderd door een andere deelnemer",
"passwordSetRemotely": "$t(lockRoomPasswordUppercase) ingesteld door een ander deelnemer",
"raiseHandAction": "Hand opsteken",
"raisedHand": "{{name}} zou graag willen spreken.",
"raisedHands": "{{participantName}} en {{raisedHands}} meer mensen",
"reactionSounds": "Geluiden uitschakelen",
"reactionSoundsForAll": "Geluiden uitschakelen voor iedereen",
"somebody": "Iemand",
"startSilentDescription": "Neem opnieuw aan de vergadering deel om audio in te schakelen",
"startSilentTitle": "U neemt deel zonder audio-output!",
@@ -561,7 +612,37 @@
"suboptimalExperienceTitle": "Browserwaarschuwing",
"unmute": "Dempen opheffen",
"videoMutedRemotelyDescription": "U kan hem ten alle tijden weer aanzetten.",
"videoMutedRemotelyTitle": "Uw camera is uitgezet door {{participantDisplayName}}!"
"videoMutedRemotelyTitle": "Uw camera is uitgezet door {{participantDisplayName}}!",
"viewLobby": "Lobby bekijken",
"waitingParticipants": "{{waitingParticipants}} mensen"
},
"participantsPane": {
"actions": {
"allow": "Sta deelnemers toe:",
"allowVideo": "Video toestaan",
"askUnmute": "Vragen om dempen op te heffen",
"audioModeration": "Voor henzelf dempen op te heffen",
"blockEveryoneMicCamera": "Blokkeer microfoon en camera van allen",
"invite": "Iemand uitnodigen",
"moreModerationActions": "Meer moderatoropties",
"moreModerationControls": "Meer moderatorinstellingen",
"moreParticipantOptions": "Meer deelnemeropties",
"mute": "Dempen",
"muteAll": "Allen dempen",
"muteEveryoneElse": "Alle anderen dempen",
"stopEveryonesVideo": "Camera's van iedereen uitzetten",
"stopVideo": "Camera uitzetten",
"unblockEveryoneMicCamera": "Deblokkeer microfoon en camera van allen",
"videoModeration": "Hun camera aan te zetten"
},
"close": "Sluiten",
"header": "Deelnemers",
"headings": {
"lobby": "Lobby ({{count}})",
"participantsList": "Deelnemers aan vergadering ({{count}})",
"waitingLobby": "In de lobby aan het wachten ({{count}})"
},
"search": "Zoek deelnemers"
},
"passwordDigitsOnly": "Maximaal {{number}} cijfers",
"passwordSetRemotely": "ingesteld door een andere deelnemer",
@@ -627,6 +708,7 @@
"joinAudioByPhone": "Deelnemen met telefoonaudio",
"joinMeeting": "Deelnemen aan de vergadering",
"joinWithoutAudio": "Deelnemen zonder audio",
"keyboardShortcuts": "Sneltoetsen inschakelen",
"linkCopied": "Link gekopieerd naar klembord",
"lookGood": "Het klinkt alsof uw microfoon naar behoren werkt",
"or": "of",
@@ -652,6 +734,9 @@
"rejected": "Geweigerd",
"ringing": "Gaat over..."
},
"privacyView": {
"header": "Privacy"
},
"profile": {
"setDisplayNameLabel": "Uw weergavenaam instellen",
"setEmailInput": "Voer e-mailadres in",
@@ -705,8 +790,13 @@
"signedIn": "Agenda-afspraken voor {{email}} worden uitgelezen. Klik op de knop 'Verbinding verbreken' hieronder om de toegang tot agenda-afspraken te stoppen.",
"title": "Agenda"
},
"desktopShareFramerate": "Framesnelheid schermdeling",
"desktopShareHighFpsWarning": "Een hogere framesnelheid voor schermdeling kan invloed hebben op de bandbreedte. U moet het schermdelen opnieuw beginnen om de nieuwe instellingen toe te passen.",
"desktopShareWarning": "U moet het schermdelen opnieuw beginnen om de nieuwe instellingen toe te passen.",
"devices": "Apparaten",
"followMe": "Iedereen volgt mij",
"framesPerSecond": "beelden per seconde",
"incomingMessage": "Binnenkomend bericht",
"language": "Taal",
"loggedIn": "Aangemeld als {{name}}",
"microphones": "Microfoons",
@@ -717,8 +807,11 @@
"selectAudioOutput": "Audio-uitvoer",
"selectCamera": "Camera",
"selectMic": "Microfoon",
"selfView": "Eigen beeld",
"sounds": "Geluiden",
"speakers": "Speakers",
"startAudioMuted": "Iedereen start gedempt",
"startReactionsMuted": "Reactiegeluiden voor iedereen dempen",
"startVideoMuted": "Iedereen start verborgen",
"title": "Instellingen"
},
@@ -773,6 +866,7 @@
"Settings": "Instellingen in- of uitschakelen",
"audioOnly": "Alleen audio in- of uitschakelen",
"audioRoute": "Het afspeelapparaat selecteren",
"breakoutRoom": "Neem deel aan/verlaat aparte vergaderruimte",
"callQuality": "Videokwaliteit beheren",
"cc": "Ondertiteling in- of uitschakelen",
"chat": "Chatvenster in- of uitschakelen",
@@ -795,8 +889,6 @@
"mute": "Audio dempen in- of uitschakelen",
"muteEveryone": "Iedereen dempen",
"muteEveryoneElse": "Alle anderen dempen",
"muteEveryoneElsesVideo": "Alle andere camera's uitschakelen",
"muteEveryonesVideo": "Alle camera's uitschakelen",
"pip": "Picture-in-Picture-modus in- of uitschakelen",
"privateMessage": "Verstuur privébericht",
"profile": "Uw profiel bewerken",
@@ -809,7 +901,7 @@
"shareRoom": "Iemand uitnodigen",
"shareYourScreen": "Schermdeling in- of uitschakelen",
"shareaudio": "Audio delen",
"sharedvideo": "YouTube-video delen in- of uitschakelen",
"sharedvideo": "Video delen in- of uitschakelen",
"shortcuts": "Sneltoetsen in- of uitschakelen",
"show": "Op podium weergeven",
"speakerStats": "Sprekerstatistieken in- of uitschakelen",
@@ -827,6 +919,8 @@
"callQuality": "Videokwaliteit beheren",
"chat": "Chat openen / sluiten",
"closeChat": "Chat sluiten",
"closeReactionsMenu": "Reactiemenu sluiten",
"disableReactionSounds": "U kunt reactiegeluiden uitschakelen voor deze vergadering",
"documentClose": "Gedeeld document sluiten",
"documentOpen": "Gedeeld document openen",
"download": "Download onze apps",
@@ -840,6 +934,8 @@
"hangup": "Verlaten",
"help": "Hulp",
"invite": "Personen uitnodigen",
"joinBreakoutRoom": "Deelnemen aan aparte vergaderruimte",
"leaveBreakoutRoom": "Aparte vergaderruimte verlaten",
"lobbyButtonDisable": "Schakel lobby-modus uit",
"lobbyButtonEnable": "Schakel lobby-modus in",
"login": "Aanmelden",
@@ -847,7 +943,7 @@
"lowerYourHand": "Uw hand laten zakken",
"moreActions": "Meer acties",
"moreOptions": "Meer opties",
"mute": "Dempen / Dempen opheffen",
"mute": "Dempen / dempen opheffen",
"muteEveryone": "Iedereen dempen",
"muteEveryonesVideo": "Camera's van iedereen uitzetten",
"noAudioSignalDesc": "Als u niet met opzet hebt gedempt vanuit systeeminstellingen of hardware, overweeg dan van apparaat te wisselen.",
@@ -867,20 +963,19 @@
"selectBackground": "Achtergrond selecteren",
"shareRoom": "Iemand uitnodigen",
"shareaudio": "Audio delen",
"sharedvideo": "Een YouTube-video delen",
"sharedvideo": "Een video delen",
"shortcuts": "Sneltoetsen weergeven",
"speakerStats": "Sprekerstatistieken",
"startScreenSharing": "Schermdeling starten",
"startSubtitles": "Ondertiteling starten",
"stopScreenSharing": "Schermdeling stoppen",
"stopSharedVideo": "YouTube-video stoppen",
"stopSharedVideo": "Video stoppen",
"stopSubtitles": "Ondertiteling stoppen",
"stopvideoblur": "Achtergrond vervagen uitschakelen",
"talkWhileMutedPopup": "Probeert u te spreken? U bent gedempt.",
"tileViewToggle": "Tegelweergave in- of uitschakelen",
"toggleCamera": "Camera wisselen",
"videoSettings": "Instellingen van camera",
"videomute": "Camera starten / stoppen"
"videomute": "Camera aanzetten / uitzetten"
},
"transcribing": {
"ccButtonTooltip": "Ondertiteling starten / stoppen",
@@ -944,6 +1039,7 @@
"domuteVideoOfOthers": "Camera van alle anderen uitschakelen",
"flip": "Omdraaien",
"grantModerator": "Moderatorrechten verlenen",
"hideSelfView": "Verberg eigen beeld",
"kick": "Verwijderen",
"moderator": "Moderator",
"mute": "Deelnemer is gedempt",

View File

@@ -361,7 +361,7 @@
"shareScreenWarningD2": "devètz arrestar lo partiment àudio, aviar lo partiment decran e clicar lopcion «partejar làudio».",
"shareScreenWarningH1": "Se volètz partejar pas que lecran:",
"shareScreenWarningTitle": "Devètz arrestar lo partiment àudio abans lo partiment de lecran",
"shareVideoLinkError": "Se vos plai, provesissètz un ligam Youtube foncional.",
"shareVideoLinkError": "Se vos plai, provesissètz un ligam foncional.",
"shareVideoTitle": "Partejar una vidèo",
"shareYourScreen": "Partejar vòstre ecran",
"shareYourScreenDisabled": "Lo partiment decran es desactivat.",
@@ -1003,7 +1003,7 @@
"shareRoom": "Convidar qualquun",
"shareYourScreen": "Passar a la captura decran",
"shareaudio": "Partejar làudio",
"sharedvideo": "Passar al partatge de vidèo YouTube",
"sharedvideo": "Passar al partatge de vidèo",
"shortcuts": "Passar als acorchis",
"show": "Mostrar davant",
"silence": "Amudir",
@@ -1080,7 +1080,7 @@
"selectBackground": "Seleccionar un rèireplan",
"shareRoom": "Convidar qualquun",
"shareaudio": "Partejar làudio",
"sharedvideo": "Partejar una vidèo Youtube",
"sharedvideo": "Partejar una vidèo",
"shortcuts": "Veire los acorchis clavièr",
"silence": "Amudir",
"speakerStats": "Estatisticas parladors",
@@ -1088,7 +1088,7 @@
"startSubtitles": "Aviar los sostítols",
"stopAudioSharing": "Arrestar lo partiment àudio",
"stopScreenSharing": "Arrestar lo partatge decran",
"stopSharedVideo": "Arrestar la vidèo Youtube",
"stopSharedVideo": "Arrestar la vidèo",
"stopSubtitles": "Arrestar los sostítols",
"surprised": "Suspresa",
"talkWhileMutedPopup": "Ensajatz de parlar? Vòstre microfòn es copat.",

View File

@@ -361,7 +361,7 @@
"shareScreenWarningD2": "musisz zatrzymać udostępnianie dźwięku, rozpocząć udostępnianie ekranu i zaznaczyć opcję \"udostępnij dźwięk\".",
"shareScreenWarningH1": "Kiedy chcesz udostępniać wyłącznie swój ekran:",
"shareScreenWarningTitle": "Aby udostępnić ekran, musisz zatrzymać udostępnianie dźwięku",
"shareVideoLinkError": "Podaj proszę prawidłowy link youtube.",
"shareVideoLinkError": "Podaj proszę prawidłowy link.",
"shareVideoTitle": "Udostępnij wideo",
"shareYourScreen": "Włącz udostępnianie ekranu",
"shareYourScreenDisabled": "Udostępnianie ekranu wyłączone.",
@@ -990,7 +990,7 @@
"shareRoom": "Zaproś kogoś",
"shareYourScreen": "Przełączanie udostępniania ekranu",
"shareaudio": "Udostępnij audio",
"sharedvideo": "Przełącz udostępnianie obrazu na YouTube",
"sharedvideo": "Przełącz udostępnianie obrazu",
"shortcuts": "Przełączanie skrótów klawiszowych",
"show": "Pokaż na scenie",
"silence": "Cisza",
@@ -1067,7 +1067,7 @@
"selectBackground": "Wybierz tło",
"shareRoom": "Zaproś kogoś",
"shareaudio": "Udostępnij audio",
"sharedvideo": "Udostępnij wideo z Youtube",
"sharedvideo": "Udostępnij wideo",
"shortcuts": "Wyświetl skróty",
"silence": "Cisza",
"speakerStats": "Statystyki mówców",
@@ -1075,7 +1075,7 @@
"startSubtitles": "Uruchom napisy",
"stopAudioSharing": "Zakończ udostępnianie audio",
"stopScreenSharing": "Zakończ współdzielenie ekranu",
"stopSharedVideo": "Zatrzymaj wideo z YouTube",
"stopSharedVideo": "Zatrzymaj wideo",
"stopSubtitles": "Zatrzymaj napisy",
"surprised": "Zaskoczony",
"talkWhileMutedPopup": "Próbujesz mówić? Jesteś wyciszony.",

View File

@@ -999,7 +999,7 @@
"shareRoom": "Convidar alguém",
"shareYourScreen": "Iniciar / Parar partilha de ecrã",
"shareaudio": "Partilhar áudio",
"sharedvideo": "Mudar a partilha de vídeos do YouTube",
"sharedvideo": "Mudar a partilha de vídeos",
"shortcuts": "Mostrar / Esconder atalhos",
"show": "Mostrar no palco",
"silence": "Silêncio",
@@ -1084,7 +1084,7 @@
"startSubtitles": "Iniciar legendas",
"stopAudioSharing": "Parar partilha de áudio",
"stopScreenSharing": "Parar partilha de ecrã",
"stopSharedVideo": "Parar vídeo do YouTube",
"stopSharedVideo": "Parar vídeo",
"stopSubtitles": "Parar legendas",
"surprised": "Surpreendido",
"talkWhileMutedPopup": "Está a tentar falar? Está com o microfone desativado.",

View File

@@ -338,7 +338,7 @@
"shareScreenWarningD2": "você precisa parar o compartilhamento de áudio, iniciar o compartilhamento de tela e selecionar a opção \"compartilhar áudio\".",
"shareScreenWarningH1": "Se você quiser compartilhar apenas sua tela:",
"shareScreenWarningTitle": "Você precisa parar o compartilhamento de áudio antes de compartilhar sua tela",
"shareVideoLinkError": "Por favor, forneça um link do youtube correto.",
"shareVideoLinkError": "Por favor, forneça um link correto.",
"shareVideoTitle": "Compartilhar um vídeo",
"shareYourScreen": "Compartilhar sua tela",
"shareYourScreenDisabled": "Compartilhamento de tela desativada.",
@@ -938,7 +938,7 @@
"shareRoom": "Convidar alguém",
"shareYourScreen": "Alternar compartilhamento de tela",
"shareaudio": "Compartilhar áudio",
"sharedvideo": "Alternar compartilhamento de vídeo do YouTube",
"sharedvideo": "Alternar compartilhamento de vídeo",
"shortcuts": "Alternar atalhos",
"show": "Mostrar no palco",
"silence": "Silenciar",
@@ -1013,7 +1013,7 @@
"selectBackground": "Selecionar fundo",
"shareRoom": "Convidar alguém",
"shareaudio": "Compartilhar áudio",
"sharedvideo": "Compartilhar um vídeo do YouTube",
"sharedvideo": "Compartilhar um vídeo",
"shortcuts": "Ver atalhos",
"silence": "Silêncio",
"speakerStats": "Estatísticas do Apresentador",
@@ -1021,7 +1021,7 @@
"startSubtitles": "Iniciar legendas",
"stopAudioSharing": "Parar compart. de áudio",
"stopScreenSharing": "Parar compart. de tela",
"stopSharedVideo": "Parar vídeo do YouTube",
"stopSharedVideo": "Parar vídeo",
"stopSubtitles": "Parar legendas",
"surprised": "Surpresa",
"talkWhileMutedPopup": "Tentando falar? Você está em mudo.",

View File

@@ -271,7 +271,7 @@
"sendPrivateMessageTitle": "",
"serviceUnavailable": "Serviciu indisponibil",
"sessTerminated": "Apel încheiat",
"shareVideoLinkError": "Vă rugam să furnizați un link You Tube corect.",
"shareVideoLinkError": "Vă rugam să furnizați un link corect.",
"shareVideoTitle": "Partajare video",
"shareYourScreen": "Partajare ecran",
"shareYourScreenDisabled": "Partajare ecran dezactivată.",
@@ -621,7 +621,7 @@
"remoteMute": "Comutare mod silențios participant",
"shareRoom": "Adăugați persoane",
"shareYourScreen": "Activați / dezactivați partajarea ecranului",
"sharedvideo": "Comutați partajarea video YouTube",
"sharedvideo": "Comutați partajarea video",
"shortcuts": "Activați / dezactivați comenzi rapide",
"show": "",
"speakerStats": "Afișați/ascundeți parametrii difuzorului",
@@ -658,14 +658,14 @@
"raiseHand": "Ridicați / Coborâți mâna",
"raiseYourHand": "Ridicați mâna",
"shareRoom": "Adăugați persoane",
"sharedvideo": "Partajați un video YouTube",
"sharedvideo": "Partajați un video",
"shortcuts": "Vizualizare comenzi rapide",
"speakerStats": "Parametrii difuzorului",
"startScreenSharing": "Inițiere partajare ecran",
"startSubtitles": "Inițiere subtitrări",
"startvideoblur": "",
"stopScreenSharing": "Încheiere partajare ecran",
"stopSharedVideo": "Oprire video YouTube",
"stopSharedVideo": "Oprire video",
"stopSubtitles": "Acundere subtitrări",
"stopvideoblur": "",
"talkWhileMutedPopup": "Încercați să vorbiți? Microfonul este dezactivat.",

View File

@@ -312,7 +312,7 @@
"sendPrivateMessageTitle": "Отправить личное сообщение?",
"serviceUnavailable": "Служба недоступна",
"sessTerminated": "Связь прервана",
"shareVideoLinkError": "Пожалуйста, укажите корректную ссылку Youtube.",
"shareVideoLinkError": "Пожалуйста, укажите корректную ссылку.",
"shareVideoTitle": "Поделиться видео",
"shareYourScreen": "Показать экран",
"shareYourScreenDisabled": "Демонстрация экрана отключена",

View File

@@ -267,7 +267,7 @@
"sendPrivateMessageTitle": "Boles imbiare custu messàgiu in privadu?",
"serviceUnavailable": "Su servìtziu no est a disponimentu",
"sessTerminated": "Mutida acabada",
"shareVideoLinkError": "Fruni unu ligàmene de youtube curretu.",
"shareVideoLinkError": "Fruni unu ligàmene curretu.",
"shareVideoTitle": "Cumpartzi unu vìdeu",
"shareYourScreen": "Cumpartzi s'ischermu",
"shareYourScreenDisabled": "Cumpartzidura de ischermu disativada.",
@@ -623,7 +623,7 @@
"remoteMute": "Pone partetzipante a sa muda",
"shareRoom": "Invita una persone",
"shareYourScreen": "Ativa o disativa sa cumpartzidura de ischermu",
"sharedvideo": "Ativa o disativa sa cumpartzidura de vìdeos de YouTube",
"sharedvideo": "Ativa o disativa sa cumpartzidura de vìdeos",
"shortcuts": "Ativa o disativa incurtzaduras",
"show": "Ammustra in s'iscena",
"speakerStats": "Càmbia istatìsticas de partetzipante",
@@ -672,14 +672,14 @@
"raiseHand": "Àrtzia o abassa sa manu",
"raiseYourHand": "Àrtzia sa manu",
"shareRoom": "Invita una persone",
"sharedvideo": "Cumpartzi unu vìdeu de YouTube",
"sharedvideo": "Cumpartzi unu vìdeu",
"shortcuts": "Ammustra incurtzaduras",
"speakerStats": "Istatìsticas de partetzipante",
"startScreenSharing": "Avia sa cumpartzidura de s'ischermu",
"startSubtitles": "Avia sutatìtulos",
"startvideoblur": "Isfoca s'isfundu meu",
"stopScreenSharing": "Firma sa cumpartzidura de s'ischermu",
"stopSharedVideo": "Firma vìdeu de YouTube",
"stopSharedVideo": "Firma vìdeu",
"stopSubtitles": "Firma sutatìtulos",
"stopvideoblur": "Disativa s'isfocadu de s'isfundu",
"talkWhileMutedPopup": "Ses chirchende de chistionare? Ses a sa muda.",

View File

@@ -291,7 +291,7 @@
"sendPrivateMessageTitle": "Súkromne poslať?",
"serviceUnavailable": "Služba nedostupná",
"sessTerminated": "Volanie ukončené",
"shareVideoLinkError": "Prosím, zadajte správny Youtube odkaz.",
"shareVideoLinkError": "Prosím, zadajte správny odkaz.",
"shareVideoTitle": "Zdieľať video",
"shareYourScreen": "Zdielať obrazovku",
"shareYourScreenDisabled": "Zdieľanie obrazovky vypnuté.",
@@ -741,7 +741,7 @@
"security": "Nastavenie zabezpečenia",
"shareRoom": "Pozvať osobu",
"shareYourScreen": "Zdieľanie obrazovky zapnúť/vypnúť",
"sharedvideo": "Zdieľanie YouTube videa zapnúť/vypnúť",
"sharedvideo": "Zdieľanie videa zapnúť/vypnúť",
"shortcuts": "Klávesové skratky zobraziť/skryť",
"show": "V popredí zobraziť",
"speakerStats": "Štatistiky rečníka zobraziť/skryť",
@@ -796,14 +796,14 @@
"security": "Nastavenie zabezpečenia",
"selectBackground": "Vybrať pozadie",
"shareRoom": "Pozvať niekoho",
"sharedvideo": "Zdielať YouTube video",
"sharedvideo": "Zdielať video",
"shortcuts": "Ukázať klávesové skratky",
"speakerStats": "Štatistiky rečníka",
"startScreenSharing": "Začať zdieľanie obrazovky",
"startSubtitles": "Začať titulky",
"startvideoblur": "Rozmazať pozadie",
"stopScreenSharing": "Ukončiť zdieľanie obrazovky",
"stopSharedVideo": "Ukončiť zdielané YouTube video",
"stopSharedVideo": "Ukončiť zdielané video",
"stopSubtitles": "Ukončiť titulky",
"stopvideoblur": "Ukončiť rozmazanie pozadia",
"talkWhileMutedPopup": "Skúšate hovoriť? Ste stlmený.",

View File

@@ -338,7 +338,7 @@
"shareScreenWarningD2": "prekiniti morate deljenje zvoka, deliti zaslon in odznačiti opcijo \"deli zvok \".",
"shareScreenWarningH1": "Če želite deliti le zaslon:",
"shareScreenWarningTitle": "Za deljenje zaslona morate najprej prekiniti deljenje zvoka.",
"shareVideoLinkError": "Prosimo, vnesite pravilno Youtube povezavo.",
"shareVideoLinkError": "Prosimo, vnesite pravilno povezavo.",
"shareVideoTitle": "Delite video",
"shareYourScreen": "Delite vaš zaslon",
"shareYourScreenDisabled": "Deljenje zaslona je onemogočeno.",
@@ -938,7 +938,7 @@
"shareRoom": "Povabi druge osebe",
"shareYourScreen": "Preklopi deljenje zaslona",
"shareaudio": "Deli zvok",
"sharedvideo": "Preklopi deljenje Youtube videa",
"sharedvideo": "Preklopi deljenje videa",
"shortcuts": "Preklopi bližnjice",
"show": "Prikaži na sceni",
"silence": "Tišina",
@@ -1013,7 +1013,7 @@
"selectBackground": "Izberi ozadje",
"shareRoom": "Povabi nekoga",
"shareaudio": "Deli zvok",
"sharedvideo": "Deli YouTube video",
"sharedvideo": "Deli video",
"shortcuts": "Prikaži bližnjice",
"silence": "Tišina",
"speakerStats": "Statistike govorcev",
@@ -1021,7 +1021,7 @@
"startSubtitles": "Začni prikaz podnapisov",
"stopAudioSharing": "Izklopi deljenje zvoka",
"stopScreenSharing": "Prekini deljenje zaslona",
"stopSharedVideo": "Ustavi Youtube video",
"stopSharedVideo": "Ustavi video",
"stopSubtitles": "Prekini prikaz podnapisov",
"surprised": "Presenečenje",
"talkWhileMutedPopup": "Želite govoriti? Utišani ste.",

View File

@@ -39,6 +39,28 @@
"audioOnly": {
"audioOnly": "Gjerësi e ulët bande"
},
"blankPage": {
"meetingEnded": "Takimi përfundoi."
},
"breakoutRooms": {
"actions": {
"add": "Shtoni aneks konsultimesh",
"autoAssign": "Caktoje automatikisht te anekse konsultimesh",
"close": "Mbylle",
"join": "Hyni",
"leaveBreakoutRoom": "Dilni nga aneks konsultimesh",
"more": "Më tepër",
"remove": "Hiqe",
"sendToBreakoutRoom": "Dërgoje pjesëmarrësin te:"
},
"defaultName": "Dhomë aneks konsultimesh #{{index}}",
"mainRoom": "Dhoma kryesore",
"notifications": {
"joined": "Po hyhet te dhomë aneks konsultimesh \"{{name}}\"",
"joinedMainRoom": "Po hyhet te dhoma kryesore",
"joinedTitle": "Dhoma Aneks Konsultimesh"
}
},
"calendarSync": {
"addMeetingURL": "Shtoni një lidhje takimi",
"confirmAddLink": "Doni të shtohet një lidhje Jitsi te kjo veprimtari?",
@@ -58,7 +80,7 @@
"today": "Sot"
},
"chat": {
"enter": "Hyni në dhomë fjalosjeje",
"enter": "Hyni në fjalosje",
"error": "Gabim: mesazhi juaj su dërgua. Arsye: {{error}}",
"fieldPlaceHolder": "Shtypni këtu mesazhin tuaj",
"message": "Mesazh",
@@ -69,13 +91,17 @@
"nickname": {
"popover": "Zgjidhni një nofkë",
"title": "Që të përdorni fjalosjen, jepni një nofkë",
"titleWithPolls": "Që të përdorni fjalosjen, jepni një nofkë"
"titleWithPolls": "Që të përdorni fjalosjen dhe pyetësorë, jepni një nofkë"
},
"noMessagesMessage": "Ende ska mesazhe te takimi. Filloni një bisedë këtu!",
"noMessagesMessage": "Te takimi ska ende mesazhe. Nisni një bisedë këtu!",
"privateNotice": "Mesazh privat për {{recipient}}",
"smileysPanel": "Panel emoji-sh",
"tabs": {
"chat": "Fjalosje",
"polls": "Pyetësorë"
},
"title": "Fjalosje",
"titleWithPolls": "Fjalosje",
"titleWithPolls": "Fjalosje dhe Pyetësorë",
"you": "ju"
},
"chromeExtensionBanner": {
@@ -154,7 +180,8 @@
"joinInApp": "Merrni pjesë në këtë takim duke përdorur aplikacionin",
"launchWebButton": "Nise në web",
"title": "Po niset takimi juaj në {{app}}…",
"tryAgainButton": "Riprovoni në desktop"
"tryAgainButton": "Riprovoni në desktop",
"unsupportedBrowser": "Duket se përdorni një shfletues që se mbulojmë."
},
"defaultLink": "p.sh., {{url}}",
"defaultNickname": "p.sh., Ndrikulla",
@@ -176,13 +203,13 @@
"dialog": {
"Back": "Mbrapsht",
"Cancel": "Anuloje",
"IamHost": "Jam organizuesi",
"IamHost": "Jam organizatori",
"Ok": "OK",
"Remove": "Hiqe",
"Share": "Ndajeni",
"Share": "Ndaje",
"Submit": "Parashtroje",
"WaitForHostMsg": "Konferenca <b>{{room}}</b> ska nisur ende. Nëse jeni organizatori, atëherë ju lutemi, bëni mirëfilltësimin. Përndryshe, ju lutemi, pritni që të mbërrijë organizatori.",
"WaitForHostMsgWOk": "Konferenca <b>{{room}}</b> ska nisur ende. Nëse jeni organizatori, atëherë ju lutemi, shtypni OK, që të kryhet mirëfilltësimi. Përndryshe, ju lutemi, pritni që të mbërrijë organizatori.",
"WaitForHostMsg": "Konferenca <b>{{room}}</b> ska nisur ende. Nëse jeni organizatori, ju lutemi, bëni mirëfilltësimin. Përndryshe, ju lutemi, pritni që të mbërrijë organizatori.",
"WaitForHostMsgWOk": "Konferenca <b>{{room}}</b> ska nisur ende. Nëse jeni organizatori, ju lutemi, shtypni OK që të het mirëfilltësimi. Përndryshe, ju lutemi, pritni që të mbërrijë organizatori.",
"WaitingForHostTitle": "Po pritet për organizatorin…",
"Yes": "Po",
"accessibilityLabel": {
@@ -219,15 +246,18 @@
"dismiss": "Hidhe tej",
"displayNameRequired": "Njatjeta! Cili është emri juaj?",
"done": "U bë",
"e2eeDescription": "Fshehtëzimi Skaj-më-Skaj aktualisht është EKSPERIMENTAL. Ju lutemi, mbani parasysh se aktivizimi i fshehtëzimit skaj-më-skaj praktikisht do të çaktivizojë shërbime të ofruara më anë të shërbyesit, të tillë si: regjistrim, transmetim të drejtpërdrejtë dhe pjesëmarrje me telefon. Mbani parasysh gjithashtu se takimi do të funksionojë vetëm për persona që hyjnë në të nga shfletues mbulojnë futje rrjedhash transmetimi.",
"e2eeDescription": "Fshehtëzimi Skaj-më-Skaj aktualisht është EKSPERIMENTAL. Ju lutemi, mbani parasysh se aktivizimi i fshehtëzimit skaj-më-skaj praktikisht do të çaktivizojë shërbime të ofruara më anë të shërbyesit, të tillë si: pjesëmarrje me telefon. Mbani parasysh gjithashtu se takimi do të funksionojë vetëm për persona që hyjnë në të nga shfletues të cilët mbulojnë futje rrjedhash transmetimi.",
"e2eeDisabledDueToMaxModeDescription": "Smund të aktivizohet fshehtëzimi Skaj-më-Skaj, për shkak të numrit të madh të pjesëmarrësve në konferencë.",
"e2eeLabel": "Aktivizo Fshehtëzim Skaj-më-Skaj",
"e2eeWarning": "KUJDES: Jo të gjithë pjesëmarrësit në këtë takim duket kenë mbulim për fshehtëzim Skaj-më-Skaj. Në e aktivizofshi, ata sdo të jenë në gjendje tju shohin apo dëgjojnë.",
"e2eeWarning": "KUJDES: Jo krejt pjesëmarrësit në këtë takim duket se kanë mbulim për fshehtëzim Skaj-më-Skaj. Në e aktivizofshi, ata sdo të jenë në gjendje tju shohin apo dëgjojnë.",
"e2eeWillDisableDueToMaxModeDescription": "KUJDES: Fshehtëzimi Skaj-më-Skaj do të çaktivizohet automatikisht, nëse në konferencë vijnë më tepër pjesëmarrës.",
"embedMeeting": "Trupëzoni takim",
"enterDisplayName": "Ju lutemi, jepni këtu emrin tuaj",
"enterDisplayName": "Jepni këtu emrin tuaj",
"error": "Gabim",
"gracefulShutdown": "Shërbimi ynë është aktualisht i ndërprerë, për punë mirëmbajtjeje. Ju lutemi, riprovoni më vonë.",
"grantModeratorDialog": "Jeni i sigurt se doni ta bëni moderator këtë pjesëmarrës?",
"grantModeratorDialog": "Jeni i sigurt se doni të akordohen të drejta moderatori për {{participantName}}?",
"grantModeratorTitle": "Akordoni të drejta moderatori",
"hideShareAudioHelper": "Mos e shfaq më këtë dialog",
"incorrectPassword": "Emër përdoruesi ose fjalëkalim i pasaktë",
"incorrectRoomLockPassword": "Fjalëkalim i pasaktë",
"internalError": "Hëm! Diç shkoi ters. Ndodhi gabimi vijues: {{error}}",
@@ -240,7 +270,7 @@
"liveStreaming": "Transmetim i Drejtpërdrejtë",
"liveStreamingDisabledBecauseOfActiveRecordingTooltip": "Jo e mundshme, kur është aktiv regjistrimi",
"liveStreamingDisabledTooltip": "Nisje transmetimesh të drejtpërdrejta e çaktivizuar.",
"localUserControls": "Kontrolle përdoruesi vendor",
"localUserControls": "Kontrolle vendore përdoruesi",
"lockMessage": "Su arrit të kyçej konferenca.",
"lockRoom": "Shtoni takim $t(lockRoomPasswordUppercase)",
"lockTitle": "Kyçja dështoi",
@@ -256,68 +286,90 @@
"micPermissionDeniedError": "Skeni akorduar leje për tu përdorur mikrofoni juaj. Mundeni prapëseprapë të merrni pjesë te konferenca, por të tjerët sdo tju dëgjojnë. Përdorni butonin e kamerës, te shtylla e adresave, për ta ndrequr këtë gjë.",
"micTimeoutError": "Su nis dot burim audio. Ndodhi mbarim kohe!",
"micUnknownError": "Spërdoret dot mikrofoni, për një arsye të panjohur.",
"muteEveryoneDialog": "Jeni i sigurt se doni të heshtohet gjithkush? Sdo të jeni në gjendje tu hiqni heshtimin, por ata mund të heqin heshtimin për vetveten në çfarëdo kohe.",
"muteEveryoneElseDialog": "Pasi të heshtohen, sdo të jeni në gjendje tu hiqni heshtimin, por ata mund të heqin heshtimin për vetveten në çfarëdo kohe.",
"moderationAudioLabel": "Lejoji pjesëmarrësit të heqin heshtimin e vetes",
"moderationVideoLabel": "Lejoji pjesëmarrësit të nisin videon e tyre",
"muteEveryoneDialog": "Pjesëmarrësit mund të heqin kurdo heshtimin e veten.",
"muteEveryoneDialogModerationOn": "Pjesëmarrësit mund të dërgojnë kurdo kërkesë për të folur.",
"muteEveryoneElseDialog": "Po i heshtuat, sdo të jeni në gjendje tu hiqni heshtimin, por ata munden të heqin kurdo heshtimin për veten.",
"muteEveryoneElseTitle": "Të heshtohet gjithkush, hiq {{whom}}?",
"muteEveryoneElsesVideoDialog": "Pasi të çaktivizohet kamera, sdo të jeni në gjendje ta hapni sërish, por ata mund ta hapin në çfarëdo kohe.",
"muteEveryoneElsesVideoTitle": "Të çaktivizohet kamera e gjithkujt, hiq {{whom}}?",
"muteEveryoneSelf": "vetes",
"muteEveryoneStartMuted": "Gjithkush ia fillon i heshtuar, nga tani e tutje",
"muteEveryoneElsesVideoDialog": "Pasi të jetë çaktivizuar kamera, sdo të jeni në gjendje ta riaktivizoni, por ata munden ta riaktivizojnë kurdo.",
"muteEveryoneElsesVideoTitle": "Të ndalet videoja e gjithkujt, hiq {{whom}}?",
"muteEveryoneSelf": "ju",
"muteEveryoneStartMuted": "Tani e tutje, gjithkush fillon i heshtuar",
"muteEveryoneTitle": "Të heshtohet gjithkush?",
"muteEveryonesVideoDialog": "Jeni i sigurt se doniçaktivizohet kamera e gjithkujt? Sdo të jeni në gjendje ta hapni sërish, por ata mund ta hapin në çfarëdo kohe.",
"muteEveryonesVideoDialog": "Pjesëmarrësit mund të aktivizojnë videon e tyre kurdo.",
"muteEveryonesVideoDialogModerationOn": "Pjesëmarrësit mund të dërgojnë kurdo kërkesë për aktivizimin e videos së tyre.",
"muteEveryonesVideoDialogOk": "Çaktivizoje",
"muteEveryonesVideoTitle": "Të çaktivizohet kamera i gjithkujt?",
"muteParticipantBody": "Sdo jeni në gjendje tu hiqni heshtimin, por ata mund ta bëjnë këtë për veten në çfarëdo kohe.",
"muteEveryonesVideoTitle": "Të ndalet videoja e gjithkujt?",
"muteParticipantBody": "Sdo jeni në gjendje të hiqni heshtimin për ta, por ata munden kurdo ta heqin për veten.",
"muteParticipantButton": "Heshtoje",
"muteParticipantDialog": "Jeni i sigurt se doni të heshtohet ky pjesëmarrës? Sdo të jeni në gjenjde tu hiqni heshtimin, por ata mund ta bëjnë këtë për veten në çfarëdo kohe.",
"muteParticipantTitle": "Të heshtohet ky pjesëmarrës?",
"muteParticipantsVideoBody": "Sdo të jeni në gjendje të rihapni kamerën, por ata mund ta bëjnë këtë për veten në çfarëdo kohe.",
"muteParticipantsVideoButton": "Çaktivizo kamerën",
"muteParticipantsVideoBody": "Sdo të jeni në gjendje të riaktivizoni kamerën e tyre, por ata munden kurdo ta riaktvizojnë për veten.",
"muteParticipantsVideoBodyModerationOn": "Sdo të jeni në gjendje të riaktivizoni kamerën e tyre dhe as ata sdo të munden.",
"muteParticipantsVideoButton": "Ndale videon",
"muteParticipantsVideoDialog": "Jeni i sigurt se doni të çaktivizoni kamerën e këtij pjesëmarrësi? Sdo të jeni në gjendje të riaktivizoni kamerën, por ai mund ta riaktivizojë kurdo.",
"muteParticipantsVideoDialogModerationOn": "Jeni i sigurt se doni të çaktivizoni kamerën e këtij pjesëmarrësi? Sdo të jeni në gjendje ta riaktivizoni dhe as ai sdo të mundet.",
"muteParticipantsVideoTitle": "Të çaktivizohet kamera e këtij pjesëmarrësi?",
"noDropboxToken": "Token Dropbox jo i vlefshëm",
"password": "Fjalëkalim",
"passwordLabel": "Takimi është kyçur nga njëri prej pjesëmarrësve. Që të merrni pjesë, ju lutemi, jepni $t(lockRoomPassword).",
"passwordNotSupported": "Nuk mbulohet caktimi i një $t(lockRoomPassword) takimi.",
"passwordLabel": "Takimi është kyçur nga një pjesëmarrës. Ju lutemi, që të hyni, jepni $t(lockRoomPassword).",
"passwordNotSupported": "Nuk mbulohet ujdisja e një takimi $t(lockRoomPassword).",
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) nuk mbulohet",
"passwordRequired": "Lypset $t(lockRoomPasswordUppercase)",
"popupError": "Shfletuesi juaj po bllokon dritare flluska prej këtij sajti. Ju lutemi, aktivizoi flluskat, që nga rregullimet tuaja mbi sigurinë e shfletuesit, dhe riprovoni.",
"popupErrorTitle": "Flluskat bllokohen",
"passwordRequired": "$t(lockRoomPasswordUppercase) i domosdoshëm",
"permissionCameraRequiredError": "Leja mbi kamerën është e domosdoshme për të marrë pjesë në konferenca me video. Ju lutemi, akordojeni që nga Rregullimet",
"permissionErrorTitle": "Leje e domosdoshme",
"permissionMicRequiredError": "Leja mbi mikrofonin është e domosdoshme për të marrë pjesë në konferenca me audio. Ju lutemi, akordojeni që nga Rregullimet",
"popupError": "Shfletuesi juaj i bllokon dritaret flluskë prej këtij sajti. Ju lutemi, aktivizoni flluskat te rregullimet e sigurisë të shfletuesit tuaj dhe riprovoni.",
"popupErrorTitle": "Flluska u bllokua",
"readMore": "më tepër",
"recording": "Regjistrim",
"recordingDisabledBecauseOfActiveLiveStreamingTooltip": "Jo e mundshme teksa është aktiv transmetimi i drejtpërdrejtë",
"recordingDisabledTooltip": "Nisje regjistrimi e çaktivizuar.",
"recordingDisabledBecauseOfActiveLiveStreamingTooltip": "Jo i mundshëm kur ka aktiv një transmetim drejtpërdrejtë",
"recordingDisabledTooltip": "Nisja e regjistrimit është çaktivizuar.",
"rejoinNow": "Rihyni tani",
"remoteControlAllowedMessage": "{{user}} pranoi kërkesën tuaj për kontroll së largëti!",
"remoteControlDeniedMessage": "{{user}} hodhi poshtë kërkesën tuaj për kontroll së largëti!",
"remoteControlErrorMessage": "Ndodhi një gabim teksa provohej të kërkohej leje kontrolli së largëti nga {{user}}!",
"remoteControlRequestMessage": "Do ta lejoni {{user}} të kontrollojë së largëti desktopin tuaj?",
"remoteControlShareScreenWarning": "Kini parasysh se, nëse shtypni Lejoje”, ai do të shohë ekranin tuaj!",
"remoteControlStopMessage": "Sesioni me kontroll së largëti dështoi!",
"remoteControlErrorMessage": "Ndodhi një gabim teksa provohej të kërkoheshin leje kontrolli së largëti nga {{user}}!",
"remoteControlRequestMessage": "A do ta lejoni {{user}} të kontrollojë së largëti desktopin tuaj?",
"remoteControlShareScreenWarning": "Mbani parasysh se nëse shtypni \"Lejoje\", do tu tregoni ekranin tuaj!",
"remoteControlStopMessage": "Sesioni me kontroll së largëti përfundoi!",
"remoteControlTitle": "Kontroll desktopi së largëti",
"remoteUserControls": "Kontrolle përdoruesi të largët për {{username}}",
"remoteUserControls": "Kontrolle përdoruesi së largëti të {{username}}",
"removePassword": "Hiqe $t(lockRoomPassword)",
"removeSharedVideoMsg": "Jeni i sigurt se doni të hiqet videoja që ndatë me të tjerët?",
"removeSharedVideoTitle": "Hiqe videon e ndarë me të tjerët",
"removeSharedVideoMsg": "Jeni i sigurt se doni të hiqni videon keni ndarë me të tjerë?",
"removeSharedVideoTitle": "Hiqe videon e ndarë me të tjerë",
"reservationError": "Gabim sistemi rezervimi",
"reservationErrorMsg": "Kod gabimi: {{code}}, mesazh: {{msg}}",
"retry": "Riprovoni",
"screenSharingAudio": "Ndani audio me të tjerë",
"screenSharingFailed": "Hëm! Diç shkoi ters, sqemë në gjendje të nisnim dhënie ekrani të tjerëve!",
"screenSharingFailedTitle": "Dhënia e ekranit të tjerëve dështoi!",
"screenSharingPermissionDeniedError": "Hëm! Diç shkoi ters me lejet tuaja për dhënie ekrani. Ju lutemi, ringarkojeni dhe riprovoni.",
"sendPrivateMessage": "Tani së fundi morët një mesazh privat. Kishit ndërmend ti përgjigjeni privatisht, apo doni tia dërgoni grupit përgjigjen?",
"screenSharingAudio": "Ndajeni audion me të tjerë",
"screenSharingFailed": "Hëm! Diç shkoi ters, sqemë në gjendje të nisnim tregim ekrani!",
"screenSharingFailedTitle": "Tregimi i ekrani dështoi!",
"screenSharingPermissionDeniedError": "Hëm! Diç shkoi ters me lejet tuaja për tregim ekrani. Ju lutemi, ringarkojeni dhe riprovoni.",
"sendPrivateMessage": "Tani së fundi morët një mesazh privat. Kishit ndërmend ti përgjigjeni privatisht, apo doni tia dërgoni mesazhin grupit?",
"sendPrivateMessageCancel": "Dërgoja grupit",
"sendPrivateMessageOk": "Dërgoje privatisht",
"sendPrivateMessageTitle": "Të dërgohet privatisht?",
"serviceUnavailable": "Shërbim jashtë funksionimi",
"sessTerminated": "Thirrja përfundoi",
"sessionRestarted": "Thirrje e rinisur nga ura",
"shareVideoLinkError": "Ju lutemi, jepni një lidhje Youtube të saktë.",
"sessionRestarted": "Thirrja rinisi për shkak të një problemi lidhjeje.",
"shareAudio": "Vazhdo",
"shareAudioTitle": "Si të ndahet audio me të tjerë",
"shareAudioWarningD1": "lypset të ndalni tregim ekrani, para se të ndani audion tuaj me të tjerë.",
"shareAudioWarningD2": "lypset të rinisni tregimin e ekranit tuaj dhe ti vini shenjë mundësisë \"ndani audio me të tjerë\".",
"shareAudioWarningH1": "Nëse doni të ndani vetëm audio me të tjerë:",
"shareAudioWarningTitle": "Lypset të ndalni tregimin e ekranit, para se të ndani audio me të tjerë",
"shareMediaWarningGenericH2": "Nëse doni të tregoni ekranin dhe të ndani audio me të tjerë",
"shareScreenWarningD1": "lypset të ndalni ndarjen e audios me të tjerë, para se të tregoni ekranin tuaj.",
"shareScreenWarningD2": "lypset të ndalni ndarjen e audios me të tjerë, të nisni tregimin e ekranit dhe ti vini shenjë mundësisë \"ndani audio me të tjerë\".",
"shareScreenWarningH1": "Nëse thjesht doni të tregoni ekranin tuaj:",
"shareScreenWarningTitle": "Lypset të ndalni ndarjen e audios me të tjerë, para tregimit të ekranit tuaj",
"shareVideoLinkError": "Ju lutemi, jepni një lidhje të saktë videoje.",
"shareVideoTitle": "Ndani video me të tjerë",
"shareYourScreen": "Tregojuni ekranin tuaj",
"shareYourScreenDisabled": "Tregimi i ekrani është i çaktivizuar.",
"startLiveStreaming": "Nis transmetim të drejtpërdrejtë",
"startRecording": "Nis regjistrim",
"startRemoteControlErrorMessage": "Ndodhi një gatim teksa provohej të nisej sesioni me kontroll së largëti!",
"shareYourScreen": "Tregoni ekranin tuaj",
"shareYourScreenDisabled": "Tregimi i ekranit është i çaktivizuar.",
"sharedVideoDialogError": "Gabim: URL e pavlefshme",
"sharedVideoLinkPlaceholder": "Lidhje YouTube ose lidhje e drejtpërdrejtë për video",
"startLiveStreaming": "Nisni transmetim të drejtpërdrejtë",
"startRecording": "Fillo regjistrim",
"startRemoteControlErrorMessage": "Ndodhi një gabim teksa provohej të nisej sesioni i kontrollit së largëti!",
"stopLiveStreaming": "Ndale transmetimin e drejtpërdrejtë",
"stopRecording": "Ndale regjistrimin",
"stopRecordingWarning": "Jeni i sigurt se doni të ndalet regjistrimi?",
@@ -333,6 +385,9 @@
"userIdentifier": "Identifikues përdoruesi",
"userPassword": "Fjalëkalim përdoruesi",
"videoLink": "Lidhje videoje",
"viewUpgradeOptions": "Shihni mundësi përmirësimi",
"viewUpgradeOptionsContent": "Që të përfitoni përdorim të pakufizuar veçorish me pagesë, të tilla si regjistrimi, transcriptime, RTMP Streaming & etj, duhet të përmirësoni planin tuaj.",
"viewUpgradeOptionsTitle": "Zbuluat një veçori me pagesë!",
"yourEntireScreen": "Krejt ekranin tuaj"
},
"documentSharing": {
@@ -346,13 +401,13 @@
},
"feedback": {
"average": "Çka",
"bad": "E keqe",
"detailsLabel": "Na tregoni më tepër.",
"good": "E mirë",
"rateExperience": "Vlerësoni rastin tuaj",
"star": "Yll",
"veryBad": "Shumë e Keqe",
"veryGood": "Shumë e Mirë"
"bad": "I dobët",
"detailsLabel": "Na thoni më tepër rreth tij.",
"good": "I mirë",
"rateExperience": "Vlerësoni funksionimin e takimit për ju",
"star": "Vlerësojeni Me Yll",
"veryBad": "Shumë i Dobët",
"veryGood": "Shumë i Mirë"
},
"helpView": {
"header": "Qendër ndihme"
@@ -382,17 +437,21 @@
"invitePhone": "Nga ana tjetër, që të merrni pjesë me telefon, prekni këtë: {{number}},,{{conferenceID}}#\n",
"invitePhoneAlternatives": "Po kërkoni për një tjetër numër?\nShihni numra takimi: {{url}}\n\n\nNëse po provohet gjithashtu numër përmes telefoni dhome, merrni pjesë pa lidhje audioje: {{silentUrl}}",
"inviteSipEndpoint": "Për të marrë pjesë duke përdorur adresën SIP, jepni këtë: {{sipUri}}",
"inviteTextiOSInviteUrl": "Që të hyni, klikoni lidhjen vijuese: {{inviteUrl}}.",
"inviteTextiOSJoinSilent": "Nëse po i bini numrit përmes një telefoni dhome, përdorni këtë lidhje për të hyrë pa lidhur audion: {{silentUrl}}.",
"inviteTextiOSPersonal": "{{name}} po ju fton në një takim.",
"inviteTextiOSPhone": "Që të hyni përmes një telefoni, përdorni këtë numër: {{number}},,{{conferenceID}}#. Nëse po kërkoni për tjetër numër, kjo është lista e plotë: {{didUrl}}.",
"inviteURLFirstPartGeneral": "Jeni ftuar të merrni pjesë në një takim.",
"inviteURLFirstPartPersonal": "{{name}} po ju fton në një takim.\n",
"inviteURLSecondPart": "\nMerrni pjesë te takimi:\n{{url}}\n",
"label": "Hollësi numrash",
"label": "Hollësi për ti rënë numrit",
"liveStreamURL": "Transmetim i drejtpërdrejtë:",
"moreNumbers": "Më tepër numra",
"noNumbers": "Ska numra për përdorim.",
"noPassword": "Asnjë",
"noRoom": "Su dha dhomë për të cilën të formësohet numri.",
"numbers": "Numra Për Tu Përdorur",
"password": "$t(lockRoomPasswordUppercase):",
"password": "$t(lockRoomPasswordUppercase): ",
"sip": "Adresë SIP",
"title": "Ndani me të tjerë",
"tooltip": "Ndani me të tjerë lidhje dhe hollësi numrash për këtë takim"
@@ -445,6 +504,7 @@
"failedToStart": "Su arrit të fillohej Transmetim i Drejtpërdrejtë",
"getStreamKeyManually": "Sqemë në gjendje të sillnim ndonjë transmetim të drejtpërdrejtë. Provoni të merrni kyçin tuaj për transmetim të drejtpërdrejtë nga YouTube-i.",
"googlePrivacyPolicy": "Rregulla Privatësie Google",
"inProgress": "Regjistrim ose transmetim i drejtpërdrejtë në punë e sipër",
"invalidStreamKey": "Kyçi për transmetim të drejtpërdrejtë mund të jetë i pasaktë.",
"limitNotificationDescriptionNative": "Transmetimi juaj do të kufizohet në {{limit}} min. Për transmetim të pakufizuar, provoni {{app}}.",
"limitNotificationDescriptionWeb": "Për shkak kërkesash të shumta, transmetimi juaj do të kufizohet në {{limit}} min. Për transmetim të pakufizuar, provoni <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
@@ -454,6 +514,7 @@
"onBy": "{{name}} nisi transmetimin e drejtpërdrejtë",
"pending": "Po niset Transmetimi i Drejtpërdrejtë…",
"serviceName": "Shërbim Transmetimi i Drejtpërdrejtë",
"sessionAlreadyActive": "Ky sesion po regjistrohet ose transmetohet drejtpërsëdrejti tashmë.",
"signIn": "Hyni me Google",
"signInCTA": "Hyni, ose jepni kyçin tuaj për transmetim të drejtpërdrejtë nga YouTube-i.",
"signOut": "Dilni",
@@ -467,36 +528,38 @@
"admit": "Pranoje",
"admitAll": "Pranoji të tërë",
"allow": "Lejoje",
"backToKnockModeButton": "Pa fjalëkalim, kërkoni pjesëmarrje",
"backToKnockModeButton": "Kërkoji të marrë pjesë",
"dialogTitle": "Mënyra holl",
"disableDialogContent": "Mënyra holl është aktualisht e aktivizuar. Kjo veçori garanton që në takimin tuaj smund të marrin pjesë anëtarë të padëshiruar. Doni të çaktivizohet?",
"disableDialogContent": "Mënyra holl është aktualisht e aktivizuar. Kjo veçori siguron që pjesëmarrës të padëshiruar të mos mund të hyjnë në takimin tuaj. Doni të çaktivizohet?",
"disableDialogSubmit": "Çaktivizoje",
"emailField": "Jepni adresën tuaj email",
"enableDialogPasswordField": "Caktoni fjalëkalim (në daçi)",
"enableDialogSubmit": "Aktivizoje",
"enableDialogText": "Mënyra holl ju lejon të mbroni takimin tuaj duke lejuar të hyjnë persona vetëm pas një miratimi formal nga një moderator.",
"enableDialogText": "Mënyra holl ju lejon të mbroni takimin tuaj duke u lejuar hyrje njerëzve vetëm pas një miratimi formal nga një moderator.",
"enterPasswordButton": "Jepni fjalëkalim takimi",
"enterPasswordTitle": "Që të hyni në takim, jepni fjalëkalimin",
"enterPasswordTitle": "Jepni fjalëkalimin për hyrje në takim",
"errorMissingPassword": "Ju lutemi, jepni fjalëkalimin e takimit",
"invalidPassword": "Fjalëkalim i pavlefshëm",
"joinRejectedMessage": "Kërkesa juaj për pjesëmarrje u hodh poshtë nga një moderator.",
"joinRejectedMessage": "Kërkesa juaj për hyrje u hodh poshtë nga një moderator.",
"joinTitle": "Merrni Pjesë Në Takim",
"joinWithPasswordMessage": "Po provohet hyrja me fjalëkalim, ju lutemi, pritni…",
"joiningMessage": "Do të merrni pjesë në takim sapo dikush të pranojë kërkesën tuaj",
"joiningTitle": "Po kërkohet pjesëmarrje në takim…",
"joinWithPasswordMessage": "Po provohet të hyhet me fjalëkalim, ju lutemi, pritni…",
"joiningMessage": "Do të hyni në takim sapo dikush të pranojë kërkesën tuaj",
"joiningTitle": "Po kërkohet të hyhet në takim…",
"joiningWithPasswordTitle": "Po hyhet me fjalëkalim…",
"knockButton": "Kërko Pjesëmarrje",
"knockTitle": "Dikush dëshiron të marrë pjesë në takim",
"knockingParticipantList": "Listë pjesëmarrësish me trokitje",
"knockButton": "Kërko të Hyhet",
"knockTitle": "Dikush dëshiron të hyjë në takim",
"knockingParticipantList": "Listë pjesëmarrësish që duan të hyjnë",
"nameField": "Jepni emrin tuaj",
"notificationLobbyAccessDenied": "{{targetParticipantName}} sështë pranuar të marrë pjesë, nga {{originParticipantName}}",
"notificationLobbyAccessGranted": "{{targetParticipantName}} është pranuar të marrë pjesë, nga {{originParticipantName}}",
"notificationLobbyAccessDenied": "Hyrja e {{targetParticipantName}} është hedhur poshtë nga {{originParticipantName}}",
"notificationLobbyAccessGranted": "{{targetParticipantName}} është lejuar të hyjë nga {{originParticipantName}}",
"notificationLobbyDisabled": "Holli është çaktivizuar nga {{originParticipantName}}",
"notificationLobbyEnabled": "Holli është aktivizuar nga {{originParticipantName}}",
"notificationTitle": "Holl",
"passwordField": "Jepni fjalëkalim takimi",
"passwordJoinButton": "Hyni",
"reject": "Hidhe poshtë",
"toggleLabel": "Aktivizo hollin"
"rejectAll": "Hidhi poshtë të tërë",
"toggleLabel": "Aktivizoni hollin"
},
"localRecording": {
"clientState": {
@@ -504,7 +567,7 @@
"on": "On",
"unknown": "E panjohur"
},
"dialogTitle": "Kontrolle Vendore Regjistrimesh",
"dialogTitle": "Kontrolle Regjistrimesh Vendore",
"duration": "Kohëzgjatje",
"durationNA": "N/A",
"encoding": "Kodim",
@@ -536,75 +599,134 @@
"me": "unë",
"notify": {
"OldElectronAPPTitle": "Cenueshmëri sigurie!",
"allowAction": "Lejoje",
"allowedUnmute": "Mund të hiqni heshtimin e mikrofonit tuaj, të nisni kamerën tuaj ose të tregoni ekranin tuaj.",
"audioUnmuteBlockedDescription": "Veprimi i heqjes së heshtimit të mikrofonit është bllokuar përkohësisht për shkak kufizimesh të sistemit.",
"audioUnmuteBlockedTitle": "Heqje heshtimi mikrofoni e bllokuar!",
"chatMessages": "Mesazhe fjalosjeje",
"connectedOneMember": "{{name}} nisi takimin",
"connectedThreePlusMembers": "{{name}} dhe {{count}} tjerë hynë në takim",
"connectedThreePlusMembers": "{{name}} dhe mjaft të tjerë tjerë hynë në takim",
"connectedTwoMembers": "{{first}} dhe {{second}} tjetër hynë në takim",
"disconnected": "u shkëput",
"displayNotifications": "Shfaq njoftime për",
"focus": "Fokusi te konferenca",
"focusFail": "{{component}} jo i passhëm - riprovoni pas {{ms}} sekondash",
"grantedTo": "U akorduan të drejta moderatori për {{to}}!",
"groupTitle": "Njoftime",
"hostAskedUnmute": "Organizuesi do të donte që të hiqnit heshtimin",
"invitedOneMember": "U ftua {{name}}",
"invitedThreePlusMembers": "U ftuan {{name}} dhe {{count}} të tjerë",
"invitedTwoMembers": "U ftua {{first}} dhe {{second}} tjetër",
"hostAskedUnmute": "Moderatori do të donte të flisnit",
"invitedOneMember": "{{name}} u ftua",
"invitedThreePlusMembers": "{{name}} dhe {{count}} të tjerë u ftuan",
"invitedTwoMembers": "{{first}} dhe {{second}} u ftuan",
"kickParticipant": "{{kicked}} u përzu nga {{kicker}}",
"leftOneMember": "{{name}} doli nga takimi",
"leftThreePlusMembers": "{{name}} dhe mjaft të tjerë dolën nga takimi",
"leftTwoMembers": "{{first}} dhe {{second}} dolën nga takimi",
"me": "Unë",
"moderationInEffectCSDescription": "Ju lutemi, nëse doni tu jepni të tjerëve videon tuaj, ngrini dorën",
"moderationInEffectCSTitle": "Ndarje lënde me të tjerë është çaktivizuar nga moderatori",
"moderationInEffectDescription": "Ju lutemi, nëse doni të flisni, ngrini dorën",
"moderationInEffectTitle": "Mikrofoni është mbyllur nga moderatori",
"moderationInEffectVideoDescription": "Ju lutemi, nëse doni që videoja juaj të jetë e dukshme, ngrini dorën",
"moderationInEffectVideoTitle": "Vdeoja është mbyllur nga moderatori",
"moderationRequestFromModerator": "Organizuesi do të donte që ju të hiqnit heshtimin",
"moderationInEffectCSDescription": "Ju lutemi, ngrini dorën, nëse doni të tregoni ekranin tuaj.",
"moderationInEffectCSTitle": "Tregimi i ekranit është bllokuar nga moderatori",
"moderationInEffectDescription": "Ju lutemi, ngrini dorën, nëse doni të flisni.",
"moderationInEffectTitle": "Mikrofoni juaj është heshtuar nga moderatori",
"moderationInEffectVideoDescription": "Ju lutemi, ngrini dorën, nëse doni të niset kamera juaj.",
"moderationInEffectVideoTitle": "Kamera juaj është bllokuar nga moderatori",
"moderationRequestFromModerator": "Organizatori do të donte të hiqnit heshtimin",
"moderationRequestFromParticipant": "Dëshiron të flasë",
"moderationStartedTitle": "Filloi moderimi",
"moderationStoppedTitle": "Moderimi u ndal",
"moderationStartedTitle": "Moderimi filloi",
"moderationStoppedTitle": "Moderimi përfundoi",
"moderationToggleDescription": "nga {{participantDisplayName}}",
"moderator": "U akorduan të drejta moderatori!",
"muted": "E keni filluar të heshtuar bisedën.",
"mutedRemotelyDescription": "Mundeni përherë të hiqni heshtimin, kur jeni gati për të folur. Heshtojeni prapë, kur të keni mbaruar, për ti mbajtur larg zhurmat nga takimi.",
"mutedRemotelyTitle": "Jeni heshtuar nga {{participantDisplayName}}!",
"mutedTitle": "Jeni heshtuar!",
"moderator": "Tani jeni moderator",
"muted": "E keni filluar bisedën të heshtur.",
"mutedRemotelyDescription": "Mundeni përherë të hiqni heshtimin, kur jeni gati për të folur. Ribëni heshtimin, kur të mbaroni, për të mbajtur zhurmat jashtë takimit.",
"mutedRemotelyTitle": "Jeni heshtuar nga {{moderator}}",
"mutedTitle": "U heshtuat!",
"newDeviceAction": "Përdore",
"newDeviceAudioTitle": "U pikas pajisje audio e re",
"newDeviceCameraTitle": "U pikas kamerë e re",
"oldElectronClientDescription1": "Duket se përdorni një version të vjetër të klientit Jitsi Meet, i cili përmban cenueshmëri të ditura sigurie. Ju lutemi, siguroni përditësimin e tij me ",
"oldElectronClientDescription1": "Duket se përdorni një version të vjetër të klientit Jitsi Meet, i cili ka cenueshmëri sigurie që njihen. Ju lutemi, siguroni përditësimin me ",
"oldElectronClientDescription2": "montimin tonë më të ri",
"oldElectronClientDescription3": " që tani!",
"participantWantsToJoin": "Dëshiron të hyjë në takim",
"participantsWantToJoin": "Dëshirojnë të hyjnë në takim",
"passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) u hoq nga një tjetër pjesëmarrës",
"passwordSetRemotely": "$t(lockRoomPasswordUppercase) u caktua nga një tjetër pjesëmarrës",
"raiseHandAction": "Ngrini dorën",
"raisedHand": "{{name}} do të donte të fliste.",
"screenShareNoAudio": " Kutizës për ndarje zëri me të tjerët si qe vënë shenjë te skena e përzgjedhjes.",
"screenShareNoAudioTitle": "Ndarjes së audios si qe vënë shenjë",
"raisedHand": "Do të donte të fliste.",
"raisedHands": "{{participantName}} dhe {{raisedHands}} persona të tjerë",
"reactionSounds": "Çaktivizo tingujt",
"reactionSoundsForAll": "Çaktivizoji tingujt për të tërë",
"screenShareNoAudio": "Kutizës për ndarje audioje me të tjerë si është vënë shenjë te skena e përzgjedhjes së dritares.",
"screenShareNoAudioTitle": "Su nda dot me të tjerë audioja e sistemit!",
"selfViewTitle": "Mundeni përherë të hiqni fshehjen e pamjes së vetes, që nga rregullimet",
"somebody": "Dikush",
"startSilentDescription": "Që të aktivizohet audioja, rihyni në takim",
"startSilentTitle": "Hytë pa audio!",
"suboptimalBrowserWarning": "Kemi frikë se takimi juaj këtu sdo të jetë dhe aq mirë këtu. Po kërkojmë rrugë për ta përmirësuar, por deri atëherë, ju lutemi, provoni një nga <a href='{{recommendedBrowserPageLink}}' target='_blank'>shfletuesit e mbuluar plotësisht</a>.",
"suboptimalExperienceTitle": "Sinjalizim Për Shfletuesin",
"unmute": "Hiqi heshtimin",
"videoMutedRemotelyDescription": "Mundeni përherë ta riaktivizoni.",
"videoMutedRemotelyTitle": "Kamera juaj është çaktivizuar nga {{participantDisplayName}}!"
"startSilentTitle": "Hytë pa zë në dalje!",
"suboptimalBrowserWarning": "Kemi frikë se funksionimi i takimit për ju sdo të jetë kushedi këtu. Po kërkojmë rrugë për ta përmirësuar këtë punë, por deri atëherë, ju lutemi, provoni të përdorni një nga <a href='{{recommendedBrowserPageLink}}' target='_blank'>shfletuesit e mbuluar plotësisht</a>.",
"suboptimalExperienceTitle": "Sinjalizim Mbi Shfletuesin",
"unmute": "Çheshtoje",
"videoMutedRemotelyDescription": "Mundeni përherë ta rihapni.",
"videoMutedRemotelyTitle": "Videoja juaj u mbyll nga {{moderator}}",
"videoUnmuteBlockedDescription": "Heqja e heshtimit të kamerës dhe veprimi i tregimit të desktopit janë bllokuar përkohësisht për shkak kufizimesh të sistemit.",
"videoUnmuteBlockedTitle": "Heqja e heshtimit të kamerës dhe tregimi i desktopit janë bllokuar!",
"viewLobby": "Shihni hollin",
"waitingParticipants": "{{waitingParticipants}} vetë"
},
"participantsPane": {
"actions": {
"allow": "Lejoji pjesëmarrësit:",
"askUnmute": "Të kërkojnë çheshtim",
"invite": "Të Ftojnë Dikë",
"muteAll": "Të Heshtojnë të tërë",
"startModeration": "Të çheshtojnë veten ose të nisin videon",
"stopEveryonesVideo": "Të ndalin videon e gjithkujt",
"stopVideo": "Të ndalin video"
"allow": "Lejoju pjesëmarrësve të:",
"allowVideo": "Çaktivizoni videon",
"askUnmute": "Kërkoni heqje heshtimi",
"audioModeration": "Hiqni heshtim të vetes",
"blockEveryoneMicCamera": "Bllokoni mikrofonin dhe kamerën e gjithkujt",
"invite": "Ftoni Dikë",
"moreModerationActions": "Më tepër mundësi moderimi",
"moreModerationControls": "Më tepër kontrolle moderimi",
"moreParticipantOptions": "Më tepër mundësi pjesëmarrësi",
"mute": "Heshtoje",
"muteAll": "Heshtoji të tërë",
"muteEveryoneElse": "Heshto gjithkënd tjetër",
"stopEveryonesVideo": "Ndal videon e gjithkujt",
"stopVideo": "Ndale videon",
"unblockEveryoneMicCamera": "Zhblloko mikrofonin dhe kamerën e gjithkujt",
"videoModeration": "Nis videon e vet"
},
"close": "Mbylle",
"header": "Pjesëmarrës",
"headings": {
"lobby": "Holli ({{count}})",
"participantsList": "Pjesëmarrës në takim ({{count}})"
}
"participantsList": "Pjesëmarrës në takim ({{count}})",
"waitingLobby": "Duke pritur në holl ({{count}})"
},
"search": "Kërkoni te pjesëmarrësit"
},
"passwordDigitsOnly": "Deri në {{number}} shifra",
"passwordSetRemotely": "caktuar nga një tjetër pjesëmarrës",
"passwordSetRemotely": "Caktuar nga një tjetër pjesëmarrës",
"polls": {
"answer": {
"skip": "Anashkaloje",
"submit": "Parashtroje"
},
"by": "Nga {{ name }}",
"create": {
"addOption": "Shtoni mundësi",
"answerPlaceholder": "Mundësia {{index}}",
"cancel": "Anuloje",
"create": "Krijoni një pyetësor",
"pollOption": "Mundësi pyetësori {{index}}",
"pollQuestion": "Pyetje Pyetësori",
"questionPlaceholder": "Bëni një pyetje",
"removeOption": "Hiqe mundësinë",
"send": "Dërgoje"
},
"notification": {
"description": "Që të votoni, hapni skedën e pyetësorëve",
"title": "Te ky takim u shtua një pyetësor i ri"
},
"results": {
"changeVote": "Ndryshoni votën",
"empty": "Te takimi ska ende pyetësorë. Nisni një pyetësor këtu!",
"hideDetailedResults": "Fshihi hollësitë",
"showDetailedResults": "Shfaqi hollësitë",
"vote": "Votoni"
}
},
"poweredby": "bazuar në",
"prejoin": {
"audioAndVideoError": "Gabim audio dhe video:",
@@ -645,16 +767,17 @@
"errorDialOutFailed": "Su bë dot thirrja e numrit. Thirrja dështoi",
"errorDialOutStatus": "Gabim në marrje gjendjeje thirrjeje numri",
"errorMissingName": "Që të merrni pjesë te takimi, ju lutemi, jepni emrin tuaj",
"errorNoPermissions": "Lypset të aktivizoni përdorim mikrofoni dhe kamere",
"errorStatusCode": "Gabim në thirrje numri, kod gjendjeje: {{status}}",
"errorValidation": "Vlerësimi i numrit dështoi",
"iWantToDialIn": "Dua ti bie",
"iWantToDialIn": "Dua ti bie numrit",
"initiated": "U nis thirrja",
"joinAudioByPhone": "Merrni pjesë me audio telefoni",
"joinMeeting": "Merrni pjesë në takim",
"joinWithoutAudio": "Merrni pjesë pa audio",
"keyboardShortcuts": "Aktivizo shkurtore Tastiere",
"keyboardShortcuts": "Aktivizo shkurtore tastiere",
"linkCopied": "Lidhja u kopjua në të papastër",
"lookGood": "Duket sikur mikrofoni juaj po punon si duhet",
"lookGood": "Mikrofoni juaj po punon si duhet",
"or": "ose",
"premeeting": "Para takimit",
"screenSharingError": "Gabim ndarjeje ekrani me të tjerë:",
@@ -678,6 +801,9 @@
"rejected": "Hedhur poshtë",
"ringing": "Po i bihet ziles…"
},
"privacyView": {
"header": "Privatësi"
},
"profile": {
"avatar": "avatar",
"setDisplayNameLabel": "Caktoni emrin tuaj për në ekran",
@@ -686,6 +812,7 @@
"title": "Profil"
},
"raisedHand": "Do të donte të fliste",
"raisedHandsLabel": "Numër duarsh të ngritura",
"recording": {
"authDropboxText": "Ngarkoje në Dropbox",
"availableSpace": "Hapësirë e gatshme: {{spaceLeft}} MB (afërsisht {{duration}} minuta regjistrim)",
@@ -700,10 +827,11 @@
"expandedPending": "Po niset regjistrimi…",
"failedToStart": "Su arrit të niset regjistrimi",
"fileSharingdescription": "Ndajeni regjistrimin me pjesëmarrësit në takim",
"limitNotificationDescriptionNative": "Për shkak kërkesash të shumta, regjistrimi juaj do të kufizohet në {{limit}} min. Për regjistrim të pakufizuar, provoni <3>{{app}}</3>.",
"limitNotificationDescriptionWeb": "Për shkak kërkesash të shumta, regjistrimi juaj do të kufizohet në {{limit}} min. Për regjistrim të pakufizuar, provoni <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
"inProgress": "Regjistrim ose transmetim drejtpërsëdrejti në ecuri e sipër",
"limitNotificationDescriptionNative": "Për shkak kërkesash të shumta, regjistrimi juaj do të kufizohet në {{limit}} min. Për regjistrime të pakufizuara provoni <3>{{app}}</3>.",
"limitNotificationDescriptionWeb": "Për shkak kërkesash të shumta, regjistrimi juaj do të kufizohet në {{limit}} min. Për regjistrime të pakufizuara provoni <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
"linkGenerated": "Kemi prodhuar një lidhje për te regjistrimi juaj.",
"live": "LIVE",
"live": "DREJTPËRSËDREJTI",
"loggedIn": "I futur si {{userName}}",
"off": "Regjistrimi u ndal",
"offBy": "{{name}} ndali regjistrimin",
@@ -714,6 +842,7 @@
"serviceDescription": "Regjistrimi juaj do të ruhet nga shërbimi i regjistrimit",
"serviceDescriptionCloud": "Regjistrim në re",
"serviceName": "Shërbim regjistrimi",
"sessionAlreadyActive": "Ky sesion po regjistrohet ose transmetohet drejtpërsëdrejti tashmë.",
"signIn": "Hyni",
"signOut": "Dilni",
"unavailable": "Hëm! {{serviceName}} sështë i passhëm aktualisht. Po punojmë për të zgjidhur problemin. Ju lutemi, riprovoni më vonë.",
@@ -726,33 +855,46 @@
"security": {
"about": "Takimit tuaj mund ti shtoni një $t(lockRoomPassword). Pjesëmarrësve do tu duhet të japin $t(lockRoomPassword) përpara se të lejohen të marrin pjesë në takim.",
"aboutReadOnly": "Pjesëmarrësit moderatorë mund ti shtojnë takimit një $t(lockRoomPassword). Pjesëmarrësve do tu duhet të japin $t(lockRoomPassword) përpara se të lejohen të marrin pjesë në takim.",
"insecureRoomNameWarning": "Emri i dhomës sështë pa rrezik. Pjesëmarrës të padëshiruar munden të marrin pjesë në konferencën tuaj. Shihni mundësinë e bërjes të sigurt të takimit tuaj, duke përdorur butonin e sigurisë.",
"securityOptions": "Mundësi sigurie"
"header": "Mundësi Sigurie",
"insecureRoomNameWarning": "Emri i dhomës sështë pa rrezik. Pjesëmarrës të padëshiruar munden të marrin pjesë në konferencën tuaj. Shihni mundësinë e bërjes të sigurt të takimit tuaj, duke përdorur butonin e sigurisë."
},
"settings": {
"calendar": {
"about": "Integrimi i me kalendar {{appName}} përdoret për të hyrë me sukses te kalendari juaj, që kështu të mund të lexohen veprimtari të ardhshme.",
"disconnect": "Shkëputu",
"microsoftSignIn": "Hyni me Microsoft",
"signedIn": "Aktualisht duke parë veprimtari kalendari për {{email}}. Klikoni mbi butonin Shkëputu më poshtë që të ndalni parjen e veprimtarive të kalendarit.",
"signedIn": "Aktualisht po shihen veprimtari kalendari për {{email}}. Klikoni mbi butonin Shkëputu më poshtë që të ndalni parjen e veprimtarive të kalendarit.",
"title": "Kalendar"
},
"desktopShareFramerate": "Shpejtësi kuadrosh për tregim desktopi",
"desktopShareHighFpsWarning": "Një shpejtësi më e madhe për tregimin e ekranit mund të ketë ndikim në konsumin e gjerësisë së bandës. Që të hyjnë në fuqi rregullimet e reja, lypset të rinisni tregimin e ekranit.",
"desktopShareWarning": "Që të hyjnë në fuqi rregullimet e reja, duhet të rinisni tregimin e ekranit.",
"devices": "Pajisje",
"followMe": "Më ndjek gjithkush",
"framesPerSecond": "kuadro-për-sekondë",
"incomingMessage": "Mesazh ardhës",
"language": "Gjuhë",
"loggedIn": "Futur si {{name}}",
"loggedIn": "I futur si {{name}}",
"microphones": "Mikrofona",
"moderator": "Moderator",
"more": "Më tepër",
"name": "Emër",
"noDevice": "Asnjë",
"participantJoined": "Hyri Pjesëmarrës",
"participantLeft": "Doli Pjesëmarrës",
"playSounds": "Luaj tingull kur",
"reactions": "Reagime takimi",
"sameAsSystem": "Njësoj me sistemin ({{label}})",
"selectAudioOutput": "Dalje audio",
"selectCamera": "Kamerë",
"selectMic": "Mikrofon",
"selfView": "Parje e vetes",
"sounds": "Tinguj",
"speakers": "Altoparlantë",
"startAudioMuted": "Gjithkush fillon i heshtuar",
"startReactionsMuted": "Heshto tinguj reagimesh për këdo",
"startVideoMuted": "Gjithkush fillon i fshehur",
"talkWhileMuted": "Flisni, teksa jeni i heshtuar",
"title": "Rregullime"
},
"settingsView": {
@@ -783,12 +925,21 @@
},
"speaker": "Folës",
"speakerStats": {
"angry": "I zemëruar",
"disgusted": "I pështirosur",
"displayEmotions": "Shfaq emocione",
"fearful": "I firkësuar",
"happy": "I gëzuar",
"hours": "{{count}}h",
"minutes": "{{count}}m",
"name": "Emër",
"neutral": "Asnjanës",
"sad": "I trishtuar",
"search": "Kërko",
"seconds": "{{count}}s",
"speakerStats": "Statistika Folësi",
"speakerTime": "Kohë Folësi"
"speakerTime": "Kohë Folësi",
"surprised": "I befasuar"
},
"startupoverlay": {
"genericTitle": "Takimi lyp përdorimin e mikrofonit dhe kamerës tuaj.",
@@ -800,15 +951,21 @@
"text": "Që të rilidheni, shtypni butonin <i>Rihyni</i>.",
"title": "Thirrja juaj video u ndërpre, ngaqë kompjuteri u kalua në dremitje."
},
"termsView": {
"header": "Terma"
},
"toolbar": {
"Settings": "Rregullime",
"accessibilityLabel": {
"Settings": "Shfaq/Fshih rregullime",
"Settings": "Shfaq/Fshih rregullimet",
"audioOnly": "Hap/Mbyll vetëm audion",
"audioRoute": "Përzgjidhni pajisje zëri",
"callQuality": "Administroni cilësi video",
"boo": "Ya",
"breakoutRoom": "Hyni/Dilni nga dhomë aneks konsultimesh",
"callQuality": "Administroni cilësi videoje",
"cc": "Shfaq/Fshih titra",
"chat": "Hap / Mbyll fjalosje",
"chat": "Hapni / Mbyllni fjalosje",
"clap": "Duartrokitje",
"collapse": "Tkurre",
"document": "Shfaq/Fshih dokument të ndarë",
"download": "Shkarkoni aplikacionet tona",
@@ -819,36 +976,42 @@
"grantModerator": "Akordoji të Drejta Moderatori",
"hangup": "Braktiseni takimin",
"help": "Ndihmë",
"invite": "Ftoni persona",
"kick": "Përzini pjesëmarrës",
"lobbyButton": "Aktivizo/Çaktivizo mënyrën holl",
"localRecording": "Shfaq/Fshi kontrolle regjistrimi vendor",
"invite": "Ftoni njerëz",
"kick": "Përzëre pjesëmarrësin",
"laugh": "E qeshur",
"like": "Thumbs Up",
"lobbyButton": "Aktivizo/Çaktivizoni mënyrën holl",
"localRecording": "Shfaq/Fshih kontrolle regjistrimi vendor",
"lockRoom": "Aktivizo/Çaktivizo fjalëkalim takimi",
"moreActions": "Më tepër veprime",
"moreActionsMenu": "Menu “Më tepër veprime”",
"moreOptions": "Shfaq më tepër mundësi",
"mute": "Mbyll/Hap zërin",
"mute": "Heshtoje / Çheshtoje",
"muteEveryone": "Heshto gjithkënd",
"muteEveryoneElse": "Heshto gjithkënd tjetër",
"muteEveryoneElsesVideo": "Çaktivizo kamerën e gjithkujt tjetër",
"muteEveryonesVideo": "Çaktivizo kamerën e gjithkujt",
"muteEveryoneElsesVideoStream": "Ndal videon e gjithkujt tjetër",
"muteEveryonesVideoStream": "Ndal videon e gjithkujt",
"participants": "Pjesëmarrës",
"pip": "Kalo/Dil nga mënyra “Picture-in-Picture”",
"privateMessage": "Dërgo mesazh privat",
"pip": "Aktivizo/Çaktivizo mënyrën “Picture-in-Picture”",
"privateMessage": "Dërgoni mesazh privat",
"profile": "Përpunoni profilin tuaj",
"raiseHand": "Ngrini/Ulni dorën",
"recording": "Nis/Ndal regjistrim",
"raiseHand": "Ngrini / Ulni dorën tuaj",
"reactionsMenu": "Hap / Mbyll menu reagimesh",
"recording": "Nis/Ndal regjistrimin",
"remoteMute": "Heshto pjesëmarrësin",
"remoteVideoMute": "Çaktivizo kamerën e pjesëmarrësit",
"security": "Mundësi sigurie",
"selectBackground": "Përzgjidhni Sfond",
"selfView": "Shfaq/Fshih pamje veteje",
"shareRoom": "Ftoni dikë",
"shareYourScreen": "Nisni / Ndalni dhënien e ekranit tuaj",
"shareYourScreen": "Nisni / Ndalni tregimin e ekranit tuaj",
"shareaudio": "Ndani audio me të tjerë",
"sharedvideo": "Shfaq/Fshih skenë për ndarje videoje YouTube me të tjerët",
"shortcuts": "Shfaq/Fshih shkurtoret",
"show": "Show on stage",
"speakerStats": "Shfaqni statistika folësi",
"sharedvideo": "Aktivizo/Çaktivizo ndarje videoje me të tjerë",
"shortcuts": "Shfaq/Fshih shkurtore",
"show": "Shfaqe në skenë",
"silence": "Heshtje",
"speakerStats": "Shfaq/Fshih statistika folësi",
"surprised": "I befasuar",
"tileView": "Kalo/Dil nga mënyra mozaik",
"toggleCamera": "Hap/Mbyll kamerën",
"toggleFilmstrip": "Shfaq/Fshih shirit filmi",
@@ -860,10 +1023,14 @@
"audioOnlyOn": "Aktivizo mënyrën “Sasi e ulët të dhënash trafiku”",
"audioRoute": "Përzgjidhni pajisje zëri",
"audioSettings": "Rregullime për audion",
"authenticate": "Bëni mirëfilltësim",
"authenticate": "Bëni mirëfilltësimin",
"boo": "Ya",
"callQuality": "Administroni cilësi video",
"chat": "Hap / Mbyll fjalosje",
"clap": "Duartrokitje",
"closeChat": "Mbyll fjalosjen",
"closeReactionsMenu": "Mbyll menu reagimesh",
"disableReactionSounds": "Mund të çaktivizoni tinguj reagimesh për këtë takim",
"documentClose": "Mbylle dokumentin e ndarë",
"documentOpen": "Hape dokumentin e ndarë",
"download": "Shkarkoni aplikacione tonat",
@@ -877,6 +1044,10 @@
"hangup": "Braktisni takimin",
"help": "Ndihmë",
"invite": "Ftoni persona",
"joinBreakoutRoom": "Hyni në dhomë aneks konsultimesh",
"laugh": "Qeshje",
"leaveBreakoutRoom": "Dilni nga dhomë aneks konsultimesh",
"like": "Thumbs Up",
"lobbyButtonDisable": "Çaktivizo mënyrën holl",
"lobbyButtonEnable": "Aktivizo mënyrën holl",
"login": "Hyrje",
@@ -886,7 +1057,7 @@
"moreOptions": "Më tepër veprime",
"mute": "Heshtoje / Hiqi heshtimin",
"muteEveryone": "Heshto gjithkënd",
"muteEveryonesVideo": "Çaktivizo kamerën e kujtdo",
"muteEveryonesVideo": "Çaktivizo videon e gjithkujt",
"noAudioSignalDesc": "Nëse se keni heshtuar që nga rregullimet e sistemit, ose nga hardware-i, shihni mundësinë e ndërrimit të pajisjes.",
"noAudioSignalDescSuggestion": "Nëse se keni heshtuar që nga rregullimet e sistemit, ose nga hardware-i, shihni mundësinë e kalimit te pajisja e sugjeruar.",
"noAudioSignalDialInDesc": "Mund ti bini numrit edhe duke përdorur:",
@@ -895,32 +1066,42 @@
"noisyAudioInputDesc": "Dëgjohet sikur mikrofoni juaj prodhon zhurmë, ju lutemi, shihni mundësinë e heshtimit të tij, ose të ndërrimit të pajisjes.",
"noisyAudioInputTitle": "Mikrofoni juaj duket të jetë i zhurmshëm!",
"openChat": "Hapni fjalosje",
"openReactionsMenu": "Hap menu reagimesh",
"participants": "Pjesëmarrës",
"pip": "Kalo nën mënyrën “Picture-in-Picture”",
"privateMessage": "Dërgo mesazh privat",
"profile": "Përpunoni profilin tuaj",
"raiseHand": "Ngrini / Ulni dorën",
"raiseYourHand": "Ngrini dorën",
"reactionBoo": "Dërgo reagim me ya",
"reactionClap": "Dërgo reagim me duartrokitje",
"reactionLaugh": "Dërgo reagim me qeshje",
"reactionLike": "Dërgo reagim me “thumbs up”",
"reactionSilence": "Dërgo reagim me heshtje",
"reactionSurprised": "Dërgo reagim të befasuari",
"security": "Mundësi sigurie",
"selectBackground": "Përzgjidhni sfond",
"shareRoom": "Ftoni dikë",
"shareaudio": "Ndani audio me të tjerë",
"sharedvideo": "Ndani video me të tjerë",
"shortcuts": "Shihni shkurtore",
"silence": "Heshtje",
"speakerStats": "Statistika folësi",
"startScreenSharing": "Nise tregimin e ekranit",
"startSubtitles": "Nis titra",
"stopAudioSharing": "Ndal ndarje audioje me të tjerë",
"stopScreenSharing": "Ndale tregimin e ekranit",
"stopSharedVideo": "Ndale videon",
"stopSubtitles": "Ndali titrat",
"surprised": "I befasuar",
"talkWhileMutedPopup": "Po provoni të flisni? Jeni i heshtuar.",
"tileViewToggle": "Kaloni/Dilni nga mënyra mozaik",
"toggleCamera": "Hapni/Mbyllni kamerën",
"videoSettings": "Rregullime për videon",
"videomute": "Nise / Ndale kamerën"
"videoSetting": "Rregullime videoje",
"videomute": "Nisni / Ndalni kamerën"
},
"transcribing": {
"ccButtonTooltip": "Ndal / Nisi titrat",
"ccButtonTooltip": "Ndali / Nisi titrat",
"error": "Transkriptimi dështoi. Ju lutemi, riprovoni.",
"expandedLabel": "Transkriptimi aktualisht është aktiv",
"failedToStart": "Su arrit të nisej transkriptim",
@@ -950,21 +1131,25 @@
"errorInvite": "Konferencë ende pa u nisur. Ju lutemi, riprovoni më vonë.",
"errorInviteFailed": "Po merremi me zgjidhjen e problemit. Ju lutemi, riprovoni më vonë.",
"errorInviteFailedTitle": "Su arrit të ftohej {{displayName}}",
"errorInviteTitle": "Gabim në ftimin e dhomës",
"errorInviteTitle": "Gabim në ftesën e dhomës",
"pending": "{{displayName}} u ftua"
},
"videoStatus": {
"adjustFor": "Rregulloje për:",
"audioOnly": "AUD",
"audioOnlyExpanded": "Gjendeni nën mënyrën “sasi e ulët trafiku”. Nën këtë mënyrë, do të merrni vetëm audio dhe tregim ekrani.",
"audioOnlyExpanded": "Gjendeni nën mënyrën “gjerësi e ulët bande”. Nën këtë mënyrë, do të merrni vetëm audio dhe tregim ekrani.",
"bestPerformance": "Punimi më i mirë",
"callQuality": "Cilësi videoje",
"hd": "CL",
"hdTooltip": "Po shihet video në cilësi të lartë",
"highDefinition": "Cilësi e Lartë",
"highestQuality": "Cilësia më e lartë",
"labelTooiltipNoVideo": "Pa video",
"labelTooltipAudioOnly": "U aktivizua mënyra “sasi e ulët trafiku”",
"labelTooltipAudioOnly": "U aktivizua mënyra “gjerësi e ulët bande”",
"ld": "CU",
"ldTooltip": "Po shihet video në cilësi të ulët",
"lowDefinition": "Cilësi e Ulët",
"lowDefinition": "Cilësi e ulët",
"performanceSettings": "Rregullime funksionimi",
"sd": "CS",
"sdTooltip": "Po shihet video në cilësi standarde",
"standardDefinition": "Cilësi standarde"
@@ -975,38 +1160,43 @@
"domuteOthers": "Heshto gjithkënd tjetër",
"domuteVideo": "Çaktivizoje kamerën",
"domuteVideoOfOthers": "Çaktivizo kamerën e gjithkujt tjetër",
"flip": "Flip",
"grantModerator": "Akordoji Leje Moderatori",
"flip": "Ktheje më anë tjetër",
"grantModerator": "Akordoji të Drejta Moderatori",
"hideSelfView": "Fshihe pamjen e vetes",
"kick": "Përzëre",
"moderator": "Moderator",
"mute": "Pjesëmarrësi është heshtuar",
"muted": "I heshtuar",
"remoteControl": "Nisni / Ndalni kontroll së largëti",
"show": "Show on stage",
"remoteControl": "Nis / Ndal kontroll së largëti",
"screenSharing": "Pjesëmarrësi po tregon ekranin e vet",
"show": "Shfaqe në skenë",
"showSelfView": "Shfaq pamje të vetes",
"videoMuted": "Kamera e çaktivizuar",
"videomute": "Pjesëmarrësi ka ndalur kamerën"
},
"virtualBackground": {
"addBackground": "Shtoni sfond",
"apply": "Zbatoje",
"backgroundEffectError": "Su arrit të zbatohej efekt sfondi.",
"blur": "Turbulloje",
"deleteImage": "Fshije figurën",
"desktopShare": "Dhënie desktopi",
"desktopShareError": "Su krijua dot dhënie desktopi",
"desktopShare": "Tregim desktopi",
"desktopShareError": "Su krijua dot tregim desktopi",
"image1": "Plazh",
"image2": "Mur i bardhë neutral",
"image2": "Mur i bardhë asnjanës",
"image3": "Dhomë e bardhë e zbrazët",
"image4": "Llambadar i zi dyshemeje",
"image4": "Ndriçues i zi dysheme",
"image5": "Mal",
"image6": "Pyll",
"image6": "Pyll ",
"image7": "Ag",
"none": "Asnjë",
"pleaseWait": "Ju lutemi, pritni…",
"removeBackground": "Hiqe sfondin",
"slightBlur": "Turbullim Paksa",
"title": "Sfonde virtualë",
"uploadedImage": "Ngarkoni figurë {{index}}",
"webAssemblyWarning": "WebAssembly nuk mbulohet"
"uploadedImage": "Ngarkoi figurën {{index}}",
"webAssemblyWarning": "Nuk mbulohet WebAssembly",
"webAssemblyWarningDescription": "WebAssembly e çaktivizuar ose e pambuluar nga ky shfletues"
},
"volumeSlider": "Rrëshqitës volumi",
"welcomepage": {
@@ -1029,16 +1219,16 @@
"goSmall": "SHKO",
"headerSubtitle": "Takime me siguri dhe me cilësi të lartë",
"headerTitle": "Jitsi Meet",
"info": "Hollësi për dial-in",
"jitsiOnMobile": "Jitsi në celular Shkarkoni aplikacione tona dhe nisni një takim prej ngado",
"info": "Hollësi për ti rënë numrit",
"jitsiOnMobile": "Jitsi në celular Shkarkoni aplikacionet tona dhe nisni një takim prej ngado",
"join": "KRIJONI / MERRNI PJESË",
"logo": {
"calendar": "Stemë Calendar-i",
"desktopPreviewThumbnail": "Miniaturë paraparjeje desktop",
"googleLogo": "Stemë Google",
"logoDeepLinking": "Stemë Jitsi Meet",
"calendar": "Stemë kalendari",
"desktopPreviewThumbnail": "Miniaturë paraparjeje desktopi",
"googleLogo": "Stemë Google-i",
"logoDeepLinking": "Stemë Jitsi meet",
"microsoftLogo": "Stemë Microsoft-i",
"policyLogo": "Stemë Policy"
"policyLogo": "Stemë Rregullash"
},
"mobileDownLoadLinkAndroid": "Shkarkoni aplikacionin për celular me Android",
"mobileDownLoadLinkFDroid": "Shkarkoni aplikacionin për celular me F-Droid",

View File

@@ -250,7 +250,7 @@
"screenSharingPermissionDeniedError": "Ух! Нeшто сe догодило додјелом дозвола за додатак за дијељење екрана. Освјежите и покушајтe поново.",
"serviceUnavailable": "",
"sessTerminated": "",
"shareVideoLinkError": "Унeситe тачну вeзу на YouTube.",
"shareVideoLinkError": "Унeситe тачну вeзу.",
"shareVideoTitle": "Дијeлитe видeозапис",
"shareYourScreen": "Дијeлитe ваш eкран",
"shareYourScreenDisabled": "Дијeљeњe eкрана јe искључeно.",
@@ -656,14 +656,14 @@
"raiseHand": "Подигни / спусти руку",
"raiseYourHand": "Подигни руку",
"shareRoom": "Позови нeкога",
"sharedvideo": одијeли YouTube видeозапис",
"sharedvideo": одијeли видeозапис",
"shortcuts": "Приказ прeчица",
"speakerStats": "Статистика говорника",
"startScreenSharing": окрeни дијeљeњe eкрана",
"startSubtitles": окрeни поднасловe",
"startvideoblur": "Замути моју позадину",
"stopScreenSharing": "Заустави дијeљeњe eкрана",
"stopSharedVideo": "Заустави YouTube видeозапис",
"stopSharedVideo": "Заустави видeозапис",
"stopSubtitles": "Заустави поднасловe",
"stopvideoblur": "Искључи замућену позадину",
"talkWhileMutedPopup": "Покушаваш говорити? Утишан си.",

View File

@@ -354,7 +354,7 @@
"shareScreenWarningD2": "du måste avsluta ljuddelning, starta skärmdelning och sen aktivera \"ljuddelning\"",
"shareScreenWarningH1": "Om du bara vill dela din skärm:",
"shareScreenWarningTitle": "Du måste avsluta ljuddelning innan du kan dela in skärm",
"shareVideoLinkError": "Skriv in en fungerande YouTube-länk.",
"shareVideoLinkError": "Skriv in en fungerande länk.",
"shareVideoTitle": "Ta bort en delad video",
"shareYourScreen": "Dela din skärm",
"shareYourScreenDisabled": "Skärmdelning har inaktiverats.",
@@ -951,7 +951,7 @@
"shareRoom": "Bjud in någon",
"shareYourScreen": "Slå av eller på skärmdelning",
"shareaudio": "Dela ljud",
"sharedvideo": "Slå av eller på YouTube-videodelning",
"sharedvideo": "Slå av eller på videodelning",
"shortcuts": "Stäng eller öppna genvägar",
"show": "Visa på scenen",
"silence": "Tyst läge",
@@ -1026,7 +1026,7 @@
"selectBackground": "Välj bakgrund",
"shareRoom": "Bjud in någon",
"shareaudio": "Dela ljud",
"sharedvideo": "Dela en YouTube-video",
"sharedvideo": "Dela en video",
"shortcuts": "Visa genvägar",
"silence": "Tystnad",
"speakerStats": "Talarstatistik",
@@ -1035,7 +1035,7 @@
"startvideoblur": "Blurra min bakgrund",
"stopAudioSharing": "Inaktivera ljuddelning",
"stopScreenSharing": "Avsluta skämdelning",
"stopSharedVideo": "Pausa YouTube-video",
"stopSharedVideo": "Pausa video",
"stopSubtitles": "Avsluta undertextning",
"stopvideoblur": "Inaktivera bakgrundsblurr",
"surprised": "Överaskad",

View File

@@ -807,7 +807,7 @@
"shareRoom": "Invite someone",
"shareYourScreen": "Toggle screenshare",
"shareaudio": "Share audio",
"sharedvideo": "Toggle YouTube video sharing",
"sharedvideo": "Toggle video sharing",
"shortcuts": "Toggle shortcuts",
"show": "Show on stage",
"speakerStats": "Toggle speaker statistics",
@@ -866,13 +866,13 @@
"selectBackground": "వెనుతలం ఎంచుకోండి",
"shareRoom": "Invite someone",
"shareaudio": "Share audio",
"sharedvideo": "Share a YouTube video",
"sharedvideo": "Share video",
"shortcuts": "View shortcuts",
"speakerStats": "Speaker stats",
"startScreenSharing": "Start screen sharing",
"startSubtitles": "Start subtitles",
"stopScreenSharing": "Stop screen sharing",
"stopSharedVideo": "Stop YouTube video",
"stopSharedVideo": "Stop video",
"stopSubtitles": "Stop subtitles",
"talkWhileMutedPopup": "మాట్లాడటానికి ప్రయత్నిస్తున్నారా? మీరు మౌనించబడివున్నారు.",
"tileViewToggle": "Toggle tile view",

View File

@@ -360,7 +360,7 @@
"shareScreenWarningD2": "ses paylaşımını durdurmanız, ekran paylaşımını başlatmanız ve \"sesi paylaş\" seçeneğini işaretlemeniz gerekiyor.",
"shareScreenWarningH1": "Sadece ekranınızı paylaşmak istiyorsanız:",
"shareScreenWarningTitle": "Ekranınızı paylaşmadan önce ses paylaşımını durdurmanız gerekiyor",
"shareVideoLinkError": "Lütfen doğru bir Youtube bağlantısı sağlayın.",
"shareVideoLinkError": "Lütfen doğru bir bağlantısı sağlayın.",
"shareVideoTitle": "Bir video paylaş",
"shareYourScreen": "Ekranınızı paylaşın",
"shareYourScreenDisabled": "Ekran paylaşımı devre dışı.",
@@ -964,7 +964,7 @@
"shareRoom": "Birini davet et",
"shareYourScreen": "Ekran paylaşımını aç/kapat",
"shareaudio": "Sesi paylaş",
"sharedvideo": "Youtube video paylaşmayı aç/kapat",
"sharedvideo": "Video paylaşmayı aç/kapat",
"shortcuts": "Kısayolları aç/kapat",
"show": "Sahnede göster",
"silence": "Sessiz",
@@ -1039,7 +1039,7 @@
"selectBackground": "Arkaplan seç",
"shareRoom": "Birini davet et",
"shareaudio": "Ses paylaş",
"sharedvideo": "Bir Youtube videosu paylaş",
"sharedvideo": "Bir videosu paylaş",
"shortcuts": "Kısayolları göster",
"silence": "Sessiz",
"speakerStats": "Konuşmacı istatistikleri",
@@ -1048,7 +1048,7 @@
"startvideoblur": "",
"stopAudioSharing": "Ses paylaşımını durdur",
"stopScreenSharing": "Ekran paylaşımını durdur",
"stopSharedVideo": "Youtube videosunu durdur",
"stopSharedVideo": "Videosunu durdur",
"stopSubtitles": "Altyazıları durdur",
"stopvideoblur": "",
"surprised": "Sürpriz",

View File

@@ -304,7 +304,7 @@
"sendPrivateMessageTitle": "Надіслати приватне повідомлення?",
"serviceUnavailable": "Служба недоступна",
"sessTerminated": "Зв'язок перервано",
"shareVideoLinkError": "Будь ласка, зазначте правильне посилання в Youtube.",
"shareVideoLinkError": "Будь ласка, зазначте правильне посилання.",
"shareVideoTitle": "Поділитися відео",
"shareYourScreen": "Демонстрація екрану",
"shareYourScreenDisabled": "Доступ до екрану вимкнено.",
@@ -755,7 +755,7 @@
"security": "Настройки безопасности",
"shareRoom": "Надіслати запрошення",
"shareYourScreen": "Демонструвати мій екран",
"sharedvideo": "Активація YouTube-трансляції",
"sharedvideo": "Активація трансляції",
"shortcuts": "Показувати значки",
"show": "Показати з наближенням",
"speakerStats": "Показувати статистику",

View File

@@ -261,7 +261,7 @@
"screenSharingPermissionDeniedError": "Không thể truy cập micro",
"serviceUnavailable": "Dịch vụ không khả dụng",
"sessTerminated": "Cuộc gọi kết thúc",
"shareVideoLinkError": "Vui lòng cung cấp liên kết youtube chính xác.",
"shareVideoLinkError": "Vui lòng cung cấp liên kết chính xác.",
"shareVideoTitle": "Chia sẻ video",
"shareYourScreen": "Chia sẻ màn hình của bạn",
"shareYourScreenDisabled": "Chia sẻ màn hình đã tắt.",
@@ -619,7 +619,7 @@
"selectBackground": "Chọn hình nền",
"shareRoom": "Mời ai đó",
"shareYourScreen": "Mở/Đóng Chia sẻ màn hình",
"sharedvideo": "Mở/Đóng Chia sẻ YouTube",
"sharedvideo": "Mở/Đóng Chia",
"shortcuts": "Mở/Đóng Phím tắt",
"show": "",
"speakerStats": "Mở/Đóng Thống kê",
@@ -664,14 +664,14 @@
"security": "Tùy chọn bảo mật",
"selectBackground": "Chọn hình nền",
"shareRoom": "Mời ai đó",
"sharedvideo": "Chia sẻ YouTube video",
"sharedvideo": "Chia sẻ video",
"shortcuts": "Xem phím tắt",
"speakerStats": "Thống kê về diễn giả",
"startScreenSharing": "Bắt đầu chia sẻ màn hình",
"startSubtitles": "Bắt đầu phụ đề",
"startvideoblur": "",
"stopScreenSharing": "Dừng chia sẻ màn hình",
"stopSharedVideo": "Dừng Youtube",
"stopSharedVideo": "Dừng video",
"stopSubtitles": "Dừng phụ đề",
"stopvideoblur": "",
"talkWhileMutedPopup": "Cố gắng để nói chuyện? Bạn đang tắt tiếng.",

View File

@@ -927,6 +927,7 @@
"speakerStats": {
"angry": "Angry",
"disgusted": "Disgusted",
"displayEmotions": "Display emotions",
"fearful": "Fearful",
"happy": "Happy",
"hours": "{{count}}h",
@@ -1001,10 +1002,11 @@
"remoteVideoMute": "Disable camera of participant",
"security": "Security options",
"selectBackground": "Select Background",
"selfView": "Toggle self view",
"shareRoom": "Invite someone",
"shareYourScreen": "Start / Stop sharing your screen",
"shareaudio": "Share audio",
"sharedvideo": "Toggle YouTube video sharing",
"sharedvideo": "Toggle video sharing",
"shortcuts": "Toggle shortcuts",
"show": "Show on stage",
"silence": "Silence",
@@ -1168,6 +1170,7 @@
"remoteControl": "Start / Stop remote control",
"screenSharing": "Participant is sharing their screen",
"show": "Show on stage",
"showSelfView": "Show self view",
"videoMuted": "Camera disabled",
"videomute": "Participant has stopped the camera"
},

View File

@@ -43,6 +43,15 @@ import {
} from '../../react/features/base/participants';
import { updateSettings } from '../../react/features/base/settings';
import { isToggleCameraEnabled, toggleCamera } from '../../react/features/base/tracks';
import {
autoAssignToBreakoutRooms,
closeBreakoutRoom,
createBreakoutRoom,
moveToRoom,
removeBreakoutRoom,
sendParticipantToRoom
} from '../../react/features/breakout-rooms/actions';
import { getBreakoutRooms } from '../../react/features/breakout-rooms/functions';
import {
sendMessage,
setPrivateMessageRecipient,
@@ -64,12 +73,17 @@ import {
resizeLargeVideo
} from '../../react/features/large-video/actions.web';
import { toggleLobbyMode, setKnockingParticipantApproval } from '../../react/features/lobby/actions';
import { isForceMuted } from '../../react/features/participants-pane/functions';
import {
close as closeParticipantsPane,
open as openParticipantsPane
} from '../../react/features/participants-pane/actions';
import { getParticipantsPaneOpen, isForceMuted } from '../../react/features/participants-pane/functions';
import { RECORDING_TYPES } from '../../react/features/recording/constants';
import { getActiveSession } from '../../react/features/recording/functions';
import { isScreenAudioSupported, isScreenVideoShared } from '../../react/features/screen-share';
import { isScreenAudioSupported } from '../../react/features/screen-share';
import { startScreenShareFlow, startAudioScreenShareFlow } from '../../react/features/screen-share/actions';
import { toggleScreenshotCaptureSummary } from '../../react/features/screenshot-capture';
import { isScreenshotCaptureEnabled } from '../../react/features/screenshot-capture/functions';
import { playSharedVideo, stopSharedVideo } from '../../react/features/shared-video/actions.any';
import { extractYoutubeIdOrURL } from '../../react/features/shared-video/functions';
import { toggleTileView, setTileView } from '../../react/features/video-layout';
@@ -117,6 +131,14 @@ let videoAvailable = true;
*/
function initCommands() {
commands = {
'add-breakout-room': name => {
if (!isLocalParticipantModerator(APP.store.getState())) {
logger.error('Missing moderator rights to add breakout rooms');
return;
}
APP.store.dispatch(createBreakoutRoom(name));
},
'answer-knocking-participant': (id, approved) => {
APP.store.dispatch(setKnockingParticipantApproval(id, approved));
},
@@ -134,6 +156,14 @@ function initCommands() {
APP.store.dispatch(approveParticipantAudio(participantId));
},
'auto-assign-to-breakout-rooms': () => {
if (!isLocalParticipantModerator(APP.store.getState())) {
logger.error('Missing moderator rights to auto-assign participants to breakout rooms');
return;
}
APP.store.dispatch(autoAssignToBreakoutRooms());
},
'display-name': displayName => {
sendAnalytics(createApiEvent('display.name.changed'));
APP.conference.changeLocalDisplayName(displayName);
@@ -197,6 +227,14 @@ function initCommands() {
APP.store.dispatch(reject(participantId));
},
'remove-breakout-room': breakoutRoomJid => {
if (!isLocalParticipantModerator(APP.store.getState())) {
logger.error('Missing moderator rights to remove breakout rooms');
return;
}
APP.store.dispatch(removeBreakoutRoom(breakoutRoomJid));
},
'resize-large-video': (width, height) => {
logger.debug('Resize large video command received');
sendAnalytics(createApiEvent('largevideo.resized'));
@@ -283,6 +321,12 @@ function initCommands() {
APP.store.dispatch(disable());
}
},
'toggle-participants-pane': enabled => {
const toggleParticipantsPane = enabled
? openParticipantsPane : closeParticipantsPane;
APP.store.dispatch(toggleParticipantsPane());
},
'toggle-raise-hand': () => {
const localParticipant = getLocalParticipant(APP.store.getState());
@@ -481,9 +525,7 @@ function initCommands() {
return;
}
const enableScreenshotCapture = state['features/base/config'].enableScreenshotCapture;
if (enableScreenshotCapture && isScreenVideoShared(state)) {
if (isScreenshotCaptureEnabled(state, true, false)) {
APP.store.dispatch(toggleScreenshotCaptureSummary(true));
}
conference.startRecording(recordingConfig);
@@ -514,9 +556,7 @@ function initCommands() {
const activeSession = getActiveSession(state, mode);
if (activeSession && activeSession.id) {
if (state['features/base/config'].enableScreenshotCapture) {
APP.store.dispatch(toggleScreenshotCaptureSummary(false));
}
APP.store.dispatch(toggleScreenshotCaptureSummary(false));
conference.stopRecording(activeSession.id);
} else {
logger.error('No recording or streaming session found');
@@ -540,6 +580,26 @@ function initCommands() {
'cancel-private-chat': () => {
APP.store.dispatch(setPrivateMessageRecipient());
},
'close-breakout-room': roomId => {
if (!isLocalParticipantModerator(APP.store.getState())) {
logger.error('Missing moderator rights to close breakout rooms');
return;
}
APP.store.dispatch(closeBreakoutRoom(roomId));
},
'join-breakout-room': roomId => {
APP.store.dispatch(moveToRoom(roomId));
},
'send-participant-to-room': (participantId, roomId) => {
if (!isLocalParticipantModerator(APP.store.getState())) {
logger.error('Missing moderator rights to send participants to rooms');
return;
}
APP.store.dispatch(sendParticipantToRoom(participantId, roomId));
},
'kick-participant': participantId => {
APP.store.dispatch(kickParticipant(participantId));
},
@@ -640,6 +700,10 @@ function initCommands() {
callback(isForceMuted(participant, type, state));
break;
}
case 'is-participants-pane-open': {
callback(getParticipantsPaneOpen(APP.store.getState()));
break;
}
case 'is-video-muted':
callback(APP.conference.isLocalVideoMuted());
break;
@@ -684,6 +748,10 @@ function initCommands() {
});
break;
}
case 'list-breakout-rooms': {
callback(getBreakoutRooms(APP.store.getState()));
break;
}
default:
return false;
}
@@ -1151,8 +1219,8 @@ class API {
*
* @param {string} roomName - The room name.
* @param {string} id - The id of the local user.
* @param {Object} props - The display name and avatar URL of the local
* user.
* @param {Object} props - The display name, the avatar URL of the local
* user and the type of the room.
* @returns {void}
*/
notifyConferenceJoined(roomName: string, id: string, props: Object) {

View File

@@ -27,17 +27,21 @@ const ALWAYS_ON_TOP_FILENAMES = [
* commands expected by jitsi-meet.
*/
const commands = {
addBreakoutRoom: 'add-breakout-room',
answerKnockingParticipant: 'answer-knocking-participant',
approveVideo: 'approve-video',
askToUnmute: 'ask-to-unmute',
autoAssignToBreakoutRooms: 'auto-assign-to-breakout-rooms',
avatarUrl: 'avatar-url',
cancelPrivateChat: 'cancel-private-chat',
closeBreakoutRoom: 'close-breakout-room',
displayName: 'display-name',
e2eeKey: 'e2ee-key',
email: 'email',
toggleLobby: 'toggle-lobby',
hangup: 'video-hangup',
initiatePrivateChat: 'initiate-private-chat',
joinBreakoutRoom: 'join-breakout-room',
localSubject: 'local-subject',
kickParticipant: 'kick-participant',
muteEveryone: 'mute-everyone',
@@ -45,9 +49,11 @@ const commands = {
password: 'password',
pinParticipant: 'pin-participant',
rejectParticipant: 'reject-participant',
removeBreakoutRoom: 'remove-breakout-room',
resizeLargeVideo: 'resize-large-video',
sendChatMessage: 'send-chat-message',
sendEndpointTextMessage: 'send-endpoint-text-message',
sendParticipantToRoom: 'send-participant-to-room',
sendTones: 'send-tones',
setFollowMe: 'set-follow-me',
setLargeVideoParticipant: 'set-large-video-participant',
@@ -68,6 +74,7 @@ const commands = {
toggleE2EE: 'toggle-e2ee',
toggleFilmStrip: 'toggle-film-strip',
toggleModeration: 'toggle-moderation',
toggleParticipantsPane: 'toggle-participants-pane',
toggleRaiseHand: 'toggle-raise-hand',
toggleShareAudio: 'toggle-share-audio',
toggleShareScreen: 'toggle-share-screen',
@@ -940,6 +947,18 @@ export default class JitsiMeetExternalAPI extends EventEmitter {
});
}
/**
* Returns whether the participants pane is open.
*
* @returns {Promise} - Resolves with true if the participants pane is open
* and with false if not.
*/
isParticipantsPaneOpen() {
return this._transport.sendRequest({
name: 'is-participants-pane-open'
});
}
/**
* Returns screen sharing status.
*
@@ -1041,6 +1060,17 @@ export default class JitsiMeetExternalAPI extends EventEmitter {
});
}
/**
* Returns the list of breakout rooms.
*
* @returns {Promise} Resolves with the list of breakout rooms.
*/
listBreakoutRooms() {
return this._transport.sendRequest({
name: 'list-breakout-rooms'
});
}
/**
* Pins a participant's video on to the stage view.
*

165
package-lock.json generated
View File

@@ -34,7 +34,7 @@
"@jitsi/rtcstats": "9.0.1",
"@material-ui/core": "4.11.3",
"@matrix-org/olm": "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.3.tgz",
"@microsoft/microsoft-graph-client": "1.1.0",
"@microsoft/microsoft-graph-client": "3.0.1",
"@react-native-async-storage/async-storage": "1.15.14",
"@react-native-community/clipboard": "1.5.1",
"@react-native-community/netinfo": "7.1.7",
@@ -67,7 +67,7 @@
"jquery-i18next": "1.2.1",
"js-md5": "0.6.1",
"jwt-decode": "2.2.0",
"lib-jitsi-meet": "github:jitsi/lib-jitsi-meet#4baeb98964c6656b4ddb3fd5d355a9ddfa03fe74",
"lib-jitsi-meet": "https://github.com/jitsi/lib-jitsi-meet/releases/download/1343-2d21eb5b/lib-jitsi-meet.tgz",
"libflacjs": "github:mmig/libflac.js#93d37e7f811f01cf7d8b6a603e38bd3c3810907d",
"lodash": "4.17.21",
"moment": "2.29.1",
@@ -88,6 +88,7 @@
"react-native-collapsible": "1.6.0",
"react-native-default-preference": "github:kevinresol/react-native-default-preference#11bff5eb05cb04fd8d35b5e761eeee80525e8c6c",
"react-native-device-info": "8.4.8",
"react-native-dialog": "9.2.0",
"react-native-gesture-handler": "2.1.0",
"react-native-get-random-values": "1.7.2",
"react-native-immersive": "2.0.0",
@@ -155,6 +156,7 @@
"string-replace-loader": "3.0.3",
"style-loader": "0.19.0",
"traverse": "0.6.6",
"typescript": "4.3.5",
"unorm": "1.6.0",
"webpack": "5.57.1",
"webpack-bundle-analyzer": "4.4.2",
@@ -3495,15 +3497,23 @@
}
},
"node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch": {
"version": "2.6.5",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz",
"integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==",
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
"optional": true,
"dependencies": {
"whatwg-url": "^5.0.0"
},
"engines": {
"node": "4.x || >=6.0.0"
},
"peerDependencies": {
"encoding": "^0.1.0"
},
"peerDependenciesMeta": {
"encoding": {
"optional": true
}
}
},
"node_modules/@mapbox/node-pre-gyp/node_modules/rimraf": {
@@ -3743,14 +3753,36 @@
"integrity": "sha512-OhC9wwZ/ox9vputA1MR2A7QlYlvfXCV+tdbADOR7Jn7o9qoXh3HWf+AbSpXTK3daF0GIHA69Ws8XOnWqu5n53A=="
},
"node_modules/@microsoft/microsoft-graph-client": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@microsoft/microsoft-graph-client/-/microsoft-graph-client-1.1.0.tgz",
"integrity": "sha512-sDgchKZz1l3QJVNdkE1P1KpwTjupNt1mS9h1T0CiP+ayMN7IeFKfElB8IYtxFplNalZTmEq+iqoQFqUVpVMLfQ==",
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@microsoft/microsoft-graph-client/-/microsoft-graph-client-3.0.1.tgz",
"integrity": "sha512-sudEc1kKMsdtEI6IZfnTL8JUQ1a7pmV7D/ID2n/fsZCZH3MKi2vZ9XeKZfnFAbgaGcNT2bl55w8fcV3vBljJXA==",
"dependencies": {
"es6-promise": "^4.1.0",
"isomorphic-fetch": "^2.2.1"
"@babel/runtime": "^7.12.5",
"tslib": "^2.2.0"
},
"engines": {
"node": ">=12.0.0"
},
"peerDependenciesMeta": {
"@azure/identity": {
"optional": true
},
"@azure/msal-browser": {
"optional": true
},
"buffer": {
"optional": true
},
"stream-browserify": {
"optional": true
}
}
},
"node_modules/@microsoft/microsoft-graph-client/node_modules/tslib": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
},
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -8013,11 +8045,22 @@
}
},
"node_modules/dropbox/node_modules/node-fetch": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
"dependencies": {
"whatwg-url": "^5.0.0"
},
"engines": {
"node": "4.x || >=6.0.0"
},
"peerDependencies": {
"encoding": "^0.1.0"
},
"peerDependenciesMeta": {
"encoding": {
"optional": true
}
}
},
"node_modules/duplexer": {
@@ -8253,11 +8296,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/es6-promise": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
"integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ=="
},
"node_modules/escalade": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
@@ -12010,9 +12048,8 @@
},
"node_modules/lib-jitsi-meet": {
"version": "0.0.0",
"resolved": "git+ssh://git@github.com/jitsi/lib-jitsi-meet.git#4baeb98964c6656b4ddb3fd5d355a9ddfa03fe74",
"integrity": "sha512-iabilMXCe7l32EWEiMzFky2MVLbgQ8a9hUFIdy2EntzHSsTq52dxOWn/CO9UexeWEZfUHgngyjX2JGM0CC1k5g==",
"hasInstallScript": true,
"resolved": "https://github.com/jitsi/lib-jitsi-meet/releases/download/1343-2d21eb5b/lib-jitsi-meet.tgz",
"integrity": "sha512-AXvmJDYsi9kIUQekM5+Eab0FDX6i3xxUbxDegjfixz9zfsM5qowBwwlBNZWSwD1hpb+ScH9PG3Gb7VYKtkmMdw==",
"license": "Apache-2.0",
"dependencies": {
"@jitsi/js-utils": "2.0.0",
@@ -13007,9 +13044,9 @@
"optional": true
},
"node_modules/nanoid": {
"version": "3.1.30",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz",
"integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==",
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz",
"integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==",
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@@ -15044,6 +15081,14 @@
"react-native": "*"
}
},
"node_modules/react-native-dialog": {
"version": "9.2.0",
"resolved": "https://registry.npmjs.org/react-native-dialog/-/react-native-dialog-9.2.0.tgz",
"integrity": "sha512-VXdfo+bAi9ER7+w4aKOWypw8K97C2orvnfnxX4Lup/U8iQB/635V00hgfHEE3s0XScQHftXxm34Fa4iIIjojQA==",
"peerDependencies": {
"react-native": ">=0.63.0"
}
},
"node_modules/react-native-gesture-handler": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.1.0.tgz",
@@ -18243,6 +18288,19 @@
"node": ">= 0.6"
}
},
"node_modules/typescript": {
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz",
"integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=4.2.0"
}
},
"node_modules/ua-parser-js": {
"version": "0.7.31",
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz",
@@ -22499,9 +22557,9 @@
}
},
"node-fetch": {
"version": "2.6.5",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz",
"integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==",
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
"optional": true,
"requires": {
"whatwg-url": "^5.0.0"
@@ -22664,12 +22722,19 @@
"integrity": "sha512-OhC9wwZ/ox9vputA1MR2A7QlYlvfXCV+tdbADOR7Jn7o9qoXh3HWf+AbSpXTK3daF0GIHA69Ws8XOnWqu5n53A=="
},
"@microsoft/microsoft-graph-client": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@microsoft/microsoft-graph-client/-/microsoft-graph-client-1.1.0.tgz",
"integrity": "sha512-sDgchKZz1l3QJVNdkE1P1KpwTjupNt1mS9h1T0CiP+ayMN7IeFKfElB8IYtxFplNalZTmEq+iqoQFqUVpVMLfQ==",
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@microsoft/microsoft-graph-client/-/microsoft-graph-client-3.0.1.tgz",
"integrity": "sha512-sudEc1kKMsdtEI6IZfnTL8JUQ1a7pmV7D/ID2n/fsZCZH3MKi2vZ9XeKZfnFAbgaGcNT2bl55w8fcV3vBljJXA==",
"requires": {
"es6-promise": "^4.1.0",
"isomorphic-fetch": "^2.2.1"
"@babel/runtime": "^7.12.5",
"tslib": "^2.2.0"
},
"dependencies": {
"tslib": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
}
}
},
"@nodelib/fs.scandir": {
@@ -26044,9 +26109,12 @@
},
"dependencies": {
"node-fetch": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
"requires": {
"whatwg-url": "^5.0.0"
}
}
}
},
@@ -26242,11 +26310,6 @@
"is-symbol": "^1.0.2"
}
},
"es6-promise": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
"integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ=="
},
"escalade": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
@@ -29140,9 +29203,8 @@
}
},
"lib-jitsi-meet": {
"version": "git+ssh://git@github.com/jitsi/lib-jitsi-meet.git#4baeb98964c6656b4ddb3fd5d355a9ddfa03fe74",
"integrity": "sha512-iabilMXCe7l32EWEiMzFky2MVLbgQ8a9hUFIdy2EntzHSsTq52dxOWn/CO9UexeWEZfUHgngyjX2JGM0CC1k5g==",
"from": "lib-jitsi-meet@github:jitsi/lib-jitsi-meet#4baeb98964c6656b4ddb3fd5d355a9ddfa03fe74",
"version": "https://github.com/jitsi/lib-jitsi-meet/releases/download/1343-2d21eb5b/lib-jitsi-meet.tgz",
"integrity": "sha512-AXvmJDYsi9kIUQekM5+Eab0FDX6i3xxUbxDegjfixz9zfsM5qowBwwlBNZWSwD1hpb+ScH9PG3Gb7VYKtkmMdw==",
"requires": {
"@jitsi/js-utils": "2.0.0",
"@jitsi/logger": "2.0.0",
@@ -29969,9 +30031,9 @@
"optional": true
},
"nanoid": {
"version": "3.1.30",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz",
"integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ=="
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz",
"integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA=="
},
"nanomatch": {
"version": "1.2.13",
@@ -31533,6 +31595,11 @@
"resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-8.4.8.tgz",
"integrity": "sha512-92676ZWHZHsPM/EW1ulgb2MuVfjYfMWRTWMbLcrCsipkcMaZ9Traz5mpsnCS7KZpsOksnvUinzDIjsct2XGc6Q=="
},
"react-native-dialog": {
"version": "9.2.0",
"resolved": "https://registry.npmjs.org/react-native-dialog/-/react-native-dialog-9.2.0.tgz",
"integrity": "sha512-VXdfo+bAi9ER7+w4aKOWypw8K97C2orvnfnxX4Lup/U8iQB/635V00hgfHEE3s0XScQHftXxm34Fa4iIIjojQA=="
},
"react-native-gesture-handler": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.1.0.tgz",
@@ -33895,6 +33962,12 @@
"mime-types": "~2.1.24"
}
},
"typescript": {
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz",
"integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==",
"dev": true
},
"ua-parser-js": {
"version": "0.7.31",
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz",

View File

@@ -39,7 +39,7 @@
"@jitsi/rtcstats": "9.0.1",
"@material-ui/core": "4.11.3",
"@matrix-org/olm": "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.3.tgz",
"@microsoft/microsoft-graph-client": "1.1.0",
"@microsoft/microsoft-graph-client": "3.0.1",
"@react-native-async-storage/async-storage": "1.15.14",
"@react-native-community/clipboard": "1.5.1",
"@react-native-community/netinfo": "7.1.7",
@@ -72,7 +72,7 @@
"jquery-i18next": "1.2.1",
"js-md5": "0.6.1",
"jwt-decode": "2.2.0",
"lib-jitsi-meet": "github:jitsi/lib-jitsi-meet#4baeb98964c6656b4ddb3fd5d355a9ddfa03fe74",
"lib-jitsi-meet": "https://github.com/jitsi/lib-jitsi-meet/releases/download/1343-2d21eb5b/lib-jitsi-meet.tgz",
"libflacjs": "github:mmig/libflac.js#93d37e7f811f01cf7d8b6a603e38bd3c3810907d",
"lodash": "4.17.21",
"moment": "2.29.1",
@@ -93,6 +93,7 @@
"react-native-collapsible": "1.6.0",
"react-native-default-preference": "github:kevinresol/react-native-default-preference#11bff5eb05cb04fd8d35b5e761eeee80525e8c6c",
"react-native-device-info": "8.4.8",
"react-native-dialog": "9.2.0",
"react-native-gesture-handler": "2.1.0",
"react-native-get-random-values": "1.7.2",
"react-native-immersive": "2.0.0",
@@ -160,6 +161,7 @@
"string-replace-loader": "3.0.3",
"style-loader": "0.19.0",
"traverse": "0.6.6",
"typescript": "4.3.5",
"unorm": "1.6.0",
"webpack": "5.57.1",
"webpack-bundle-analyzer": "4.4.2",

View File

@@ -34,7 +34,6 @@ import {
} from './functions';
import logger from './logger';
declare var APP: Object;
declare var interfaceConfig: Object;

View File

@@ -10,6 +10,7 @@ import { getFeatureFlag } from '../../base/flags/functions';
import { Platform } from '../../base/react';
import { DimensionsDetector, clientResized } from '../../base/responsive-ui';
import { updateSettings } from '../../base/settings';
import { _getRouteToRender } from '../getRouteToRender.native';
import logger from '../logger';
import { AbstractApp } from './AbstractApp';
@@ -95,8 +96,12 @@ export class App extends AbstractApp {
*
* @returns {void}
*/
_extraInit() {
async _extraInit() {
const { dispatch, getState } = this.state.store;
const route = await _getRouteToRender();
// We need the root navigator to be set early.
await this._navigate(route);
// We set these early enough so then we avoid any unnecessary re-renders.
dispatch(updateFlags(this.props.flags));

View File

@@ -1,41 +1,17 @@
import { isRoomValid } from '../base/conference';
import { toState } from '../base/redux';
import { ConferenceNavigationContainer } from '../conference';
import RootNavigationContainer from '../welcome/components/RootNavigationContainer';
import RootNavigationContainer from '../mobile/navigation/components/RootNavigationContainer';
const route = {
component: RootNavigationContainer,
href: undefined
};
/**
* Determines which route is to be rendered in order to depict a specific Redux
* store.
*
* @param {(Function|Object)} stateful - THe redux store, state, or
* {@code getState} function.
* @returns {Promise<Object>}
*/
export function _getRouteToRender(stateful) {
const state = toState(stateful);
return _getMobileRoute(state);
}
/**
* Returns the {@code Route} to display on the React Native app.
*
* @param {Object} state - The redux state.
* @returns {Promise}
*/
function _getMobileRoute(state) {
const route = {
component: null,
href: undefined
};
if (isRoomValid(state['features/base/conference'].room)) {
route.component = ConferenceNavigationContainer;
} else {
route.component = RootNavigationContainer;
}
export function _getRouteToRender() {
return Promise.resolve(route);
}

View File

@@ -80,11 +80,10 @@ function _getWebWelcomePageRoute(state) {
}
} else {
// Web: if the welcome page is disabled, go directly to a random room.
const url = new URL(window.location.href);
let href = window.location.href;
href.endsWith('/') || (href += '/');
route.href = href + generateRoomWithoutSeparator();
url.pathname += generateRoomWithoutSeparator();
route.href = url.href;
}
return Promise.resolve(route);

View File

@@ -50,7 +50,7 @@ function _connectionEstablished(store, next, action) {
// In the Web app we explicitly do not want to display the hash and
// query/search URL params. Unfortunately, window.location and, more
// importantly, its params are used not only in jitsi-meet but also in
// lib-jitsi-meet. Consequenlty, the time to remove the params is
// lib-jitsi-meet. Consequently, the time to remove the params is
// determined by when no one needs them anymore.
const { history, location } = window;

View File

@@ -8,6 +8,7 @@ import '../mobile/call-integration/middleware';
import '../mobile/external-api/middleware';
import '../mobile/full-screen/middleware';
import '../mobile/incoming-call/middleware';
import '../mobile/navigation/middleware';
import '../mobile/permissions/middleware';
import '../mobile/proximity/middleware';
import '../mobile/wake-lock/middleware';

View File

@@ -1,20 +1,15 @@
/* @flow */
import React, { Component } from 'react';
import { Text, TextInput, View } from 'react-native';
import { Platform, Text, View } from 'react-native';
import Dialog from 'react-native-dialog';
import { connect as reduxConnect } from 'react-redux';
import type { Dispatch } from 'redux';
import { ColorSchemeRegistry } from '../../../base/color-scheme';
import { toJid } from '../../../base/connection';
import { connect } from '../../../base/connection/actions.native';
import {
CustomSubmitDialog,
FIELD_UNDERLINE,
PLACEHOLDER_COLOR,
_abstractMapStateToProps,
inputDialog as inputDialogStyle
} from '../../../base/dialog';
import { _abstractMapStateToProps } from '../../../base/dialog';
import { translate } from '../../../base/i18n';
import { JitsiConnectionErrors } from '../../../base/lib-jitsi-meet';
import type { StyleType } from '../../../base/styles';
@@ -44,11 +39,6 @@ type Props = {
*/
_connecting: boolean,
/**
* The color-schemed stylesheet of the base/dialog feature.
*/
_dialogStyles: StyleType,
/**
* The error which occurred during login/authentication.
*/
@@ -150,42 +140,62 @@ class LoginDialog extends Component<Props, State> {
render() {
const {
_connecting: connecting,
_dialogStyles,
_styles: styles,
t
} = this.props;
let rightKey;
let leftKey;
let rightOnPress;
let leftOnPress;
let rightDisabled;
let leftDisabled;
if (Platform.OS === 'android') {
rightKey = 'dialog.Ok';
rightOnPress = () => this._onLogin();
rightDisabled = connecting;
leftKey = 'dialog.Cancel';
leftOnPress = () => this._onCancel();
} else {
rightKey = 'dialog.Cancel';
rightOnPress = () => this._onCancel();
leftKey = 'dialog.Ok';
leftOnPress = () => this._onLogin();
leftDisabled = connecting;
}
return (
<CustomSubmitDialog
okDisabled = { connecting }
onCancel = { this._onCancel }
onSubmit = { this._onLogin }>
<View style = { styles.loginDialog }>
<TextInput
<View>
<Dialog.Container
visible = { true }>
<Dialog.Title>
{ t('dialog.login') }
</Dialog.Title>
<Dialog.Input
autoCapitalize = { 'none' }
autoCorrect = { false }
onChangeText = { this._onUsernameChange }
placeholder = { 'user@domain.com' }
placeholderTextColor = { PLACEHOLDER_COLOR }
spellCheck = { false }
style = { _dialogStyles.field }
underlineColorAndroid = { FIELD_UNDERLINE }
value = { this.state.username } />
<TextInput
<Dialog.Input
autoCapitalize = { 'none' }
onChangeText = { this._onPasswordChange }
placeholder = { t('dialog.userPassword') }
placeholderTextColor = { PLACEHOLDER_COLOR }
secureTextEntry = { true }
style = { [
_dialogStyles.field,
inputDialogStyle.bottomField
] }
underlineColorAndroid = { FIELD_UNDERLINE }
value = { this.state.password } />
{ this._renderMessage() }
</View>
</CustomSubmitDialog>
<Dialog.Description>
{ this._renderMessage() }
</Dialog.Description>
<Dialog.Button
disabled = { rightDisabled }
label = { t(rightKey) }
onPress = { rightOnPress } />
<Dialog.Button
disabled = { leftDisabled }
label = { t(leftKey) }
onPress = { leftOnPress } />
</Dialog.Container>
</View>
);
}
@@ -239,10 +249,8 @@ class LoginDialog extends Component<Props, State> {
if (messageKey) {
const message = t(messageKey, messageOptions);
const messageStyles = [
styles.dialogText,
messageIsError ? styles.errorMessage : styles.progressMessage
];
const messageStyles
= messageIsError ? styles.errorMessage : styles.progressMessage;
return (
<Text style = { messageStyles }>
@@ -337,7 +345,7 @@ function _mapStateToProps(state) {
progress,
thenableWithCancel
} = state['features/authentication'];
const { authRequired } = state['features/base/conference'];
const { authRequired, conference } = state['features/base/conference'];
const { hosts: configHosts } = state['features/base/config'];
const {
connecting,
@@ -346,7 +354,7 @@ function _mapStateToProps(state) {
return {
..._abstractMapStateToProps(state),
_conference: authRequired,
_conference: authRequired || conference,
_configHosts: configHosts,
_connecting: Boolean(connecting) || Boolean(thenableWithCancel),
_error: connectionError || authenticateAndUpgradeRoleError,

View File

@@ -63,14 +63,14 @@ class WaitForOwnerDialog extends Component<Props> {
return (
<ConfirmDialog
cancelKey = 'dialog.Cancel'
contentKey = {
cancelLabel = 'dialog.Cancel'
confirmLabel = 'dialog.IamHost'
descriptionKey = {
{
key: 'dialog.WaitForHostMsgWOk',
params: { room }
}
}
okKey = 'dialog.Ok'
onCancel = { this._onCancel }
onSubmit = { this._onLogin } />
);

View File

@@ -299,7 +299,7 @@ function mapStateToProps(state) {
progress,
thenableWithCancel
} = state['features/authentication'];
const { authRequired } = state['features/base/conference'];
const { authRequired, conference } = state['features/base/conference'];
const { hosts: configHosts } = state['features/base/config'];
const {
connecting,
@@ -307,7 +307,7 @@ function mapStateToProps(state) {
} = state['features/base/connection'];
return {
_conference: authRequired,
_conference: authRequired || conference,
_configHosts: configHosts,
_connecting: connecting || thenableWithCancel,
_error: connectionError || authenticateAndUpgradeRoleError,

View File

@@ -19,6 +19,7 @@ import { MiddlewareRegistry } from '../base/redux';
import {
CANCEL_LOGIN,
STOP_WAIT_FOR_OWNER,
UPGRADE_ROLE_FINISHED,
WAIT_FOR_OWNER
} from './actionTypes';
import {
@@ -61,10 +62,15 @@ MiddlewareRegistry.register(store => next => action => {
// Go back to the app's entry point.
_hideLoginDialog(store);
// FIXME Like cancelWaitForOwner, dispatch conferenceLeft to notify
// the external-api.
const { authRequired, conference } = getState()['features/base/conference'];
dispatch(appNavigate(undefined));
// Only end the meeting if we are not already inside and trying to upgrade.
if (authRequired && !conference) {
// FIXME Like cancelWaitForOwner, dispatch conferenceLeft to notify
// the external-api.
dispatch(appNavigate(undefined));
}
}
break;
}
@@ -123,6 +129,15 @@ MiddlewareRegistry.register(store => next => action => {
store.dispatch(hideDialog(WaitForOwnerDialog));
break;
case UPGRADE_ROLE_FINISHED: {
const { error, progress } = action;
if (!error && progress === 1) {
_hideLoginDialog(store);
}
break;
}
case WAIT_FOR_OWNER: {
_clearExistingWaitForOwnerTimeout(store);

View File

@@ -16,6 +16,7 @@ import { MiddlewareRegistry } from '../base/redux';
import {
CANCEL_LOGIN,
STOP_WAIT_FOR_OWNER,
UPGRADE_ROLE_FINISHED,
WAIT_FOR_OWNER
} from './actionTypes';
import {
@@ -39,16 +40,23 @@ MiddlewareRegistry.register(store => next => action => {
switch (action.type) {
case CANCEL_LOGIN: {
const { dispatch, getState } = store;
if (!isDialogOpen(store, WaitForOwnerDialog)) {
if (_isWaitingForOwner(store)) {
store.dispatch(openWaitForOwnerDialog());
dispatch(openWaitForOwnerDialog());
return next(action);
}
store.dispatch(hideLoginDialog());
dispatch(hideLoginDialog());
store.dispatch(maybeRedirectToWelcomePage());
const { authRequired, conference } = getState()['features/base/conference'];
// Only end the meeting if we are not already inside and trying to upgrade.
if (authRequired && !conference) {
dispatch(maybeRedirectToWelcomePage());
}
}
break;
}
@@ -91,6 +99,15 @@ MiddlewareRegistry.register(store => next => action => {
store.dispatch(hideDialog(WaitForOwnerDialog));
break;
case UPGRADE_ROLE_FINISHED: {
const { error, progress } = action;
if (!error && progress === 1) {
store.dispatch(hideLoginDialog());
}
break;
}
case WAIT_FOR_OWNER: {
_clearExistingWaitForOwnerTimeout(store);

View File

@@ -144,7 +144,6 @@ export default [
'enableOpusRed',
'enableRemb',
'enableSaveLogs',
'enableScreenshotCapture',
'enableTalkWhileMuted',
'enableUnifiedOnChrome',
'enableNoAudioDetection',
@@ -163,6 +162,7 @@ export default [
'hiddenPremeetingButtons',
'hideConferenceSubject',
'hideDisplayName',
'hideDominantSpeakerBadge',
'hideRecordingLabel',
'hideParticipantsStats',
'hideConferenceTimer',
@@ -197,6 +197,7 @@ export default [
'readOnlyName',
'replaceParticipant',
'resolution',
'screenshotCapture',
'startAudioMuted',
'startAudioOnly',
'startLastN',
@@ -210,6 +211,7 @@ export default [
'testing',
'toolbarButtons',
'toolbarConfig',
'tileView',
'transcribingEnabled',
'useHostPageLocalStorage',
'useTurnUdp',

View File

@@ -186,6 +186,15 @@ export function isNameReadOnly(state: Object): boolean {
|| state['features/base/config'].readOnlyName;
}
/**
* Selector for determining if the display name is visible.
*
* @param {Object} state - The state of the app.
* @returns {boolean}
*/
export function isDisplayNameVisible(state: Object): boolean {
return !state['features/base/config'].hideDisplayName;
}
/**
* Restores a Jitsi Meet config.js from {@code localStorage} if it was

View File

@@ -0,0 +1,57 @@
import React from 'react';
import { Text } from 'react-native';
import { brandedDialog as styles } from './native';
/**
* Renders a specific {@code string} which may contain HTML.
*
* @param {string|undefined} html - The {@code string} which may
* contain HTML to render.
* @returns {ReactElement[]|string}
*/
export function renderHTML(html) {
if (typeof html === 'string') {
// At the time of this writing, the specified HTML contains a couple
// of spaces one after the other. They do not cause a visible
// problem on Web, because the specified HTML is rendered as, well,
// HTML. However, we're not rendering HTML here.
// eslint-disable-next-line no-param-reassign
html = html.replace(/\s{2,}/gi, ' ');
// Render text in <b>text</b> in bold.
const opening = /<\s*b\s*>/gi;
const closing = /<\s*\/\s*b\s*>/gi;
let o;
let c;
let prevClosingLastIndex = 0;
const r = [];
// eslint-disable-next-line no-cond-assign
while (o = opening.exec(html)) {
closing.lastIndex = opening.lastIndex;
// eslint-disable-next-line no-cond-assign
if (c = closing.exec(html)) {
r.push(html.substring(prevClosingLastIndex, o.index));
r.push(
<Text style = { styles.boldDialogText }>
{ html.substring(opening.lastIndex, c.index) }
</Text>);
opening.lastIndex
= prevClosingLastIndex
= closing.lastIndex;
} else {
break;
}
}
if (prevClosingLastIndex < html.length) {
r.push(html.substring(prevClosingLastIndex));
}
return r;
}
return html;
}

View File

@@ -6,6 +6,7 @@ import { Text } from 'react-native';
import { translate } from '../../../i18n';
import { connect } from '../../../redux';
import { _abstractMapStateToProps } from '../../functions';
import { renderHTML } from '../functions.native';
import { type Props as AbstractProps } from './BaseDialog';
import BaseSubmitDialog from './BaseSubmitDialog';
@@ -36,7 +37,7 @@ class AlertDialog extends BaseSubmitDialog<Props, *> {
const content
= typeof contentKey === 'string'
? t(contentKey)
: this._renderHTML(t(contentKey.key, contentKey.params));
: renderHTML(t(contentKey.key, contentKey.params));
return (
<Text style = { _dialogStyles.text }>
@@ -44,8 +45,6 @@ class AlertDialog extends BaseSubmitDialog<Props, *> {
</Text>
);
}
_renderHTML: string => Object | string;
}
export default translate(connect(_abstractMapStateToProps)(AlertDialog));

View File

@@ -94,59 +94,6 @@ class BaseDialog<P: Props, S: State> extends AbstractDialog<P, S> {
* @returns {ReactElement}
*/
_renderContent: () => Object;
/**
* Renders a specific {@code string} which may contain HTML.
*
* @param {string|undefined} html - The {@code string} which may
* contain HTML to render.
* @returns {ReactElement[]|string}
*/
_renderHTML(html: ?string) {
if (typeof html === 'string') {
// At the time of this writing, the specified HTML contains a couple
// of spaces one after the other. They do not cause a visible
// problem on Web, because the specified HTML is rendered as, well,
// HTML. However, we're not rendering HTML here.
// eslint-disable-next-line no-param-reassign
html = html.replace(/\s{2,}/gi, ' ');
// Render text in <b>text</b> in bold.
const opening = /<\s*b\s*>/gi;
const closing = /<\s*\/\s*b\s*>/gi;
let o;
let c;
let prevClosingLastIndex = 0;
const r = [];
// eslint-disable-next-line no-cond-assign
while (o = opening.exec(html)) {
closing.lastIndex = opening.lastIndex;
// eslint-disable-next-line no-cond-assign
if (c = closing.exec(html)) {
r.push(html.substring(prevClosingLastIndex, o.index));
r.push(
<Text style = { styles.boldDialogText }>
{ html.substring(opening.lastIndex, c.index) }
</Text>);
opening.lastIndex
= prevClosingLastIndex
= closing.lastIndex;
} else {
break;
}
}
if (prevClosingLastIndex < html.length) {
r.push(html.substring(prevClosingLastIndex));
}
return r;
}
return html;
}
}
export default BaseDialog;

View File

@@ -84,8 +84,6 @@ class BaseSubmitDialog<P: Props, S: *> extends BaseDialog<P, S> {
_onSubmit: () => boolean;
_renderHTML: string => Object | string;
/** .
* Renders the actual content of the dialog defining what is about to be
* submitted. E.g. A simple confirmation (text, properly wrapped) or a

View File

@@ -1,107 +1,165 @@
// @flow
import React from 'react';
import { Text, TouchableOpacity } from 'react-native';
import { Platform, View } from 'react-native';
import Dialog from 'react-native-dialog';
import { translate } from '../../../i18n';
import { connect } from '../../../redux';
import { StyleType } from '../../../styles';
import { _abstractMapStateToProps } from '../../functions';
import AbstractDialog from '../AbstractDialog';
import { renderHTML } from '../functions.native';
import { type Props as BaseProps } from './BaseDialog';
import BaseSubmitDialog from './BaseSubmitDialog';
import { brandedDialog } from './styles';
import styles from './styles';
type Props = BaseProps & {
/**
* The color-schemed stylesheet of the feature.
*/
_dialogStyles: StyleType,
/**
* Untranslated i18n key of the content to be displayed.
*
* NOTE: This dialog also adds support to Object type keys that will be
* translated using the provided params. See i18n function
* {@code translate(string, Object)} for more details.
*/
contentKey: string | { key: string, params: Object},
/**
* The handler for the event when clicking the 'confirmNo' button.
* Defaults to onCancel if absent.
*/
onDecline?: Function,
t: Function
}
/**
* Implements a confirm dialog component.
* The type of the React {@code Component} props of
* {@link ConfirmDialog}.
*/
class ConfirmDialog extends BaseSubmitDialog<Props, *> {
type Props = {
/**
* Returns the title key of the submit button.
*
* @returns {string}
* The i18n key of the text label for the cancel button.
*/
_getSubmitButtonKey() {
return this.props.okKey || 'dialog.confirmYes';
cancelLabel: string,
/**
* The React {@code Component} children.
*/
children?: React$Node,
/**
* The i18n key of the text label for the confirm button.
*/
confirmLabel: string,
/**
* Dialog description key for translations.
*/
descriptionKey?: string | Object,
/**
* Whether or not the nature of the confirm button is destructive.
*/
isConfirmDestructive?: Boolean,
/**
* Invoked to obtain translated strings.
*/
t: Function,
/**
* Dialog title.
*/
title?: string,
};
/**
* React Component for getting confirmation to stop a file recording session in
* progress.
*
* @augments Component
*/
class ConfirmDialog extends AbstractDialog<Props> {
/**
* Default values for {@code ConfirmDialog} component's properties.
*
* @static
*/
static defaultProps = {
isConfirmDestructive: false
};
/**
* Renders the dialog description.
*
* @returns {React$Component}
*/
_renderDescription() {
const { descriptionKey, t } = this.props;
const description
= typeof descriptionKey === 'string'
? t(descriptionKey)
: renderHTML(
t(descriptionKey?.key, descriptionKey?.params)
);
return (
<Dialog.Description>
{ description }
</Dialog.Description>
);
}
/**
* Implements {@code Component#render}.
*
* @inheritdoc
*/
render() {
const {
cancelLabel,
children,
confirmLabel,
isConfirmDestructive,
t,
title
} = this.props;
const dialogButtonStyle
= isConfirmDestructive
? styles.destructiveDialogButton : styles.dialogButton;
let rightLabel;
let leftLabel;
let rightOnPress;
let leftOnPress;
let rightStyle;
let leftStyle;
if (Platform.OS === 'android') {
rightLabel = confirmLabel || 'dialog.confirmYes';
rightOnPress = () => this._onSubmit();
rightStyle = dialogButtonStyle;
leftLabel = cancelLabel || 'dialog.confirmNo';
leftOnPress = () => this._onCancel();
leftStyle = styles.dialogButton;
} else {
rightLabel = cancelLabel || 'dialog.confirmNo';
rightOnPress = () => this._onCancel();
rightStyle = styles.dialogButton;
leftLabel = confirmLabel || 'dialog.confirmYes';
leftOnPress = () => this._onSubmit();
leftStyle = dialogButtonStyle;
}
return (
<View>
<Dialog.Container
visible = { true }>
{
title && <Dialog.Title>
{ t(title) }
</Dialog.Title>
}
{ this._renderDescription() }
{ children }
<Dialog.Button
label = { t(rightLabel) }
onPress = { rightOnPress }
style = { rightStyle } />
<Dialog.Button
label = { t(leftLabel) }
onPress = { leftOnPress }
style = { leftStyle } />
</Dialog.Container>
</View>
);
}
_onCancel: () => void;
/**
* Renders the 'No' button.
*
* NOTE: The {@code ConfirmDialog} is the only dialog right now that
* renders 2 buttons, mainly for clarity.
*
* @inheritdoc
*/
_renderAdditionalButtons() {
const { _dialogStyles, cancelKey, onDecline, t } = this.props;
return (
<TouchableOpacity
onPress = { onDecline || this._onCancel }
style = { [
_dialogStyles.button,
brandedDialog.buttonFarLeft,
_dialogStyles.buttonSeparator
] }>
<Text style = { _dialogStyles.buttonLabel }>
{ t(cancelKey || 'dialog.confirmNo') }
</Text>
</TouchableOpacity>
);
}
/**
* Implements {@code BaseSubmitDialog._renderSubmittable}.
*
* @inheritdoc
*/
_renderSubmittable() {
if (this.props.children) {
return this.props.children;
}
const { _dialogStyles, contentKey, t } = this.props;
const content
= typeof contentKey === 'string'
? t(contentKey)
: this._renderHTML(t(contentKey.key, contentKey.params));
return (
<Text style = { _dialogStyles.text }>
{ content }
</Text>
);
}
_renderHTML: string => Object | string;
_onSubmit: (?string) => void;
}
export default translate(connect(_abstractMapStateToProps)(ConfirmDialog));
export default translate(connect()(ConfirmDialog));

View File

@@ -1,23 +0,0 @@
// @flow
import { connect } from '../../../redux';
import { _abstractMapStateToProps } from '../../functions';
import BaseDialog, { type Props } from './BaseDialog';
/**
* Implements a custom dialog component, where the content can freely be
* rendered.
*/
class CustomDialog extends BaseDialog<Props, *> {
/**
* Implements {@code BaseDialog._renderContent}.
*
* @inheritdoc
*/
_renderContent() {
return this.props.children;
}
}
export default connect(_abstractMapStateToProps)(CustomDialog);

View File

@@ -1,32 +1,25 @@
// @flow
import React from 'react';
import { View, Text, TextInput, TouchableOpacity } from 'react-native';
import { View } from 'react-native';
import Dialog from 'react-native-dialog';
import { translate } from '../../../i18n';
import { connect } from '../../../redux';
import { StyleType } from '../../../styles';
import { _abstractMapStateToProps } from '../../functions';
import { type State as AbstractState } from '../AbstractDialog';
import AbstractDialog, {
type Props as AbstractProps,
type State as AbstractState
} from '../AbstractDialog';
import BaseDialog, { type Props as BaseProps } from './BaseDialog';
import {
FIELD_UNDERLINE,
brandedDialog,
inputDialog as styles
} from './styles';
import { inputDialog as styles } from './styles';
type Props = BaseProps & {
type Props = AbstractProps & {
/**
* The color-schemed stylesheet of the feature.
* The dialog descriptionKey.
*/
_dialogStyles: StyleType,
/**
* The untranslated i18n key for the field label on the dialog.
*/
contentKey: string,
descriptionKey: string,
/**
* An optional initial value to initiate the field with.
@@ -38,18 +31,28 @@ type Props = BaseProps & {
*/
messageKey?: string,
/**
* The translate function.
*/
t: Function,
/**
* Props for the text input.
*/
textInputProps: ?Object,
/**
* The untranslated i18n key for the dialog title.
*/
titleKey?: string,
/**
* Validating of the input.
*/
validateInput: ?Function
}
type State = {
...AbstractState,
type State = AbstractState & {
/**
* The current value of the field.
@@ -60,7 +63,7 @@ type State = {
/**
* Implements a single field input dialog component.
*/
class InputDialog extends BaseDialog<Props, State> {
class InputDialog<P: Props, S: State> extends AbstractDialog<P, S> {
/**
* Instantiates a new {@code InputDialog}.
*
@@ -79,52 +82,50 @@ class InputDialog extends BaseDialog<Props, State> {
}
/**
* Implements {@code BaseDialog._renderContent}.
* Implements {@code Component#render}.
*
* @inheritdoc
*/
_renderContent() {
const { _dialogStyles, messageKey, okDisabled, t } = this.props;
render() {
const {
descriptionKey,
messageKey,
t,
titleKey
} = this.props;
return (
<View>
<View
style = { [
brandedDialog.mainWrapper,
styles.fieldWrapper
] }>
<Text style = { _dialogStyles.fieldLabel }>
{ t(this.props.contentKey) }
</Text>
<TextInput
<Dialog.Container
onBackdropPress = { this._onCancel }
visible = { true }>
<Dialog.Title>
{ t(titleKey) }
</Dialog.Title>
{
descriptionKey && (
<Dialog.Description>
{ t(descriptionKey) }
</Dialog.Description>
)
}
<Dialog.Input
autoFocus = { true }
onChangeText = { this._onChangeText }
style = { _dialogStyles.field }
underlineColorAndroid = { FIELD_UNDERLINE }
value = { this.state.fieldValue }
{ ...this.props.textInputProps } />
{ messageKey && (<Text
style = { [
styles.formMessage,
_dialogStyles.text
] }>
{ t(messageKey) }
</Text>) }
</View>
<View style = { brandedDialog.buttonWrapper }>
<TouchableOpacity
disabled = { okDisabled }
onPress = { this._onSubmitValue }
style = { [
_dialogStyles.button,
brandedDialog.buttonFarLeft,
brandedDialog.buttonFarRight
] }>
<Text style = { _dialogStyles.buttonLabel }>
{ t('dialog.Ok') }
</Text>
</TouchableOpacity>
</View>
{
messageKey && (
<Dialog.Description
style = { styles.formMessage }>
{ t(messageKey) }
</Dialog.Description>
)
}
<Dialog.Button
label = { t('dialog.Ok') }
onPress = { this._onSubmitValue } />
</Dialog.Container>
</View>
);
}
@@ -140,9 +141,7 @@ class InputDialog extends BaseDialog<Props, State> {
* @returns {void}
*/
_onChangeText(fieldValue) {
if (this.props.validateInput
&& !this.props.validateInput(fieldValue)) {
if (this.props.validateInput && !this.props.validateInput(fieldValue)) {
return;
}

View File

@@ -2,7 +2,6 @@
export { default as BottomSheet } from './BottomSheet';
export { default as ConfirmDialog } from './ConfirmDialog';
export { default as CustomDialog } from './CustomDialog';
export { default as DialogContainer } from './DialogContainer';
export { default as AlertDialog } from './AlertDialog';
export { default as InputDialog } from './InputDialog';

View File

@@ -20,8 +20,6 @@ export const MD_FONT_SIZE = 16;
export const MD_ITEM_HEIGHT = 48;
export const MD_ITEM_MARGIN_PADDING = 16;
export const PLACEHOLDER_COLOR = ColorPalette.lightGrey;
/**
* The React {@code Component} styles of {@code BottomSheet}. These have
* been implemented as per the Material Design guidelines:
@@ -56,6 +54,18 @@ export const bottomSheetStyles = {
}
};
export default {
dialogButton: {
...BaseTheme.typography.labelButton
},
destructiveDialogButton: {
...BaseTheme.typography.labelButton,
color: BaseTheme.palette.actionDanger
}
};
export const brandedDialog = {
/**
@@ -146,19 +156,11 @@ const brandedDialogIconStyle = {
};
export const inputDialog = {
bottomField: {
marginBottom: 0
},
fieldWrapper: {
...brandedDialog.mainWrapper,
paddingBottom: BoxModel.padding * 2
},
formMessage: {
alignSelf: 'flex-start',
fontStyle: 'italic',
margin: BoxModel.margin
fontWeight: 'bold',
marginTop: BaseTheme.spacing[3]
}
};

View File

@@ -14,12 +14,6 @@ import './native';
// Re-export JitsiMeetJS from the library lib-jitsi-meet to (the other features
// of) the project jitsi-meet.
//
// TODO The Web support implemented by the jitsi-meet project explicitly uses
// the library lib-jitsi-meet as a binary and keeps it out of the application
// bundle. The mobile support implemented by the jitsi-meet project did not get
// to keeping the lib-jitsi-meet library out of the application bundle and even
// used it from source. As an intermediate step, start using the library
// lib-jitsi-meet as a binary on mobile at the time of this writing. In the
// future, implement not packaging it in the application bundle.
import JitsiMeetJS from 'lib-jitsi-meet/lib-jitsi-meet.min';
import JitsiMeetJS from 'lib-jitsi-meet';
export { JitsiMeetJS as default };

View File

@@ -603,7 +603,6 @@ function _raiseHandUpdated({ dispatch, getState }, conference, participantId, ne
titleKey: 'notify.somebody',
title: notificationTitle,
descriptionKey: 'notify.raisedHand',
raiseHandNotification: true,
concatText: true,
uid: RAISE_HAND_NOTIFICATION_ID,
...action

View File

@@ -1,7 +1,30 @@
// @flow
import _ from 'lodash';
import { NIL, parse as parseUUID } from 'uuid';
import zxcvbn from 'zxcvbn';
// The null UUID.
const NIL_UUID = parseUUID(NIL);
/**
* Checks if the given string is a valid UUID or not.
*
* @param {string} str - The string to be checked.
* @returns {boolean} - Whether the string is a valid UUID or not.
*/
function isValidUUID(str) {
let uuid;
try {
uuid = parseUUID(str);
} catch (e) {
return false;
}
return !_.isEqual(uuid, NIL_UUID);
}
/**
* Returns true if the room name is considered a weak (insecure) one.
*
@@ -9,5 +32,5 @@ import zxcvbn from 'zxcvbn';
* @returns {boolean}
*/
export default function isInsecureRoomName(roomName: string = ''): boolean {
return zxcvbn(roomName).score < 3;
return !isValidUUID(roomName) && zxcvbn(roomName).score < 3;
}

View File

@@ -1,7 +1,12 @@
// @flow
import React from 'react';
import { Text, TouchableOpacity, View } from 'react-native';
import {
Text,
TouchableOpacity,
TouchableWithoutFeedback,
View
} from 'react-native';
import { translate } from '../../base/i18n';
import { AbstractPage } from '../../base/react';
@@ -27,6 +32,11 @@ type Props = {
*/
disabled: boolean,
/**
* Callback to be invoked when pressing the list container.
*/
onListContainerPress?: boolean,
/**
* The translate function.
*/
@@ -71,20 +81,23 @@ class CalendarList extends AbstractPage<Props> {
* @inheritdoc
*/
render() {
const { disabled } = this.props;
const { disabled, onListContainerPress } = this.props;
return (
CalendarListContent
? <View
style = {
disabled
? styles.calendarSyncDisabled
: styles.calendarSync }>
<CalendarListContent
disabled = { disabled }
listEmptyComponent
= { this._getRenderListEmptyComponent() } />
</View>
? <TouchableWithoutFeedback
onPress = { onListContainerPress }>
<View
style = {
disabled
? styles.calendarSyncDisabled
: styles.calendarSync }>
<CalendarListContent
disabled = { disabled }
listEmptyComponent
= { this._getRenderListEmptyComponent() } />
</View>
</TouchableWithoutFeedback>
: null
);
}

View File

@@ -17,12 +17,7 @@ type Props = {
/**
* The ID of the event to be updated.
*/
eventId: string,
/**
* Function to translate i18n labels.
*/
t: Function
eventId: string
};
/**
@@ -49,7 +44,7 @@ class UpdateCalendarEventDialog extends Component<Props> {
render() {
return (
<ConfirmDialog
contentKey = 'calendarSync.confirmAddLink'
descriptionKey = 'calendarSync.confirmAddLink'
onSubmit = { this._onSubmit } />
);
}

View File

@@ -3,6 +3,7 @@
import { Client } from '@microsoft/microsoft-graph-client';
import base64js from 'base64-js';
import type { Dispatch } from 'redux';
import { v4 as uuidV4 } from 'uuid';
import { findWindows } from 'windows-iana';
import { createDeferred } from '../../../../modules/util/helpers';
@@ -153,8 +154,8 @@ export const microsoftCalendarApi = {
const signInDeferred = createDeferred();
const guids = {
authState: generateGuid(),
authNonce: generateGuid()
authState: uuidV4(),
authNonce: uuidV4()
};
dispatch(setCalendarAPIAuthState(guids));
@@ -339,21 +340,6 @@ function formatCalendarEntry(entry) {
};
}
/**
* Generate a guid to be used for verifying token validity.
*
* @private
* @returns {string} The generated string.
*/
function generateGuid() {
const buf = new Uint16Array(8);
window.crypto.getRandomValues(buf);
return `${s4(buf[0])}${s4(buf[1])}-${s4(buf[2])}-${s4(buf[3])}-${
s4(buf[4])}-${s4(buf[5])}${s4(buf[6])}${s4(buf[7])}`;
}
/**
* Constructs and returns the URL to use for renewing an auth token.
*
@@ -582,24 +568,6 @@ function requestCalendarEvents( // eslint-disable-line max-params
}));
}
/**
* Converts the passed in number to a string and ensure it is at least 4
* characters in length, prepending 0's as needed.
*
* @param {number} num - The number to pad and convert to a string.
* @private
* @returns {string} - The number converted to a string.
*/
function s4(num) {
let ret = num.toString(16);
while (ret.length < 4) {
ret = `0${ret}`;
}
return ret;
}
/**
* Convert a Base64URL encoded string to a UTF-8 encoded string including CJK or Latin.
*

View File

@@ -7,8 +7,8 @@ import {
AbstractButton,
type AbstractButtonProps
} from '../../../base/toolbox/components';
import { navigate } from '../../../conference/components/native/ConferenceNavigationContainerRef';
import { screen } from '../../../conference/components/native/routes';
import { navigate } from '../../../mobile/navigation/components/conference/ConferenceNavigationContainerRef';
import { screen } from '../../../mobile/navigation/routes';
import { getUnreadCount } from '../../functions';

View File

@@ -20,9 +20,9 @@ class ChatPrivacyDialog extends AbstractChatPrivacyDialog {
render() {
return (
<ConfirmDialog
cancelKey = 'dialog.sendPrivateMessageCancel'
contentKey = 'dialog.sendPrivateMessage'
okKey = 'dialog.sendPrivateMessageOk'
cancelLabel = 'dialog.sendPrivateMessageCancel'
confirmLabel = 'dialog.sendPrivateMessageOk'
descriptionKey = 'dialog.sendPrivateMessage'
onCancel = { this._onSendGroupMessage }
onSubmit = { this._onSendPrivateMessage } />
);

View File

@@ -10,7 +10,7 @@ import { connect } from '../../../base/redux';
import { type StyleType } from '../../../base/styles';
import {
setParams
} from '../../../conference/components/native/ConferenceNavigationContainerRef';
} from '../../../mobile/navigation/components/conference/ConferenceNavigationContainerRef';
import { setPrivateMessageRecipient } from '../../actions.any';
import AbstractMessageRecipient, {
type Props as AbstractProps

View File

@@ -6,8 +6,8 @@ import { IconMessage, IconReply } from '../../../base/icons';
import { getParticipantById } from '../../../base/participants';
import { connect } from '../../../base/redux';
import { AbstractButton, type AbstractButtonProps } from '../../../base/toolbox/components';
import { navigate } from '../../../conference/components/native/ConferenceNavigationContainerRef';
import { screen } from '../../../conference/components/native/routes';
import { navigate } from '../../../mobile/navigation/components/conference/ConferenceNavigationContainerRef';
import { screen } from '../../../mobile/navigation/routes';
export type Props = AbstractButtonProps & {

View File

@@ -1,6 +1,5 @@
// @flow
export { default as Chat } from './Chat';
export { default as ChatAndPolls } from './ChatAndPolls';
export { default as ChatButton } from './ChatButton';
export { default as ChatPrivacyDialog } from './ChatPrivacyDialog';

View File

@@ -23,6 +23,9 @@ import { LargeVideo } from '../../../large-video';
import { KnockingParticipantList } from '../../../lobby/components/native';
import { getIsLobbyVisible } from '../../../lobby/functions';
import { BackButtonRegistry } from '../../../mobile/back-button';
import { navigate }
from '../../../mobile/navigation/components/conference/ConferenceNavigationContainerRef';
import { screen } from '../../../mobile/navigation/routes';
import { Captions } from '../../../subtitles';
import { setToolboxVisible } from '../../../toolbox/actions';
import { Toolbox } from '../../../toolbox/components/native';
@@ -34,12 +37,10 @@ import {
import type { AbstractProps } from '../AbstractConference';
import AlwaysOnLabels from './AlwaysOnLabels';
import { navigate } from './ConferenceNavigationContainerRef';
import ExpandedLabelPopup from './ExpandedLabelPopup';
import LonelyMeetingExperience from './LonelyMeetingExperience';
import TitleBar from './TitleBar';
import { EXPANDED_LABEL_TIMEOUT } from './constants';
import { screen } from './routes';
import styles from './styles';

View File

@@ -1,6 +1,5 @@
// @flow
export { default as Conference } from './Conference';
export { default as ConferenceNavigationContainer } from './ConferenceNavigationContainer';
export { default as renderConferenceTimer } from './ConferenceTimerDisplay';
export { default as InsecureRoomNameLabel } from './InsecureRoomNameLabel';

View File

@@ -132,7 +132,6 @@ export default {
},
alwaysOnTitleBar: {
padding: 4,
paddingRight: 0,
borderRadius: 6,
backgroundColor: 'rgba(0, 0, 0, .5)',
@@ -141,7 +140,11 @@ export default {
alignSelf: 'flex-start',
alignItems: 'center',
justifyContent: 'center',
marginTop: BaseTheme.spacing[2]
marginTop: BaseTheme.spacing[2],
'&:not(:empty)': {
padding: 4
}
},
expandedLabelWrapper: {

View File

@@ -238,7 +238,7 @@ class Conference extends AbstractConference<Props, *> {
<Filmstrip />
</div>
{ _showPrejoin || _showLobby || <Toolbox showDominantSpeakerName = { true } /> }
{ _showPrejoin || _showLobby || <Toolbox /> }
<Chat />
{_notificationsVisible && (_overflowDrawer

View File

@@ -18,8 +18,9 @@ class DisplayNamePrompt extends AbstractDisplayNamePrompt<*> {
render() {
return (
<InputDialog
contentKey = 'dialog.enterDisplayName'
onSubmit = { this._onSetDisplayName } />
descriptionKey = 'dialog.enterDisplayName'
onSubmit = { this._onSetDisplayName }
titleKey = 'dialog.displayNameRequired' />
);
}

View File

@@ -4,6 +4,7 @@ import { makeStyles } from '@material-ui/core/styles';
import React from 'react';
import { useSelector } from 'react-redux';
import { isDisplayNameVisible } from '../../../base/config/functions.any';
import { getLocalParticipant } from '../../../base/participants';
import { withPixelLineHeight } from '../../../base/styles/functions.web';
import { getLargeVideoParticipant } from '../../../large-video/functions';
@@ -44,8 +45,9 @@ const DominantSpeakerName = () => {
const isTileView = useSelector(isLayoutTileView);
const toolboxVisible = useSelector(isToolboxVisible);
const showDisplayName = useSelector(isDisplayNameVisible);
if (nameToDisplay && selectedId !== localId && !isTileView) {
if (showDisplayName && nameToDisplay && selectedId !== localId && !isTileView) {
return (
<div
className = { `${classes.badgeContainer}${toolboxVisible ? '' : ` ${classes.containerElevated}`}` }>

View File

@@ -5,8 +5,8 @@ import { translate } from '../../base/i18n';
import { IconShareDoc } from '../../base/icons';
import { connect } from '../../base/redux';
import { AbstractButton, type AbstractButtonProps } from '../../base/toolbox/components';
import { navigate } from '../../conference/components/native/ConferenceNavigationContainerRef';
import { screen } from '../../conference/components/native/routes';
import { navigate } from '../../mobile/navigation/components/conference/ConferenceNavigationContainerRef';
import { screen } from '../../mobile/navigation/routes';
type Props = AbstractButtonProps;

View File

@@ -10,9 +10,9 @@ import { IconArrowBack } from '../../../base/icons';
import JitsiScreen from '../../../base/modal/components/JitsiScreen';
import { LoadingIndicator } from '../../../base/react';
import { connect } from '../../../base/redux';
import { goBack } from '../../../conference/components/native/ConferenceNavigationContainerRef';
import HeaderNavigationButton
from '../../../conference/components/native/HeaderNavigationButton';
from '../../../mobile/navigation/components/HeaderNavigationButton';
import { goBack } from '../../../mobile/navigation/components/conference/ConferenceNavigationContainerRef';
import { getSharedDocumentUrl } from '../../functions';
import styles, { INDICATOR_COLOR } from './styles';

View File

@@ -88,7 +88,9 @@ MiddlewareRegistry.register(store => next => action => {
case CONFERENCE_JOINED: {
const state = store.getState();
const { defaultLocalDisplayName } = state['features/base/config'];
const { room } = state['features/base/conference'];
const { loadableAvatarUrl, name, id } = getLocalParticipant(state);
const breakoutRoom = APP.conference.roomName.toString() !== room.toLowerCase();
// we use APP.conference.roomName as we do not update state['features/base/conference'].room when
// moving between rooms in case of breakout rooms and it stays always with the name of the main room
@@ -101,7 +103,8 @@ MiddlewareRegistry.register(store => next => action => {
name,
defaultLocalDisplayName
),
avatarURL: loadableAvatarUrl
avatarURL: loadableAvatarUrl,
breakoutRoom
}
);
break;

Some files were not shown because too many files have changed in this diff Show More