Compare commits

..

60 Commits

Author SHA1 Message Date
Alex Bumbu
1893ced556 iOS: toggle audio mute & leave meeting lock screen widgets (#12581) 2022-11-18 13:25:48 +02:00
Calin-Teodor
7d9c13a618 feat(prejoin): updated styles 2022-11-18 11:02:05 +02:00
Hristo Terezov
48ed3b7dc6 fix(dialog): cancel hide timeout on openDialog
Since we unmount the dialog after a timeout because of an animation we
need to cancel the timeout in case we need to render new dialog.
Otherwise the actual hiding can be executed after we render the new
dialog.
2022-11-17 17:00:02 -06:00
Hristo Terezov
04abfe1a3b feat(dialog): add disableAutoHideOnSubmit prop
Needed for shared video dialog.
2022-11-17 17:00:02 -06:00
Alex Bumbu
d45decc393 Update JitsiMeet.h (#12574) 2022-11-17 16:31:37 +02:00
Saúl Ibarra Corretgé
88f8f48465 fix(participants) don't treat Jigasi like a fake participant
We only really want to know if a participant is Jigasi for displaying a
specific icon, for all other intents and purposes it's a normal
participant.
2022-11-17 15:13:54 +01:00
Saúl Ibarra Corretgé
8127ea2479 feat(redux) throw exception in case invalid listeners are registered
This allows catching mistakes early.
2022-11-17 11:07:57 +01:00
Saúl Ibarra Corretgé
b22915c169 fix(rn,filmstrip) fix invalid selector registered as state listener 2022-11-17 11:07:57 +01:00
Saúl Ibarra Corretgé
14fcd153e5 fix(rn,connection-indicator) align rendering with web
Use the same way for calculating que perceived quality and display it.
2022-11-17 11:07:57 +01:00
Robert Pintilii
48efe36cdf fix(dial-in) Fix warning (#12571)
Only show warning if the feature is enabled
2022-11-16 12:14:58 +02:00
Saúl Ibarra Corretgé
0c373e105b ref(StageFilmstrip) mark as experimental
THere are a bunch of unhandled corner cases involving virtual
screen-sharing participants.
2022-11-15 10:34:58 -06:00
Shawn
e57c7f92a8 refactor(end-conference): distinguish between component vs host module logic 2022-11-15 10:34:40 -06:00
Jaya Allamsetty
70fa44f85f chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1533.0.0+7b257686...v1535.0.0+e6263e7c
2022-11-15 11:08:37 -05:00
rinenweb
bcc5beb73d fix(lang) fixup main-el.json
Missing "{" in line 74 and name is not displayed at all when {name} is used in line 520.
2022-11-15 09:41:43 +01:00
Joseph Garrone
4ef4e45ee4 fix(styles) Remove Theme type annotation (#12544)
* tss-react doesn't need a type anotation for the Theme

* Update tss-react to 4.4.4
2022-11-15 09:50:22 +02:00
TTG
c9ff0bb75f lang: Remove Indonesian & Norwegian translations (#12554)
* Remove Indonesian translation

* Remove Norwegian translation
2022-11-13 21:38:42 -06:00
chipechop
282817db28 lang: Update main-it.json (#12541)
refining
2022-11-11 16:37:54 -06:00
Shawn
93ab7725e7 feat(toolbox) notify click for hangup-menu and end-meeting menu button 2022-11-11 16:06:53 -06:00
Calin-Teodor
53ccb97d34 fix(welcome/native): removed unused constant 2022-11-11 18:11:41 +01:00
Calin-Teodor
6346d99d0e fix(welcome/native): placeholder fix 2022-11-11 18:11:41 +01:00
Saúl Ibarra Corretgé
79c4cabbad feat(rn) make status bar visible at all times 2022-11-11 17:25:28 +01:00
Robert Pintilii
7a9f51b01b ref(TS) Convert some features to TS (#12546) 2022-11-11 10:20:33 +02:00
Robert Pintilii
a884a6b232 fix(ui) Fix new icons issues (#12545) 2022-11-11 09:58:55 +02:00
Jaya Allamsetty
b00a17c1c3 fix(connection-stats) Do not display max enabled resolution on SS tile. 2022-11-10 17:00:34 -05:00
bgrozev
99955df5c8 Cleanup sounds (switch to mp3, encode at lower bitrate).' (#12507)
* Reencode mp3 sounds at lower bitrate, mono.
* Encode wav sounds as mp3.
* Remove unused sound file.
* Add opus encoded sounds.
* Add a script to encode sounds.
2022-11-10 10:06:40 -06:00
Calin-Teodor
c0f0803f01 feat(base/modal): addBottomPadding default prop for extra padding on JitsiScreen 2022-11-10 17:22:36 +02:00
dependabot[bot]
b2c864cbba chore(deps): bump loader-utils from 1.4.0 to 1.4.1
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.4.0 to 1.4.1.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.1/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v1.4.0...v1.4.1)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-10 11:30:02 +01:00
Saúl Ibarra Corretgé
31957d4085 chore(fonts) drop no longer used font 2022-11-10 11:16:22 +01:00
Saúl Ibarra Corretgé
4f83fc2a6d fix(ios) fix uploading symbols to Crashlytics
Since we no longer use bitcode we need to upload them when we build the
app.
2022-11-10 11:16:06 +01:00
Robert Pintilii
4bd27730ce ref(TS) Convert some features to TS (#12523) 2022-11-10 10:45:56 +02:00
Robert Pintilii
817d7f0c0d fix(thumbnail) Fix top indicators sizes (#12539)
Fix sizes after icon update
2022-11-10 10:22:57 +02:00
Robert Pintilii
19a9b17425 fix(recording) Fix local recording (#12531)
Starting chrome 107, the recorder does not record any data if the audio stream has no tracks
To fix this we create a track for the local user (muted track)
2022-11-10 10:22:42 +02:00
Robert Pintilii
cc33930259 fix(thumbnail) Open native video context menu (#12532) 2022-11-10 09:20:42 +02:00
Jaya Allamsetty
6223e16ca5 ref(config) Cleanup unused flags related to multi-stream mode. 2022-11-09 15:23:30 -05:00
José Luís Andrade
99385ae3d7 fix(config) add "whiteboard" to toolbarButtons 2022-11-09 17:37:51 +01:00
Shawn
17cace070e feat(external-api) Add endConference command 2022-11-09 16:00:17 +01:00
Calin-Teodor
cdb2436b73 feat(base/ui): updated BUTTON_TYPES imports based upon native or web 2022-11-09 16:35:08 +02:00
Calin-Teodor
10db5ecf1f feat(welcome/native): improved ui 2022-11-09 14:52:26 +02:00
Robert Pintilii
cbb8b5f620 fix(dialog) Fix initial focus (#12509)
Don't focus on the close button if there's another focusable element
2022-11-09 12:07:37 +02:00
Jaya Allamsetty
f3e4c57036 Remove legacy signaling and legacy SS mode. (#12499)
* fix(connection-status): remove unused participant connectionStatus.
Always use trackStreamingStatus now that legacy endpoint based signaling has been removed.

* remove the check for source-name signaling.
Default to source-name signaling always.

* Remove the check for multi-stream mode.
Make that the default mode and remove the support for legacy SS mode.

* Remove presenter mode.

* update latest@lib-jitsi-meet
2022-11-08 14:15:49 -05:00
Calinteodor
1731d5188d feat(prejoin/native): updated UI (#12528) 2022-11-08 19:14:29 +02:00
Calinteodor
2c7dc5e40e feat(base/ui/native): Use new Input component (#12526)
feat(base/ui/native): replaced react native TextInput component with our native Input component
2022-11-08 17:46:46 +02:00
Calinteodor
74cd486232 feat(chat/native): moved ChatAndPollsNavigator to mobile/navigation (#12527)
* feat(chat/native): moved ChatAndPollsNavigator to mobile/navigation
2022-11-08 17:43:02 +02:00
Alexey Matveev
30f3bac217 feat(ios) add ability to go PiP while screen sharing 2022-11-08 16:25:36 +01:00
Vadim A. Misbakh-Soloviov
84fc4dd63f (feat) OpenResty Support
Signed-off-by: Vadim A. Misbakh-Soloviov <git@mva.name>
2022-11-08 08:53:50 -06:00
Robert Pintilii
936a1a6b0e ref(design) Update icons (#12489)
Remove unused icons
Remove fill none from icons
Rename some icons
2022-11-08 12:24:32 +02:00
Gabriel Borlea
f4e8f860b1 feat(rtc-stats): send camera off and on events (#12522)
* feat(rtc-stats): send camera off and on events

* code review
2022-11-08 11:41:53 +02:00
Nils Ohlmeier
ee544d25f8 chore(deps) @jitsi/rtcstats 9.4.1 (#12512)
* chore(deps) @jitsi/rtcstats 9.4.1

* squash: Fix missing package-lock change.

Co-authored-by: damencho <damencho@jitsi.org>
2022-11-07 09:59:35 -06:00
Alexey Matveev
c32866f6a2 flag to hide settings button in overflow menu (#12515)
* flag to hide settings button in overflow menu
2022-11-07 14:00:46 +02:00
Alexey Matveev
215c2825de fix(rn) fix hangup all action
Co-authored-by: Alexey Matveev <malex@1forma.ru>
2022-11-07 10:30:08 +01:00
Christoph Settgast
edb614783b fix(lang) update German translation
Signed-off-by: Christoph Settgast <csett86@web.de>
2022-11-05 14:18:16 -05:00
Alexey Matveev
0e19bc9cd6 ru-localization minors 2022-11-04 13:46:41 -05:00
Johan Bernhardsson
caff0c64af lang: Update Swedish 100% translation (#12511)
* first Swedish update

* 100% swedish

* Update main-sv.json

* Updated Swedish translation

* Updated Swedish translation dropped product name

Co-authored-by: Johan Bernhardsson <johan@kafait.se>
2022-11-04 13:45:15 -05:00
Petr Ferschmann
fcb1845e2a lang: Updated Czech Translation (#12388)
* Translation to czech language

* Updated czech translation

* Updated czech translation

Co-authored-by: Дамян Минков <damencho@jitsi.org>
2022-11-03 16:01:31 -05:00
Suleyman BİLGİN
977295bd87 lang: Update Turkish translation (#12348)
* Turkish translations that were missing were added, and certain terms were changed to sound pleasant.

* squash: new line

Co-authored-by: Suleyman Bilgin <suleymanbilgin@thy.com>
Co-authored-by: Дамян Минков <damencho@jitsi.org>
2022-11-03 16:01:12 -05:00
apetrus20
ed139f53ca fix(polls) refactor storage of poll data 2022-11-03 16:08:20 +01:00
Alexey Matveev
5692c3cb4d fix(lang) update Russian translation 2022-11-03 14:24:58 +01:00
TTG
ed62409ad5 fix(lang) update translations 2022-11-03 10:53:25 +01:00
Robert Pintilii
b52b4c2a78 ref(TS ) Improve TS (#12491)
Remove global variables from files
Change type to interface
2022-11-03 10:35:51 +02:00
Duduman Bogdan Vlad
36bef94c3c Remove logic show toolbar on new message received (#12488) 2022-11-03 09:18:21 +02:00
786 changed files with 5533 additions and 8812 deletions

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#17A0DB</color>
<color name="colorPrimaryDark">#1081B2</color>
<color name="navigationBarColor">#161618</color>
</resources>

View File

@@ -2,7 +2,7 @@
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:editTextBackground">@drawable/rn_edit_text_material</item>
<item name="android:forceDarkAllowed">false</item>
<item name="android:navigationBarColor">@color/colorPrimaryDark</item>
<item name="android:navigationBarColor">@color/navigationBarColor</item>
<item name="android:windowDisablePreview">true</item>
</style>
</resources>

View File

@@ -27,7 +27,6 @@ import {
} from './react/features/app/actions';
import { showModeratedNotification } from './react/features/av-moderation/actions';
import { shouldShowModeratedNotification } from './react/features/av-moderation/functions';
import { setAudioOnly } from './react/features/base/audio-only';
import {
AVATAR_URL_COMMAND,
CONFERENCE_LEAVE_REASONS,
@@ -77,7 +76,6 @@ import {
JitsiConnectionEvents,
JitsiE2ePingEvents,
JitsiMediaDevicesEvents,
JitsiParticipantConnectionStatus,
JitsiTrackErrors,
JitsiTrackEvents,
browser
@@ -101,9 +99,7 @@ import {
getNormalizedDisplayName,
getVirtualScreenshareParticipantByOwnerId,
localParticipantAudioLevelChanged,
localParticipantConnectionStatusChanged,
localParticipantRoleChanged,
participantConnectionStatusChanged,
participantKicked,
participantMutedUs,
participantPresenceChanged,
@@ -112,20 +108,15 @@ import {
screenshareParticipantDisplayNameChanged,
updateRemoteParticipantFeatures
} from './react/features/base/participants';
import {
getUserSelectedCameraDeviceId,
updateSettings
} from './react/features/base/settings';
import { updateSettings } from './react/features/base/settings';
import {
addLocalTrack,
createLocalPresenterTrack,
createLocalTracksF,
destroyLocalTracks,
getLocalJitsiAudioTrack,
getLocalJitsiVideoTrack,
getLocalTracks,
getLocalVideoTrack,
isLocalCameraTrackMuted,
isLocalTrackMuted,
isUserInteractionRequiredForUnmute,
replaceLocalTrack,
@@ -154,9 +145,7 @@ import { isPrejoinPageVisible } from './react/features/prejoin/functions';
import { disableReceiver, stopReceiver } from './react/features/remote-control';
import { isScreenAudioShared, setScreenAudioShareState } 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';
import { endpointMessageReceived } from './react/features/subtitles';
import { handleToggleVideoMuted } from './react/features/toolbox/actions.any';
@@ -188,15 +177,6 @@ let _connectionPromise;
*/
let _onConnectionPromiseCreated;
/**
* This promise is used for chaining mutePresenterVideo calls in order to avoid calling GUM multiple times if it takes
* a while to finish.
*
* @type {Promise<void>}
* @private
*/
let _prevMutePresenterVideo = Promise.resolve();
/*
* Logic to open a desktop picker put on the window global for
* lib-jitsi-meet to detect and invoke
@@ -480,12 +460,6 @@ export default {
isSharingScreen: false,
/**
* The local presenter video track (if any).
* @type {JitsiLocalTrack|null}
*/
localPresenterVideo: null,
/**
* Returns an object containing a promise which resolves with the created tracks &
* the errors resulting from that process.
@@ -530,22 +504,10 @@ export default {
firePermissionPromptIsShownEvent: true
};
// FIXME is there any simpler way to rewrite this spaghetti below ?
if (options.startScreenSharing) {
// 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
// Spot uses the _desktopSharingSourceDevice config option to use an external video input device label as
// screenshare and calls getUserMedia instead of getDisplayMedia for capturing the media.
if (options.startScreenSharing && config._desktopSharingSourceDevice) {
tryCreateLocalTracks = this._createDesktopTrack()
.then(([ desktopStream ]) => {
if (!requestedAudio) {
return [ desktopStream ];
@@ -910,8 +872,7 @@ export default {
isLocalVideoMuted() {
// If the tracks are not ready, read from base/media state
return this._localTracksInitialized
? isLocalCameraTrackMuted(
APP.store.getState()['features/base/tracks'])
? isLocalTrackMuted(APP.store.getState()['features/base/tracks'], MEDIA_TYPE.VIDEO)
: isVideoMutedByUser(APP.store);
},
@@ -1031,36 +992,6 @@ export default {
this.muteAudio(!this.isLocalAudioMuted(), showUI);
},
/**
* Simulates toolbar button click for presenter video mute. Used by
* shortcuts and API.
* @param mute true for mute and false for unmute.
* @param {boolean} [showUI] when set to false will not display any error
* dialogs in case of media permissions error.
*/
async mutePresenter(mute, showUI = true) {
const maybeShowErrorDialog = error => {
showUI && APP.store.dispatch(notifyCameraError(error));
};
const localVideo = getLocalJitsiVideoTrack(APP.store.getState());
if (mute) {
try {
await localVideo.setEffect(undefined);
} catch (err) {
logger.error('Failed to remove the presenter effect', err);
maybeShowErrorDialog(err);
}
} else {
try {
await localVideo.setEffect(await this._createPresenterStreamEffect());
} catch (err) {
logger.error('Failed to apply the presenter effect', err);
maybeShowErrorDialog(err);
}
}
},
/**
* Simulates toolbar button click for video mute. Used by shortcuts and API.
* @param mute true for mute and false for unmute.
@@ -1069,8 +1000,6 @@ export default {
*/
muteVideo(mute, showUI = true) {
if (this.videoSwitchInProgress) {
// Turning the camera on while the screen sharing mode is being turned off is causing issues around
// the presenter mode handling. It should be okay for the user to click the button again once that's done.
console.warn('muteVideo - unable to perform operations while video switch is in progress');
return;
@@ -1083,13 +1012,6 @@ export default {
return;
}
if (this.isSharingScreen) {
// Chain _mutePresenterVideo calls
_prevMutePresenterVideo = _prevMutePresenterVideo.then(() => this._mutePresenterVideo(mute));
return;
}
// If not ready to modify track's state yet adjust the base/media
if (!this._localTracksInitialized) {
// This will only modify base/media.video.muted which is then synced
@@ -1401,8 +1323,6 @@ export default {
// Restore initial state.
this._localTracksInitialized = false;
this.isSharingScreen = false;
this.localPresenterVideo = null;
this.roomName = roomName;
const { tryCreateLocalTracks, errors } = this.createInitialLocalTracks(options);
@@ -1534,33 +1454,6 @@ export default {
});
},
/**
* Sets `this.isSharingScreen` depending on provided video stream.
* In case new screen sharing status is not equal previous one
* it updates desktop sharing buttons in UI
* and notifies external application.
*
* @param {JitsiLocalTrack} [newStream] new stream to use or null
* @private
* @returns {void}
*/
_setSharingScreen(newStream) {
const wasSharingScreen = this.isSharingScreen;
this.isSharingScreen = newStream && newStream.videoType === 'desktop';
if (wasSharingScreen !== this.isSharingScreen) {
const details = {};
if (this.isSharingScreen) {
details.sourceType = newStream.sourceType;
}
APP.API.notifyScreenSharingStatusChanged(
this.isSharingScreen, details);
}
},
/**
* Start using provided audio stream.
* Stops previous audio stream.
@@ -1640,35 +1533,6 @@ export default {
const tracks = APP.store.getState()['features/base/tracks'];
const duration = getLocalVideoTrack(tracks)?.jitsiTrack.getDuration() ?? 0;
// It can happen that presenter GUM is in progress while screensharing is being turned off. Here it needs to
// wait for that GUM to be resolved in order to prevent leaking the presenter track(this.localPresenterVideo
// will be null when SS is being turned off, but it will initialize once GUM resolves).
let promise = _prevMutePresenterVideo = _prevMutePresenterVideo.then(() => {
// mute the presenter track if it exists.
if (this.localPresenterVideo) {
return (
this.localPresenterVideo.dispose().then(() => {
APP.store.dispatch(trackRemoved(this.localPresenterVideo));
this.localPresenterVideo = null;
})
.then(() => {
// This is needed only for setting the correct muted state in features/base/media.
// NOTE: It is important to be executed after we have disposed and removed the presenter track.
// This way all the side effects won't be executed and we won't start additional O/A cycle for
// replacing the track with video with the one without video. This O/A cycle is not needed since
// we are trying to destroy all tracks. Also due to the current async nature of muting the
// presenter, the final removal of the screen sharing track (see the code at the end of the
// function) can be executed between the removal of the stream with video and adding the
// original screen sharing stream to the peer connection. This will lead to a failure to remove
// the screen sharing track, compromising the screen sharing state in jitsi-meet and the user
// won't be able to turn off the screen sharing.
APP.store.dispatch(setVideoMuted(true, MEDIA_TYPE.PRESENTER));
})
);
}
});
// If system audio was also shared stop the AudioMixerEffect and dispose of the desktop audio track.
if (this._mixerEffect) {
const localAudio = getLocalJitsiAudioTrack(APP.store.getState());
@@ -1687,9 +1551,10 @@ export default {
}
APP.store.dispatch(setScreenAudioShareState(false));
let promise;
if (didHaveVideo && !ignoreDidHaveVideo) {
promise = promise.then(() => createLocalTracksF({ devices: [ 'video' ] }))
promise = createLocalTracksF({ devices: [ 'video' ] })
.then(([ stream ]) => {
logger.debug(`_turnScreenSharingOff using ${stream} for useVideoStream`);
@@ -1705,11 +1570,7 @@ export default {
);
});
} else {
promise = promise.then(() => {
logger.debug('_turnScreenSharingOff using null for useVideoStream');
return this.useVideoStream(null);
});
promise = this.useVideoStream(null);
}
return promise.then(
@@ -1727,56 +1588,6 @@ export default {
});
},
/**
* Toggles between screen sharing and camera video if the toggle parameter
* is not specified and starts the procedure for obtaining new screen
* sharing/video track otherwise.
*
* NOTE: this is currently ONLY used in the non-multi-stream case.
*
* @param {boolean} [toggle] - If true - new screen sharing track will be
* obtained. If false - new video track will be obtain. If not specified -
* toggles between screen sharing and camera video.
* @param {Object} [options] - Screen sharing options that will be passed to
* createLocalTracks.
* @param {boolean} [options.audioOnly] - Whether or not audioOnly is enabled.
* @param {Array<string>} [options.desktopSharingSources] - Array with the
* sources that have to be displayed in the desktop picker window ('screen',
* 'window', etc.).
* @param {Object} [options.desktopStream] - An existing desktop stream to
* use instead of creating a new desktop stream.
* @param {boolean} ignoreDidHaveVideo - if true ignore if video was on when sharing started.
* @return {Promise.<T>}
*/
async toggleScreenSharing(toggle = !this._untoggleScreenSharing, options = {}, ignoreDidHaveVideo) {
logger.debug(`toggleScreenSharing: ${toggle}`);
if (this.videoSwitchInProgress) {
return Promise.reject(`toggleScreenSharing: ${toggle} aborted - video switch in progress.`);
}
if (!JitsiMeetJS.isDesktopSharingEnabled()) {
return Promise.reject('Cannot toggle screen sharing: not supported.');
}
if (toggle) {
try {
await this._switchToScreenSharing(options);
if (this.isAudioOnly()) {
APP.store.dispatch(setAudioOnly(false));
}
return;
} catch (err) {
logger.error('Failed to switch to screensharing', err);
return;
}
}
return this._untoggleScreenSharing
? this._untoggleScreenSharing(ignoreDidHaveVideo)
: Promise.resolve();
},
/**
* Creates desktop (screensharing) {@link JitsiLocalTrack}
*
@@ -1849,228 +1660,6 @@ export default {
});
},
/**
* Creates a new instance of presenter effect. A new video track is created
* using the new set of constraints that are calculated based on
* the height of the desktop that is being currently shared.
*
* @param {number} height - The height of the desktop stream that is being
* currently shared.
* @param {string} cameraDeviceId - The device id of the camera to be used.
* @return {Promise<JitsiStreamPresenterEffect>} - A promise resolved with
* {@link JitsiStreamPresenterEffect} if it succeeds.
*/
async _createPresenterStreamEffect(height = null, cameraDeviceId = null) {
if (!this.localPresenterVideo) {
const camera = cameraDeviceId ?? getUserSelectedCameraDeviceId(APP.store.getState());
try {
this.localPresenterVideo = await createLocalPresenterTrack({ cameraDeviceId: camera }, height);
} catch (err) {
logger.error('Failed to create a camera track for presenter', err);
return;
}
APP.store.dispatch(trackAdded(this.localPresenterVideo));
}
try {
const effect = await createPresenterEffect(this.localPresenterVideo.stream);
return effect;
} catch (err) {
logger.error('Failed to create the presenter effect', err);
}
},
/**
* Tries to turn the presenter video track on or off. If a presenter track
* doesn't exist, a new video track is created.
*
* @param mute - true for mute and false for unmute.
*
* @private
*/
async _mutePresenterVideo(mute) {
const maybeShowErrorDialog = error => {
APP.store.dispatch(notifyCameraError(error));
};
// Check for NO-OP
if (mute && (!this.localPresenterVideo || this.localPresenterVideo.isMuted())) {
return;
} else if (!mute && this.localPresenterVideo && !this.localPresenterVideo.isMuted()) {
return;
}
// Create a new presenter track and apply the presenter effect.
if (!this.localPresenterVideo && !mute) {
const localVideo = getLocalJitsiVideoTrack(APP.store.getState());
const { height, width } = localVideo.track.getSettings() ?? localVideo.track.getConstraints();
const isPortrait = height >= width;
const DESKTOP_STREAM_CAP = 720;
const highResolutionTrack
= (isPortrait && width > DESKTOP_STREAM_CAP) || (!isPortrait && height > DESKTOP_STREAM_CAP);
// Resizing the desktop track for presenter is causing blurriness of the desktop share on chrome.
// Disable resizing by default, enable it only when config.js setting is enabled.
const resizeDesktopStream = highResolutionTrack && config.videoQuality?.resizeDesktopForPresenter;
if (resizeDesktopStream) {
let desktopResizeConstraints = {};
if (height && width) {
const advancedConstraints = [ { aspectRatio: (width / height).toPrecision(4) } ];
const constraint = isPortrait ? { width: DESKTOP_STREAM_CAP } : { height: DESKTOP_STREAM_CAP };
advancedConstraints.push(constraint);
desktopResizeConstraints.advanced = advancedConstraints;
} else {
desktopResizeConstraints = {
width: 1280,
height: 720
};
}
// Apply the constraints on the desktop track.
try {
await localVideo.track.applyConstraints(desktopResizeConstraints);
} catch (err) {
logger.error('Failed to apply constraints on the desktop stream for presenter mode', err);
return;
}
}
const trackHeight = resizeDesktopStream
? localVideo.track.getSettings().height ?? DESKTOP_STREAM_CAP
: height;
let effect;
try {
effect = await this._createPresenterStreamEffect(trackHeight);
} catch (err) {
logger.error('Failed to unmute Presenter Video', err);
maybeShowErrorDialog(err);
return;
}
// Replace the desktop track on the peerconnection.
try {
await localVideo.setEffect(effect);
APP.store.dispatch(setVideoMuted(mute, MEDIA_TYPE.PRESENTER));
this.setVideoMuteStatus();
} catch (err) {
logger.error('Failed to apply the Presenter effect', err);
}
} else {
APP.store.dispatch(setVideoMuted(mute, MEDIA_TYPE.PRESENTER));
}
},
/**
* Tries to switch to the screensharing mode by disposing camera stream and
* replacing it with a desktop one.
*
* @param {Object} [options] - Screen sharing options that will be passed to
* createLocalTracks.
*
* @return {Promise} - A Promise resolved if the operation succeeds or
* rejected with some unknown type of error in case it fails. Promise will
* be rejected immediately if {@link videoSwitchInProgress} is true.
*
* @private
*/
_switchToScreenSharing(options = {}) {
if (this.videoSwitchInProgress) {
return Promise.reject('Switch in progress.');
}
this.videoSwitchInProgress = true;
return this._createDesktopTrack(options)
.then(async streams => {
let desktopVideoStream = streams.find(stream => stream.getType() === MEDIA_TYPE.VIDEO);
this._desktopAudioStream = streams.find(stream => stream.getType() === MEDIA_TYPE.AUDIO);
const { audioOnly = false } = options;
// If we're in audio only mode dispose of the video track otherwise the screensharing state will be
// inconsistent.
if (audioOnly) {
desktopVideoStream.dispose();
desktopVideoStream = undefined;
if (!this._desktopAudioStream) {
return Promise.reject(AUDIO_ONLY_SCREEN_SHARE_NO_TRACK);
}
}
if (desktopVideoStream) {
logger.debug(`_switchToScreenSharing is using ${desktopVideoStream} for useVideoStream`);
await this.useVideoStream(desktopVideoStream);
}
if (this._desktopAudioStream) {
// Noise suppression doesn't work with desktop audio because we can't chain
// track effects yet, disable it first.
// We need to to wait for the effect to clear first or it might interfere with the audio mixer.
await APP.store.dispatch(setNoiseSuppressionEnabled(false));
const localAudio = getLocalJitsiAudioTrack(APP.store.getState());
// If there is a localAudio stream, mix in the desktop audio stream captured by the screen sharing
// api.
if (localAudio) {
this._mixerEffect = new AudioMixerEffect(this._desktopAudioStream);
logger.debug(`_switchToScreenSharing is mixing ${this._desktopAudioStream} and ${localAudio}`
+ ' as a single audio stream');
await localAudio.setEffect(this._mixerEffect);
} else {
// If no local stream is present ( i.e. no input audio devices) we use the screen share audio
// stream as we would use a regular stream.
logger.debug(`_switchToScreenSharing is using ${this._desktopAudioStream} for replacing it as`
+ ' the only audio track on the conference');
await room.replaceTrack(null, this._desktopAudioStream);
}
APP.store.dispatch(setScreenAudioShareState(true));
}
})
.then(() => {
this.videoSwitchInProgress = false;
if (isScreenshotCaptureEnabled(APP.store.getState(), false, true)) {
APP.store.dispatch(toggleScreenshotCaptureSummary(true));
}
sendAnalytics(createScreenSharingEvent('started'));
logger.log('Screen sharing started');
})
.catch(error => {
this.videoSwitchInProgress = false;
// Pawel: With this call I'm trying to preserve the original
// behaviour although it is not clear why would we "untoggle"
// on failure. I suppose it was to restore video in case there
// was some problem during "this.useVideoStream(desktopStream)".
// It's important to note that the handler will not be available
// if we fail early on trying to get desktop media (which makes
// sense, because the camera video is still being used, so
// nothing to "untoggle").
if (this._untoggleScreenSharing) {
this._untoggleScreenSharing();
}
// FIXME the code inside of _handleScreenSharingError is
// asynchronous, but does not return a Promise and is not part
// of the current Promise chain.
this._handleScreenSharingError(error);
return Promise.reject(error);
});
},
/**
* Handles {@link JitsiTrackError} returned by the lib-jitsi-meet when
* trying to create screensharing track. It will either do nothing if
@@ -2275,11 +1864,6 @@ export default {
(jitsiConference, p2p) =>
APP.store.dispatch(p2pStatusChanged(p2p)));
room.on(
JitsiConferenceEvents.PARTICIPANT_CONN_STATUS_CHANGED,
(id, connectionStatus) => APP.store.dispatch(
participantConnectionStatusChanged(id, connectionStatus)));
room.on(
JitsiConferenceEvents.DOMINANT_SPEAKER_CHANGED,
(dominant, previous, silence) => {
@@ -2290,16 +1874,6 @@ export default {
JitsiConferenceEvents.CONFERENCE_CREATED_TIMESTAMP,
conferenceTimestamp => APP.store.dispatch(conferenceTimestampChanged(conferenceTimestamp)));
room.on(JitsiConferenceEvents.CONNECTION_INTERRUPTED, () => {
APP.store.dispatch(localParticipantConnectionStatusChanged(
JitsiParticipantConnectionStatus.INTERRUPTED));
});
room.on(JitsiConferenceEvents.CONNECTION_RESTORED, () => {
APP.store.dispatch(localParticipantConnectionStatusChanged(
JitsiParticipantConnectionStatus.ACTIVE));
});
room.on(
JitsiConferenceEvents.DISPLAY_NAME_CHANGED,
(id, displayName) => {
@@ -2519,77 +2093,38 @@ export default {
APP.UI.addListener(
UIEvents.VIDEO_DEVICE_CHANGED,
cameraDeviceId => {
const localVideo = getLocalJitsiVideoTrack(APP.store.getState());
const videoWasMuted = this.isLocalVideoMuted();
sendAnalytics(createDeviceChangedEvent('video', 'input'));
// If both screenshare and video are in progress, restart the
// presenter mode with the new camera device.
if (this.isSharingScreen && !videoWasMuted) {
const { height } = localVideo.track.getSettings();
createLocalTracksF({
devices: [ 'video' ],
cameraDeviceId
})
.then(([ stream ]) => {
// if we are in audio only mode or video was muted before
// changing device, then mute
if (this.isAudioOnly() || videoWasMuted) {
return stream.mute()
.then(() => stream);
}
// dispose the existing presenter track and create a new
// camera track.
// FIXME JitsiLocalTrack.dispose is async and should be waited for
this.localPresenterVideo && this.localPresenterVideo.dispose();
this.localPresenterVideo = null;
return this._createPresenterStreamEffect(height, cameraDeviceId)
.then(effect => localVideo.setEffect(effect))
.then(() => {
this.setVideoMuteStatus();
logger.log('Switched local video device while screen sharing and the video is unmuted');
this._updateVideoDeviceId();
})
.catch(err => APP.store.dispatch(notifyCameraError(err)));
// If screenshare is in progress but video is muted, update the default device
// id for video, dispose the existing presenter track and create a new effect
// that can be applied on un-mute.
} else if (this.isSharingScreen && videoWasMuted) {
logger.log('Switched local video device: while screen sharing and the video is muted');
const { height } = localVideo.track.getSettings();
return stream;
})
.then(stream => {
logger.info(`Switching the local video device to ${cameraDeviceId}.`);
return this.useVideoStream(stream);
})
.then(() => {
logger.info(`Switched local video device to ${cameraDeviceId}.`);
this._updateVideoDeviceId();
})
.catch(error => {
logger.error(`Failed to switch to selected camera:${cameraDeviceId}, error:${error}`);
// FIXME JitsiLocalTrack.dispose is async and should be waited for
this.localPresenterVideo && this.localPresenterVideo.dispose();
this.localPresenterVideo = null;
this._createPresenterStreamEffect(height, cameraDeviceId);
// if there is only video, switch to the new camera stream.
} else {
createLocalTracksF({
devices: [ 'video' ],
cameraDeviceId,
micDeviceId: null
})
.then(([ stream ]) => {
// if we are in audio only mode or video was muted before
// changing device, then mute
if (this.isAudioOnly() || videoWasMuted) {
return stream.mute()
.then(() => stream);
}
return stream;
})
.then(stream => {
logger.info(`Switching the local video device to ${cameraDeviceId}.`);
return this.useVideoStream(stream);
})
.then(() => {
logger.info(`Switched local video device to ${cameraDeviceId}.`);
this._updateVideoDeviceId();
})
.catch(error => {
logger.error(`Failed to switch to selected camera:${cameraDeviceId}, error:${error}`);
return APP.store.dispatch(notifyCameraError(error));
});
}
return APP.store.dispatch(notifyCameraError(error));
});
}
);
@@ -2613,7 +2148,6 @@ export default {
sendAnalytics(createDeviceChangedEvent('audio', 'input'));
createLocalTracksF({
devices: [ 'audio' ],
cameraDeviceId: null,
micDeviceId: selectedDeviceId
})
.then(([ stream ]) => {
@@ -2756,13 +2290,6 @@ export default {
cameraDeviceId: localVideo.getDeviceId()
}));
}
// If screenshare is in progress, get the device id from the presenter track.
if (this.localPresenterVideo) {
APP.store.dispatch(updateSettings({
cameraDeviceId: this.localPresenterVideo.getDeviceId()
}));
}
},
/**
@@ -3211,7 +2738,7 @@ export default {
return;
}
APP.store.dispatch(toggleScreensharingA(undefined, false, false, { desktopStream }));
APP.store.dispatch(toggleScreensharingA(undefined, false, { desktopStream }));
}
});
}

View File

@@ -79,15 +79,6 @@ var config = {
// This is useful when the client runs on a host with limited resources.
// noAutoPlayVideo: false,
// Enable / disable 500 Kbps bitrate cap on desktop tracks. When enabled,
// simulcast is turned off for the desktop share. If presenter is turned
// on while screensharing is in progress, the max bitrate is automatically
// adjusted to 2.5 Mbps. This takes a value between 0 and 1 which determines
// the probability for this to be enabled. This setting has been deprecated.
// desktopSharingFrameRate.max now determines whether simulcast will be enabled
// or disabled for the screenshare.
// capScreenshareBitrate: 1, // 0 to disable - deprecated.
// Whether to use fake constraints (height: 99999, width: 99999) when calling getDisplayMedia on
// Chromium based browsers. This is intended as a workaround for
// https://bugs.chromium.org/p/chromium/issues/detail?id=1056311
@@ -99,20 +90,6 @@ var config = {
// callStatsThreshold: 5, // enable callstats for 5% of the users.
},
// Feature Flags.
flags: {
// Enables source names in the signaling.
// sourceNameSignaling: false,
// Enables sending multiple video streams, i.e., camera and desktop tracks can be shared in the conference
// separately as two different streams instead of one composite stream.
// sendMultipleVideoStreams: false,
// Signal that this client supports receiving multiple video streams. Without this flag jicofo will enable
// multi-stream backward compatibility.
// receiveMultipleVideoStreams: true,
},
// Disables moderator indicators.
// disableModeratorIndicator: false,
@@ -523,9 +500,6 @@ var config = {
// 720: 'high',
// },
//
// // Provides a way to resize the desktop track to 720p (if it is greater than 720p) before creating a canvas
// // for the presenter mode (camera picture-in-picture mode with screenshare).
// resizeDesktopForPresenter: false,
// },
// Notification timeouts
@@ -757,6 +731,7 @@ var config = {
// 'toggle-camera',
// 'undock-iframe',
// 'videoquality',
// 'whiteboard',
// ],
// Holds values related to toolbar visibility control.
@@ -792,11 +767,13 @@ var config = {
// 'desktop',
// 'download',
// 'embedmeeting',
// 'end-meeting',
// 'etherpad',
// 'feedback',
// 'filmstrip',
// 'fullscreen',
// 'hangup',
// 'hangup-menu',
// 'help',
// {
// key: 'invite',
@@ -829,6 +806,7 @@ var config = {
// key: 'add-passcode',
// preventExecution: false
// },
// 'whiteboard',
// ],
// List of pre meeting screens buttons to hide. The values must be one or more of the 5 allowed buttons:

View File

@@ -182,3 +182,8 @@ form {
background: rgba(0, 0, 0, .5);
border-radius: 4px;
}
/* Necessary for the new icons to work properly. */
.jitsi-icon svg path {
fill: inherit !important;
}

View File

@@ -25,7 +25,7 @@
box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25), 0px 0px 0px 1px rgba(0, 0, 0, 0.1);
border-radius: 3px;
cursor: pointer;
padding: 4px;
padding: 1px;
position: absolute;
right: -4px;
top: -3px;

Binary file not shown.

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

Binary file not shown.

5
globals.d.ts vendored
View File

@@ -9,6 +9,11 @@ declare global {
UI: any;
API: any;
conference: any;
debugLogs: any;
keyboardshortcut: {
registerShortcut: Function;
unregisterShortcut: Function;
}
};
const interfaceConfig: any;

1
globals.native.d.ts vendored
View File

@@ -27,6 +27,7 @@ interface IWindow {
clearTimeout: typeof clearTimeout;
setImmediate: typeof setImmediate;
clearImmediate: typeof clearImmediate;
addEventListener: Function;
}
interface INavigator {

View File

@@ -0,0 +1,11 @@
{
"colors" : [
{
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,13 @@
{
"images" : [
{
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,11 @@
{
"colors" : [
{
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "end_call_button.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "microphone_off_button.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "microphone_on_button.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,101 @@
//
// DarwinNotificationsObserver.swift
// WidgetsExtension
//
// Created by Alex Bumbu on 17.10.2022.
//
import Foundation
enum DarwinNotification: String {
case meetingMutedChanged = "iOS_MeetingMutedChanged"
}
extension DarwinNotification {
var name: String { rawValue }
}
class DarwinNotificationsObserver {
private static var observers = Array<ProxyObserver>()
private let queue = DispatchQueue(label: "org.jitsi.meet.darwinNotificationObserver", qos: .default, autoreleaseFrequency: .workItem)
private var notificationCenter: CFNotificationCenter
init() {
notificationCenter = CFNotificationCenterGetDarwinNotifyCenter()
}
func observe(notification: DarwinNotification, handler: @escaping () -> Void) {
let proxyObserver = ProxyObserver(observer: self, notificationName: notification.name, handler: handler)
queue.async {
DarwinNotificationsObserver.observers.append(proxyObserver)
}
let callback: CFNotificationCallback = { _, observer, name, _, _ in
guard let observer = observer else {
return
}
// Extract pointer to `observer` from void pointer:
let proxyObserver = Unmanaged<ProxyObserver>.fromOpaque(observer).takeUnretainedValue()
var observers = DarwinNotificationsObserver.observers
if !proxyObserver.forwardNotification(), let index = observers.firstIndex(of: proxyObserver) {
// cleanup if `forwardNotification` fails
observers.remove(at: index)
}
}
CFNotificationCenterAddObserver(notificationCenter,
Unmanaged.passUnretained(proxyObserver).toOpaque(),
callback,
notification.name as CFString,
nil,
.deliverImmediately)
}
func stopObserving(notification: DarwinNotification) {
queue.sync {
DarwinNotificationsObserver.observers.removeAll { $0.observer == nil }
}
if let index = DarwinNotificationsObserver.observers.firstIndex(where: { $0.observer === self && $0.notificationName == notification.name }) {
let proxyObserver = DarwinNotificationsObserver.observers[index]
CFNotificationCenterRemoveObserver(notificationCenter,
Unmanaged.passUnretained(proxyObserver).toOpaque(),
CFNotificationName(notification.name as CFString),
nil)
queue.async {
DarwinNotificationsObserver.observers.remove(at: index)
}
}
}
}
private class ProxyObserver: Equatable {
let notificationName: String
weak var observer: AnyObject?
private let handler: () -> (Void)
static func == (lhs: ProxyObserver, rhs: ProxyObserver) -> Bool {
lhs.observer === rhs.observer && lhs.notificationName == rhs.notificationName
}
init(observer: AnyObject? = nil, notificationName: String, handler: @escaping () -> Void) {
self.notificationName = notificationName
self.handler = handler
self.observer = observer
}
func forwardNotification() -> Bool {
guard observer != nil else {
return false
}
handler()
return true
}
}

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSExtension</key>
<dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.widgetkit-extension</string>
</dict>
</dict>
</plist>

View File

@@ -0,0 +1,54 @@
//
// LockScreenLeaveMeetingWidget.swift
// WidgetsExtension
//
// Created by Alex Bumbu on 31.10.2022.
//
import SwiftUI
import WidgetKit
struct LockScreenLeaveMeetingWidget: Widget {
let kind: String = "LockScreenLeaveMeetingWidget"
var body: some WidgetConfiguration {
StaticConfiguration(kind: kind, provider: Provider()) { entry in
WidgetsEntryView(entry: entry)
}
.configurationDisplayName("Leave Jitsi Meeting Widget")
.description("This is a lockscreen widget for leaving the ongoing Jitsi meeting.")
.supportedFamilies([.accessoryCircular])
}
}
//struct LockScreenLeaveMeetingWidget_Preview: PreviewProvider {
// static var previews: some View {
// let meetingState = MeetingState(audioMuted: true)
//
// WidgetsEntryView(entry: CurrentMeetingEntry(date: Date(), meetingState: meetingState))
// .previewContext(WidgetPreviewContext(family: .accessoryCircular))
// .previewDisplayName("Circular")
// }
//}
private struct WidgetsEntryView: View {
@Environment(\.widgetFamily) var widgetFamily
var entry: Provider.Entry
var body: some View {
if entry.meetingState != nil, widgetFamily == .accessoryCircular {
AccessoryCircularWidgetView()
} else {
EmptyView()
}
}
}
private struct AccessoryCircularWidgetView: View {
var body: some View {
Image("leave_meeting")
.resizable()
.aspectRatio(contentMode: .fit)
.widgetURL(URL(string: "meet/leaveMeeting")!)
}
}

View File

@@ -0,0 +1,89 @@
//
// LockScreenMuteAudioWidget.swift
// WidgetsExtension
//
// Created by Alex Bumbu on 31.10.2022.
//
import SwiftUI
import WidgetKit
struct LockScreenMuteAudioWidget: Widget {
let kind: String = "LockScreenMuteAudioWidget"
var body: some WidgetConfiguration {
StaticConfiguration(kind: kind, provider: Provider()) { entry in
WidgetsEntryView(entry: entry)
}
.configurationDisplayName("Mute Jitsi Audio Widget")
.description("This is a lockscreen widget for muting or unmuting the audio for the ongoing Jitsi meeting.")
.supportedFamilies([.accessoryCircular])
}
}
//struct LockScreenMuteAudioWidget_Preview: PreviewProvider {
// static var previews: some View {
// let meetingState = MeetingState(audioMuted: true)
//
// WidgetsEntryView(entry: CurrentMeetingEntry(date: Date(), meetingState: meetingState))
// .previewContext(WidgetPreviewContext(family: .accessoryInline))
// .previewDisplayName("Inline")
//
// WidgetsEntryView(entry: CurrentMeetingEntry(date: Date(), meetingState: meetingState))
// .previewContext(WidgetPreviewContext(family: .accessoryCircular))
// .previewDisplayName("Circular")
//
// WidgetsEntryView(entry: CurrentMeetingEntry(date: Date(), meetingState: meetingState))
// .previewContext(WidgetPreviewContext(family: .accessoryRectangular))
// .previewDisplayName("Rectangular")
// }
//}
private struct WidgetsEntryView: View {
@Environment(\.widgetFamily) var widgetFamily
var entry: Provider.Entry
var body: some View {
if let meetingState = entry.meetingState {
switch widgetFamily {
case .accessoryInline:
Text("Some meeting name")
case .accessoryRectangular:
AccessoryCircularWidgetView(audioMuted: meetingState.audioMuted)
case .accessoryCircular:
AccessoryCircularWidgetView(audioMuted: meetingState.audioMuted)
default:
EmptyView()
}
} else {
EmptyView()
}
}
}
private struct AccessoryRectangularWidgetView: View {
var audioMuted: Bool
var body: some View {
let imageName: String = audioMuted ? "microphone_on" : "microphone_off"
let caption: String = audioMuted ? "Unmute \naudio" : "Mute \naudio"
HStack {
Image(imageName)
.resizable()
.aspectRatio(contentMode: .fit)
Text(caption)
}.widgetURL(URL(string: "meet/toggleAudioMute")!)
}
}
private struct AccessoryCircularWidgetView: View {
var audioMuted: Bool
var body: some View {
let imageName: String = audioMuted ? "microphone_on" : "microphone_off"
Image(imageName)
.resizable()
.aspectRatio(contentMode: .fit)
.widgetURL(URL(string: "meet/toggleAudioMute")!)
}
}

View File

@@ -0,0 +1,30 @@
//
// MeetingState.swift
// WidgetsExtension
//
// Created by Alex Bumbu on 28.10.2022.
//
import Foundation
struct MeetingState: Decodable {
var audioMuted: Bool
}
extension MeetingState {
private static var stateFileURL: URL? {
return FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.org.jitsi.meet.appgroup")?.appending(component: "widgetState")
}
static func load() -> MeetingState? {
guard
let stateFileURL = stateFileURL,
let data = try? Data(contentsOf: stateFileURL)
else {
return nil
}
let decoder = PropertyListDecoder()
return try? decoder.decode(MeetingState.self, from: data)
}
}

View File

@@ -0,0 +1,44 @@
//
// Provider.swift
// WidgetsExtension
//
// Created by Alex Bumbu on 31.10.2022.
//
import WidgetKit
import SwiftUI
struct CurrentMeetingEntry: TimelineEntry {
let date: Date
var meetingState: MeetingState?
}
class Provider: TimelineProvider {
private var currentMeetingState: MeetingState? {
return MeetingState.load()
}
func placeholder(in context: Context) -> CurrentMeetingEntry {
CurrentMeetingEntry(date: Date(),
meetingState: MeetingState(audioMuted: false))
}
func getSnapshot(in context: Context, completion: @escaping (CurrentMeetingEntry) -> ()) {
var meetingState = currentMeetingState
if context.isPreview {
meetingState = MeetingState(audioMuted: false)
}
let entry = CurrentMeetingEntry(date: Date(), meetingState: meetingState)
completion(entry)
}
func getTimeline(in context: Context, completion: @escaping (Timeline<CurrentMeetingEntry>) -> ()) {
var entries: [CurrentMeetingEntry] = []
let entry = CurrentMeetingEntry(date: Date(), meetingState: currentMeetingState)
entries.append(entry)
let timeline = Timeline(entries: entries, policy: .atEnd)
completion(timeline)
}
}

View File

@@ -0,0 +1,19 @@
//
// Widgets.swift
// Widgets
//
// Created by Alex Bumbu on 17.10.2022.
// Copyright © 2022 Facebook. All rights reserved.
//
import WidgetKit
import SwiftUI
@main
struct Widgets: WidgetBundle {
@WidgetBundleBuilder
var body: some Widget {
LockScreenMuteAudioWidget()
LockScreenLeaveMeetingWidget()
}
}

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.application-groups</key>
<array>
<string>group.org.jitsi.meet.appgroup</string>
</array>
</dict>
</plist>

View File

@@ -23,14 +23,26 @@
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; };
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
2681BB562C7A0B42CFBA6719 /* libPods-JitsiMeet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D6152FF9E9F7B0E86F70A21D /* libPods-JitsiMeet.a */; };
4E46D952290FF39E00761DEF /* LockScreenMuteAudioWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E46D951290FF39E00761DEF /* LockScreenMuteAudioWidget.swift */; };
4E46D954290FF55600761DEF /* LockScreenLeaveMeetingWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E46D953290FF55600761DEF /* LockScreenLeaveMeetingWidget.swift */; };
4E6920B828FD84D700645D9E /* DarwinNotificationsObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E6920B728FD84D700645D9E /* DarwinNotificationsObserver.swift */; };
4E6A3E17291024B900E6B0B5 /* Provider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E6A3E16291024B900E6B0B5 /* Provider.swift */; };
4E90F9402632D1AB001102D4 /* Atomic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E90F93F2632D1AB001102D4 /* Atomic.swift */; };
4EA73DA3290C1D6C00A16FF8 /* MeetingState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EA73DA2290C1D6C00A16FF8 /* MeetingState.swift */; };
4EB06024260E026600F524C5 /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EC49B8625BED71300E76218 /* ReplayKit.framework */; };
4EB06027260E026600F524C5 /* SampleHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EB06026260E026600F524C5 /* SampleHandler.swift */; };
4EB0602B260E026600F524C5 /* JitsiMeetBroadcastExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 4EB06023260E026600F524C5 /* JitsiMeetBroadcastExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
4EB0603C260E09D000F524C5 /* SocketConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EB06039260E09D000F524C5 /* SocketConnection.swift */; };
4EB0603D260E09D000F524C5 /* DarwinNotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EB0603A260E09D000F524C5 /* DarwinNotificationCenter.swift */; };
4EB0603E260E09D000F524C5 /* SampleUploader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EB0603B260E09D000F524C5 /* SampleUploader.swift */; };
4EBB458A28FFFD4100855769 /* RoutesHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EBB458928FFFD4100855769 /* RoutesHandler.m */; };
4EBB458E2902E85B00855769 /* WidgetKitHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EBB458D2902E85B00855769 /* WidgetKitHelper.swift */; };
4ECA496628FD590000085365 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4ECA496528FD590000085365 /* WidgetKit.framework */; };
4ECA496828FD590000085365 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4ECA496728FD590000085365 /* SwiftUI.framework */; };
4ECA496B28FD590000085365 /* Widgets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ECA496A28FD590000085365 /* Widgets.swift */; };
4ECA496D28FD590000085365 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4ECA496C28FD590000085365 /* Assets.xcassets */; };
4ECA497128FD590000085365 /* WidgetsExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 4ECA496428FD590000085365 /* WidgetsExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
C2116A7673E01A1CCD5DC1F4 /* libPods-JitsiMeet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BF9FEBA4DEAB800AD735681 /* libPods-JitsiMeet.a */; };
DE4C456121DE1E4E00EA0709 /* FIRUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = DE4C455F21DE1E4E00EA0709 /* FIRUtilities.m */; };
DEA9F289258A6EA800D4CD74 /* JitsiMeetSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DEA9F288258A6EA800D4CD74 /* JitsiMeetSDK.framework */; };
DEA9F28A258A6EA800D4CD74 /* JitsiMeetSDK.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DEA9F288258A6EA800D4CD74 /* JitsiMeetSDK.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
@@ -64,6 +76,13 @@
remoteGlobalIDString = 4EB06022260E026600F524C5;
remoteInfo = "JitsiMeetBroadcast Extension";
};
4ECA496F28FD590000085365 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 4ECA496328FD590000085365;
remoteInfo = WidgetsExtension;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
@@ -108,6 +127,7 @@
dstPath = "";
dstSubfolderSpec = 13;
files = (
4ECA497128FD590000085365 /* WidgetsExtension.appex in Embed App Extensions */,
4EB0602B260E026600F524C5 /* JitsiMeetBroadcastExtension.appex in Embed App Extensions */,
);
name = "Embed App Extensions";
@@ -134,6 +154,7 @@
0BEA5C3A1F7B8F73000D0AB4 /* ComplicationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComplicationController.swift; sourceTree = "<group>"; };
0BEA5C3C1F7B8F73000D0AB4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
0BEA5C3E1F7B8F73000D0AB4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
0BF9FEBA4DEAB800AD735681 /* libPods-JitsiMeet.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-JitsiMeet.a"; sourceTree = BUILT_PRODUCTS_DIR; };
13B07F961A680F5B00A75B9A /* jitsi-meet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "jitsi-meet.app"; sourceTree = BUILT_PRODUCTS_DIR; };
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
@@ -141,8 +162,12 @@
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
3E0F4ED943C0B12BE77F6B45 /* Pods-JitsiMeet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeet.release.xcconfig"; path = "Target Support Files/Pods-JitsiMeet/Pods-JitsiMeet.release.xcconfig"; sourceTree = "<group>"; };
4E46D951290FF39E00761DEF /* LockScreenMuteAudioWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LockScreenMuteAudioWidget.swift; sourceTree = "<group>"; };
4E46D953290FF55600761DEF /* LockScreenLeaveMeetingWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LockScreenLeaveMeetingWidget.swift; sourceTree = "<group>"; };
4E6920B728FD84D700645D9E /* DarwinNotificationsObserver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DarwinNotificationsObserver.swift; sourceTree = "<group>"; };
4E6A3E16291024B900E6B0B5 /* Provider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Provider.swift; sourceTree = "<group>"; };
4E90F93F2632D1AB001102D4 /* Atomic.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Atomic.swift; sourceTree = "<group>"; };
4EA73DA2290C1D6C00A16FF8 /* MeetingState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeetingState.swift; sourceTree = "<group>"; };
4EB06023260E026600F524C5 /* JitsiMeetBroadcastExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = JitsiMeetBroadcastExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
4EB06026260E026600F524C5 /* SampleHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleHandler.swift; sourceTree = "<group>"; };
4EB06028260E026600F524C5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@@ -150,10 +175,21 @@
4EB06039260E09D000F524C5 /* SocketConnection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketConnection.swift; sourceTree = "<group>"; };
4EB0603A260E09D000F524C5 /* DarwinNotificationCenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DarwinNotificationCenter.swift; sourceTree = "<group>"; };
4EB0603B260E09D000F524C5 /* SampleUploader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SampleUploader.swift; sourceTree = "<group>"; };
4EBB458828FFFD4100855769 /* RoutesHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoutesHandler.h; sourceTree = "<group>"; };
4EBB458928FFFD4100855769 /* RoutesHandler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoutesHandler.m; sourceTree = "<group>"; };
4EBB458B2902A94700855769 /* WidgetsExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = WidgetsExtension.entitlements; sourceTree = "<group>"; };
4EBB458C2902E85B00855769 /* JitsiMeet-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "JitsiMeet-Bridging-Header.h"; sourceTree = "<group>"; };
4EBB458D2902E85B00855769 /* WidgetKitHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetKitHelper.swift; sourceTree = "<group>"; };
4EC49B8625BED71300E76218 /* ReplayKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReplayKit.framework; path = System/Library/Frameworks/ReplayKit.framework; sourceTree = SDKROOT; };
756FCE06C08D9B947653C98A /* Pods-JitsiMeet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeet.debug.xcconfig"; path = "Target Support Files/Pods-JitsiMeet/Pods-JitsiMeet.debug.xcconfig"; sourceTree = "<group>"; };
4ECA496428FD590000085365 /* WidgetsExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = WidgetsExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
4ECA496528FD590000085365 /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; };
4ECA496728FD590000085365 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; };
4ECA496A28FD590000085365 /* Widgets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Widgets.swift; sourceTree = "<group>"; };
4ECA496C28FD590000085365 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
4ECA496E28FD590000085365 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
7052390E12D7319D36D8E4CA /* Pods-JitsiMeet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeet.debug.xcconfig"; path = "Target Support Files/Pods-JitsiMeet/Pods-JitsiMeet.debug.xcconfig"; sourceTree = "<group>"; };
8CAA3C5A38E868335D1C1EC1 /* Pods-JitsiMeet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeet.release.xcconfig"; path = "Target Support Files/Pods-JitsiMeet/Pods-JitsiMeet.release.xcconfig"; sourceTree = "<group>"; };
B3B083EB1D4955FF0069CEE7 /* app.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = app.entitlements; sourceTree = "<group>"; };
D6152FF9E9F7B0E86F70A21D /* libPods-JitsiMeet.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-JitsiMeet.a"; sourceTree = BUILT_PRODUCTS_DIR; };
DE050388256E904600DEE3A5 /* WebRTC.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = WebRTC.xcframework; path = "../../node_modules/react-native-webrtc/apple/WebRTC.xcframework"; sourceTree = "<group>"; };
DE4C455F21DE1E4E00EA0709 /* FIRUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FIRUtilities.m; sourceTree = "<group>"; };
DE4C456021DE1E4E00EA0709 /* FIRUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FIRUtilities.h; sourceTree = "<group>"; };
@@ -180,7 +216,7 @@
DED016F128ECBC9D009D5E8D /* WebRTC.xcframework in Frameworks */,
DEA9F289258A6EA800D4CD74 /* JitsiMeetSDK.framework in Frameworks */,
FD572B9827EDF32300A800FB /* GiphyUISDK.xcframework in Frameworks */,
2681BB562C7A0B42CFBA6719 /* libPods-JitsiMeet.a in Frameworks */,
C2116A7673E01A1CCD5DC1F4 /* libPods-JitsiMeet.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -199,6 +235,15 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
4ECA496128FD590000085365 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
4ECA496828FD590000085365 /* SwiftUI.framework in Frameworks */,
4ECA496628FD590000085365 /* WidgetKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
@@ -213,7 +258,9 @@
DEFDBBDB25656E3B00344B23 /* WebRTC.xcframework */,
0BD6B4361EF82A6B00D1F4CD /* WebRTC.framework */,
4EC49B8625BED71300E76218 /* ReplayKit.framework */,
D6152FF9E9F7B0E86F70A21D /* libPods-JitsiMeet.a */,
4ECA496528FD590000085365 /* WidgetKit.framework */,
4ECA496728FD590000085365 /* SwiftUI.framework */,
0BF9FEBA4DEAB800AD735681 /* libPods-JitsiMeet.a */,
);
name = Frameworks;
sourceTree = "<group>";
@@ -261,6 +308,10 @@
0BBD021F212EB69D00CCB19F /* Types.h */,
0B412F1D1EDEE6E800B1A0A6 /* ViewController.h */,
0B412F1E1EDEE6E800B1A0A6 /* ViewController.m */,
4EBB458828FFFD4100855769 /* RoutesHandler.h */,
4EBB458928FFFD4100855769 /* RoutesHandler.m */,
4EBB458D2902E85B00855769 /* WidgetKitHelper.swift */,
4EBB458C2902E85B00855769 /* JitsiMeet-Bridging-Header.h */,
);
path = src;
sourceTree = "<group>";
@@ -282,9 +333,25 @@
sourceTree = "<group>";
tabWidth = 4;
};
4ECA496928FD590000085365 /* Widgets Extension */ = {
isa = PBXGroup;
children = (
4ECA496A28FD590000085365 /* Widgets.swift */,
4E46D951290FF39E00761DEF /* LockScreenMuteAudioWidget.swift */,
4E46D953290FF55600761DEF /* LockScreenLeaveMeetingWidget.swift */,
4E6A3E16291024B900E6B0B5 /* Provider.swift */,
4EA73DA2290C1D6C00A16FF8 /* MeetingState.swift */,
4E6920B728FD84D700645D9E /* DarwinNotificationsObserver.swift */,
4ECA496C28FD590000085365 /* Assets.xcassets */,
4ECA496E28FD590000085365 /* Info.plist */,
);
path = "Widgets Extension";
sourceTree = "<group>";
};
83CBB9F61A601CBA00E9B192 = {
isa = PBXGroup;
children = (
4EBB458B2902A94700855769 /* WidgetsExtension.entitlements */,
B3B083EB1D4955FF0069CEE7 /* app.entitlements */,
0B26BE711EC5BC4D00EEFB41 /* Frameworks */,
83CBBA001A601CBA00E9B192 /* Products */,
@@ -292,11 +359,12 @@
0BEA5C261F7B8F73000D0AB4 /* Watch app */,
0BEA5C351F7B8F73000D0AB4 /* WatchKit extension */,
4EB06025260E026600F524C5 /* JitsiMeetBroadcast Extension */,
CDD71F5E1157E9F283DF92A8 /* Pods */,
4ECA496928FD590000085365 /* Widgets Extension */,
BD4E28FA984EA7018FD927DF /* Pods */,
);
indentWidth = 2;
indentWidth = 4;
sourceTree = "<group>";
tabWidth = 2;
tabWidth = 4;
};
83CBBA001A601CBA00E9B192 /* Products */ = {
isa = PBXGroup;
@@ -305,15 +373,16 @@
0BEA5C251F7B8F73000D0AB4 /* JitsiMeetCompanion.app */,
0BEA5C311F7B8F73000D0AB4 /* JitsiMeetCompanion Extension.appex */,
4EB06023260E026600F524C5 /* JitsiMeetBroadcastExtension.appex */,
4ECA496428FD590000085365 /* WidgetsExtension.appex */,
);
name = Products;
sourceTree = "<group>";
};
CDD71F5E1157E9F283DF92A8 /* Pods */ = {
BD4E28FA984EA7018FD927DF /* Pods */ = {
isa = PBXGroup;
children = (
756FCE06C08D9B947653C98A /* Pods-JitsiMeet.debug.xcconfig */,
3E0F4ED943C0B12BE77F6B45 /* Pods-JitsiMeet.release.xcconfig */,
7052390E12D7319D36D8E4CA /* Pods-JitsiMeet.debug.xcconfig */,
8CAA3C5A38E868335D1C1EC1 /* Pods-JitsiMeet.release.xcconfig */,
);
name = Pods;
path = ../Pods;
@@ -361,7 +430,7 @@
isa = PBXNativeTarget;
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "JitsiMeet" */;
buildPhases = (
69BC5020DBE393B56BD76636 /* [CP] Check Pods Manifest.lock */,
58E2CB346F2C2A873294F481 /* [CP] Check Pods Manifest.lock */,
0BBA83C41EC9F7600075A103 /* Run React packager */,
13B07F871A680F5B00A75B9A /* Sources */,
13B07F8C1A680F5B00A75B9A /* Frameworks */,
@@ -380,6 +449,7 @@
dependencies = (
0BEA5C401F7B8F73000D0AB4 /* PBXTargetDependency */,
4EB0602A260E026600F524C5 /* PBXTargetDependency */,
4ECA497028FD590000085365 /* PBXTargetDependency */,
);
name = JitsiMeet;
productName = "Jitsi Meet";
@@ -403,15 +473,32 @@
productReference = 4EB06023260E026600F524C5 /* JitsiMeetBroadcastExtension.appex */;
productType = "com.apple.product-type.app-extension";
};
4ECA496328FD590000085365 /* WidgetsExtension */ = {
isa = PBXNativeTarget;
buildConfigurationList = 4ECA497428FD590100085365 /* Build configuration list for PBXNativeTarget "WidgetsExtension" */;
buildPhases = (
4ECA496028FD590000085365 /* Sources */,
4ECA496128FD590000085365 /* Frameworks */,
4ECA496228FD590000085365 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = WidgetsExtension;
productName = WidgetsExtension;
productReference = 4ECA496428FD590000085365 /* WidgetsExtension.appex */;
productType = "com.apple.product-type.app-extension";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
83CBB9F71A601CBA00E9B192 /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 1240;
LastSwiftUpdateCheck = 1400;
LastUpgradeCheck = 1020;
ORGANIZATIONNAME = Facebook;
ORGANIZATIONNAME = "";
TargetAttributes = {
0BEA5C241F7B8F73000D0AB4 = {
CreatedOnToolsVersion = 9.0;
@@ -424,6 +511,7 @@
ProvisioningStyle = Automatic;
};
13B07F861A680F5B00A75B9A = {
LastSwiftMigration = 1400;
SystemCapabilities = {
com.apple.SafariKeychain = {
enabled = 1;
@@ -436,6 +524,9 @@
4EB06022260E026600F524C5 = {
CreatedOnToolsVersion = 12.4;
};
4ECA496328FD590000085365 = {
CreatedOnToolsVersion = 14.0.1;
};
};
};
buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "app" */;
@@ -455,6 +546,7 @@
0BEA5C241F7B8F73000D0AB4 /* JitsiMeetCompanion */,
0BEA5C301F7B8F73000D0AB4 /* JitsiMeetCompanion Extension */,
4EB06022260E026600F524C5 /* JitsiMeetBroadcastExtension */,
4ECA496328FD590000085365 /* WidgetsExtension */,
);
};
/* End PBXProject section */
@@ -494,6 +586,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
4ECA496228FD590000085365 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
4ECA496D28FD590000085365 /* Assets.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
@@ -543,7 +643,7 @@
shellPath = /bin/sh;
shellScript = "if test \"$PRODUCT_BUNDLE_IDENTIFIER\" = \"com.atlassian.JitsiMeet.ios\"; then\n ENTITLEMENTS_PLIST=\"$PROJECT_DIR/app.entitlements\"\n \n /usr/libexec/PlistBuddy -c \"Add :com.apple.developer.avfoundation.multitasking-camera-access bool 1\" $ENTITLEMENTS_PLIST\nfi\n";
};
69BC5020DBE393B56BD76636 /* [CP] Check Pods Manifest.lock */ = {
58E2CB346F2C2A873294F481 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -642,8 +742,10 @@
files = (
0B412F1F1EDEE6E800B1A0A6 /* ViewController.m in Sources */,
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */,
4EBB458E2902E85B00855769 /* WidgetKitHelper.swift in Sources */,
DE4C456121DE1E4E00EA0709 /* FIRUtilities.m in Sources */,
13B07FC11A68108700A75B9A /* main.m in Sources */,
4EBB458A28FFFD4100855769 /* RoutesHandler.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -659,6 +761,19 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
4ECA496028FD590000085365 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
4ECA496B28FD590000085365 /* Widgets.swift in Sources */,
4E6920B828FD84D700645D9E /* DarwinNotificationsObserver.swift in Sources */,
4E46D954290FF55600761DEF /* LockScreenLeaveMeetingWidget.swift in Sources */,
4EA73DA3290C1D6C00A16FF8 /* MeetingState.swift in Sources */,
4E6A3E17291024B900E6B0B5 /* Provider.swift in Sources */,
4E46D952290FF39E00761DEF /* LockScreenMuteAudioWidget.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
@@ -677,6 +792,11 @@
target = 4EB06022260E026600F524C5 /* JitsiMeetBroadcastExtension */;
targetProxy = 4EB06029260E026600F524C5 /* PBXContainerItemProxy */;
};
4ECA497028FD590000085365 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 4ECA496328FD590000085365 /* WidgetsExtension */;
targetProxy = 4ECA496F28FD590000085365 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
@@ -845,11 +965,12 @@
};
13B07F941A680F5B00A75B9A /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 756FCE06C08D9B947653C98A /* Pods-JitsiMeet.debug.xcconfig */;
baseConfigurationReference = 7052390E12D7319D36D8E4CA /* Pods-JitsiMeet.debug.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIconDebug;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = app.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
@@ -871,16 +992,20 @@
PRODUCT_BUNDLE_IDENTIFIER = org.jitsi.meet;
PRODUCT_NAME = "jitsi-meet";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "src/JitsiMeet-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
};
name = Debug;
};
13B07F951A680F5B00A75B9A /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 3E0F4ED943C0B12BE77F6B45 /* Pods-JitsiMeet.release.xcconfig */;
baseConfigurationReference = 8CAA3C5A38E868335D1C1EC1 /* Pods-JitsiMeet.release.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIconRelease;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = app.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
@@ -901,6 +1026,8 @@
PRODUCT_BUNDLE_IDENTIFIER = org.jitsi.meet;
PRODUCT_NAME = "jitsi-meet";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "src/JitsiMeet-Bridging-Header.h";
SWIFT_VERSION = 5.0;
};
name = Release;
};
@@ -973,6 +1100,91 @@
};
name = Release;
};
4ECA497228FD590100085365 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_ENTITLEMENTS = WidgetsExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = FC967L3QRG;
GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "Widgets Extension/Info.plist";
INFOPLIST_KEY_CFBundleDisplayName = Widgets;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Facebook. All rights reserved.";
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = org.jitsi.meet.widgets.extension;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
4ECA497328FD590100085365 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_ENTITLEMENTS = WidgetsExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = FC967L3QRG;
GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "Widgets Extension/Info.plist";
INFOPLIST_KEY_CFBundleDisplayName = Widgets;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Facebook. All rights reserved.";
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = org.jitsi.meet.widgets.extension;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OPTIMIZATION_LEVEL = "-O";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
83CBBA201A601CBA00E9B192 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -1126,6 +1338,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
4ECA497428FD590100085365 /* Build configuration list for PBXNativeTarget "WidgetsExtension" */ = {
isa = XCConfigurationList;
buildConfigurations = (
4ECA497228FD590100085365 /* Debug */,
4ECA497328FD590100085365 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "app" */ = {
isa = XCConfigurationList;
buildConfigurations = (

View File

@@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1400"
wasCreatedForAppExtension = "YES"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "4ECA496328FD590000085365"
BuildableName = "WidgetsExtension.appex"
BlueprintName = "WidgetsExtension"
ReferencedContainer = "container:app.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "jitsi-meet.app"
BlueprintName = "JitsiMeet"
ReferencedContainer = "container:app.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = ""
selectedLauncherIdentifier = "Xcode.IDEFoundation.Launcher.PosixSpawn"
launchStyle = "0"
askForAppToLaunch = "Yes"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES"
launchAutomaticallySubstyle = "2">
<RemoteRunnable
runnableDebuggingMode = "2"
BundleIdentifier = "com.apple.springboard">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "4ECA496328FD590000085365"
BuildableName = "WidgetsExtension.appex"
BlueprintName = "WidgetsExtension"
ReferencedContainer = "container:app.xcodeproj">
</BuildableReference>
</RemoteRunnable>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "jitsi-meet.app"
BlueprintName = "JitsiMeet"
ReferencedContainer = "container:app.xcodeproj">
</BuildableReference>
</MacroExpansion>
<EnvironmentVariables>
<EnvironmentVariable
key = "_XCWidgetKind"
value = "LockScreenLeaveMeetingWidget"
isEnabled = "YES">
</EnvironmentVariable>
<EnvironmentVariable
key = "_XCWidgetDefaultView"
value = "timeline"
isEnabled = "NO">
</EnvironmentVariable>
<EnvironmentVariable
key = "_XCWidgetFamily"
value = "medium"
isEnabled = "NO">
</EnvironmentVariable>
</EnvironmentVariables>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
askForAppToLaunch = "Yes"
launchAutomaticallySubstyle = "2">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "jitsi-meet.app"
BlueprintName = "JitsiMeet"
ReferencedContainer = "container:app.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@@ -17,6 +17,7 @@
#import "AppDelegate.h"
#import "FIRUtilities.h"
#import "RoutesHandler.h"
#import "Types.h"
#import "ViewController.h"
@@ -69,7 +70,7 @@
- (BOOL)application:(UIApplication *)application
continueUserActivity:(NSUserActivity *)userActivity
restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> *restorableObjects))restorationHandler {
if ([FIRUtilities appContainsRealServiceInfoPlist]) {
// 1. Attempt to handle Universal Links through Firebase in order to support
// its Dynamic Links (which we utilize for the purposes of deferred deep
@@ -107,6 +108,10 @@
if ([[url absoluteString] containsString:@"google/link/?dismiss=1&is_weak_match=1"]) {
return NO;
}
if ([[RoutesHandler sharedInstance] routeURL:url]) {
return YES;
}
NSURL *openUrl = url;

View File

@@ -1,6 +1,6 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
}
}
}

View File

@@ -0,0 +1,4 @@
//
// Use this file to import your target's public headers that you would like to expose to Swift.
//

View File

@@ -0,0 +1,27 @@
//
// RoutesHandler.h
// JitsiMeet
//
// Created by Alex Bumbu on 19.10.2022.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@protocol RouteObserving <NSObject>
@property (nonatomic, readonly) void (^didRouteCallback)(NSString *route);
@end
@interface RoutesHandler : NSObject
+ (instancetype)sharedInstance;
- (void)registerObserver:(id<RouteObserving>)observer forRoute:(NSString *)route;
- (void)unregisterObserver:(id<RouteObserving>)observer;
- (BOOL)routeURL:(NSURL *)url;
@end
NS_ASSUME_NONNULL_END

123
ios/app/src/RoutesHandler.m Normal file
View File

@@ -0,0 +1,123 @@
//
// RoutesHandler.m
// JitsiMeet
//
// Created by Alex Bumbu on 19.10.2022.
//
#import "RoutesHandler.h"
@protocol Routing <NSObject>
@property (nonatomic, readonly) NSString *route;
@property (nonatomic, readonly) id<RouteObserving> observer;
@end
@interface Route: NSObject <Routing>
@property (nonatomic, readonly) NSString *route;
@property (nonatomic, readonly, weak) id<RouteObserving> observer;
+ (instancetype)routeWithString:(nonnull NSString *)route observer:(id<RouteObserving>)observer;
@end
#pragma mark -
@implementation RoutesHandler {
NSMutableArray *routes;
}
+ (instancetype)sharedInstance {
static RoutesHandler *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}
- (instancetype)init {
self = [super init];
if (self) {
routes = [[NSMutableArray alloc] init];
}
return self;
}
- (void)registerObserver:(id<RouteObserving>)observer forRoute:(NSString *)route {
[routes addObject:[Route routeWithString:route observer:observer]];
}
- (void)unregisterObserver:(id<RouteObserving>)observer {
NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id<Routing> _Nullable evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
return evaluatedObject.observer == nil || evaluatedObject.observer == observer;
}];
NSArray *routesToClear = [routes filteredArrayUsingPredicate:predicate];
[routes removeObjectsInArray:routesToClear];
}
- (BOOL)routeURL:(NSURL *)url {
[self clearRoutes];
NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:false];
if (!components) {
return false;
}
NSString *route = components.path;
NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id<Routing> _Nullable evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
return [evaluatedObject.route isEqualToString:route];
}];
NSArray *routesToHandle = [routes filteredArrayUsingPredicate:predicate];
if ([routesToHandle count] == 0) {
return false;
}
for (id<Routing> route in routesToHandle) {
route.observer.didRouteCallback(route.route);
}
return true;
}
- (void)clearRoutes {
NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id<Routing> _Nullable evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
return evaluatedObject.observer == nil;
}];
NSArray *routesToClear = [routes filteredArrayUsingPredicate:predicate];
[routes removeObjectsInArray:routesToClear];
}
@end
#pragma mark -
@interface Route()
@property (nonatomic, nonnull, copy) NSString *route;
@property (nonatomic, weak) id<RouteObserving> observer;
@end
@implementation Route
+ (instancetype)routeWithString:(nonnull NSString *)route observer:(nonnull id<RouteObserving>)observer {
return [[Route alloc] initWithString:route observer:observer];
}
- (instancetype)initWithString:(nonnull NSString *)route observer:(nonnull id<RouteObserving>)observer {
self = [super init];
if (self) {
self.route = route;
self.observer = observer;
}
return self;
}
@end

View File

@@ -21,8 +21,16 @@
@import JitsiMeetSDK;
#import "Types.h"
#import "RoutesHandler.h"
#import "ViewController.h"
#import "jitsi_meet-Swift.h"
@interface ViewController() <RouteObserving>
@property (nonatomic, nonnull, copy) void (^didRouteCallback)(NSString *);
@property (nonatomic, assign) BOOL audioMuted;
@end
@implementation ViewController
@@ -33,6 +41,8 @@
view.delegate = self;
[view join:[[JitsiMeet sharedInstance] getInitialConferenceOptions]];
[self registerRouteObserver];
}
// JitsiMeetViewDelegate
@@ -53,6 +63,10 @@
- (void)conferenceJoined:(NSDictionary *)data {
[self _onJitsiMeetViewDelegateEvent:@"CONFERENCE_JOINED" withData:data];
self.audioMuted = [[data objectForKey:@"isAudioMuted"] boolValue];
[self refreshWidgetState:self.audioMuted];
// Register a NSUserActivity for this conference so it can be invoked as a
// Siri shortcut.
@@ -82,6 +96,12 @@
- (void)conferenceTerminated:(NSDictionary *)data {
[self _onJitsiMeetViewDelegateEvent:@"CONFERENCE_TERMINATED" withData:data];
NSURL *sharedContainer = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.org.jitsi.meet.appgroup"];
NSURL *widgetStateFileURL = [sharedContainer URLByAppendingPathComponent:@"widgetState"];
[[NSFileManager defaultManager] removeItemAtURL:widgetStateFileURL error:nil];
[WidgetKitHelper reloadAllWidgets];
}
- (void)conferenceWillJoin:(NSDictionary *)data {
@@ -107,7 +127,16 @@
}
- (void)audioMutedChanged:(NSDictionary *)data {
NSLog(@"%@%@", @"Audio muted changed: ", data[@"muted"]);
NSLog(@"%@%@", @"Audio muted changed: ", data[@"muted"]);
// CFNotificationCenterRef notificationCenter = CFNotificationCenterGetDarwinNotifyCenter();
// CFNotificationCenterPostNotification(notificationCenter,
// (__bridge CFStringRef)@"iOS_MeetingMutedChanged",
// NULL,
// NULL,
// true);
self.audioMuted = [[data objectForKey:@"muted"] boolValue];
[self refreshWidgetState:self.audioMuted];
}
- (void)endpointTextMessageReceived:(NSDictionary *)data {
@@ -132,9 +161,40 @@
#pragma mark - Helpers
- (void)registerRouteObserver {
__weak typeof(self) weakSelf = self;
__weak JitsiMeetView *view = (JitsiMeetView *)self.view;
self.didRouteCallback = ^(NSString *route) {
if ([route isEqual:@"meet/toggleAudioMute"]) {
weakSelf.audioMuted = !weakSelf.audioMuted;
[view setAudioMuted:weakSelf.audioMuted];
} else if ([route isEqualToString:@"meet/leaveMeeting"]) {
[weakSelf terminate];
}
};
[[RoutesHandler sharedInstance] registerObserver:self forRoute:@"meet/toggleAudioMute"];
[[RoutesHandler sharedInstance] registerObserver:self forRoute:@"meet/leaveMeeting"];
}
- (void)terminate {
JitsiMeetView *view = (JitsiMeetView *) self.view;
[view leave];
}
- (void)refreshWidgetState:(BOOL)audioMuted {
// let sharedContainer = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: Constants.appGroupIdentifier)
// return sharedContainer?.appendingPathComponent("rtc_SSFD").path ?? ""
NSURL *sharedContainer = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.org.jitsi.meet.appgroup"];
NSURL *widgetStateFileURL = [sharedContainer URLByAppendingPathComponent:@"widgetState"];
NSDictionary *meetingState = @{@"audioMuted": @(audioMuted)};
if (![meetingState writeToURL:widgetStateFileURL atomically:true]) {
NSLog(@"error saving state file");
}
[WidgetKitHelper reloadAllWidgets];
}
@end

View File

@@ -0,0 +1,20 @@
//
// WidgetKitHelper.swift
// JitsiMeet
//
// Created by Alex Bumbu on 21.10.2022.
//
import WidgetKit
@available(iOS 14.0, *)
@objcMembers final class WidgetKitHelper: NSObject {
class func reloadAllWidgets(){
#if arch(arm64) || arch(i386) || arch(x86_64)
WidgetCenter.shared.reloadAllTimelines()
#endif
}
}

View File

@@ -82,7 +82,7 @@ platform :ios do
export_xcargs: "-allowProvisioningUpdates"
)
# Upload the build to TestFlight (but don't distribute it)
# Upload the build to TestFlight
upload_to_testflight(
beta_app_description: ENV["JITSI_CHANGELOG"],
beta_app_feedback_email: ENV["JITSI_REVIEW_EMAIL"],
@@ -102,24 +102,10 @@ platform :ios do
uses_non_exempt_encryption: false
)
upload_symbols_to_crashlytics
# Cleanup
clean_build_artifacts
reset_git_repo(skip_clean: true)
end
lane :refresh_dsyms do
# Connect to Apple Store Connect
app_store_connect_api_key(
key_id: ENV["ASC_KEY_ID"],
issuer_id: ENV["ASC_ISSUER_ID"],
key_content: ENV["ASC_KEY_CONTENT"],
duration: 1200,
in_house: false
)
# Upload dSYMs to Crashlytics
download_dsyms(min_version: ENV["DSYMS_MIN_VERSION"]) # Download dSYM files from iTC
upload_symbols_to_crashlytics # Upload them to Crashlytics
clean_build_artifacts # Delete the local dSYM files
end
end

View File

@@ -57,8 +57,8 @@
openURL:(NSURL *_Nonnull)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *_Nonnull)options;
- (UIInterfaceOrientationMask)application:(UIApplication *)application
supportedInterfaceOrientationsForWindow:(UIWindow *)window;
- (UIInterfaceOrientationMask)application:(UIApplication *_Nonnull)application
supportedInterfaceOrientationsForWindow:(UIWindow *_Nonnull)window;
#pragma mark - Utility methods

View File

@@ -26,7 +26,6 @@
"hsb": "Hornjoserbšćina",
"hu": "Magyar",
"hy": "Հայերեն",
"id": "Bahasa Indonesia",
"is": "Íslenska",
"it": "Italiano",
"ja": "日本語",
@@ -37,7 +36,6 @@
"ml": "മലയാളം",
"mn": "Монгол",
"mr": "मराठी",
"nb": "Norsk Bokmål",
"nl": "Nederlands",
"oc": "Occitan",
"pl": "Polski",

View File

@@ -364,6 +364,7 @@
"signedInAs": "U is tans aangemeld as:",
"start": "Begin n regstreekse stroom",
"streamIdHelp": "Wats dié?",
"title": "Regstreekse stroom",
"unavailableTitle": "Regstreekse strome nie beskikbaar nie"
},
"localRecording": {
@@ -474,6 +475,7 @@
"serviceName": "Opneemdiens",
"signIn": "meld aan",
"signOut": "Meld af",
"title": "Neem tans op",
"unavailable": "",
"unavailableTitle": ""
},

View File

@@ -82,7 +82,7 @@
},
"labels": {
"buttonLabel": "وضع السيارة",
"title": "وضع القيادة الآمنة",
"title": "وضع السيارة",
"videoStopped": "تم إيقاف الفيديو الخاص بك"
}
},
@@ -104,6 +104,7 @@
},
"noMessagesMessage": "لا يوجد أي رسالة في المُلتقى بعد. ابدأ محادثة هنا.",
"privateNotice": "أرسل رسالة خاصة إلى {{recipient}}",
"sendButton": "أرسل",
"smileysPanel": "واجهة الإيموجي",
"tabs": {
"chat": "دردشة",
@@ -435,7 +436,7 @@
"search": "ابحث في GIPHY"
},
"helpView": {
"header": "مركز المساعدة"
"title": "مركز المساعدة"
},
"incomingCall": {
"answer": "أجب",
@@ -551,6 +552,7 @@
"signedInAs": "أنت مسجل حاليًا بصفة:",
"start": "ابدأبثًّا حيًّا",
"streamIdHelp": "ما هذا؟",
"title": "البث المباشر الحي",
"unavailableTitle": "خدمة البث الحي غير متوفرة",
"youtubeTerms": "شروط خدمة يوتيوب"
},
@@ -593,6 +595,7 @@
"passwordJoinButton": "انضم",
"reject": "رفض",
"rejectAll": "رفض الكل",
"title": "غرفة الانتظار",
"toggleLabel": "فعِّل غرفة الانتظار"
},
"localRecording": {
@@ -735,13 +738,13 @@
"videoModeration": "ابدأ الفيديو الخاص بهم"
},
"close": "غلق",
"header": "مشاركون",
"headings": {
"lobby": "الردهة ({{count}})",
"participantsList": "المشاركون في المُلتقى({{count}})",
"waitingLobby": "منتظرون في الردهة ({{count}})"
},
"search": "بحث"
"search": "بحث",
"title": "مشاركون"
},
"passwordDigitsOnly": "حتى {{number}} عدد",
"passwordSetRemotely": "ضبطها مشارك آخر",
@@ -851,7 +854,7 @@
"ringing": "يرن..."
},
"privacyView": {
"header": "خصوصية"
"title": "خصوصية"
},
"profile": {
"avatar": "avatar",
@@ -923,6 +926,7 @@
"signIn": "دخول",
"signOut": "خروج",
"surfaceError": "الرجاء تحديد علامة التبويب الحالية.",
"title": "قيد التسجيل",
"unavailable": "عجبًا! {{serviceName}} غير متاحة حاليًا. نعمل على حل المشكلة. حاول مرة أخرى لاحقًا.",
"unavailableTitle": "التسجيل غير متاح",
"uploadToCloud": "تحميل إلى السحابة"
@@ -934,8 +938,8 @@
"security": {
"about": "يمكنك إضافة $t(lockRoomPassword) إلى المُلتقى. سيتوجب على المشاركين إدخال $t(lockRoomPassword) قبل السماح لهم بالانضمام إلى المُلتقى.",
"aboutReadOnly": "المشاركون بصفة رئيس الجلسة يمكنهم إضافة $t(lockRoomPassword) إلى المُلتقى. سيتوجب على المشاركين إدخال $t(lockRoomPassword) قبل السماح لهم بالانضمام إلى المُلتقى.",
"header": "خيارات الأمان",
"insecureRoomNameWarning": "اسم الغرفة غير آمن، فقد ينضم عبره مشاركون غرباء إلى المُلتقى. ننصحك بتأمين المُلتقى عبر وسائل الحماية التي يوفرها زر الحماية."
"insecureRoomNameWarning": "اسم الغرفة غير آمن، فقد ينضم عبره مشاركون غرباء إلى المُلتقى. ننصحك بتأمين المُلتقى عبر وسائل الحماية التي يوفرها زر الحماية.",
"title": "خيارات الأمان"
},
"settings": {
"buttonLabel": "إعدادات",
@@ -1040,7 +1044,7 @@
"title": "قُطِع اتصال الفيديو لدخول هذا الحاسوب في وضع النوم."
},
"termsView": {
"header": "مصطلحات"
"title": "مصطلحات"
},
"toggleTopPanelLabel": "تبديل اللوحة العلوية",
"toolbar": {

View File

@@ -57,6 +57,7 @@
},
"noMessagesMessage": "У канферэнцыі пакуль няма ніякіх паведамленняў. Пачніце размову!",
"privateNotice": "Асабістае паведамленне карыстальнiку {{recipient}}",
"sendButton": "Даслаць",
"title": "Чат",
"titleWithPolls": "Чат",
"you": "Вы"
@@ -305,7 +306,7 @@
"veryGood": "Вельмі добра"
},
"helpView": {
"header": "Цэнтар дапамогi"
"title": "Цэнтар дапамогi"
},
"incomingCall": {
"answer": "Адказ",
@@ -404,6 +405,7 @@
"signedInAs": "У цяперашні час вы ўвайшлі ў сістэму як:",
"start": "Пачаць трансляцыю",
"streamIdHelp": "Што гэта?",
"title": "Трансляцыя",
"unavailableTitle": "Трансляцыя недаступная",
"youtubeTerms": "YouTube ўмовы паслуг"
},
@@ -522,6 +524,7 @@
"serviceName": "Служба запісу",
"signIn": "Уваход",
"signOut": "Выхад",
"title": "Запіс",
"unavailable": "Служба {{serviceName}} зараз недаступная. Мы працуем над выпраўленнем гэтай памылкі. Калі ласка, паспрабуйце пазней.",
"unavailableTitle": "Запіс немагчымы"
},

View File

@@ -69,6 +69,7 @@
},
"noMessagesMessage": "Все още няма съобщения в срещата. Започнете разговор тук!",
"privateNotice": "Лично съобщение до {{recipient}}",
"sendButton": "Изпрати",
"title": "Текстови съобщения",
"titleWithPolls": "Текстови съобщения",
"you": "вие"
@@ -315,7 +316,7 @@
"veryGood": "Много добро"
},
"helpView": {
"header": "Място за помощ"
"title": "Място за помощ"
},
"incomingCall": {
"answer": "Вдигни",
@@ -414,6 +415,7 @@
"signedInAs": "В момента сте влезли като:",
"start": "Започни излъчване на живо",
"streamIdHelp": "Какво е това?",
"title": "Излъчване на живо",
"unavailableTitle": "Излъчването на живо е недостъпно",
"youtubeTerms": "Условия за ползване на YouTube"
},
@@ -449,6 +451,7 @@
"passwordField": "Въведи парола за срещата",
"passwordJoinButton": "Влез",
"reject": "Откажи",
"title": "Лоби",
"toggleLabel": "Включи лоби"
},
"localRecording": {
@@ -566,6 +569,7 @@
"serviceName": "Записваща услуга",
"signIn": "Влизане",
"signOut": "Излизане",
"title": "Запис",
"unavailable": "Упс! В момента {{serviceName}} е недостъпна. В момента се опитваме да решим проблема. Моля, опитайте отново малко по-късно.",
"unavailableTitle": "Записът е невъзможен"
},

View File

@@ -83,7 +83,7 @@
},
"labels": {
"buttonLabel": "Mode cotxe",
"title": "Mode conducció segura",
"title": "Mode cotxe",
"videoStopped": "El vídeo està aturat"
}
},
@@ -104,6 +104,7 @@
},
"noMessagesMessage": "Encara no hi ha cap missatge en aquesta reunió. Comenceu una conversa aquí!",
"privateNotice": "Missatge privat per a {{recipient}}",
"sendButton": "Envia",
"smileysPanel": "Tauler d'emojis",
"tabs": {
"chat": "Xat",
@@ -433,7 +434,7 @@
"search": "Cerca a GIPHY"
},
"helpView": {
"header": "Centre d'ajuda"
"title": "Centre d'ajuda"
},
"incomingCall": {
"answer": "Resposta",
@@ -545,6 +546,7 @@
"signedInAs": "Teniu sessió iniciada com a:",
"start": "Inicia la transmissió en directe",
"streamIdHelp": "Què és això?",
"title": "Transmissió en directe",
"unavailableTitle": "La transmissió en directe no és disponible",
"youtubeTerms": "Condicions de servei de YouTube"
},
@@ -587,6 +589,7 @@
"passwordJoinButton": "Entra",
"reject": "Rebuja",
"rejectAll": "Rebutja-ho tot",
"title": "Sala d'espera",
"toggleLabel": "Activa la sala d'espera"
},
"localRecording": {
@@ -723,13 +726,13 @@
"videoModeration": "Activa'n el vídeo"
},
"close": "Tanca",
"header": "Participants",
"headings": {
"lobby": "Sala d'espera ({{count}})",
"participantsList": "Participants de la reunió: ({{count}})",
"waitingLobby": "A la sala d'espera ({{count}})"
},
"search": "Cerca participants"
"search": "Cerca participants",
"title": "Participants"
},
"passwordDigitsOnly": "Fins a {{number}} dígits",
"passwordSetRemotely": "Establerta per un altre participant",
@@ -838,7 +841,7 @@
"ringing": "Està sonat..."
},
"privacyView": {
"header": "Privadesa"
"title": "Privadesa"
},
"profile": {
"avatar": "avatar",
@@ -899,6 +902,7 @@
"sessionAlreadyActive": "Aquesta sessió ja s'està enregistrant o emetent en directe.",
"signIn": "Inicia la sessió",
"signOut": "Tanca la sessió",
"title": "Enregistrament",
"unavailable": "Vaja! El servei {{serviceName}} ara mateix no és disponible. Treballem per a resoldre el problema. Torneu-ho a intentar més tard.",
"unavailableTitle": "L'enregistrament no és disponible",
"uploadToCloud": "Puja al núvol"
@@ -910,8 +914,8 @@
"security": {
"about": "Podeu afegir un $t(lockRoomPassword) a la reunió. Els participants hauran de proporcionar la $t(lockRoomPassword) abans de poder unir-s'hi.",
"aboutReadOnly": "Els moderadors poden afegir una $t(lockRoomPassword) a la reunió. Caldrà que els participants proporcionin la $t(lockRoomPassword) abans per a ser autoritzats a entrar en la reunió.",
"header": "Opcions de seguretat",
"insecureRoomNameWarning": "El nom de la sala no és segur. Podrien unir-s'hi participants no desitjats. Considereu d'augmentar la seguretat de la reunió usant el botó dev seguretat."
"insecureRoomNameWarning": "El nom de la sala no és segur. Podrien unir-s'hi participants no desitjats. Considereu d'augmentar la seguretat de la reunió usant el botó dev seguretat.",
"title": "Opcions de seguretat"
},
"settings": {
"calendar": {
@@ -1007,7 +1011,7 @@
"title": "La videotrucada s'ha interromput perquè l'ordinador ha entrat en mode repòs."
},
"termsView": {
"header": "Condicions"
"title": "Condicions"
},
"toolbar": {
"Settings": "Configuració",

File diff suppressed because it is too large Load Diff

View File

@@ -57,6 +57,7 @@
},
"noMessagesMessage": "Der er ikke nogen beskeder i mødet endnu. Skriv noget!",
"privateNotice": "Privat besked til {{recipient}}",
"sendButton": "Send",
"title": "Chat",
"titleWithPolls": "Chat",
"you": "Dig"
@@ -395,6 +396,7 @@
"signedInAs": "Du er pt. logget ind som:",
"start": "Start en livestream",
"streamIdHelp": "Hvad er dette?",
"title": "Livestream",
"unavailableTitle": "Livestreaming er ikke tilgængelig"
},
"localRecording": {
@@ -508,6 +510,7 @@
"serviceName": "Optagelsesservice",
"signIn": "Log ind",
"signOut": "Log ud",
"title": "Optager",
"unavailable": "Optagelsesservice {{serviceName}} er ikke tilgængelig. Der arbejdes på at løse problemet, forsøg igen senere.",
"unavailableTitle": "Optagelse ikke tilgængelig"
},

View File

@@ -104,6 +104,7 @@
},
"noMessagesMessage": "Es gibt noch keine Nachricht in dieser Konferenz. Starten Sie hier eine Unterhaltung!",
"privateNotice": "Private Nachricht an {{recipient}}",
"sendButton": "Senden",
"smileysPanel": "Emoji-Auswahl",
"tabs": {
"chat": "Chatten",
@@ -270,6 +271,7 @@
"gracefulShutdown": "Der Dienst steht momentan wegen Wartungsarbeiten nicht zur Verfügung. Bitte versuchen Sie es später noch einmal.",
"grantModeratorDialog": "Möchten Sie wirklich Moderationsrechte an diese Person vergeben?",
"grantModeratorTitle": "Moderationsrechte vergeben",
"hide": "Ausblenden",
"hideShareAudioHelper": "Diese Meldung nicht mehr anzeigen",
"incorrectPassword": "Name oder Passwort ungültig",
"incorrectRoomLockPassword": "Falsches Passwort",
@@ -387,6 +389,7 @@
"shareYourScreenDisabled": "Bildschirmfreigabe deaktiviert.",
"sharedVideoDialogError": "Fehler: Ungültige URL",
"sharedVideoLinkPlaceholder": "YouTube-URL oder direkte Video-URL",
"show": "Anzeigen",
"start": "Starte ",
"startLiveStreaming": "Livestream starten",
"startRecording": "Aufnahme starten",
@@ -435,7 +438,7 @@
"search": "GIPHY durchsuchen"
},
"helpView": {
"header": "Hilfecenter"
"title": "Hilfecenter"
},
"incomingCall": {
"answer": "Antworten",
@@ -553,6 +556,7 @@
"signedInAs": "Sie sind derzeit angemeldet als:",
"start": "Einen Livestream starten",
"streamIdHelp": "Was ist das?",
"title": "Livestream",
"unavailableTitle": "Livestreaming nicht verfügbar",
"youtubeTerms": "YouTube-Nutzungsbedingungen"
},
@@ -595,6 +599,7 @@
"passwordJoinButton": "Beitreten",
"reject": "Ablehnen",
"rejectAll": "Alle ablehnen",
"title": "Lobby",
"toggleLabel": "Lobby aktivieren"
},
"localRecording": {
@@ -621,6 +626,7 @@
"no": "Nein",
"participant": "Person",
"participantStats": "Personenstatistik",
"selectTabTitle": "🎥 Bitte dieses Tab zur Aufzeichnung auswählen",
"sessionToken": "Sitzungs-Token",
"start": "Aufnahme starten",
"stop": "Aufnahme stoppen",
@@ -737,13 +743,13 @@
"videoModeration": "Kamera einschalten"
},
"close": "Schließen",
"header": "Anwesende",
"headings": {
"lobby": "Lobby ({{count}})",
"participantsList": "Anwesende ({{count}})",
"waitingLobby": "In der Lobby ({{count}})"
},
"search": "Suche Anwesende"
"search": "Suche Anwesende",
"title": "Anwesende"
},
"passwordDigitsOnly": "Bis zu {{number}} Ziffern",
"passwordSetRemotely": "von einer anderen Person gesetzt",
@@ -853,7 +859,7 @@
"ringing": "Es klingelt …"
},
"privacyView": {
"header": "Datenschutz"
"title": "Datenschutz"
},
"profile": {
"avatar": "Benutzerbild",
@@ -925,6 +931,7 @@
"signIn": "Anmelden",
"signOut": "Abmelden",
"surfaceError": "Bitte das aktuelle Tab auswählen.",
"title": "Aufnahme",
"unavailable": "Oh! Der {{serviceName}} ist aktuell nicht verfügbar. Wir arbeiten an der Behebung des Problems. Bitte versuchen Sie es später noch einmal.",
"unavailableTitle": "Aufnahme nicht verfügbar",
"uploadToCloud": "In die Cloud hochladen"
@@ -936,8 +943,8 @@
"security": {
"about": "Sie können Ihre Konferenz mit einem Passwort sichern. Teilnehmer müssen dieses eingeben, bevor sie an der Sitzung teilnehmen dürfen.",
"aboutReadOnly": "Mit Moderationsrechten kann die Konferenz mit einem Passwort gesichert werden. Personen müssen dieses eingeben, bevor sie an der Sitzung teilnehmen dürfen.",
"header": "Sicherheitsoptionen",
"insecureRoomNameWarning": "Der Raumname ist unsicher. Unerwünschte Teilnehmer könnten Ihrer Konferenz beitreten"
"insecureRoomNameWarning": "Der Raumname ist unsicher. Unerwünschte Teilnehmer könnten Ihrer Konferenz beitreten",
"title": "Sicherheitsoptionen"
},
"settings": {
"buttonLabel": "Einstellungen",
@@ -1042,7 +1049,7 @@
"title": "Die Konferenz wurde unterbrochen, weil der Standby-Modus aktiviert wurde."
},
"termsView": {
"header": "Nutzungsbedingungen"
"title": "Nutzungsbedingungen"
},
"toggleTopPanelLabel": "Obere Leiste ein-/ausschalten",
"toolbar": {
@@ -1115,7 +1122,8 @@
"toggleFilmstrip": "Miniaturansichten ein-/ausschalten",
"undock": "In eigenem Fenster anzeigen",
"videoblur": "Unscharfer Hintergrund ein-/ausschalten",
"videomute": "„Video stummschalten“ ein-/ausschalten"
"videomute": "„Video stummschalten“ ein-/ausschalten",
"whiteboard": "Whiteboard ein-/ausschalten"
},
"addPeople": "Personen zur Konferenz hinzufügen",
"audioOnlyOff": "Modus „Nur Audio“ deaktivieren",
@@ -1146,6 +1154,7 @@
"giphy": "GIPHY ein-/ausschalten",
"hangup": "Konferenz verlassen",
"help": "Hilfe",
"hideWhiteboard": "Whiteboard ausblenden",
"invite": "Personen einladen",
"joinBreakoutRoom": "In Breakout-Raum wechseln",
"laugh": "Lachen",
@@ -1191,6 +1200,7 @@
"shareaudio": "Audio teilen",
"sharedvideo": "Video teilen",
"shortcuts": "Tastenkürzel anzeigen",
"showWhiteboard": "Whiteboard anzeigen",
"silence": "Stille",
"speakerStats": "Sprechstatistik",
"startScreenSharing": "Bildschirmfreigabe starten",
@@ -1215,6 +1225,8 @@
"labelToolTip": "Das Meeting wird transkribiert",
"off": "Transkribieren gestoppt",
"pending": "Transkribieren des Meetings wird vorbereitet…",
"sourceLanguageDesc": "Aktuell ist die Sprache der Konferenz auf <b>{{sourceLanguage}}</b> eingestellt. <br/> Sie könne dies hier ",
"sourceLanguageHere": "ändern",
"start": "Anzeige der Untertitel starten",
"stop": "Anzeige der Untertitel stoppen",
"subtitles": "Untertitel",

View File

@@ -71,7 +71,8 @@
"titleWithPolls": "Εισάγετε ένα ψευδώνυμο για τη χρήση της συνομιλίας"
},
"noMessagesMessage": "Δεν υπάρχουν μηνύματα στη συνάντηση ακόμα. Ξεκινήστε μια συζήτηση εδώ!",
"privateNotice": "Ιδιωτικό μηνύμα στον / στην {recipient}}",
"privateNotice": "Ιδιωτικό μηνύμα στον / στην {{recipient}}",
"sendButton": "Στείλτε",
"title": "Συνομιλία",
"titleWithPolls": "Συνομιλία",
"you": "Εσείς"
@@ -321,7 +322,7 @@
"veryGood": "Πολύ καλό"
},
"helpView": {
"header": "Κέντρο βοήθειας"
"title": "Κέντρο βοήθειας"
},
"incomingCall": {
"answer": "Απάντηση",
@@ -422,6 +423,7 @@
"signedInAs": "Είστε συνδεδεμένοι ως:",
"start": "Ξεκινήστε μια ζωντανή ροή",
"streamIdHelp": "Τι είναι αυτό;",
"title": "Ζωντανή ροή",
"unavailableTitle": "Ζωντανή ροή μη διαθέσιμη",
"youtubeTerms": "Όροι υπηρεσιών YouTube"
},
@@ -515,7 +517,7 @@
"oldElectronClientDescription3": " τώρα!",
"passwordRemovedRemotely": "Το $t(lockRoomPasswordUppercase) αφαιρέθηκε από έναν άλλον συμμετέχοντα",
"passwordSetRemotely": "Το $t(lockRoomPasswordUppercase) ορίστηκε από άλλον συμμετέχοντα",
"raisedHand": "Ο/Η {{name}} θα ήθελε να μιλήσει.",
"raisedHand": "Ο/Η {{participantDisplayName}} θα ήθελε να μιλήσει.",
"somebody": "Κάποιος",
"startSilentDescription": "Ξαναμπείτε στη συνάντηση για να ενεργοποιήσετε τον ήχο",
"startSilentTitle": "Μπήκες χωρίς συσκευή εξόδου ήχου!",
@@ -607,6 +609,7 @@
"serviceName": "Υπηρεσία καταγραφής",
"signIn": "Σύνδεση",
"signOut": "Αποσύνδεση",
"title": "Γίνεται εγγραφή",
"unavailable": "Ουπς! Το {{serviceName}} δεν είναι διαθέσιμο προς το παρόν. Δουλεύουμε για την επίλυση του ζητήματος. Παρακαλώ προσπαθήστε ξανά αργότερα.",
"unavailableTitle": "Η καταγραφή δεν είναι διαθέσιμη"
},

View File

@@ -57,6 +57,7 @@
},
"noMessagesMessage": "",
"privateNotice": "",
"sendButton": "Send",
"title": "Chat",
"titleWithPolls": "Chat",
"you": ""
@@ -401,6 +402,7 @@
"signedInAs": "You are currently signed in as:",
"start": "Start a live stream",
"streamIdHelp": "What's this?",
"title": "Live Stream",
"unavailableTitle": "Live Streaming unavailable",
"youtubeTerms": "YouTube terms of services"
},
@@ -516,6 +518,7 @@
"serviceName": "Recording service",
"signIn": "Sign in",
"signOut": "Sign out",
"title": "Recording",
"unavailable": "Oops! The {{serviceName}} is currently unavailable. We're working on resolving the issue. Please try again later.",
"unavailableTitle": "Recording unavailable"
},

View File

@@ -57,6 +57,7 @@
},
"noMessagesMessage": "Ankoraŭ ne estas mesaĝoj en la kunveno. Komencu konversation ĉi tie!",
"privateNotice": "Privata mesaĝo al {{recipient}}",
"sendButton": "Sendi",
"title": "Babilejo",
"titleWithPolls": "Babilejo",
"you": "vi"
@@ -307,7 +308,7 @@
"veryGood": "Tre bona"
},
"helpView": {
"header": "Helpejo"
"title": "Helpejo"
},
"incomingCall": {
"answer": "Respondi",
@@ -406,6 +407,7 @@
"signedInAs": "Vi nun estas ensalutinta kiel:",
"start": "Komenci tujan elsendfluon",
"streamIdHelp": "Kio estas tio?",
"title": "Tuja elsendfluo",
"unavailableTitle": "Tuja elsendfluo ne disponeblas",
"youtubeTerms": "Uzkondiĉoj de YouTube"
},
@@ -528,6 +530,7 @@
"serviceName": "Registra servo",
"signIn": "Ensaluti",
"signOut": "Elsaluti",
"title": "Registrado",
"unavailable": "Oj! La {{serviceName}} estas nun nedisponebla. Ni laboras por solvi la aferon. Bonvolu reprovi poste.",
"unavailableTitle": "Registrado ne disponeblas"
},

View File

@@ -73,6 +73,7 @@
},
"noMessagesMessage": "No hay mensajes en la reunión. ¡Inicie una conversación!",
"privateNotice": "Mensaje privado para {{recipient}}",
"sendButton": "Enviar",
"smileysPanel": "Panel de Emojis",
"tabs": {
"chat": "Chat",
@@ -384,7 +385,7 @@
"veryGood": "Muy buena"
},
"helpView": {
"header": "Centro de ayuda"
"title": "Centro de ayuda"
},
"incomingCall": {
"answer": "Contestar",
@@ -493,6 +494,7 @@
"signedInAs": "Actualmente, la sesión está iniciada como:",
"start": "Iniciar una transmisión en vivo",
"streamIdHelp": "¿Qué es esto?",
"title": "Transmisión en vivo",
"unavailableTitle": "Transmisión en vivo no disponible",
"youtubeTerms": "Términos de servicios de YouTube"
},
@@ -531,6 +533,7 @@
"passwordJoinButton": "Entrar",
"reject": "Rechazar",
"rejectAll": "Rechazar todo",
"title": "Sala de espera",
"toggleLabel": "Activar sala de espera"
},
"localRecording": {
@@ -641,12 +644,12 @@
"videoModeration": "Iniciar su vídeo"
},
"close": "Cerrar",
"header": "Participantes",
"headings": {
"lobby": "Vestíbulo ({{count}})",
"participantsList": "Participantes en la reunión ({{count}})",
"waitingLobby": "Esperando en el vestíbulo ({{count}})"
}
},
"title": "Participantes"
},
"passwordDigitsOnly": "Hasta {{number}} cifras",
"passwordSetRemotely": "Definida por otro participante",
@@ -790,6 +793,7 @@
"serviceName": "Servicio de grabación",
"signIn": "Iniciar sesión",
"signOut": "Cerrar sesión",
"title": "Grabando",
"unavailable": "¡Uy! {{serviceName}} actualmente no está disponible. Estamos trabajando para resolver el problema. Vuelve a intentarlo más tarde.",
"unavailableTitle": "Grabación no disponible",
"uploadToCloud": "Subir a la nube"

View File

@@ -406,7 +406,7 @@
"veryGood": "Muy buena"
},
"helpView": {
"header": "Centro de ayuda"
"title": "Centro de ayuda"
},
"incomingCall": {
"answer": "Contestar",
@@ -516,6 +516,7 @@
"signedInAs": "Actualmente, la sesión está iniciada como:",
"start": "Iniciar una transmisión en vivo",
"streamIdHelp": "¿Qué es esto?",
"title": "Transmisión en vivo",
"unavailableTitle": "Transmisión en vivo no disponible",
"youtubeTerms": "Términos de servicios de YouTube"
},
@@ -554,6 +555,7 @@
"passwordJoinButton": "Entrar",
"reject": "Rechazar",
"rejectAll": "Rechazar todo",
"title": "Sala de espera",
"toggleLabel": "Activar sala de espera"
},
"localRecording": {
@@ -665,12 +667,12 @@
"videoModeration": "Iniciar su vídeo"
},
"close": "Cerrar",
"header": "Participantes",
"headings": {
"lobby": "Vestíbulo ({{count}})",
"participantsList": "Participantes en la reunión ({{count}})",
"waitingLobby": "Esperando en el vestíbulo ({{count}})"
}
},
"title": "Participantes"
},
"passwordDigitsOnly": "Hasta {{number}} cifras",
"passwordSetRemotely": "definida por otro participante",
@@ -813,6 +815,7 @@
"serviceName": "Servicio de grabación",
"signIn": "Iniciar sesión",
"signOut": "Cerrar sesión",
"title": "Grabando",
"unavailable": "¡Uy! {{serviceName}} actualmente no está disponible. Estamos trabajando para resolver el problema. Vuelve a intentarlo más tarde.",
"unavailableTitle": "Grabación no disponible",
"uploadToCloud": "Subir a la nube"

View File

@@ -57,6 +57,7 @@
},
"noMessagesMessage": "Kirjavahetust pole veel alustatud. Alusta kirjavahetust siin!",
"privateNotice": "Privaatsõnum kasutajale {{recipient}}",
"sendButton": "Saada",
"title": "Kõne",
"titleWithPolls": "Kõne",
"you": "you"
@@ -394,6 +395,7 @@
"signedInAs": "Oled sisse logitud kasutajana:",
"start": "Alusta otseülekannet.",
"streamIdHelp": "Mis see on?",
"title": "Otseülekanne",
"unavailableTitle": "Otseülekanne pole kättesaadav."
},
"localRecording": {
@@ -511,6 +513,7 @@
"serviceName": "Salvestamise teenus",
"signIn": "Logi sisse",
"signOut": "Logi välja",
"title": "Salvetamine",
"unavailable": "Oih! {{serviceName}} ei ole hetkel kättesaadav! Proovi hiljem uuesti.",
"unavailableTitle": "Salvestamine ei ole võimalik."
},

View File

@@ -73,6 +73,7 @@
},
"noMessagesMessage": "Bileran oraindik mezurik ez dago. Hasi elkarrizketa hemen!",
"privateNotice": "Mezu pribatua {{recipient}}(e)ri",
"sendButton": "Bidali",
"smileysPanel": "Emoji panela",
"title": "Txata",
"titleWithPolls": "Txata",
@@ -353,7 +354,7 @@
"veryGood": "Oso ona"
},
"helpView": {
"header": "Laguntza gunea"
"title": "Laguntza gunea"
},
"incomingCall": {
"answer": "Erantzun",
@@ -457,6 +458,7 @@
"signedInAs": "Honela hasi duzu saioa:",
"start": "Hasi zuzeneko transmisioa",
"streamIdHelp": "Zer da hau?",
"title": "Zuzeneko Erreprodukzioa",
"unavailableTitle": "Zuzeneko transmisioa ez dago erabilgarri",
"youtubeTerms": "YouTuberen erabilpen baldintzak"
},
@@ -493,6 +495,7 @@
"passwordField": "Idatzi bileraren pasahitza",
"passwordJoinButton": "Sartu",
"reject": "Baztertu",
"title": "Itxaron-gela",
"toggleLabel": "Itxaron-gela aktibatu"
},
"localRecording": {
@@ -693,6 +696,7 @@
"serviceName": "Grabazio-zerbitzua",
"signIn": "Sartu",
"signOut": "Itxi saioa",
"title": "Grabatzen",
"unavailable": "Atx! {{serviceName}} ez dago eskuragarri. Arazoa konpontzeko lanean gabiltza. Saiatu berriz beranduago.",
"unavailableTitle": "Grabazioa ez dago eskuragarri"
},

View File

@@ -93,6 +93,7 @@
},
"noMessagesMessage": "هیچ گفتگویی در جلسه وجود ندارد، گفتگو را شما آعاز کنید!",
"privateNotice": "پیام خصوصی به {{recipient}}",
"sendButton": "ارسال",
"smileysPanel": "پنل ایموجی",
"tabs": {
"chat": "چت",
@@ -422,7 +423,7 @@
"search": "جستجو GIPHY"
},
"helpView": {
"header": "مرکز راهنما"
"title": "مرکز راهنما"
},
"incomingCall": {
"answer": "پاسخ دادن",
@@ -534,6 +535,7 @@
"signedInAs": "شما وارد شده‌اید با:",
"start": "شروع پخش زنده",
"streamIdHelp": "پخش زنده چیست؟",
"title": "پخش زنده",
"unavailableTitle": "پخش زنده در دسترس نیست",
"youtubeTerms": "شرایط خدمات یوتیوب"
},
@@ -575,6 +577,7 @@
"passwordJoinButton": "پیوستن",
"reject": "رد کردن",
"rejectAll": "همه رد کردن",
"title": "لابی",
"toggleLabel": "فعال کردن حالت لابی"
},
"localRecording": {
@@ -710,13 +713,13 @@
"videoModeration": "ویدیوی آنها را شروع کنید"
},
"close": "بستن",
"header": "شركت كنندگان",
"headings": {
"lobby": "لابی",
"participantsList": "شرکت کنندگان در جلسه ({{count}})",
"waitingLobby": "در لابی ({{count}})"
},
"search": "جستجوی شرکت کنندگان"
"search": "جستجوی شرکت کنندگان",
"title": "شركت كنندگان"
},
"passwordDigitsOnly": "حداکثر {{number}} عدد",
"passwordSetRemotely": "توسط یک شرکت‌کننده دیگر تنظیم شده است",
@@ -824,7 +827,7 @@
"ringing": "در حال زنگ زدن"
},
"privacyView": {
"header": "حریم خصوصی"
"title": "حریم خصوصی"
},
"profile": {
"avatar": "آواتار",
@@ -885,6 +888,7 @@
"sessionAlreadyActive": "این جلسه قبلاً در حال ضبط یا پخش زنده است.",
"signIn": "ورود",
"signOut": "خروج",
"title": "در حال ضبط",
"unavailable": "متاسفانه {{serviceName}} در دسترس نیست، ما در تلاش برای حل مشکل پیش آمده هستیم، مجددا تلاش نمایید",
"unavailableTitle": "امکان ضبط وجود ندارد",
"uploadToCloud": "آپلود در فضای ابری"
@@ -895,8 +899,8 @@
"security": {
"about": "شما می‌توانید با تنظیم رمز عبور برای جلسه، شرکت کنندگان را مجبور کنید در هنگام ورود به جلسه آن را وارد کنند تا از ورود افراد ناشناس به جلسه جلوگیری شود",
"aboutReadOnly": "مدیر جلسه می‌تواند برای آن $t(lockRoomPassword) تعیین کند و شرکت‌کنندگان باید در ورود به جلسه $t(lockRoomPassword) را وارد کنند تا بتوانند در جلسه وارد شوند",
"header": "گزینه های امنیت",
"insecureRoomNameWarning": "برای این جلسه رمز عبور تعریف نشده است و هر شرکت کننده‌ای می‌تواند به آن وارد شود"
"insecureRoomNameWarning": "برای این جلسه رمز عبور تعریف نشده است و هر شرکت کننده‌ای می‌تواند به آن وارد شود",
"title": "گزینه های امنیت"
},
"settings": {
"calendar": {
@@ -992,7 +996,7 @@
"title": "ارتباط تصویری شما به دلیل خاموش شدن رایانه قطع شد"
},
"termsView": {
"header": "شرایط"
"title": "شرایط"
},
"toolbar": {
"Settings": "تنظیمات",

View File

@@ -52,6 +52,7 @@
"title": "Anna chatissä käytettävä lempinimi",
"titleWithPolls": "Anna chatissä käytettävä lempinimi"
},
"sendButton": "Lähetä",
"title": "Chatti",
"titleWithPolls": "Chatti"
},
@@ -364,6 +365,7 @@
"signedInAs": "Sisäänkirjautunut käyttäjä:",
"start": "Aloita suoratoisto",
"streamIdHelp": "Mikä tämä on?",
"title": "Suoratoisto",
"unavailableTitle": "Suoratoisto ei käytettävissä"
},
"localRecording": {
@@ -474,6 +476,7 @@
"serviceName": "Nauhoituspalvelu",
"signIn": "Kirjaudu sisään",
"signOut": "Kirjaudu ulos",
"title": "Nauhoitetaan",
"unavailable": "Hups! {{serviceName}} ei ole käytettävissä. Yritämme ratkaista ongelman. Yritä myöhemmin uudelleen.",
"unavailableTitle": "Nauhoitus ei käytettävissä"
},

View File

@@ -93,6 +93,7 @@
},
"noMessagesMessage": "Il n'y a pas encore de messages dans cette réunion. Démarrez une conversation ici !",
"privateNotice": "Message privé à {{recipient}}",
"sendButton": "Envoyer",
"smileysPanel": "Panneaux des Émojis",
"tabs": {
"chat": "Chat",
@@ -422,7 +423,7 @@
"search": "Rechercher dans GIPHY"
},
"helpView": {
"header": "Centre d'aide"
"title": "Centre d'aide"
},
"incomingCall": {
"answer": "Répondre",
@@ -534,6 +535,7 @@
"signedInAs": "Vous êtes connecté en tant que :",
"start": "Démarrer la diffusion en direct",
"streamIdHelp": "Qu'est-ce que c'est ?",
"title": "Diffusion en direct",
"unavailableTitle": "La diffusion est indisponible",
"youtubeTerms": "Conditions d'utilisation de YouTube"
},
@@ -576,6 +578,7 @@
"passwordJoinButton": "Rejoindre",
"reject": "Refuser",
"rejectAll": "Refuser tout",
"title": "Salle d'attente",
"toggleLabel": "Activer la salle d'attente"
},
"localRecording": {
@@ -712,13 +715,13 @@
"videoModeration": "Démarrer leur vidéo"
},
"close": "Fermer",
"header": "Participants",
"headings": {
"lobby": "Salle d'attente ({{count}})",
"participantsList": "Participants de la réunion ({{count}})",
"waitingLobby": "Dans la salle d'attente ({{count}})"
},
"search": "Rechercher des participants"
"search": "Rechercher des participants",
"title": "Participants"
},
"passwordDigitsOnly": "Jusqu'à {{number}} chiffres",
"passwordSetRemotely": "défini par un autre participant",
@@ -827,7 +830,7 @@
"ringing": "Appel en cours ..."
},
"privacyView": {
"header": "Confidentialité"
"title": "Confidentialité"
},
"profile": {
"avatar": "avatar",
@@ -888,6 +891,7 @@
"sessionAlreadyActive": "Cette session est déjà en cours d'enregistrement ou de diffusion.",
"signIn": "Se connecter",
"signOut": "Se déconnecter",
"title": "Enregistrement",
"unavailable": "Oups ! Le {{serviceName}} est actuellement indisponible. Nous tentons de résoudre le problème. Veuillez réessayer plus tard.",
"unavailableTitle": "Enregistrement indisponible",
"uploadToCloud": "Envoyer vers le cloud"
@@ -898,8 +902,8 @@
"security": {
"about": "Vous pouvez ajouter un mot de passe à votre réunion. Les participants devront fournir le mot de passe avant de pouvoir rejoindre la réunion.",
"aboutReadOnly": "Les modérateurs peuvent ajouter un mot de passe à la réunion. Les participants devront fournir le mot de passe avant de pouvoir rejoindre la réunion.",
"header": "Options de sécurité",
"insecureRoomNameWarning": "Le nom de la salle est peu sûr. Des participants non désirés peuvent rejoindre votre réunion. Pensez à sécuriser votre réunion en cliquant sur le bouton de sécurité."
"insecureRoomNameWarning": "Le nom de la salle est peu sûr. Des participants non désirés peuvent rejoindre votre réunion. Pensez à sécuriser votre réunion en cliquant sur le bouton de sécurité.",
"title": "Options de sécurité"
},
"settings": {
"calendar": {
@@ -995,7 +999,7 @@
"title": "Votre visioconférence s'est interrompue parce que votre ordinateur s'est mis en veille."
},
"termsView": {
"header": "Conditions d'utilisation"
"title": "Conditions d'utilisation"
},
"toolbar": {
"Settings": "Paramètres",

View File

@@ -57,6 +57,7 @@
},
"noMessagesMessage": "Il n'y a pas encore de messages dans cette réunion. Démarrez une conversation ici !",
"privateNotice": "Message privé à {{recipient}}",
"sendButton": "Envoyer",
"title": "Clavardage",
"titleWithPolls": "Clavardage",
"you": "vous"
@@ -333,7 +334,7 @@
"searchCallOnlyPlaceholder": "Entrer le numéro de téléphone",
"searchPeopleOnlyPlaceholder": "Rechercher des participants",
"searchPlaceholder": "Participant ou numéro de téléphone",
"send": "Envoyer"
"send": "Envoyer"
},
"keyboardShortcuts": {
"focusLocal": "Focaliser sur votre vidéo",
@@ -380,6 +381,7 @@
"signedInAs": "Vous êtes actuellement connecté en tant que :",
"start": "Démarrer une diffusion en direct",
"streamIdHelp": "Qu'est-ce que c'est?",
"title": "Diffusion en direct",
"unavailableTitle": "Diffusion en direct non disponible"
},
"localRecording": {
@@ -493,6 +495,7 @@
"serviceName": "Service d'enregistrement",
"signIn": "Se connecter",
"signOut": "Se déconnecter",
"title": "Enregistrement",
"unavailable": "Oups! Le {{serviceName}} n'est pas disponible pour le moment. Nous nous efforçons de régler le problème. Veuillez réessayer plus tard.",
"unavailableTitle": "Enregistrement non disponible"
},

View File

@@ -57,6 +57,7 @@
},
"noMessagesMessage": "Aínda non hai mensaxes na reunión. Comece unha conversación aquí!",
"privateNotice": "Mensaxe privada para {{recipient}}",
"sendButton": "Enviar",
"title": "Chat",
"titleWithPolls": "Chat",
"you": "vostede"
@@ -385,6 +386,7 @@
"signedInAs": "Está conectado como:",
"start": "Arrincar unha difusión ao vivo",
"streamIdHelp": "Que é isto?",
"title": "Difusión ao vivo",
"unavailableTitle": "A difusión ao vivo non está dispoñíbel"
},
"localRecording": {
@@ -498,6 +500,7 @@
"serviceName": "Servizo de gravación",
"signIn": "Conectarse",
"signOut": "Desconectarse",
"title": "Gravando",
"unavailable": "Opa! O {{serviceName}} non está dispoñíbel actualmente. Estamos traballando na resolución da incidencia. Ténteo de novo máis adiante.",
"unavailableTitle": "A gravación non está dispoñíbel"
},

View File

@@ -57,6 +57,7 @@
},
"noMessagesMessage": "אין עדיין הודעות בפגישה. התחל שיחה כאן!",
"privateNotice": "הודעה פרטית אל {{recipient}}",
"sendButton": "שלח",
"title": "צ'אט",
"titleWithPolls": "צ'אט",
"you": "אתה"
@@ -300,7 +301,7 @@
"veryGood": "מעולה"
},
"helpView": {
"header": "מרכז העזרה"
"title": "מרכז העזרה"
},
"incomingCall": {
"answer": "תשובה",
@@ -399,6 +400,7 @@
"signedInAs": "אתה מחובר כעת כ:",
"start": "התחל שידור חי",
"streamIdHelp": "מה זה?",
"title": "שידור חי",
"unavailableTitle": "שידור חי לא זמין",
"youtubeTerms": "תנאי השירות של יוטיוב"
},
@@ -521,6 +523,7 @@
"serviceName": "שירותי הקלטה",
"signIn": "התחבר",
"signOut": "התנתק",
"title": "מקליט",
"unavailable": "אופס! {{ServiceName}} אינו זמין כרגע. אנו עובדים על פיתרון הבעיה. אנא נסה שוב מאוחר יותר.",
"unavailableTitle": "הקלטה אינה זמינה"
},

View File

@@ -74,6 +74,7 @@
},
"noMessagesMessage": "अभी तक मीटिंग में कोई संदेश नहीं आया है। वार्तालाप प्रारंभ करें!",
"privateNotice": "{{recipient}} के लिए निजी संदेश",
"sendButton": "भेजें",
"title": "चैट",
"titleWithPolls": "चैट",
"you": "आप"
@@ -347,7 +348,7 @@
"veryGood": "बहुत अच्छा"
},
"helpView": {
"header": "सहायता केंद्र"
"title": "सहायता केंद्र"
},
"incomingCall": {
"answer": "उत्तर",
@@ -447,6 +448,7 @@
"signedInAs": "You are currently signed in as:",
"start": "Start a live stream",
"streamIdHelp": "What's this?",
"title": "सीधा प्रसारण",
"unavailableTitle": "Live Streaming unavailable",
"youtubeTerms": "YouTube terms of services"
},
@@ -481,6 +483,7 @@
"passwordField": "मीटिंग पासवर्ड दर्ज करें",
"passwordJoinButton": "Join",
"reject": "अस्वीकार",
"title": "लॉबी",
"toggleLabel": "लॉबी सक्षम करें"
},
"localRecording": {
@@ -664,6 +667,7 @@
"serviceName": "Recording service",
"signIn": "Sign in",
"signOut": "Sign out",
"title": "रिकॉर्डिंग",
"unavailable": "Oops! The {{serviceName}} is currently unavailable. We're working on resolving the issue. Please try again later.",
"unavailableTitle": "Recording unavailable"
},

View File

@@ -438,7 +438,7 @@
"search": "Traži GIPHY"
},
"helpView": {
"header": "Centar pomoći"
"title": "Centar pomoći"
},
"incomingCall": {
"answer": "Odgovori",
@@ -743,13 +743,13 @@
"videoModeration": "Pokrenu vlastiti video"
},
"close": "Zatvori",
"header": "Sudionici",
"headings": {
"lobby": "Predvorje ({{count}})",
"participantsList": "Sudionici sastanka ({{count}})",
"waitingLobby": "Čekaju u predvorju ({{count}})"
},
"search": "Traži sudionike"
"search": "Traži sudionike",
"title": "Sudionici"
},
"passwordDigitsOnly": "Do {{number}} znamenke/i",
"passwordSetRemotely": "Postavljena od jednog drugog sudionika",
@@ -859,7 +859,7 @@
"ringing": "Zvoni …"
},
"privacyView": {
"header": "Privatnost"
"title": "Privatnost"
},
"profile": {
"avatar": "avatar",
@@ -943,8 +943,8 @@
"security": {
"about": "Možeš dodati $t(lockRoomPassword) svom sastanku. Sudionici će morati upisati $t(lockRoomPassword) prije nego što im se omogući pridruživanje sastanku.",
"aboutReadOnly": "Moderatori mogu dodati $t(lockRoomPassword) sastanku. Sudionici će morati upisati $t(lockRoomPassword) prije nego što im se omogući pridruživanje sastanku.",
"header": "Sigurnosne opcije",
"insecureRoomNameWarning": "Ime sobe nije sigurno. Neželjeni sudionici mogu se pridružiti tvojoj konferenciji. Osiguraj sastanak pomoću sigurnosne tipke."
"insecureRoomNameWarning": "Ime sobe nije sigurno. Neželjeni sudionici mogu se pridružiti tvojoj konferenciji. Osiguraj sastanak pomoću sigurnosne tipke.",
"title": "Sigurnosne opcije"
},
"settings": {
"buttonLabel": "Postavke",
@@ -1050,7 +1050,7 @@
"title": "Tvoj je videopoziv prekinut jer je tvoje računalo prešlo u stanje mirovanja."
},
"termsView": {
"header": "Uvjeti"
"title": "Uvjeti"
},
"toggleTopPanelLabel": "Uključi/Isključi gornju ploču",
"toolbar": {

View File

@@ -104,6 +104,7 @@
},
"noMessagesMessage": "Njejsu hišće powěsće w tutej konferency. Započće z rozmołwu tule!",
"privateNotice": "priwatna powěsć na {{recipient}}",
"sendButton": "pósłać",
"smileysPanel": "wuběr emojijow",
"tabs": {
"chat": "chatować",
@@ -433,7 +434,7 @@
"search": "GIPHY přepytać"
},
"helpView": {
"header": "pomoc"
"title": "pomoc"
},
"incomingCall": {
"answer": "wotmołwić",
@@ -545,6 +546,7 @@
"signedInAs": "Wy sće přizjewjeny jako:",
"start": "live-stream startować",
"streamIdHelp": "Što to je?",
"title": "live-stream",
"unavailableTitle": "live-streaming njeje wužiwajomny",
"youtubeTerms": "wuměnjenja wužiwanja na YouTube"
},
@@ -587,6 +589,7 @@
"passwordJoinButton": "přistupić",
"reject": "wotpokazać",
"rejectAll": "wšitko wotpokazać",
"title": "lobby",
"toggleLabel": "lobby aktiwěrować"
},
"localRecording": {
@@ -725,13 +728,13 @@
"videoModeration": "kameru zaspinyć"
},
"close": "začinić",
"header": "přitomni",
"headings": {
"lobby": "lobby ({{count}})",
"participantsList": "přitomni ({{count}})",
"waitingLobby": "w lobbyji ({{count}})"
},
"search": "přitomnych pytać"
"search": "přitomnych pytać",
"title": "přitomni"
},
"passwordDigitsOnly": "hač do {{number}} cyfrow",
"passwordSetRemotely": "wot druheho wobdźělnika postajene",
@@ -840,7 +843,7 @@
"ringing": "zwoni …"
},
"privacyView": {
"header": "datowy škit"
"title": "datowy škit"
},
"profile": {
"avatar": "wobraz wužiwarja/awatar",
@@ -904,6 +907,7 @@
"signIn": "přizjewić",
"signOut": "wotzjewić",
"surfaceError": "prošu aktualny tab wužiwać",
"title": "nahrawanje",
"unavailable": "Ow! {{serviceName}} tuchwilu wužiwajomny njeje. Dźěłamy na rozrisanju problema. Prošu pozdźišo znowa spytać .",
"unavailableTitle": "nahrawanje njeje wužiwajomne",
"uploadToCloud": "do cloud přenošować"
@@ -915,8 +919,8 @@
"security": {
"about": "Móžeće Wašu konferencu z hesłom škitać. Wobdźělnicy dyrbja tute zapodać, prjedy hač smědźa so na konferency wobdźělić.",
"aboutReadOnly": " Moderatorojo móža konferencu z hesłom škitać. Wobdźělnicy dyrbja tute zapodać, prjedy hač smědźa so wobdźělić.",
"header": "opcije wěstoty",
"insecureRoomNameWarning": "Mjeno ruma je njewěste. Njewitani wobdźělnicy móhli Wašej konferency přistupić."
"insecureRoomNameWarning": "Mjeno ruma je njewěste. Njewitani wobdźělnicy móhli Wašej konferency přistupić.",
"title": "opcije wěstoty"
},
"settings": {
"calendar": {
@@ -1013,7 +1017,7 @@
"title": "Konferenca bu přetorhnjena, dokelž bu standby-modus aktiwěrowany."
},
"termsView": {
"header": "wuměnjenja za wužiwanje"
"title": "wuměnjenja za wužiwanje"
},
"toolbar": {
"Settings": "nastajenja",

View File

@@ -57,6 +57,7 @@
},
"noMessagesMessage": "A találkozón még nincsenek üzenetek. Itt kezdhet beszélgetést!",
"privateNotice": "Privát üzenet a felhasználónak: {{recipient}}",
"sendButton": "Küldés",
"title": "Csevegés",
"titleWithPolls": "Csevegés",
"you": "neked"
@@ -301,7 +302,7 @@
"veryGood": "Nagyon jó"
},
"helpView": {
"header": "Súgó"
"title": "Súgó"
},
"incomingCall": {
"answer": "Válasz",
@@ -400,6 +401,7 @@
"signedInAs": "Jelenleg bejelentkezve mint:",
"start": "Élő közvetítés kezdése",
"streamIdHelp": "Mi ez?",
"title": "Élő közvetítés",
"unavailableTitle": "Élő közvetítés elérhetetlen",
"youtubeTerms": "YouTube szolgáltatási feltételek"
},
@@ -518,6 +520,7 @@
"serviceName": "Felvétel szolgáltatás",
"signIn": "Belépés",
"signOut": "Kilépés",
"title": "Felvétel",
"unavailable": "Hoppá! A {{serviceName}} szolgáltatás jelenleg nem elérhető. Dolgozunk a hiba elhárításán. Próbálja meg később.",
"unavailableTitle": "Felvétel nem elérhető"
},

View File

@@ -359,6 +359,7 @@
"signedInAs": "",
"start": "Կանգնացնել ուղիղ հեռարձակումը:",
"streamIdHelp": "",
"title": "Ուղիղ Հեռարձակում",
"unavailableTitle": ""
},
"localRecording": {
@@ -469,6 +470,7 @@
"serviceName": "",
"signIn": "",
"signOut": "",
"title": "Գրանցում",
"unavailable": "",
"unavailableTitle": ""
},

View File

@@ -1,788 +0,0 @@
{
"addPeople": {
"add": "Undang",
"countryNotSupported": "Negara ini belum tersedia.",
"countryReminder": "Memanggil di luar negara AS? Pastikan dengan menggunakan kode negara!",
"disabled": "Kamu tidak dapat mengundang.",
"failedToAdd": "Gagal menambahkan peserta",
"footerText": "Panggilan keluar di-nonaktifkan.",
"loading": "Sedang mencari orang dan nomor telepon.",
"loadingNumber": "Memvalidasi nomor telepon",
"loadingPeople": "Mencari orang untuk diundang",
"noResults": "Tidak ada pencarian yang cocok.",
"noValidNumbers": "Masukkan nomor telepon yang benar.",
"searchNumbers": "Mencari nomor telepon",
"searchPeople": "Mencari orang",
"searchPeopleAndNumbers": "Cari orang beserta nomor teleponnya",
"telephone": "Telepon: {{number}}",
"title": "Undang orang-orang ke sini."
},
"audioDevices": {
"bluetooth": "Bluetooth",
"headphones": "Headphones",
"none": "Perangkat suara tidak tersedia",
"phone": "Telepon",
"speaker": "Pengeras suara"
},
"audioOnly": {
"audioOnly": "Suara saja"
},
"calendarSync": {
"addMeetingURL": "Buat link pertemuan",
"confirmAddLink": "Tambahkan link Jitsi pada event ini?",
"error": {
"appConfiguration": "Ada konfigurasi yang tidak tepat.",
"generic": "Kesalahan terjadi. Cek pengaturan atau coba lakukan refresh.",
"notSignedIn": "Kesalahan berkaitan dengan autentikasi pada event. Cek pengaturan dan coba lagi"
},
"join": "Gabung",
"joinTooltip": "Gabung di pertemuan",
"nextMeeting": "Pertemuan Berikutnya",
"noEvents": "Belum ada event tersedia.",
"ongoingMeeting": "Pertemuan yang sedang berjalan",
"permissionButton": "Buka Pengaturan",
"permissionMessage": "Setelan permisi diperlukan untuk melihat pertemuan.",
"refresh": "Muat ulang",
"today": "Hari ini"
},
"chat": {
"error": "Error: your message was not sent. Reason: {{error}}",
"fieldPlaceHolder": "Type your message here",
"messageTo": "Private message to {{recipient}}",
"messagebox": "Type a message",
"nickname": {
"popover": "Choose a nickname",
"title": "Enter a nickname to use chat",
"titleWithPolls": "Enter a nickname to use chat"
},
"noMessagesMessage": "There are no messages in the meeting yet. Start a conversation here!",
"privateNotice": "Private message to {{recipient}}",
"title": "Chat",
"titleWithPolls": "Chat",
"you": "you"
},
"chromeExtensionBanner": {
"buttonText": "Install Chrome Extension",
"dontShowAgain": "Dont show me this again",
"installExtensionText": "Install the extension for Google Calendar and Office 365 integration"
},
"connectingOverlay": {
"joiningRoom": "Connecting you to your meeting..."
},
"connection": {
"ATTACHED": "Attached",
"AUTHENTICATING": "Authenticating",
"AUTHFAIL": "Authentication failed",
"CONNECTED": "Connected",
"CONNECTING": "Connecting",
"CONNFAIL": "Connection failed",
"DISCONNECTED": "Disconnected",
"DISCONNECTING": "Disconnecting",
"ERROR": "Error",
"FETCH_SESSION_ID": "Obtaining session-id...",
"GET_SESSION_ID_ERROR": "Get session-id error: {{code}}",
"GOT_SESSION_ID": "Obtaining session-id... Done",
"LOW_BANDWIDTH": "Video for {{displayName}} has been turned off to save bandwidth"
},
"connectionindicator": {
"address": "Address:",
"bandwidth": "Estimated bandwidth:",
"bitrate": "Bitrate:",
"bridgeCount": "Server count: ",
"connectedTo": "Connected to:",
"framerate": "Frame rate:",
"less": "Show less",
"localaddress": "Local address:",
"localaddress_plural": "Local addresses:",
"localport": "Local port:",
"localport_plural": "Local ports:",
"more": "Show more",
"packetloss": "Packet loss:",
"quality": {
"good": "Good",
"inactive": "Inactive",
"lost": "Lost",
"nonoptimal": "Nonoptimal",
"poor": "Poor"
},
"remoteaddress": "Remote address:",
"remoteaddress_plural": "Remote addresses:",
"remoteport": "Remote port:",
"remoteport_plural": "Remote ports:",
"resolution": "Resolution:",
"status": "Connection:",
"transport": "Transport:",
"transport_plural": "Transports:"
},
"dateUtils": {
"earlier": "Earlier",
"today": "Today",
"yesterday": "Yesterday"
},
"deepLinking": {
"appNotInstalled": "You need the {{app}} mobile app to join this meeting on your phone.",
"description": "Nothing happened? We tried launching your meeting in the {{app}} desktop app. Try again or launch it in the {{app}} web app.",
"descriptionWithoutWeb": "Nothing happened? We tried launching your meeting in the {{app}} desktop app.",
"downloadApp": "Download the app",
"launchWebButton": "Launch in web",
"openApp": "Continue to the app",
"title": "Launching your meeting in {{app}}...",
"tryAgainButton": "Try again in desktop"
},
"defaultLink": "e.g. {{url}}",
"defaultNickname": "ex. Jane Pink",
"deviceError": {
"cameraError": "Failed to access your camera",
"cameraPermission": "Error obtaining camera permission",
"microphoneError": "Failed to access your microphone",
"microphonePermission": "Error obtaining microphone permission"
},
"deviceSelection": {
"noPermission": "Permission not granted",
"previewUnavailable": "Preview unavailable",
"selectADevice": "Select a device",
"testAudio": "Play a test sound"
},
"dialOut": {
"statusMessage": "is now {{status}}"
},
"dialog": {
"Back": "Back",
"Cancel": "Cancel",
"IamHost": "I am the host",
"Ok": "Ok",
"Remove": "Remove",
"Share": "Share",
"Submit": "Submit",
"WaitForHostMsg": "The conference has not yet started. If you are the host then please authenticate. Otherwise, please wait for the host to arrive.",
"WaitingForHost": "Waiting for the host ...",
"Yes": "Yes",
"accessibilityLabel": {
"liveStreaming": "Live Stream"
},
"allow": "Allow",
"alreadySharedVideoMsg": "Another participant is already sharing a video. This conference allows only one shared video at a time.",
"alreadySharedVideoTitle": "Only one shared video is allowed at a time",
"applicationWindow": "Application window",
"cameraConstraintFailedError": "Your camera does not satisfy some of the required constraints.",
"cameraNotFoundError": "Camera was not found.",
"cameraNotSendingData": "We are unable to access your camera. Please check if another application is using this device, select another device from the settings menu or try to reload the application.",
"cameraNotSendingDataTitle": "Unable to access camera",
"cameraPermissionDeniedError": "You have not granted permission to use your camera. You can still join the conference but others won't see you. Use the camera button in the address bar to fix this.",
"cameraUnknownError": "Cannot use camera for an unknown reason.",
"cameraUnsupportedResolutionError": "Your camera does not support required video resolution.",
"close": "Close",
"conferenceDisconnectMsg": "You may want to check your network connection. Reconnecting in {{seconds}} sec...",
"conferenceDisconnectTitle": "You have been disconnected.",
"conferenceReloadMsg": "We're trying to fix this. Reconnecting in {{seconds}} sec...",
"conferenceReloadTitle": "Unfortunately, something went wrong.",
"confirm": "Confirm",
"confirmNo": "No",
"confirmYes": "Yes",
"connectError": "Oops! Something went wrong and we couldn't connect to the conference.",
"connectErrorWithMsg": "Oops! Something went wrong and we couldn't connect to the conference: {{msg}}",
"connecting": "Connecting",
"contactSupport": "Contact support",
"copy": "Copy",
"dismiss": "Dismiss",
"displayNameRequired": "Hi! Whats your name?",
"done": "Done",
"enterDisplayName": "Enter your name here",
"error": "Error",
"externalInstallationMsg": "You need to install our desktop sharing extension.",
"externalInstallationTitle": "Extension required",
"goToStore": "Go to the webstore",
"gracefulShutdown": "Our service is currently down for maintenance. Please try again later.",
"incorrectPassword": "Incorrect username or password",
"incorrectRoomLockPassword": "Incorrect password",
"inlineInstallExtension": "Install now",
"inlineInstallationMsg": "You need to install our desktop sharing extension.",
"internalError": "Oops! Something went wrong. The following error occurred: {{error}}",
"internalErrorTitle": "Internal error",
"kickMessage": "You can contact {{participantDisplayName}} for more details.",
"kickParticipantButton": "Kick",
"kickParticipantDialog": "Are you sure you want to kick this participant?",
"kickParticipantTitle": "Kick this participant?",
"kickTitle": "Ouch! {{participantDisplayName}} kicked you out of the meeting",
"liveStreaming": "Live Streaming",
"liveStreamingDisabledForGuestTooltip": "Guests can't start live streaming.",
"liveStreamingDisabledTooltip": "Start live stream disabled.",
"lockMessage": "Failed to lock the conference.",
"lockRoom": "Add meeting $t(lockRoomPasswordUppercase)",
"lockTitle": "Lock failed",
"logoutQuestion": "Are you sure you want to logout and stop the conference?",
"logoutTitle": "Logout",
"maxUsersLimitReached": "The limit for maximum number of participants has been reached. The conference is full. Please contact the meeting owner or try again later!",
"maxUsersLimitReachedTitle": "Maximum participants limit reached",
"micConstraintFailedError": "Your microphone does not satisfy some of the required constraints.",
"micNotFoundError": "Microphone was not found.",
"micNotSendingData": "Go to your computer's settings to unmute your mic and adjust its level",
"micNotSendingDataTitle": "Your mic is muted by your system settings",
"micPermissionDeniedError": "You have not granted permission to use your microphone. You can still join the conference but others won't hear you. Use the camera button in the address bar to fix this.",
"micUnknownError": "Cannot use microphone for an unknown reason.",
"muteEveryoneDialog": "Are you sure you want to mute everyone? You won't be able to unmute them, but they can unmute themselves at any time.",
"muteEveryoneElseDialog": "Once muted, you won't be able to unmute them, but they can unmute themselves at any time.",
"muteEveryoneElseTitle": "Mute everyone except {{whom}}?",
"muteEveryoneSelf": "yourself",
"muteEveryoneStartMuted": "Everyone starts muted from now on",
"muteEveryoneTitle": "Mute everyone?",
"muteParticipantBody": "You won't be able to unmute them, but they can unmute themselves at any time.",
"muteParticipantButton": "Mute",
"muteParticipantDialog": "Are you sure you want to mute this participant? You won't be able to unmute them, but they can unmute themselves at any time.",
"muteParticipantTitle": "Mute this participant?",
"passwordLabel": "The meeting has been locked by a participant. Please enter the $t(lockRoomPassword) to join.",
"passwordNotSupported": "Setting a meeting $t(lockRoomPassword) is not supported.",
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) not supported",
"passwordRequired": "$t(lockRoomPasswordUppercase) required",
"popupError": "Your browser is blocking pop-up windows from this site. Please enable pop-ups in your browser's security settings and try again.",
"popupErrorTitle": "Pop-up blocked",
"recording": "Recording",
"recordingDisabledForGuestTooltip": "Guests can't start recordings.",
"recordingDisabledTooltip": "Start recording disabled.",
"rejoinNow": "Rejoin now",
"remoteControlAllowedMessage": "{{user}} accepted your remote control request!",
"remoteControlDeniedMessage": "{{user}} rejected your remote control request!",
"remoteControlErrorMessage": "An error occurred while trying to request remote control permissions from {{user}}!",
"remoteControlRequestMessage": "Will you allow {{user}} to remotely control your desktop?",
"remoteControlShareScreenWarning": "Note that if you press \"Allow\" you will share your screen!",
"remoteControlStopMessage": "The remote control session ended!",
"remoteControlTitle": "Remote desktop control",
"removePassword": "Remove $t(lockRoomPassword)",
"removeSharedVideoMsg": "Are you sure you would like to remove your shared video?",
"removeSharedVideoTitle": "Remove shared video",
"reservationError": "Reservation system error",
"reservationErrorMsg": "Error code: {{code}}, message: {{msg}}",
"retry": "Retry",
"screenSharingAudio": "Share audio",
"screenSharingFailedToInstall": "Oops! Your screen sharing extension failed to install.",
"screenSharingFailedToInstallTitle": "Screen sharing extension failed to install",
"screenSharingFirefoxPermissionDeniedError": "Something went wrong while we were trying to share your screen. Please make sure that you have given us permission to do so. ",
"screenSharingFirefoxPermissionDeniedTitle": "Oops! We werent able to start screen sharing!",
"screenSharingPermissionDeniedError": "Oops! Something went wrong with your screen sharing extension permissions. Please reload and try again.",
"sendPrivateMessage": "You recently received a private message. Did you intend to reply to that privately, or you want to send your message to the group?",
"sendPrivateMessageCancel": "Send to the group",
"sendPrivateMessageOk": "Send privately",
"sendPrivateMessageTitle": "Send privately?",
"serviceUnavailable": "Service unavailable",
"sessTerminated": "Call terminated",
"shareVideoLinkError": "Please provide a correct link.",
"shareVideoTitle": "Share a video",
"shareYourScreen": "Share your screen",
"shareYourScreenDisabled": "Screen sharing disabled.",
"shareYourScreenDisabledForGuest": "Guests can't screen share.",
"startLiveStreaming": "Start live stream",
"startRecording": "Start recording",
"startRemoteControlErrorMessage": "An error occurred while trying to start the remote control session!",
"stopLiveStreaming": "Stop live stream",
"stopRecording": "Stop recording",
"stopRecordingWarning": "Are you sure you would like to stop the recording?",
"stopStreamingWarning": "Are you sure you would like to stop the live streaming?",
"streamKey": "Live stream key",
"thankYou": "Thank you for using {{appName}}!",
"token": "token",
"tokenAuthFailed": "Sorry, you're not allowed to join this call.",
"tokenAuthFailedTitle": "Authentication failed",
"transcribing": "Transcribing",
"unlockRoom": "Remove meeting $t(lockRoomPassword)",
"userPassword": "user password",
"yourEntireScreen": "Your entire screen"
},
"documentSharing": {
"title": "Shared Document"
},
"feedback": {
"average": "Average",
"bad": "Bad",
"detailsLabel": "Tell us more about it.",
"good": "Good",
"rateExperience": "Rate your meeting experience",
"veryBad": "Very Bad",
"veryGood": "Very Good"
},
"helpView": {
"header": "Help centre"
},
"incomingCall": {
"answer": "Answer",
"audioCallTitle": "Incoming call",
"decline": "Dismiss",
"productLabel": "from Jitsi Meet",
"videoCallTitle": "Incoming video call"
},
"info": {
"accessibilityLabel": "Show info",
"addPassword": "Add $t(lockRoomPassword)",
"cancelPassword": "Cancel $t(lockRoomPassword)",
"conferenceURL": "Link:",
"country": "Country",
"dialANumber": "To join your meeting, dial one of these numbers and then enter the pin.",
"dialInConferenceID": "PIN:",
"dialInNotSupported": "Sorry, dialing in is currently not supported.",
"dialInNumber": "Dial-in:",
"dialInSummaryError": "Error fetching dial-in info now. Please try again later.",
"dialInTollFree": "Toll Free",
"genericError": "Whoops, something went wrong.",
"inviteLiveStream": "To view the live stream of this meeting, click this link: {{url}}",
"invitePhone": "To join by phone instead, tap this: {{number}},,{{conferenceID}}#\n",
"invitePhoneAlternatives": "Looking for a different dial-in number?\nSee meeting dial-in numbers: {{url}}\n\n\nIf also dialing-in through a room phone, join without connecting to audio: {{silentUrl}}",
"inviteURLFirstPartGeneral": "You are invited to join a meeting.",
"inviteURLFirstPartPersonal": "{{name}} is inviting you to a meeting.\n",
"inviteURLSecondPart": "\nJoin the meeting:\n{{url}}\n",
"label": "Meeting info",
"liveStreamURL": "Live stream:",
"moreNumbers": "More numbers",
"noNumbers": "No dial-in numbers.",
"noPassword": "None",
"noRoom": "No room was specified to dial-in into.",
"numbers": "Dial-in Numbers",
"password": "$t(lockRoomPasswordUppercase):",
"title": "Share",
"tooltip": "Share link and dial-in info for this meeting"
},
"inlineDialogFailure": {
"msg": "We stumbled a bit.",
"retry": "Try again",
"support": "Support",
"supportMsg": "If this keeps happening, reach out to"
},
"inviteDialog": {
"alertText": "Failed to invite some participants.",
"header": "Invite",
"searchCallOnlyPlaceholder": "Enter phone number",
"searchPeopleOnlyPlaceholder": "Search for participants",
"searchPlaceholder": "Participant or phone number",
"send": "Send"
},
"keyboardShortcuts": {
"focusLocal": "Focus on your video",
"focusRemote": "Focus on another person's video",
"fullScreen": "View or exit full screen",
"keyboardShortcuts": "Keyboard shortcuts",
"localRecording": "Show or hide local recording controls",
"mute": "Mute or unmute your microphone",
"pushToTalk": "Push to talk",
"raiseHand": "Raise or lower your hand",
"showSpeakerStats": "Show speaker stats",
"toggleChat": "Open or close the chat",
"toggleFilmstrip": "Show or hide video thumbnails",
"toggleScreensharing": "Switch between camera and screen sharing",
"toggleShortcuts": "Show or hide keyboard shortcuts",
"videoMute": "Start or stop your camera",
"videoQuality": "Manage call quality"
},
"liveStreaming": {
"busy": "We're working on freeing streaming resources. Please try again in a few minutes.",
"busyTitle": "All streamers are currently busy",
"changeSignIn": "Switch accounts.",
"choose": "Choose a live stream",
"chooseCTA": "Choose a streaming option. You're currently logged in as {{email}}.",
"enterStreamKey": "Enter your YouTube live stream key here.",
"error": "Live Streaming failed. Please try again.",
"errorAPI": "An error occurred while accessing your YouTube broadcasts. Please try logging in again.",
"errorLiveStreamNotEnabled": "Live Streaming is not enabled on {{email}}. Please enable live streaming or log into an account with live streaming enabled.",
"expandedOff": "The live streaming has stopped",
"expandedOn": "The meeting is currently being streamed to YouTube.",
"expandedPending": "The live streaming is being started...",
"failedToStart": "Live Streaming failed to start",
"getStreamKeyManually": "We werent able to fetch any live streams. Try getting your live stream key from YouTube.",
"googlePrivacyPolicy": "Google Privacy Policy",
"invalidStreamKey": "Live stream key may be incorrect.",
"off": "Live Streaming stopped",
"offBy": "{{name}} stopped the live streaming",
"on": "Live Streaming",
"onBy": "{{name}} started the live streaming",
"pending": "Starting Live Stream...",
"serviceName": "Live Streaming service",
"signIn": "Sign in with Google",
"signInCTA": "Sign in or enter your live stream key from YouTube.",
"signOut": "Sign out",
"signedInAs": "You are currently signed in as:",
"start": "Start a live stream",
"streamIdHelp": "What's this?",
"unavailableTitle": "Live Streaming unavailable",
"youtubeTerms": "YouTube terms of services"
},
"localRecording": {
"clientState": {
"off": "Off",
"on": "On",
"unknown": "Unknown"
},
"dialogTitle": "Local Recording Controls",
"duration": "Duration",
"durationNA": "N/A",
"encoding": "Encoding",
"label": "LOR",
"labelToolTip": "Local recording is engaged",
"localRecording": "Local Recording",
"me": "Me",
"messages": {
"engaged": "Local recording engaged.",
"finished": "Recording session {{token}} finished. Please send the recorded file to the moderator.",
"finishedModerator": "Recording session {{token}} finished. The recording of the local track has been saved. Please ask the other participants to submit their recordings.",
"notModerator": "You are not the moderator. You cannot start or stop local recording."
},
"moderator": "Moderator",
"no": "No",
"participant": "Participant",
"participantStats": "Participant Stats",
"sessionToken": "Session Token",
"start": "Start Recording",
"stop": "Stop Recording",
"yes": "Yes"
},
"lockRoomPassword": "password",
"lockRoomPasswordUppercase": "Password",
"lonelyMeetingExperience": {
"button": "Invite others",
"youAreAlone": "You are the only one in the meeting"
},
"me": "me",
"notify": {
"OldElectronAPPTitle": "Security vulnerability!",
"connectedOneMember": "{{name}} joined the meeting",
"connectedThreePlusMembers": "{{name}} and {{count}} others joined the meeting",
"connectedTwoMembers": "{{first}} and {{second}} joined the meeting",
"disconnected": "disconnected",
"focus": "Conference focus",
"focusFail": "{{component}} not available - retry in {{ms}} sec",
"grantedTo": "Moderator rights granted to {{to}}!",
"invitedOneMember": "{{name}} has been invited",
"invitedThreePlusMembers": "{{name}} and {{count}} others have been invited",
"invitedTwoMembers": "{{first}} and {{second}} have been invited",
"kickParticipant": "{{kicked}} was kicked by {{kicker}}",
"me": "Me",
"moderator": "Moderator rights granted!",
"muted": "You have started the conversation muted.",
"mutedRemotelyDescription": "You can always unmute when you're ready to speak. Mute back when you're done to keep noise away from the meeting.",
"mutedRemotelyTitle": "You have been muted by {{participantDisplayName}}!",
"mutedTitle": "You're muted!",
"newDeviceAction": "Use",
"newDeviceAudioTitle": "New audio device detected",
"newDeviceCameraTitle": "New camera detected",
"oldElectronClientDescription1": "You appear to be using an old verion of the Jitsi Meet client which has known security vulnerabilities. Please make sure you update to our ",
"oldElectronClientDescription2": "latest build",
"oldElectronClientDescription3": " now!",
"passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) removed by another participant",
"passwordSetRemotely": "$t(lockRoomPasswordUppercase) set by another participant",
"raisedHand": "{{name}} would like to speak.",
"somebody": "Somebody",
"startSilentDescription": "Rejoin the meeting to enable audio",
"startSilentTitle": "You joined with no audio output!",
"suboptimalBrowserWarning": "We are afraid your meeting experience isn't going to be that great here. We are looking for ways to improve this, but until then please try using one of the <a href='{{recommendedBrowserPageLink}}' target='_blank'>fully supported browsers</a>.",
"suboptimalExperienceTitle": "Browser Warning",
"unmute": "Unmute"
},
"passwordDigitsOnly": "Up to {{number}} digits",
"passwordSetRemotely": "set by another participant",
"poweredby": "powered by",
"presenceStatus": {
"busy": "Busy",
"calling": "Calling...",
"connected": "Connected",
"connecting": "Connecting...",
"connecting2": "Connecting*...",
"disconnected": "Disconnected",
"expired": "Expired",
"ignored": "Ignored",
"initializingCall": "Initializing Call...",
"invited": "Invited",
"rejected": "Rejected",
"ringing": "Ringing..."
},
"profile": {
"setDisplayNameLabel": "Set your display name",
"setEmailInput": "Enter email",
"setEmailLabel": "Set your gravatar email",
"title": "Profile"
},
"raisedHand": "Would like to speak",
"recording": {
"authDropboxText": "Upload to Dropbox",
"availableSpace": "Available space: {{spaceLeft}} MB (approximately {{duration}} minutes of recording)",
"beta": "BETA",
"busy": "We're working on freeing recording resources. Please try again in a few minutes.",
"busyTitle": "All recorders are currently busy",
"error": "Recording failed. Please try again.",
"expandedOff": "Recording has stopped",
"expandedOn": "The meeting is currently being recorded.",
"expandedPending": "Recording is being started...",
"failedToStart": "Recording failed to start",
"fileSharingdescription": "Share recording with meeting participants",
"live": "LIVE",
"loggedIn": "Logged in as {{userName}}",
"off": "Recording stopped",
"offBy": "{{name}} stopped the recording",
"on": "Recording",
"onBy": "{{name}} started the recording",
"pending": "Preparing to record the meeting...",
"rec": "REC",
"serviceDescription": "Your recording will be saved by the recording service",
"serviceName": "Recording service",
"signIn": "Sign in",
"signOut": "Sign out",
"unavailable": "Oops! The {{serviceName}} is currently unavailable. We're working on resolving the issue. Please try again later.",
"unavailableTitle": "Recording unavailable"
},
"sectionList": {
"pullToRefresh": "Pull to refresh"
},
"settings": {
"calendar": {
"about": "The {{appName}} calendar integration is used to securely access your calendar so it can read upcoming events.",
"disconnect": "Disconnect",
"microsoftSignIn": "Sign in with Microsoft",
"signedIn": "Currently accessing calendar events for {{email}}. Click the Disconnect button below to stop accessing calendar events.",
"title": "Calendar"
},
"devices": "Devices",
"followMe": "Everyone follows me",
"language": "Language",
"loggedIn": "Logged in as {{name}}",
"microphones": "Microphones",
"moderator": "Moderator",
"more": "More",
"name": "Name",
"noDevice": "None",
"selectAudioOutput": "Audio output",
"selectCamera": "Camera",
"selectMic": "Microphone",
"speakers": "Speakers",
"startAudioMuted": "Everyone starts muted",
"startVideoMuted": "Everyone starts hidden",
"title": "Settings"
},
"settingsView": {
"advanced": "Advanced",
"alertOk": "OK",
"alertTitle": "Warning",
"alertURLText": "The entered server URL is invalid",
"buildInfoSection": "Build Information",
"conferenceSection": "Conference",
"disableCallIntegration": "Disable native call integration",
"disableP2P": "Disable Peer-To-Peer mode",
"displayName": "Display name",
"email": "Email",
"header": "Settings",
"profileSection": "Profile",
"serverURL": "Server URL",
"showAdvanced": "Show advanced settings",
"startWithAudioMuted": "Start with audio muted",
"startWithVideoMuted": "Start with video muted",
"version": "Version"
},
"share": {
"dialInfoText": "\n\n=====\n\nJust want to dial in on your phone?\n\n{{defaultDialInNumber}}Click this link to see the dial in phone numbers for this meeting\n{{dialInfoPageUrl}}",
"mainText": "Click the following link to join the meeting:\n{{roomUrl}}"
},
"speaker": "Speaker",
"speakerStats": {
"hours": "{{count}}h",
"minutes": "{{count}}m",
"name": "Name",
"seconds": "{{count}}s",
"speakerStats": "Speaker Stats",
"speakerTime": "Speaker Time"
},
"startupoverlay": {
"policyText": " ",
"title": "{{app}} needs to use your microphone and camera."
},
"suspendedoverlay": {
"rejoinKeyTitle": "Rejoin",
"text": "Press the <i>Rejoin</i> button to reconnect.",
"title": "Your video call was interrupted because this computer went to sleep."
},
"toolbar": {
"Settings": "Settings",
"accessibilityLabel": {
"Settings": "Toggle settings",
"audioOnly": "Toggle audio only",
"audioRoute": "Select the sound device",
"callQuality": "Manage video quality",
"cc": "Toggle subtitles",
"chat": "Toggle chat window",
"document": "Toggle shared document",
"download": "Download our apps",
"feedback": "Leave feedback",
"fullScreen": "Toggle full screen",
"hangup": "Leave the call",
"help": "Help",
"invite": "Invite people",
"kick": "Kick participant",
"localRecording": "Toggle local recording controls",
"lockRoom": "Toggle meeting password",
"moreActions": "Toggle more actions menu",
"moreActionsMenu": "More actions menu",
"moreOptions": "Show more options",
"mute": "Toggle mute audio",
"muteEveryone": "Mute everyone",
"pip": "Toggle Picture-in-Picture mode",
"privateMessage": "Send private message",
"profile": "Edit your profile",
"raiseHand": "Toggle raise hand",
"recording": "Toggle recording",
"remoteMute": "Mute participant",
"shareRoom": "Invite someone",
"shareYourScreen": "Toggle screenshare",
"sharedvideo": "Toggle video sharing",
"shortcuts": "Toggle shortcuts",
"show": "Show on stage",
"speakerStats": "Toggle speaker statistics",
"tileView": "Toggle tile view",
"toggleCamera": "Toggle camera",
"toggleFilmstrip": "Toggle filmstrip",
"videoblur": "Toggle video blur",
"videomute": "Toggle mute video"
},
"addPeople": "Add people to your call",
"audioOnlyOff": "Disable low bandwidth mode",
"audioOnlyOn": "Enable low bandwidth mode",
"audioRoute": "Select the sound device",
"authenticate": "Authenticate",
"callQuality": "Manage video quality",
"chat": "Open / Close chat",
"closeChat": "Close chat",
"documentClose": "Close shared document",
"documentOpen": "Open shared document",
"download": "Download our apps",
"enterFullScreen": "View full screen",
"enterTileView": "Enter tile view",
"exitFullScreen": "Exit full screen",
"exitTileView": "Exit tile view",
"feedback": "Leave feedback",
"hangup": "Leave",
"help": "Help",
"invite": "Invite people",
"login": "Login",
"logout": "Logout",
"lowerYourHand": "Lower your hand",
"moreActions": "More actions",
"moreOptions": "More options",
"mute": "Mute / Unmute",
"muteEveryone": "Mute everyone",
"noAudioSignalDesc": "If you did not purposely mute it from system settings or hardware, consider switching the device.",
"noAudioSignalDescSuggestion": "If you did not purposely mute it from system settings or hardware, consider switching to the suggested device.",
"noAudioSignalDialInDesc": "You can also dial-in using:",
"noAudioSignalDialInLinkDesc": "Dial-in numbers",
"noAudioSignalTitle": "There is no input coming from your mic!",
"noisyAudioInputDesc": "It sounds like your microphone is making noise, please consider muting or changing the device.",
"noisyAudioInputTitle": "Your microphone appears to be noisy!",
"openChat": "Open chat",
"pip": "Enter Picture-in-Picture mode",
"privateMessage": "Send private message",
"profile": "Edit your profile",
"raiseHand": "Raise / Lower your hand",
"raiseYourHand": "Raise your hand",
"shareRoom": "Invite someone",
"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 video",
"stopSubtitles": "Stop subtitles",
"stopvideoblur": "Disable background blur",
"talkWhileMutedPopup": "Trying to speak? You are muted.",
"tileViewToggle": "Toggle tile view",
"toggleCamera": "Toggle camera",
"videomute": "Start / Stop camera"
},
"transcribing": {
"ccButtonTooltip": "Start / Stop subtitles",
"error": "Transcribing failed. Please try again.",
"expandedLabel": "Transcribing is currently on",
"failedToStart": "Transcribing failed to start",
"labelToolTip": "The meeting is being transcribed",
"off": "Transcribing stopped",
"pending": "Preparing to transcribe the meeting...",
"start": "Start showing subtitles",
"stop": "Stop showing subtitles",
"tr": "TR"
},
"userMedia": {
"androidGrantPermissions": "Select <b><i>Allow</i></b> when your browser asks for permissions.",
"chromeGrantPermissions": "Select <b><i>Allow</i></b> when your browser asks for permissions.",
"edgeGrantPermissions": "Select <b><i>Yes</i></b> when your browser asks for permissions.",
"electronGrantPermissions": "Please grant permissions to use your camera and microphone",
"firefoxGrantPermissions": "Select <b><i>Share Selected Device</i></b> when your browser asks for permissions.",
"iexplorerGrantPermissions": "Select <b><i>OK</i></b> when your browser asks for permissions.",
"nwjsGrantPermissions": "Please grant permissions to use your camera and microphone",
"operaGrantPermissions": "Select <b><i>Allow</i></b> when your browser asks for permissions.",
"react-nativeGrantPermissions": "Select <b><i>Allow</i></b> when your browser asks for permissions.",
"safariGrantPermissions": "Select <b><i>OK</i></b> when your browser asks for permissions."
},
"videoSIPGW": {
"busy": "We're working on freeing resources. Please try again in a few minutes.",
"busyTitle": "The Room service is currently busy",
"errorAlreadyInvited": "{{displayName}} already invited",
"errorInvite": "Conference not established yet. Please try again later.",
"errorInviteFailed": "We're working on resolving the issue. Please try again later.",
"errorInviteFailedTitle": "Inviting {{displayName}} failed",
"errorInviteTitle": "Error inviting room",
"pending": "{{displayName}} has been invited"
},
"videoStatus": {
"audioOnly": "AUD",
"audioOnlyExpanded": "You are in low bandwidth mode. In this mode you will receive only audio and screen sharing.",
"callQuality": "Video Quality",
"hd": "HD",
"hdTooltip": "Viewing high definition video",
"highDefinition": "High definition",
"labelTooiltipNoVideo": "No video",
"labelTooltipAudioOnly": "Low bandwidth mode enabled",
"ld": "LD",
"ldTooltip": "Viewing low definition video",
"lowDefinition": "Low definition",
"onlyAudioAvailable": "Only audio is available",
"onlyAudioSupported": "We only support audio in this browser.",
"sd": "SD",
"sdTooltip": "Viewing standard definition video",
"standardDefinition": "Standard definition"
},
"videothumbnail": {
"domute": "Mute",
"domuteOthers": "Mute everyone else",
"flip": "Flip",
"kick": "Kick out",
"moderator": "Moderator",
"mute": "Participant is muted",
"muted": "Muted",
"remoteControl": "Start / Stop remote control",
"show": "Show on stage",
"videomute": "Participant has stopped the camera"
},
"welcomepage": {
"accessibilityLabel": {
"join": "Tap to join",
"roomname": "Enter room name"
},
"appDescription": "Go ahead, video chat with the whole team. In fact, invite everyone you know. {{app}} is a fully encrypted, 100% open source video conferencing solution that you can use all day, every day, for free — with no account needed.",
"audioVideoSwitch": {
"audio": "Voice",
"video": "Video"
},
"calendar": "Calendar",
"connectCalendarButton": "Connect your calendar",
"connectCalendarText": "Connect your calendar to view all your meetings in {{app}}. Plus, add {{provider}} meetings to your calendar and start them with one click.",
"enterRoomTitle": "Start a new meeting",
"getHelp": "Get help",
"go": "GO",
"goSmall": "GO",
"info": "Info",
"join": "CREATE / JOIN",
"privacy": "Privacy",
"recentList": "Recent",
"recentListDelete": "Delete",
"recentListEmpty": "Your recent list is currently empty. Chat with your team and you will find all your recent meetings here.",
"reducedUIText": "Welcome to {{app}}!",
"roomNameAllowedChars": "Meeting name should not contain any of these characters: ?, &, :, ', \", %, #.",
"roomname": "Enter room name",
"roomnameHint": "Enter the name or URL of the room you want to join. You may make a name up, just let the people you are meeting know it so that they enter the same name.",
"sendFeedback": "Send feedback",
"terms": "Terms",
"title": "Secure, fully featured, and completely free video conferencing"
}
}

View File

@@ -57,6 +57,7 @@
},
"noMessagesMessage": "Það eru ennþá engin skilaboð á fundinum. Byrjaðu umræðuna hér!",
"privateNotice": "Einkaskilaboð til {{recipient}}",
"sendButton": "Senda",
"title": "Spjall",
"titleWithPolls": "Spjall",
"you": "þú"
@@ -300,7 +301,7 @@
"veryGood": "Mjög góð"
},
"helpView": {
"header": "Hjálparmiðstöð"
"title": "Hjálparmiðstöð"
},
"incomingCall": {
"answer": "Svara",
@@ -399,6 +400,7 @@
"signedInAs": "Þú ert núna skráð/ur inn sem:",
"start": "Hefja beint streymi",
"streamIdHelp": "Hvað er þetta?",
"title": "Beint streymi",
"unavailableTitle": "Beint streymi er ekki tiltækt",
"youtubeTerms": "Þjónustuskilmálar YouTube"
},
@@ -517,6 +519,7 @@
"serviceName": "Upptökuþjónusta",
"signIn": "Skrá inn",
"signOut": "Skrá út",
"title": "Upptaka",
"unavailable": "Úbbs! {{serviceName}} er upptekið í augnablikinu. Við erum að vinna í þessu vandamáli. Reyndu aftur síðar.",
"unavailableTitle": "Upptaka er ekki tiltæk"
},

View File

@@ -78,12 +78,12 @@
},
"carmode": {
"actions": {
"selectSoundDevice": "Scegli audio"
"selectSoundDevice": "Scegli uscita audio"
},
"labels": {
"buttonLabel": "Modalità in auto",
"title": "Modalità guida sicura",
"videoStopped": "Il tuo video è fermo"
"buttonLabel": "Modalità Auto",
"title": "Modalità Auto",
"videoStopped": "Il tuo video è disabilitato"
}
},
"chat": {
@@ -143,7 +143,7 @@
"address": "Indirizzo:",
"audio_ssrc": "Audio SSRC:",
"bandwidth": "Banda stimata:",
"bitrate": "Bitrate:",
"bitrate": "Velocità:",
"bridgeCount": "Conteggio server:",
"codecs": "Codec (A/V): ",
"connectedTo": "Connesso a:",
@@ -278,13 +278,13 @@
"internalError": "Ops! Qualcosa è andato storto. Questo è l'errore: {{error}}",
"internalErrorTitle": "Errore interno",
"kickMessage": "Puoi contattare {{participantDisplayName}} per maggiori dettagli.",
"kickParticipantButton": "Escludi",
"kickParticipantDialog": "Sei sicuro di voler escludere questo partecipante?",
"kickParticipantTitle": "Escludi questo partecipante?",
"kickTitle": "Escluso dalla riunione",
"linkMeeting": "Link meeting",
"linkMeetingTitle": "Link meeting to Salesforce",
"liveStreaming": "Diretta",
"kickParticipantButton": "Espelli",
"kickParticipantDialog": "Sei sicuro di voler espellere questo partecipante?",
"kickParticipantTitle": "Espelli questo partecipante?",
"kickTitle": "Espulso dalla riunione",
"linkMeeting": "Collega la riunione",
"linkMeetingTitle": "Collega la riunione a Salesforce",
"liveStreaming": "Diretta streaming",
"liveStreamingDisabledBecauseOfActiveRecordingTooltip": "Impossibile durante la registrazione.",
"localUserControls": "Controlli dell'utente locale",
"lockMessage": "Impossibile bloccare la riunione.",
@@ -306,21 +306,21 @@
"moderationVideoLabel": "Permetti ai partecipanti di riattivare la videocamera",
"muteEveryoneDialog": "I partecipanti possono riaccenderli in quasiasi momento.",
"muteEveryoneDialogModerationOn": "I partecipanti possono fare richiesta di parlare in ogni momento.",
"muteEveryoneElseDialog": "Una volta spenti i microfoni non potrai riattivarli, ma loro potranno farlo in qualsiasi momento.",
"muteEveryoneElseTitle": "Spengo il microfono a tutti, eccetto a {{whom}}?",
"muteEveryoneElsesVideoDialog": "Una volta spente le videocamere non potrai riaccenderle, ma ogni partecipante potrà farlo in ogni momento.",
"muteEveryoneElsesVideoTitle": "Spengo tutte le videocamere, tranne a {{whom}}?",
"muteEveryoneElseDialog": "Una volta spenti i microfoni non potrai riattivarli, ma ogni partecipante potrà farlo in qualsiasi momento.",
"muteEveryoneElseTitle": "Spengo il microfono a tutti, tranne che a {{whom}}?",
"muteEveryoneElsesVideoDialog": "Una volta spente le videocamere non potrai riaccenderle, ma ogni partecipante potrà farlo in qualsiasi momento.",
"muteEveryoneElsesVideoTitle": "Spengo la videocamera a tutti, tranne che a {{whom}}?",
"muteEveryoneSelf": "tu",
"muteEveryoneStartMuted": "Tutti cominciano a microfono spento, d'adesso in avanti",
"muteEveryoneTitle": "Spengo i microfoni a tutti?",
"muteEveryonesVideoDialog": "Sei sicuro di voler spegnere le videocamere a tutti? Non potrai riaccenderle, ma ogni partecipante potrà farlo in ogni momento.",
"muteEveryoneTitle": "Spengo il microfono a tutti?",
"muteEveryonesVideoDialog": "Sei sicuro di voler spegnere le videocamere di tutti? Non potrai riaccenderle, ma ogni partecipante potrà farlo in qualsiasi momento.",
"muteEveryonesVideoDialogModerationOn": "I partecipanti possono fare richiesta di trasmettere video in ogni momento.",
"muteEveryonesVideoDialogOk": "Spegni",
"muteEveryonesVideoTitle": "Vuoi spegnere le videocamere di tutti?",
"muteEveryonesVideoTitle": "Spengo la videocamera a tutti?",
"muteParticipantBody": "Non sarai in grado di riattivare il loro microfono, ma loro potranno riattivarlo in qualsiasi momento.",
"muteParticipantButton": "Spegni audio",
"muteParticipantButton": "Silenzia",
"muteParticipantsVideoBody": "Una volta spenta la videocamera non potrai riaccenderla, ma lui potrà riattivarla in qualsiasi momento.",
"muteParticipantsVideoBodyModerationOn": "Non potrai riaccendere le videocamere, né potranno loro.",
"muteParticipantsVideoBodyModerationOn": "Non potrai riaccendere le videocamere, né loro potranno.",
"muteParticipantsVideoButton": "Spegni video",
"muteParticipantsVideoDialog": "Sei sicuro di voler spegnere la videocamera di questo partecipante? Lui potrà riattivarla in ogni momento.",
"muteParticipantsVideoDialogModerationOn": "Are you sure you want to turn off this participant's camera? You won't be able to turn the camera back on and neither will they.",
@@ -388,10 +388,10 @@
"shareYourScreen": "Condividi schermo",
"shareYourScreenDisabled": "Condivisione schermo disabilitata.",
"sharedVideoDialogError": "Errore: URL non valido",
"sharedVideoLinkPlaceholder": "Link YouTube o link video diretto",
"sharedVideoLinkPlaceholder": "Link YouTube o link diretto, al video",
"show": "Mostra",
"start": "Avvia ",
"startLiveStreaming": "Avvia diretta",
"startLiveStreaming": "Avvia diretta streaming",
"startRecording": "Inizia a registrare",
"startRemoteControlErrorMessage": "Si è verificato un errore nel tentativo di avviare la sessione di controllo remoto!",
"stopLiveStreaming": "Ferma la diretta streaming",
@@ -438,7 +438,7 @@
"search": "Cerca in GIPHY"
},
"helpView": {
"header": "Aiuto"
"title": "Aiuto"
},
"incomingCall": {
"answer": "Rispondi",
@@ -556,7 +556,7 @@
"signedInAs": "Sei attualmente collegato come:",
"start": "Inizia una diretta",
"streamIdHelp": "Cos'è questo?",
"title": "Diretta YouTube",
"title": "Diretta",
"unavailableTitle": "La diretta non è disponibile",
"youtubeTerms": "Condizioni di utilizzo di YouTube"
},
@@ -592,8 +592,8 @@
"nameField": "Scrivi il tuo nome",
"notificationLobbyAccessDenied": "{{targetParticipantName}} è stato respinto da {{originParticipantName}}",
"notificationLobbyAccessGranted": "{{targetParticipantName}} è stato autorizzato ad entrare da {{originParticipantName}}",
"notificationLobbyDisabled": "La sala d'attesa è stata disattivata da {{originParticipantName}}",
"notificationLobbyEnabled": "La sala d'attesa è stata attivata da {{originParticipantName}}",
"notificationLobbyDisabled": "{{originParticipantName}} ha aggiunto la sala d'attesa alla riunione",
"notificationLobbyEnabled": "{{originParticipantName}} ha tolto la sala d'attesa alla riunione",
"notificationTitle": "Sala d'attesa",
"passwordField": "Inserisci la password della riunione",
"passwordJoinButton": "Entra",
@@ -655,7 +655,7 @@
"focusFail": "{{component}} non disponibile - riprovo tra {{ms}} sec",
"gifsMenu": "GIPHY",
"groupTitle": "Notifiche",
"hostAskedUnmute": "Il moderatore ti dice di accendere il microfono",
"hostAskedUnmute": "Il moderatore ti chiede di accendere il microfono",
"invitedOneMember": "{{displayName}} è stato invitato",
"invitedThreePlusMembers": "Hai invitato {{name}} e altri {{count}}",
"invitedTwoMembers": "Hai invitato {{first}} e {{second}}",
@@ -686,7 +686,7 @@
"moderator": "Impostati i permessi di moderatore!",
"muted": "Hai iniziato la conversazione con audio disattivato.",
"mutedRemotelyDescription": "Puoi sempre attivare il microfono, quando vuoi parlare. Spegni il microfono quando hai finito, per non introdurre rumori di fondo nella riunione.",
"mutedRemotelyTitle": "Ti è stato disattivato l'audio da {{participantDisplayName}}!",
"mutedRemotelyTitle": "{{participantDisplayName}} ti ha spento il microfono",
"mutedTitle": "Hai audio disattivato!",
"newDeviceAction": "OK, usala",
"newDeviceAudioTitle": "Trovata nuova origine audio",
@@ -717,7 +717,7 @@
"suboptimalExperienceTitle": "Avviso sul browser",
"unmute": "Accendi microfono",
"videoMutedRemotelyDescription": "Puoi riaccenderla in qualsiasi momento.",
"videoMutedRemotelyTitle": "La videocamera ti è stata spenta da {{participantDisplayName}}!",
"videoMutedRemotelyTitle": "{{participantDisplayName}} ti ha spento la videocamera",
"videoUnmuteBlockedDescription": "Riattivazione video e condivisione schermo sono state momentaneamente bloccate per limiti di sistema.",
"videoUnmuteBlockedTitle": "Riattivazione video e condivisione schermo bloccate!",
"viewLobby": "Vedi sala d'attesa",
@@ -830,8 +830,8 @@
"initiated": "Chiamata avviata",
"joinAudioByPhone": "Collegati usando un telefono, per parlare",
"joinMeeting": "Collegati alla riunione",
"joinMeetingInLowBandwidthMode": "Entra con il solo audio",
"joinWithoutAudio": "Collegati senza poter parlare",
"joinMeetingInLowBandwidthMode": "Entra in modalità banda limitata",
"joinWithoutAudio": "Collegati senza poter parlare mai",
"keyboardShortcuts": "Attiva le scorciatoie da tastiera",
"linkCopied": "Collegamento copiato negli appunti",
"lookGood": "Sembra che il tuo microfono funzioni correttamente",
@@ -859,7 +859,7 @@
"ringing": "Sta suonando..."
},
"privacyView": {
"header": "Privacy"
"title": "Privacy"
},
"profile": {
"avatar": "avatar",
@@ -943,7 +943,7 @@
"security": {
"about": "Puoi aggiungere una $t(lockRoomPassword) alla riunione. I partecipanti dovranno fornire la $t(lockRoomPassword) per essere autorizzati a partecipare alla riunione.",
"aboutReadOnly": "I moderatori della riunione possono aggiungere $t(lockRoomPassword). I partecipanti dovranno fornire la $t(lockRoomPassword) per essere autorizzati a partecipare alla riunione.",
"insecureRoomNameWarning": "Il nome della riunione non è sicuro. Dei partecipanti indesiderati potrebbero unirsi alla riunione. Puoi proteggere l'accesso alla riunione col bottone sicurezza.",
"insecureRoomNameWarning": "Il nome della riunione non è sicuro. Dei partecipanti indesiderati potrebbero unirsi alla riunione. Puoi proteggere l'accesso alla riunione nelle Impostazioni di sicurezza.",
"title": "Impostazioni di sicurezza"
},
"settings": {
@@ -964,7 +964,7 @@
"incomingMessage": "Messaggio in arrivo",
"language": "Lingua",
"loggedIn": "Connesso come {{name}}",
"maxStageParticipants": "Numero massimo di partecipanti che possono essere aggiunti come oratori",
"maxStageParticipants": "Numero massimo video che possono essere fissati nella schemata",
"microphones": "Microfoni",
"moderator": "Moderatore",
"more": "Mostra di più",
@@ -985,7 +985,7 @@
"startAudioMuted": "Tutti cominciano a microfono spento",
"startReactionsMuted": "Spegni i suoni delle reazioni a tutti",
"startVideoMuted": "Tutti cominciano a videocamera disattivata",
"talkWhileMuted": "Parla senza microfono",
"talkWhileMuted": "Parli a microfono spento",
"title": "Impostazioni"
},
"settingsView": {
@@ -1011,7 +1011,7 @@
"profileSection": "Profilo",
"serverURL": "URL del server",
"showAdvanced": "Impostazioni avanzate",
"startCarModeInLowBandwidthMode": "Avvia modalità auto con solo audio",
"startCarModeInLowBandwidthMode": "Avvia modalità Auto con solo audio",
"startWithAudioMuted": "Inizia con audio disattivato",
"startWithVideoMuted": "Inizia con video disattivato",
"terms": "Termini",
@@ -1050,7 +1050,7 @@
"title": "La video chiamata si è interrotta perché il computer è stato sospeso."
},
"termsView": {
"header": "Termini"
"title": "Termini"
},
"toggleTopPanelLabel": "Scheda superiore",
"toolbar": {
@@ -1062,7 +1062,7 @@
"boo": "Boo",
"breakoutRoom": "Sottogruppo (entra/esci)",
"callQuality": "Imposta qualità della chiamata",
"carmode": "Modalità in auto",
"carmode": "Modalità Auto",
"cc": "Sottotitoli",
"chat": "Conversazione",
"clap": "Applaudi",
@@ -1278,7 +1278,7 @@
},
"videothumbnail": {
"connectionInfo": "Info connessione",
"domute": "Disattiva audio",
"domute": "Silenzia",
"domuteOthers": "Disattiva audio di tutti gli altri",
"domuteVideo": "Disattiva video",
"domuteVideoOfOthers": "Disattiva video di tutti gli altri",
@@ -1289,12 +1289,12 @@
"moderator": "Moderatore",
"mute": "Il partecipante ha il microfono spento",
"muted": "Audio disattivato",
"pinToStage": "Aggiungi agli oratori",
"pinToStage": "Fissa questo video",
"remoteControl": "Controllo remoto",
"screenSharing": "Il partecipante sta condividendo lo schermo",
"show": "Mostra tra gli oratori",
"showSelfView": "Mostra tua immagine",
"unpinFromStage": "Togli",
"unpinFromStage": "Libera questo video",
"videoMuted": "Video disattivato",
"videomute": "Il partecipante ha la videocamera spenta"
},

View File

@@ -95,6 +95,7 @@
},
"noMessagesMessage": "このミーティングにはまだメッセージがありません。会話を開始してください!",
"privateNotice": "{{recipient}} へのプライベートメッセージ",
"sendButton": "送信",
"smileysPanel": "絵文字パネル",
"tabs": {
"chat": "チャット",
@@ -408,7 +409,7 @@
"veryGood": "とても良い"
},
"helpView": {
"header": "ヘルプセンター"
"title": "ヘルプセンター"
},
"incomingCall": {
"answer": "応答",
@@ -519,6 +520,7 @@
"signedInAs": "あなたは現在次の名前でログインしています:",
"start": "ライブ配信を開始する",
"streamIdHelp": "これは何ですか?",
"title": "ライブ配信",
"unavailableTitle": "ライブ配信は利用できません",
"youtubeTerms": "YouTube サービス利用規約"
},
@@ -557,6 +559,7 @@
"passwordJoinButton": "参加",
"reject": "却下",
"rejectAll": "全員却下",
"title": "ロビー",
"toggleLabel": "ロビーを有効"
},
"localRecording": {
@@ -686,13 +689,13 @@
"videoModeration": "ビデオを開始"
},
"close": "閉じる",
"header": "参加者",
"headings": {
"lobby": "ロビー ({{count}})",
"participantsList": "ミーティング参加者 ({{count}})",
"waitingLobby": "ロビーで待機中 ({{count}})"
},
"search": "参加者を検索"
"search": "参加者を検索",
"title": "参加者"
},
"passwordDigitsOnly": "最大 {{number}} 桁まで",
"passwordSetRemotely": "他の参加者によりセット",
@@ -711,7 +714,7 @@
"pollQuestion": "投票の質問",
"questionPlaceholder": "質問を入力してください",
"removeOption": "選択肢の削除",
"send": "作成"
"send": "送信"
},
"notification": {
"description": "投票するには投票タブを開いてください",
@@ -800,7 +803,7 @@
"ringing": "呼び出し中..."
},
"privacyView": {
"header": "プライバシー"
"title": "プライバシー"
},
"profile": {
"avatar": "アバター",
@@ -843,6 +846,7 @@
"sessionAlreadyActive": "このセッションはすでに録画またはライブ配信されています。",
"signIn": "サインイン",
"signOut": "サインアウト",
"title": "録画",
"unavailable": "おっと! {{serviceName}} は現在使用できません。私たちはこの問題の解決に取り組んでいます。後でもう一度お試しください。",
"unavailableTitle": "録画できません",
"uploadToCloud": "クラウドへアップロード"
@@ -853,8 +857,8 @@
"security": {
"about": "このミーティングに、$t(lockRoomPassword) を追加できます。参加者は $t(lockRoomPassword) を入力してこのミーティングへの参加が許可される必要があります。",
"aboutReadOnly": "モデレータの参加者は、このミーティングに $t(lockRoomPassword) を追加できます。参加者は $t(lockRoomPassword) を入力してこのミーティングへの参加が許可される必要があります。",
"header": "セキュリティオプション",
"insecureRoomNameWarning": "このルーム名は安全ではありません。不要な参加者がミーティングに参加するかもしれません。セキュリティボタンを利用してミーティングの安全確保を検討しましょう。"
"insecureRoomNameWarning": "このルーム名は安全ではありません。不要な参加者がミーティングに参加するかもしれません。セキュリティボタンを利用してミーティングの安全確保を検討しましょう。",
"title": "セキュリティオプション"
},
"settings": {
"calendar": {
@@ -949,7 +953,7 @@
"title": "このコンピューターがスリープ状態になったため、ビデオ通話が中断されました。"
},
"termsView": {
"header": "利用規約"
"title": "利用規約"
},
"toolbar": {
"Settings": "設定",

View File

@@ -73,6 +73,7 @@
},
"noMessagesMessage": "Ulac iznan akka tura deg temlilit. Bdu adiwenni da!",
"privateNotice": "Izen uslig i {{recipient}}",
"sendButton": "Azen",
"smileysPanel": "Afeggag n Emoji",
"tabs": {
"chat": "Asqerdec",
@@ -384,7 +385,7 @@
"veryGood": "Yelha maḍi"
},
"helpView": {
"header": "Agens n tallalt"
"title": "Agens n tallalt"
},
"incomingCall": {
"answer": "Tiririt",
@@ -531,6 +532,7 @@
"passwordJoinButton": "Semlil",
"reject": "Agi",
"rejectAll": "Agi akk",
"title": "Taxxamt n uraǧu",
"toggleLabel": "Rmed Lobby"
},
"localRecording": {
@@ -641,12 +643,12 @@
"videoModeration": "Bdan tavidyut-nsen"
},
"close": "Mdel",
"header": "Imttekkiyen",
"headings": {
"lobby": "Lobby ({{count}})",
"participantsList": "Imttekkiyen n temlilit ({{count}})",
"waitingLobby": "Araǧu deg lobby ({{count}})"
}
},
"title": "Imttekkiyen"
},
"passwordDigitsOnly": "Alamma d {{number}} yizwilen",
"passwordSetRemotely": "Yettusbadu sɣur yimttekki-nniḍen",
@@ -790,6 +792,7 @@
"serviceName": "Ameẓlu n usekles",
"signIn": "Qqen",
"signOut": "Ffeɣ",
"title": "Asekles",
"unavailable": "Suref-aɣ! {{serviceName}} akka tura ulac-it. Aql-aɣ nxeddem ad nefru ugur. Ma ulac aɣilif ɛreḍ tikkelt-nniḍen ticki.",
"unavailableTitle": "Ulac asekles",
"uploadToCloud": "Sali ɣer usigna"

View File

@@ -73,6 +73,7 @@
},
"noMessagesMessage": "아직 회의에 메시지가 없습니다. 여기서 대화를 시작하세요!",
"privateNotice": "{{recipient}}에게 보내는 비공개 메시지",
"sendButton": "전송",
"title": "채팅",
"titleWithPolls": "채팅",
"you": "당신"
@@ -324,7 +325,7 @@
"veryGood": "매우 좋음"
},
"helpView": {
"header": "지원 센터"
"title": "지원 센터"
},
"incomingCall": {
"answer": "응답",
@@ -421,6 +422,7 @@
"signedInAs": "현재 다음 계정으로 로그인되어 있습니다.",
"start": "실시간 스트리밍 시작",
"streamIdHelp": "도움말?",
"title": "실시간 스트리밍",
"unavailableTitle": "실시간 스트리밍을 사용할 수 없음",
"youtubeTerms": "YouTube 서비스 약관"
},
@@ -538,6 +540,7 @@
"serviceName": "녹화 서비스",
"signIn": "로그인",
"signOut": "로그아웃",
"title": "녹화",
"unavailable": "죄송합니다. {{serviceName}}은 현재 사용할 수 없습니다. 저희는 문제를 해결하기 위해 노력하고 있습니다. 나중에 다시 시도 해주십시오.",
"unavailableTitle": "녹화를 사용할 수 없습니다"
},

View File

@@ -57,6 +57,7 @@
},
"noMessagesMessage": "Susitikime dar nėra pranešimų. Pradėkite pokalbį čia!",
"privateNotice": "Asmeninis pranešimas {{gavėjui}}",
"sendButton": "Siųsti",
"title": "Pokalbis",
"titleWithPolls": "Pokalbis",
"you": "Jūs"
@@ -394,6 +395,7 @@
"signedInAs": "Jūs šiuo metu prisijungęs(-usi) kaip :",
"start": "Pradėti tiesioginę transliaciją",
"streamIdHelp": "Kas tai?",
"title": "Tiesioginis srautas",
"unavailableTitle": "Tiesioginė transliacija negalima"
},
"localRecording": {
@@ -511,6 +513,7 @@
"serviceName": "Įrašymo tarnyba",
"signIn": "Prisijungti",
"signOut": "Atsijungti",
"title": "Įrašoma",
"unavailable": "Oi! {{serviceName}} šiuo metu nėra pasiekiamas. Mes dirbame, kad išspręsti šią problemą. Pabandykite dar kartą vėliau.",
"unavailableTitle": "Įrašas negalimas"
},

View File

@@ -57,6 +57,7 @@
},
"noMessagesMessage": "Sapulcē pagaidām nav nevienas ziņas. Uzsāciet saraksti!",
"privateNotice": "Privāta ziņa/paziņojums lietotājam {{recipient}}",
"sendButton": "Nosūtīt",
"title": "Tērzēšana",
"titleWithPolls": "Tērzēšana",
"you": "mans vārds"
@@ -230,7 +231,7 @@
"passwordRequired": "Nepieciešams $t(lockRoomPasswordUppercase)",
"popupError": "Jūsu pārlūks bloķē šīs vietnes uznirstošos logus. Lūdzu, atļaujiet uznirstošos logus pārlūka drošības iestatījumos un mēģiniet vēlreiz.",
"popupErrorTitle": "Uznirstošais logs tika bloķēts",
"recording": "Ieraksts...",
"recording": "Ieraksts",
"recordingDisabledForGuestTooltip": "Viesi nevar ierakstīt",
"recordingDisabledTooltip": "Nav iespējams sākt ierakstu",
"rejoinNow": "Pieslēgties no jauna",
@@ -388,6 +389,7 @@
"signedInAs": "Pašlaik esat sistēmā ierakstījies kā:",
"start": "Sākt tiešraidi",
"streamIdHelp": "Kas tas?",
"title": "Tiešraide",
"unavailableTitle": "Tiešraide nav pieejama"
},
"localRecording": {
@@ -501,6 +503,7 @@
"serviceName": "Ieraksta pakalpojums",
"signIn": "Ierakstīties",
"signOut": "Izrakstīties",
"title": "Ieraksts",
"unavailable": "Pakalpojums {{serviceName}} pašreiz nepieejams. Tiek strādāts pie šīs ķibeles novēršanas. Lūdzu, vēlāk mēģiniet vēlreiz.",
"unavailableTitle": "Ieraksts nav iespējams"
},

View File

@@ -71,7 +71,8 @@
"titleWithPolls": "ചാറ്റ് ഉപയോഗിക്കുന്നതിന് ഒരു വിളിപ്പേര് നൽകുക"
},
"noMessagesMessage": "മീറ്റിംഗിൽ ഇതുവരെ മെസ്സേജുകളൊന്നുമില്ല. ഇവിടെ ഒരു സംഭാഷണം ആരംഭിക്കുക!",
"privateNotice": " {{recipient}}-ലേക്കുള്ള സ്വകാര്യ സന്ദേശം",
"privateNotice": "{{recipient}}-ലേക്കുള്ള സ്വകാര്യ സന്ദേശം",
"sendButton": "അയയ്ക്കുക",
"title": "ചാറ്റ്",
"titleWithPolls": "ചാറ്റ്",
"you": "നിങ്ങൾ"
@@ -328,7 +329,7 @@
"veryGood": "വളരെ നല്ലത്"
},
"helpView": {
"header": "സഹായകേന്ദ്രം"
"title": "സഹായകേന്ദ്രം"
},
"incomingCall": {
"answer": "കോളിന് മറുപടി നൽകുക",
@@ -429,6 +430,7 @@
"signedInAs": "You are currently signed in as:",
"start": "ഒരു തത്സമയ സ്ട്രീം ആരംഭിക്കുക",
"streamIdHelp": "എന്താണിത്?",
"title": "തത്സമയ സംപ്രേക്ഷണം",
"unavailableTitle": "തത്സമയ സ്ട്രീമിംഗ് ലഭ്യമല്ല",
"youtubeTerms": "യൂട്യൂബ് സേവനങ്ങളുടെ നിബന്ധനകൾ"
},
@@ -463,6 +465,7 @@
"passwordField": "മീറ്റിംഗ് പാസ്‌വേഡ് നൽകുക",
"passwordJoinButton": "ചേരുക",
"reject": "നിരസിക്കുക",
"title": "ലോബി",
"toggleLabel": "ലോബി പ്രവർത്തനക്ഷമമാക്കുക"
},
"localRecording": {
@@ -643,6 +646,7 @@
"serviceName": "റെക്കോർഡിംഗ് സേവനം ",
"signIn": "അകത്തുകയറുക",
"signOut": "പുറത്തിറങ്ങുക",
"title": "റെക്കോർഡിംഗ്",
"unavailable": "ക്ഷമിക്കണം {{serviceName}} നിലവിൽ ലഭ്യമല്ല. പ്രശ്നം പരിഹരിക്കുന്നതിനായി ഞങ്ങൾ പ്രവർത്തിക്കുന്നു. പിന്നീട് വീണ്ടും ശ്രമിക്കുക.",
"unavailableTitle": "റെക്കോർഡിംഗ് ലഭ്യമല്ല"
},

View File

@@ -57,6 +57,7 @@
},
"noMessagesMessage": "Энэ хуралд ямар ч зурвас байхгүй. Эндээс зурвасаа эхлүүл!",
"privateNotice": "Хувийн зурвас {{recipient}}",
"sendButton": "Илгээх",
"title": "Чат",
"titleWithPolls": "Чат",
"you": "чи"
@@ -394,6 +395,7 @@
"signedInAs": "Та одоо нэвтэрсэн байна:",
"start": "Шууд дамжуулалт эхлүүл",
"streamIdHelp": "Энэ юу вэ?",
"title": "Шууд дамжуулалт",
"unavailableTitle": "Шууд дамжуулалт боломжгүй"
},
"localRecording": {
@@ -511,6 +513,7 @@
"serviceName": "Бичлэгийн үйлчилгээ",
"signIn": "Нэвтрэх",
"signOut": "Гарах",
"title": "Бичлэг хийх",
"unavailable": "{{serviceName}} одоогоор ажиллахгүй байна. Бид асуудлыг шийдвэрлэхээр ажиллаж байна. Дараа дахин оролдож үзнэ үү.",
"unavailableTitle": "Бичлэг хийх боломжгүй"
},

View File

@@ -57,6 +57,7 @@
},
"noMessagesMessage": "अद्याप मीटिंगमध्ये कोणतेही संदेश नाहीत. येथे संभाषण सुरू करा!",
"privateNotice": "यांना खाजगी संदेश{{recipient}}",
"sendButton": "पाठवा",
"title": "गप्पा",
"titleWithPolls": "गप्पा",
"you": "आपण"
@@ -305,7 +306,7 @@
"veryGood": "खुप छान"
},
"helpView": {
"header": "मदत केंद्र"
"title": "मदत केंद्र"
},
"incomingCall": {
"answer": "उत्तर",
@@ -404,6 +405,7 @@
"signedInAs": "आपण सध्या म्हणून साइन इन केले आहे:",
"start": "थेट प्रवाह सुरू करा",
"streamIdHelp": "हे काय आहे?",
"title": "थेट प्रसारण",
"unavailableTitle": "थेट प्रवाह अनुपलब्ध",
"youtubeTerms": "YouTube सेवा अटी"
},
@@ -553,6 +555,7 @@
"serviceName": "रेकॉर्डिंग सेवा",
"signIn": "साइन इन करा",
"signOut": "साइन आउट करा",
"title": "मुद्रित करणे",
"unavailable": " अरेरे! {{serviceName}} currently सध्या अनुपलब्ध आहे. आम्ही या समस्येचे निराकरण करण्याचे काम करीत आहोत. कृपया पुन्हा प्रयत्न करा.",
"unavailableTitle": "रेकॉर्डिंग अनुपलब्ध"
},

View File

@@ -1,715 +0,0 @@
{
"addPeople": {
"add": "Inviter",
"countryNotSupported": "",
"countryReminder": "",
"disabled": "Du kan ikke invitere folk.",
"failedToAdd": "Klarte ikke å lagge til deltagere",
"footerText": "Å ringe ut er avskrudd",
"loading": "Søker etter folk og telefonnumre",
"loadingNumber": "Bekrefter telefonnummer",
"loadingPeople": "Søker etter folk å inviterte",
"noResults": "",
"noValidNumbers": "Skriv inn et telefonnummer",
"searchNumbers": "Legg til telefonnumre",
"searchPeople": "Søk etter folk",
"searchPeopleAndNumbers": "Søk etter folk eller legg til telefonnumrene deres",
"telephone": "Telefon: {{number}}",
"title": "Inviter folk til dette møtet"
},
"audioDevices": {
"bluetooth": "Blåtann",
"headphones": "Hodetelefoner",
"none": "Ingen lydenheter tilgjengelig",
"phone": "Telefon",
"speaker": "Høyttaler"
},
"audioOnly": {
"audioOnly": "Lav båndbredde"
},
"calendarSync": {
"addMeetingURL": "Legg til en møtelenke",
"confirmAddLink": "Ønsker du å legge til en Jitsi-lenke til denne hendelsen?",
"join": "Ta del",
"joinTooltip": "Ta del i møtet",
"nextMeeting": "neste møte",
"noEvents": "",
"ongoingMeeting": "pågående møte",
"permissionButton": "Åpne innstillinger",
"permissionMessage": "",
"refresh": "",
"today": "I dag"
},
"chat": {
"error": "",
"fieldPlaceHolder": "Skriv inn din melding her",
"messageTo": "Privat melding til {{recipient}}",
"messagebox": "Skriv en melding",
"nickname": {
"popover": "Velg et kallenavn",
"title": "",
"titleWithPolls": ""
},
"title": "",
"titleWithPolls": ""
},
"chromeExtensionBanner": {
"dontShowAgain": "Ikke vis meg dette igjen"
},
"connection": {
"ATTACHED": "Vedlagt",
"AUTHENTICATING": "Bekrefter",
"AUTHFAIL": "",
"CONNECTED": "Tilkoblet",
"CONNECTING": "Kobler til",
"CONNFAIL": "",
"DISCONNECTED": "Frakoblet",
"DISCONNECTING": "Kobler fra",
"ERROR": "Feil",
"FETCH_SESSION_ID": "Henter økt-ID…",
"GOT_SESSION_ID": "Henter økt-ID… Ferdig",
"RECONNECTING": ""
},
"connectionindicator": {
"address": "Adresse:",
"bandwidth": "Anslått båndbredde:",
"bitrate": "",
"bridgeCount": "",
"connectedTo": "Ansluttet til:",
"framerate": "",
"less": "Vis mindre",
"localaddress": "Lokal adresse:",
"localaddress_plural": "Lokale adresser:",
"localport": "Lokal port:",
"localport_plural": "Lokale porter:",
"more": "Vis mer",
"packetloss": "Pakketap:",
"quality": {
"good": "God",
"inactive": "Inaktiv",
"lost": "Tapt",
"nonoptimal": "Suboptimal",
"poor": "Dårlig"
},
"remoteaddress": "Fjernadresser:",
"remoteaddress_plural": "Fjernadresser:",
"remoteport": "",
"remoteport_plural": "",
"resolution": "Oppløsning:",
"status": "Tilknytning:",
"transport": "",
"transport_plural": "",
"turn": ""
},
"dateUtils": {
"earlier": "Tidligere",
"today": "I dag",
"yesterday": "I går"
},
"deepLinking": {
"downloadApp": "Last ned programmet",
"openApp": "Fortsett til programmet"
},
"defaultLink": "f.eks.",
"deviceError": {
"cameraError": "",
"cameraPermission": "",
"microphoneError": "",
"microphonePermission": ""
},
"deviceSelection": {
"noPermission": "Tilgang ikke innvilget",
"previewUnavailable": "Forhåndsvisning utilgjengelig",
"selectADevice": "Velg en enhet",
"testAudio": "Spill en testlyd"
},
"dialOut": {
"statusMessage": "er nå {{status}}"
},
"dialog": {
"Back": "Tilbake",
"Cancel": "Avbryt",
"IamHost": "Jeg er vertsskap",
"Ok": "OK",
"Remove": "Fjern",
"Share": "Del",
"Submit": "Send inn",
"WaitForHostMsg": "",
"WaitingForHost": "",
"Yes": "Ja",
"accessibilityLabel": {
"liveStreaming": ""
},
"allow": "Tillat",
"alreadySharedVideoMsg": "",
"alreadySharedVideoTitle": "",
"applicationWindow": "",
"cameraConstraintFailedError": "",
"cameraNotFoundError": "",
"cameraNotSendingData": "",
"cameraNotSendingDataTitle": "",
"cameraPermissionDeniedError": "",
"cameraUnknownError": "",
"cameraUnsupportedResolutionError": "",
"close": "",
"conferenceDisconnectMsg": "",
"conferenceDisconnectTitle": "Du har blitt frakoblet.",
"conferenceReloadMsg": "",
"conferenceReloadTitle": "",
"confirm": "Bekreft",
"confirmNo": "Nei",
"confirmYes": "Ja",
"connectError": "",
"connectErrorWithMsg": "",
"connecting": "Kobler til",
"contactSupport": "Kontakt brukerstøtte",
"copy": "Kopier",
"dismiss": "Forkast",
"displayNameRequired": "Hei. Hva heter du?",
"done": "Ferdig",
"enterDisplayName": "Skriv inn navnet ditt her",
"error": "Feil",
"externalInstallationMsg": "",
"externalInstallationTitle": "Programtillegg kreves",
"goToStore": "",
"gracefulShutdown": "",
"incorrectPassword": "",
"incorrectRoomLockPassword": "",
"inlineInstallExtension": "Installer nå",
"inlineInstallationMsg": "",
"internalError": "",
"internalErrorTitle": "",
"kickMessage": "",
"kickParticipantButton": "Kast ut",
"kickParticipantDialog": "Er du sikker på at du vil kaste ut denne deltageren?",
"kickParticipantTitle": "Kast ut denne deltageren?",
"kickTitle": "Oida. {{participantDisplayName}} kastet deg ut av møtet",
"liveStreaming": "",
"liveStreamingDisabledForGuestTooltip": "",
"liveStreamingDisabledTooltip": "",
"lockMessage": "Klarte ikke å låse konferansen.",
"lockRoom": "",
"lockTitle": "",
"logoutQuestion": "",
"logoutTitle": "Logg ut",
"maxUsersLimitReached": "",
"maxUsersLimitReachedTitle": "",
"micConstraintFailedError": "",
"micNotFoundError": "",
"micNotSendingData": "",
"micNotSendingDataTitle": "",
"micPermissionDeniedError": "",
"micUnknownError": "",
"muteEveryoneElseTitle": "Forstum alle unntatt {{whom}}?",
"muteEveryoneSelf": "deg selv",
"muteEveryoneStartMuted": "Alle starter forstummet fra nå av",
"muteEveryoneTitle": "Forstum alle?",
"muteParticipantBody": "Du vil ikke kunne oppheve forstumming av dem, men de kan oppheve forstumming selv når som helst.",
"muteParticipantButton": "Forstum",
"muteParticipantDialog": "",
"muteParticipantTitle": "",
"passwordLabel": "",
"passwordNotSupported": "",
"passwordNotSupportedTitle": "",
"passwordRequired": "",
"popupError": "",
"popupErrorTitle": "Oppsprett blokkert",
"recording": "",
"recordingDisabledForGuestTooltip": "",
"recordingDisabledTooltip": "",
"rejoinNow": "",
"remoteControlAllowedMessage": "",
"remoteControlDeniedMessage": "",
"remoteControlErrorMessage": "",
"remoteControlRequestMessage": "",
"remoteControlShareScreenWarning": "",
"remoteControlStopMessage": "",
"remoteControlTitle": "",
"removePassword": "Fjern",
"removeSharedVideoMsg": "",
"removeSharedVideoTitle": "Fjern delt video",
"reservationError": "",
"reservationErrorMsg": "",
"retry": "Prøv igjen",
"screenSharingAudio": "Del lyd",
"screenSharingFailedToInstall": "",
"screenSharingFailedToInstallTitle": "",
"screenSharingFirefoxPermissionDeniedError": "",
"screenSharingFirefoxPermissionDeniedTitle": "",
"screenSharingPermissionDeniedError": "",
"sendPrivateMessageCancel": "Send til gruppen",
"sendPrivateMessageOk": "Send privat",
"sendPrivateMessageTitle": "Send privat?",
"serviceUnavailable": "Tjenesten er utilgjengelig",
"sessTerminated": "",
"shareVideoLinkError": "",
"shareVideoTitle": "Del en video",
"shareYourScreen": "Del skjermen din",
"shareYourScreenDisabled": "Skjermdeling er avskrudd.",
"shareYourScreenDisabledForGuest": "",
"startLiveStreaming": "",
"startRecording": "Start opptak",
"startRemoteControlErrorMessage": "",
"stopLiveStreaming": "",
"stopRecording": "Stopp opptak",
"stopRecordingWarning": "",
"stopStreamingWarning": "",
"streamKey": "",
"thankYou": "Takk for at du bruker {{appName}}.",
"token": "symbol",
"tokenAuthFailed": "",
"tokenAuthFailedTitle": "",
"transcribing": "",
"unlockRoom": "",
"userPassword": "brukerpassord",
"yourEntireScreen": "Hele skjermen din"
},
"documentSharing": {
"title": "Delt dokument"
},
"feedback": {
"average": "Middels",
"bad": "Dårlig",
"detailsLabel": "Fortell oss om det.",
"good": "God",
"rateExperience": "Vurder din møteopplevelse",
"veryBad": "Veldig dårlig",
"veryGood": "Veldig god"
},
"incomingCall": {
"answer": "Svar",
"audioCallTitle": "",
"decline": "",
"productLabel": "",
"videoCallTitle": ""
},
"info": {
"accessibilityLabel": "Vis info",
"addPassword": "Legg til $t(lockRoomPassword)",
"cancelPassword": "Avbryt $t(lockRoomPassword)",
"conferenceURL": "Lenke:",
"country": "Land",
"dialANumber": "",
"dialInConferenceID": "",
"dialInNotSupported": "",
"dialInNumber": "",
"dialInSummaryError": "",
"dialInTollFree": "",
"genericError": "",
"inviteLiveStream": "",
"invitePhone": "",
"invitePhoneAlternatives": "",
"inviteURLFirstPartGeneral": "",
"inviteURLFirstPartPersonal": "",
"inviteURLSecondPart": "",
"label": "",
"liveStreamURL": "",
"moreNumbers": "Flere nummer",
"noNumbers": "",
"noPassword": "",
"noRoom": "",
"numbers": "",
"password": "",
"title": "Del",
"tooltip": ""
},
"inlineDialogFailure": {
"msg": "",
"retry": "Prøv igjen",
"support": "Brukerstøtte",
"supportMsg": ""
},
"inviteDialog": {
"alertText": "",
"header": "Inviter",
"searchCallOnlyPlaceholder": "",
"searchPeopleOnlyPlaceholder": "",
"searchPlaceholder": "",
"send": "Send"
},
"keyboardShortcuts": {
"focusLocal": "",
"focusRemote": "",
"fullScreen": "",
"keyboardShortcuts": "Tastatursnarveier",
"localRecording": "",
"mute": "",
"pushToTalk": "",
"raiseHand": "",
"showSpeakerStats": "",
"toggleChat": "",
"toggleFilmstrip": "",
"toggleScreensharing": "",
"toggleShortcuts": "",
"videoMute": ""
},
"liveStreaming": {
"busy": "",
"busyTitle": "",
"changeSignIn": "",
"choose": "",
"chooseCTA": "",
"enterStreamKey": "",
"error": "",
"errorAPI": "",
"errorLiveStreamNotEnabled": "",
"expandedOff": "",
"expandedOn": "",
"expandedPending": "",
"failedToStart": "",
"getStreamKeyManually": "",
"invalidStreamKey": "",
"off": "",
"on": "",
"pending": "",
"serviceName": "",
"signIn": "",
"signInCTA": "",
"signOut": "",
"signedInAs": "©",
"start": "",
"streamIdHelp": "",
"unavailableTitle": ""
},
"localRecording": {
"clientState": {
"off": "",
"on": "",
"unknown": ""
},
"dialogTitle": "",
"duration": "",
"durationNA": "",
"encoding": "",
"label": "",
"labelToolTip": "",
"localRecording": "",
"me": "",
"messages": {
"engaged": "",
"finished": "",
"finishedModerator": "",
"notModerator": ""
},
"moderator": "",
"no": "",
"participant": "",
"participantStats": "",
"sessionToken": "",
"start": "",
"stop": "",
"yes": ""
},
"lockRoomPassword": "",
"lockRoomPasswordUppercase": "",
"me": "",
"notify": {
"connectedOneMember": "",
"connectedThreePlusMembers": "",
"connectedTwoMembers": "",
"disconnected": "",
"focus": "",
"focusFail": "",
"grantedTo": "",
"invitedOneMember": "",
"invitedThreePlusMembers": "",
"invitedTwoMembers": "",
"kickParticipant": "",
"me": "",
"moderator": "",
"muted": "",
"mutedRemotelyDescription": "",
"mutedRemotelyTitle": "",
"mutedTitle": "",
"newDeviceAction": "",
"newDeviceAudioTitle": "",
"newDeviceCameraTitle": "",
"passwordRemovedRemotely": "",
"passwordSetRemotely": "",
"raisedHand": "",
"somebody": "",
"startSilentDescription": "",
"startSilentTitle": "",
"suboptimalExperienceDescription": "",
"suboptimalExperienceTitle": "",
"unmute": ""
},
"passwordDigitsOnly": "",
"passwordSetRemotely": "",
"poweredby": "",
"presenceStatus": {
"busy": "",
"calling": "",
"connected": "",
"connecting": "",
"connecting2": "",
"disconnected": "",
"expired": "",
"ignored": "",
"initializingCall": "",
"invited": "",
"rejected": "",
"ringing": ""
},
"profile": {
"setDisplayNameLabel": "",
"setEmailInput": "",
"setEmailLabel": "",
"title": ""
},
"recording": {
"authDropboxText": "",
"availableSpace": "",
"beta": "",
"busy": "",
"busyTitle": "",
"error": "",
"expandedOff": "",
"expandedOn": "",
"expandedPending": "",
"failedToStart": "",
"fileSharingdescription": "",
"live": "",
"loggedIn": "",
"off": "",
"on": "",
"pending": "",
"rec": "",
"serviceDescription": "",
"serviceName": "",
"signIn": "",
"signOut": "",
"unavailable": "",
"unavailableTitle": ""
},
"sectionList": {
"pullToRefresh": ""
},
"settings": {
"calendar": {
"about": "",
"disconnect": "",
"microsoftSignIn": "",
"signedIn": "",
"title": ""
},
"devices": "",
"followMe": "",
"language": "",
"loggedIn": "",
"moderator": "",
"more": "",
"name": "",
"noDevice": "",
"selectAudioOutput": "",
"selectCamera": "",
"selectMic": "",
"startAudioMuted": "",
"startVideoMuted": "",
"title": ""
},
"settingsView": {
"alertOk": "",
"alertTitle": "",
"alertURLText": "",
"buildInfoSection": "",
"conferenceSection": "",
"displayName": "",
"email": "",
"header": "",
"profileSection": "",
"serverURL": "",
"startWithAudioMuted": "",
"startWithVideoMuted": "",
"version": ""
},
"share": {
"dialInfoText": "",
"mainText": ""
},
"speaker": "",
"speakerStats": {
"hours": "",
"minutes": "",
"name": "",
"seconds": "",
"speakerStats": "",
"speakerTime": ""
},
"startupoverlay": {
"policyText": "",
"title": ""
},
"suspendedoverlay": {
"rejoinKeyTitle": "",
"text": "",
"title": ""
},
"toolbar": {
"Settings": "",
"accessibilityLabel": {
"Settings": "",
"audioOnly": "",
"audioRoute": "",
"callQuality": "",
"cc": "",
"chat": "",
"document": "",
"feedback": "",
"fullScreen": "",
"hangup": "",
"invite": "",
"kick": "",
"localRecording": "",
"lockRoom": "",
"moreActions": "",
"moreActionsMenu": "",
"mute": "",
"pip": "",
"profile": "",
"raiseHand": "",
"recording": "",
"remoteMute": "",
"shareRoom": "",
"shareYourScreen": "",
"sharedvideo": "",
"shortcuts": "",
"show": "",
"speakerStats": "",
"tileView": "",
"toggleCamera": "",
"videoblur": "",
"videomute": ""
},
"addPeople": "",
"audioOnlyOff": "",
"audioOnlyOn": "",
"audioRoute": "",
"authenticate": "",
"callQuality": "",
"chat": "",
"closeChat": "",
"documentClose": "",
"documentOpen": "",
"enterFullScreen": "",
"enterTileView": "",
"exitFullScreen": "",
"exitTileView": "",
"feedback": "",
"hangup": "",
"invite": "",
"login": "",
"logout": "",
"lowerYourHand": "",
"moreActions": "",
"mute": "",
"openChat": "",
"pip": "",
"profile": "",
"raiseHand": "",
"raiseYourHand": "",
"shareRoom": "",
"sharedvideo": "",
"shortcuts": "",
"speakerStats": "",
"startScreenSharing": "",
"startSubtitles": "",
"startvideoblur": "",
"stopScreenSharing": "",
"stopSharedVideo": "",
"stopSubtitles": "",
"stopvideoblur": "",
"talkWhileMutedPopup": "",
"tileViewToggle": "",
"toggleCamera": "",
"videomute": ""
},
"transcribing": {
"ccButtonTooltip": "",
"error": "",
"expandedLabel": "",
"failedToStart": "",
"labelToolTip": "",
"off": "",
"pending": "",
"start": "",
"stop": "",
"tr": ""
},
"userMedia": {
"androidGrantPermissions": "",
"chromeGrantPermissions": "",
"edgeGrantPermissions": "",
"electronGrantPermissions": "",
"firefoxGrantPermissions": "",
"iexplorerGrantPermissions": "",
"nwjsGrantPermissions": "",
"operaGrantPermissions": "",
"react-nativeGrantPermissions": "",
"safariGrantPermissions": ""
},
"videoSIPGW": {
"busy": "",
"busyTitle": "",
"errorAlreadyInvited": "",
"errorInvite": "",
"errorInviteFailed": "",
"errorInviteFailedTitle": "",
"errorInviteTitle": "",
"pending": ""
},
"videoStatus": {
"audioOnly": "",
"audioOnlyExpanded": "",
"callQuality": "",
"hd": "",
"highDefinition": "",
"labelTooiltipNoVideo": "",
"labelTooltipAudioOnly": "",
"ld": "",
"lowDefinition": "",
"onlyAudioAvailable": "",
"onlyAudioSupported": "",
"sd": "",
"standardDefinition": ""
},
"videothumbnail": {
"domute": "",
"flip": "",
"kick": "",
"moderator": "",
"mute": "",
"muted": "",
"remoteControl": "",
"show": "",
"videomute": ""
},
"welcomepage": {
"accessibilityLabel": {
"join": "",
"roomname": ""
},
"appDescription": "",
"audioVideoSwitch": {
"audio": "",
"video": ""
},
"calendar": "",
"connectCalendarButton": "",
"connectCalendarText": "",
"enterRoomTitle": "",
"go": "",
"info": "",
"join": "",
"privacy": "",
"recentList": "",
"recentListDelete": "",
"recentListEmpty": "",
"reducedUIText": "",
"roomname": "",
"roomnameHint": "",
"sendFeedback": "",
"terms": "",
"title": ""
}
}

View File

@@ -93,6 +93,7 @@
},
"noMessagesMessage": "Er zijn nog geen berichten in de vergadering. Begin hier een gesprek!",
"privateNotice": "Privébericht aan {{recipient}}",
"sendButton": "Verzenden",
"smileysPanel": "Smiley paneel",
"tabs": {
"chat": "Gesprek",
@@ -375,7 +376,7 @@
"veryGood": "Zeer Goed"
},
"helpView": {
"header": "Helpcentrum"
"title": "Helpcentrum"
},
"incomingCall": {
"answer": "Beantwoorden",
@@ -480,6 +481,7 @@
"signedInAs": "U bent momenteel aangemeld als:",
"start": "Een livestream starten",
"streamIdHelp": "Wat is dit?",
"title": "Livestream",
"unavailableTitle": "Livestreamen niet beschikbaar",
"youtubeTerms": "Servicevoorwaarden YouTube"
},
@@ -519,6 +521,7 @@
"passwordJoinButton": "Deelnemen",
"reject": "Afwijzen",
"rejectAll": "Allen afwijzen",
"title": "Lobby",
"toggleLabel": "Lobby inschakelen"
},
"localRecording": {
@@ -639,13 +642,13 @@
"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"
"search": "Zoek deelnemers",
"title": "Deelnemers"
},
"passwordDigitsOnly": "Maximaal {{number}} cijfers",
"passwordSetRemotely": "ingesteld door een andere deelnemer",
@@ -739,7 +742,7 @@
"ringing": "Gaat over..."
},
"privacyView": {
"header": "Privacy"
"title": "Privacy"
},
"profile": {
"setDisplayNameLabel": "Uw weergavenaam instellen",
@@ -774,6 +777,7 @@
"serviceName": "Opnameservice",
"signIn": "Aanmelden",
"signOut": "Afmelden",
"title": "Opnemen",
"unavailable": "Oeps! {{serviceName}} is momenteel niet beschikbaar. Er wordt aan een oplossing gewerkt. Probeer het later opnieuw.",
"unavailableTitle": "Opname niet beschikbaar"
},

View File

@@ -95,6 +95,7 @@
},
"noMessagesMessage": "I a pas cap de messatge dins la conferéncia pel moment. Començat una conversacion aquí!",
"privateNotice": "Messatge privat per {{recipient}}",
"sendButton": "Mandar",
"smileysPanel": "Panèl dEmoji",
"tabs": {
"chat": "Messatjariá",
@@ -407,7 +408,7 @@
"veryGood": "Fòrça bona"
},
"helpView": {
"header": "Centre dajuda"
"title": "Centre dajuda"
},
"incomingCall": {
"answer": "Uèi",
@@ -518,6 +519,7 @@
"signedInAs": "Sètz connectat coma:",
"start": "Aviar una difusion en dirècte",
"streamIdHelp": "Ques aquò?",
"title": "Difusion en dirècte",
"unavailableTitle": "Difusion en dirècte indisponibla",
"youtubeTerms": "Condicions dutilizacion de YouTube"
},
@@ -556,6 +558,7 @@
"passwordJoinButton": "Rejónher",
"reject": "Regetar",
"rejectAll": "Tot regetar",
"title": "Sala d'espèra",
"toggleLabel": "Activar la sala d'espèra"
},
"localRecording": {
@@ -685,13 +688,13 @@
"videoModeration": "Aviar lor vidèo"
},
"close": "Tancar",
"header": "Participants",
"headings": {
"lobby": "Sala despèra ({{count}})",
"participantsList": "Participants de la conferéncia ({{count}})",
"waitingLobby": "Dins la sala d'espèra ({{count}})"
},
"search": "Cercar participants"
"search": "Cercar participants",
"title": "Participants"
},
"passwordDigitsOnly": "Fins a {{number}} chifras",
"passwordSetRemotely": "causit per qualqu'un mai",
@@ -799,7 +802,7 @@
"ringing": "A sonar…"
},
"privacyView": {
"header": "Confidencialitat"
"title": "Confidencialitat"
},
"profile": {
"avatar": "avatar",
@@ -842,6 +845,7 @@
"sessionAlreadyActive": "Aquesta session es ja en cors denregistrament o en difusion en dirèct.",
"signIn": "Connexion",
"signOut": "Se desconnectar",
"title": "Enregistrament",
"unavailable": "Ops! Lo {{serviceName}} es pas disponible pel moment. Sèm a reglar aqueste problèma. Mercés de tornar ensajar mai tard.",
"unavailableTitle": "Enregistrament indisponible",
"uploadToCloud": "Enviar al cloud"
@@ -948,7 +952,7 @@
"title": "Vòstra conferéncia vidèo es estada arrestada perque vòstre ordenador se botèt en velha."
},
"termsView": {
"header": "Acòrds"
"title": "Acòrds"
},
"toolbar": {
"Settings": "Paramètres",

View File

@@ -83,7 +83,7 @@
},
"labels": {
"buttonLabel": "Tryb samochodowy",
"title": "Bezpieczny tryb jazdy",
"title": "Tryb samochodowy",
"videoStopped": "Twój film jest zatrzymany"
}
},
@@ -104,6 +104,7 @@
},
"noMessagesMessage": "Aktualnie brak wiadomości w tym spotkaniu. Rozpocznij konwersację!",
"privateNotice": "Prywatna wiadomość do {{recipient}}",
"sendButton": "Wyślij",
"smileysPanel": "Panel emoji",
"tabs": {
"chat": "Chat",
@@ -435,7 +436,7 @@
"search": "Szukaj GIPHY"
},
"helpView": {
"header": "Centrum pomocy"
"title": "Centrum pomocy"
},
"incomingCall": {
"answer": "Odbierz",
@@ -547,6 +548,7 @@
"signedInAs": "Jesteś obecnie zalogowany jako:",
"start": "Rozpocznij transmisję na żywo",
"streamIdHelp": "Co to jest?",
"title": "Transmisja na żywo",
"unavailableTitle": "Transmisja na żywo jest niedostępna",
"youtubeTerms": "Warunki użytkowania YouTube"
},
@@ -589,6 +591,7 @@
"passwordJoinButton": "Dołącz",
"reject": "Odrzuć",
"rejectAll": "Odrzuć wszystkich",
"title": "Lobby",
"toggleLabel": "Włącz / Wyłącz lobby"
},
"localRecording": {
@@ -731,13 +734,13 @@
"videoModeration": "Włącz kamerę"
},
"close": "Zamknij",
"header": "Uczestnicy",
"headings": {
"lobby": "Lobby ({{count}})",
"participantsList": "Obecnych ({{count}})",
"waitingLobby": "Oczekujących ({{count}})"
},
"search": "Wyszukaj uczestników"
"search": "Wyszukaj uczestników",
"title": "Uczestnicy"
},
"passwordDigitsOnly": "Do {{number}} cyfr",
"passwordSetRemotely": "Ustawione przez innego uczestnika",
@@ -847,7 +850,7 @@
"ringing": "Dzwonek..."
},
"privacyView": {
"header": "Prywatność"
"title": "Prywatność"
},
"profile": {
"avatar": "awatar",
@@ -919,6 +922,7 @@
"signIn": "Zaloguj się",
"signOut": "Wyloguj się",
"surfaceError": "Proszę wybrać aktualną zakładkę.",
"title": "Nagrywanie",
"unavailable": "Ups! {{serviceName}} w tej chwili niedostępny. Próbujemy rozwiązać ten problem. Spróbuj ponownie później.",
"unavailableTitle": "Nagrywanie niedostępne",
"uploadToCloud": "Prześlij do chmury"
@@ -930,8 +934,8 @@
"security": {
"about": "Możesz dodać $t(lockRoomPassword) do spotkania. Uczestnicy będą musieli wprowadzić $t(lockRoomPassword) przed dołączeniem do spotkania.",
"aboutReadOnly": "Uczestnicy posiadający uprawnienia do moderacji mogą ustawić $t(lockRoomPassword) do spotkania. Uczestnicy będą musieli wprowadzić $t(lockRoomPassword) zanim zostaną dołączeni do spotkania.",
"header": "Opcje zabezpieczeń",
"insecureRoomNameWarning": "Nazwa pokoju nie jest bezpieczna. Niepowołaniu uczestnicy mogą dołączyć do spotkania. Proszę rozważyć ustawienie hasła spotkania używając przycisku Opcje zabezpieczeń."
"insecureRoomNameWarning": "Nazwa pokoju nie jest bezpieczna. Niepowołaniu uczestnicy mogą dołączyć do spotkania. Proszę rozważyć ustawienie hasła spotkania używając przycisku Opcje zabezpieczeń.",
"title": "Opcje zabezpieczeń"
},
"settings": {
"buttonLabel": "Ustawienia",
@@ -1036,7 +1040,7 @@
"title": "Twoja rozmowa wideo została przerwana, ponieważ komputer zasnął."
},
"termsView": {
"header": "Warunki"
"title": "Warunki"
},
"toggleTopPanelLabel": "Przełącz górny panel",
"toolbar": {

View File

@@ -81,8 +81,8 @@
"selectSoundDevice": "Seleccionar dispositivo de som"
},
"labels": {
"buttonLabel": "Modo automóvel",
"title": "Modo automóvel",
"buttonLabel": "Modo de condução",
"title": "Modo de condução",
"videoStopped": "O seu vídeo está parado"
}
},
@@ -1011,7 +1011,7 @@
"profileSection": "Perfil",
"serverURL": "URL do servidor",
"showAdvanced": "Mostrar definições avançadas",
"startCarModeInLowBandwidthMode": "Iniciar o modo automóvel em modo de baixa largura de banda",
"startCarModeInLowBandwidthMode": "Iniciar o modo de condução em modo de baixa largura de banda",
"startWithAudioMuted": "Iniciar sem áudio",
"startWithVideoMuted": "Iniciar sem vídeo",
"terms": "Termos",
@@ -1062,7 +1062,7 @@
"boo": "Vaia",
"breakoutRoom": "Entrar/Sair salas instantâneas",
"callQuality": "Gerir a qualidade do vídeo",
"carmode": "Modo automóvel",
"carmode": "Modo de condução",
"cc": "Mudar legendas",
"chat": "Abrir / Fechar chat",
"clap": "Aplausos",

View File

@@ -73,6 +73,7 @@
},
"noMessagesMessage": "Não há mensagens na reunião ainda. Inicie uma conversa aqui!",
"privateNotice": "Mensagem privada para {{recipient}}",
"sendButton": "Enviar",
"smileysPanel": "Painel de Emojis",
"tabs": {
"chat": "Conversa",
@@ -384,7 +385,7 @@
"veryGood": "Muito boa"
},
"helpView": {
"header": "Centro de ajuda"
"title": "Centro de ajuda"
},
"incomingCall": {
"answer": "Responder",
@@ -493,6 +494,7 @@
"signedInAs": "Você está conectado como:",
"start": "Iniciar uma transmissão ao vivo",
"streamIdHelp": "O que é isso?",
"title": "Transmissão ao vivo",
"unavailableTitle": "Transmissão ao vivo indisponível",
"youtubeTerms": "Termos de serviços do YouTube"
},
@@ -531,6 +533,7 @@
"passwordJoinButton": "Solicitar",
"reject": "Rejeitar",
"rejectAll": "Rejeitar todos",
"title": "Sala de espera",
"toggleLabel": "Habilitar sala de espera"
},
"localRecording": {
@@ -641,12 +644,12 @@
"videoModeration": "Ativarem seus vídeos"
},
"close": "Fechar",
"header": "Participantes",
"headings": {
"lobby": "Sala de espera ({{count}})",
"participantsList": "Participantes da reunião ({{count}})",
"waitingLobby": "Aguardando na sala de espera ({{count}})"
}
},
"title": "Participantes"
},
"passwordDigitsOnly": "Até {{number}} dígitos",
"passwordSetRemotely": "Definido por outro participante",
@@ -790,6 +793,7 @@
"serviceName": "Serviço de gravação",
"signIn": "Entrar",
"signOut": "Sair",
"title": "Gravando",
"unavailable": "Oops! O {{serviceName}} está indisponível. Estamos trabalhando para resolver o problema. Por favor, tente mais tarde.",
"unavailableTitle": "Gravação indisponível",
"uploadToCloud": "Enviar para a nuvem"

View File

@@ -57,6 +57,7 @@
},
"noMessagesMessage": "",
"privateNotice": "",
"sendButton": "Trimiteți",
"title": "Apel video",
"titleWithPolls": "Apel video",
"you": ""
@@ -400,6 +401,7 @@
"signedInAs": "Sunteți conectat ca:",
"start": "Începeți o transmitere live",
"streamIdHelp": "Ce înseamnă acest lucru?",
"title": "Transmitere live",
"unavailableTitle": "Transmitere live indisponibilă",
"youtubeTerms": "Termeni și condiții Youtube"
},
@@ -515,6 +517,7 @@
"serviceName": "Serviciu înregistrare",
"signIn": "Conectare",
"signOut": "Deconectare",
"title": "Înregistrare",
"unavailable": "Oops! Serviciul {{serviceName}} este indisponibil momentan. Se lucrează la remedierea acestei probleme. Vă rugam să încercați mai tărziu.",
"unavailableTitle": "Înregistrare indisponibilă"
},

View File

@@ -41,21 +41,21 @@
},
"breakoutRooms": {
"actions": {
"add": "Добавить переговорную",
"autoAssign": "Привязать к переговорной автоматически",
"add": "Добавить сессионный зал",
"autoAssign": "Привязать к залу автоматически",
"close": "Закрыть",
"join": "Присоединиться",
"leaveBreakoutRoom": "Покинуть переговорную",
"leaveBreakoutRoom": "Покинуть сессионный зал",
"more": "Больше",
"remove": "Удалить",
"sendToBreakoutRoom": "Отправить участника к:"
},
"defaultName": "Комната отдыха #{{index}}",
"defaultName": "Сессионный зал #{{index}}",
"mainRoom": "Главная комната",
"notifications": {
"joined": "Подключение к \"{{name}}\" комнате отдыха",
"joinedMainRoom": "Соединение с главной комнатой",
"joinedTitle": "Комнаты отдыха"
"joined": "Вход в сессионный зал \"{{name}}\"",
"joinedMainRoom": "Вход в главную комнату",
"joinedTitle": "Сессионные залы"
}
},
"calendarSync": {
@@ -103,6 +103,7 @@
},
"noMessagesMessage": "В конференции пока нет никаких сообщений. Начните разговор!",
"privateNotice": "Личное сообщение пользователю {{recipient}}",
"sendButton": "Отправить",
"smileysPanel": "Emoji панель",
"tabs": {
"chat": "Чат",
@@ -432,7 +433,7 @@
"search": "Поиск GIPHY"
},
"helpView": {
"header": "Справка"
"title": "Справка"
},
"incomingCall": {
"answer": "Ответ",
@@ -544,6 +545,7 @@
"signedInAs": "В настоящее время вы вошли в систему как:",
"start": "Начать трансляцию",
"streamIdHelp": "Что это?",
"title": "Трансляция",
"unavailableTitle": "Трансляция недоступна",
"youtubeTerms": "Условия использования YouTube"
},
@@ -586,6 +588,7 @@
"passwordJoinButton": "Присоединиться",
"reject": "Отказать",
"rejectAll": "Отказать всем",
"title": "Лобби",
"toggleLabel": "Включить лобби"
},
"localRecording": {
@@ -728,7 +731,8 @@
"participantsList": "Список участников ({{count}})",
"waitingLobby": "Ожидают в лобби ({{count}})"
},
"search": "Поиск участников"
"search": "Поиск участников",
"title": "Участники"
},
"passwordDigitsOnly": "До {{number}} цифр",
"passwordSetRemotely": "установлен другим участником",
@@ -838,7 +842,7 @@
"ringing": "Звоню. . ."
},
"privacyView": {
"header": "Конфиденциальность"
"title": "Конфиденциальность"
},
"profile": {
"avatar": "аватар",
@@ -899,6 +903,7 @@
"sessionAlreadyActive": "Этот сеанс уже записывается или транслируется в прямом эфире.",
"signIn": "Вход",
"signOut": "Выход",
"title": "Запись",
"unavailable": "Служба {{serviceName}} сейчас недоступна. Мы работаем над исправлением этой ошибки. Пожалуйста, попробуйте позже.",
"unavailableTitle": "Запись невозможна",
"uploadToCloud": "Загрузить в облако"
@@ -909,10 +914,11 @@
"security": {
"about": "Вы можете добавить к собранию $t(lockRoomPassword). Участникам необходимо будет предоставить $t(lockRoomPassword), прежде чем им будет разрешено присоединиться к собранию.",
"aboutReadOnly": "Участники-модераторы могут добавить к собранию $t(lockRoomPassword). Участникам необходимо будет предоставить $t(lockRoomPassword), прежде чем им будет разрешено присоединиться к собранию.",
"header": "Настройки безопасности",
"insecureRoomNameWarning": "Имя комнаты небезопасно. Нежелательные участники могут присоединиться к вашей конференции. Подумайте о том, чтобы защитить вашу встречу используя настройки безопасности."
"insecureRoomNameWarning": "Имя комнаты небезопасно. Нежелательные участники могут присоединиться к вашей конференции. Подумайте о том, чтобы защитить вашу встречу используя настройки безопасности.",
"title": "Настройки безопасности"
},
"settings": {
"buttonLabel": "Настройки",
"calendar": {
"about": "Интеграция с календарем {{appName}} используется для безопасного доступа к вашему календарю и синхронизации запланированных мероприятий.",
"disconnect": "Отключиться",
@@ -966,11 +972,16 @@
"displayName": "Отображаемое имя",
"email": "Email",
"header": "Настройки",
"help": "Помощь",
"links": "Ссылки",
"privacy": "Конфиденциальность",
"profileSection": "Профиль",
"serverURL": "Адрес сервера",
"showAdvanced": "Показать дополнительные настройки",
"startCarModeInLowBandwidthMode": "Включать упрощенный режим на ограниченном канале",
"startWithAudioMuted": "Начать с отключенным звуком",
"startWithVideoMuted": "Начать с отключенным видео",
"terms": "Условия",
"version": "Версия"
},
"share": {
@@ -1006,7 +1017,7 @@
"title": "Видеосвязь прервана. Причина: этот компьютер перешел в режим сна."
},
"termsView": {
"header": "Условия"
"title": "Условия"
},
"toolbar": {
"Settings": "Настройки",
@@ -1015,7 +1026,7 @@
"audioOnly": "Вкл/Выкл только звук",
"audioRoute": "Выбрать аудиоустройство",
"boo": "Бу",
"breakoutRoom": "Присоединиться/выйти из переговорной",
"breakoutRoom": "Войти/выйти из сессионного зала",
"callQuality": "Качество связи",
"carmode": "Упрощенный режим",
"cc": "Вкл/Выкл субтитры",
@@ -1025,6 +1036,7 @@
"document": "Закрыть общий документ",
"download": "Скачать приложение",
"embedMeeting": "Встроить встречу",
"endConference": "Завершить встречу для всех",
"expand": "Расширять",
"feedback": "Оставить отзыв",
"fullScreen": "Полноэкранный/оконный режим",
@@ -1088,13 +1100,15 @@
"clap": "Аплодисменты",
"closeChat": "Закрыть чат",
"closeReactionsMenu": "Закрыть меню реакций",
"disableReactionSounds": "",
"disableNoiseSuppression": "Выключить шумоподавление",
"disableReactionSounds": "Выключить звуки реакций",
"documentClose": "Закрыть общий документ",
"documentOpen": "Открыть общий документ",
"download": "Скачать приложение",
"e2ee": "Сквозное шифрование",
"embedMeeting": "Встроить встречу",
"enterFullScreen": "Полный экран",
"endConference": "Завершить встречу для всех",
"enterFullScreen": "На полный экран",
"enterTileView": "Общий план",
"exitFullScreen": "Полный экран",
"exitTileView": "Крупный план",
@@ -1103,9 +1117,9 @@
"hangup": "Выход",
"help": "Справка",
"invite": "Пригласить",
"joinBreakoutRoom": "Войти в переговорную",
"joinBreakoutRoom": "Войти в сессионный зал",
"laugh": "Смеяться",
"leaveBreakoutRoom": "Покинуть переговорную",
"leaveBreakoutRoom": "Покинуть сессионный зал",
"leaveConference": "Покинуть встречу",
"like": "Мне нравится",
"linkToSalesforce": "Ссылка на Salesforce",

View File

@@ -57,6 +57,7 @@
},
"noMessagesMessage": "Perunu messàgiu ancora in sa riunione. Cumintza una tzarrada inoghe!",
"privateNotice": "Messàgiu privadu a {{recipient}}",
"sendButton": "Imbia",
"title": "Tzarrada",
"titleWithPolls": "Tzarrada",
"you": "tue"
@@ -300,7 +301,7 @@
"veryGood": "Bona meda"
},
"helpView": {
"header": "Tzentru de agiudu"
"title": "Tzentru de agiudu"
},
"incomingCall": {
"answer": "Risponde",
@@ -399,6 +400,7 @@
"signedInAs": "Autenticatzione cun:",
"start": "Avia sa trasmissione in direta",
"streamIdHelp": "It'est custu?",
"title": "Trasmissione in direta",
"unavailableTitle": "Sa trasmissione in direta no est a disponimentu",
"youtubeTerms": "Cunditziones de servìtziu de YouTube"
},
@@ -517,6 +519,7 @@
"serviceName": "Servìtziu de registratzione",
"signIn": "Identìfica·ti",
"signOut": "Essi",
"title": "Registrende",
"unavailable": "{{serviceName}} no est a disponimentu. Semus traballende pro acontzare su problema. Torra·bi a proare a pustis.",
"unavailableTitle": "Sa registratzione no est a disponimentu"
},

View File

@@ -72,6 +72,7 @@
},
"noMessagesMessage": "V tejto konferencii ešte nie je žiadna správa. Začnite tu vašu diskusiu!",
"privateNotice": "Súkromná správa pre {{recipient}}",
"sendButton": "Poslať",
"title": "Chat",
"titleWithPolls": "Chat",
"you": "Vy"
@@ -330,7 +331,7 @@
"veryGood": "Veľmi dobrý"
},
"helpView": {
"header": "Centrum pomoci"
"title": "Centrum pomoci"
},
"incomingCall": {
"answer": "Odpovedať",
@@ -431,6 +432,7 @@
"signedInAs": "Ste prihlásený ako:",
"start": "Začať živé vysielanie",
"streamIdHelp": "Čo je to?",
"title": "Živé vysielanie",
"unavailableTitle": "Živé vysielanie nie je k dispozícií",
"youtubeTerms": "Podmienky poskytovania služby YouTube"
},
@@ -465,6 +467,7 @@
"passwordField": "Zadajte heslo do konferencie",
"passwordJoinButton": "Vstúpiť",
"reject": "Odmietnuť",
"title": "Čakáreň",
"toggleLabel": "Zapnúť čakáreň"
},
"localRecording": {
@@ -622,6 +625,7 @@
"serviceName": "Nahrávacia služba",
"signIn": "Prihlásiť",
"signOut": "Odhlásiť",
"title": "Nahrávanie",
"unavailable": "Oh! Služba {{serviceName}} nie je dostupná. Pracujeme na riešeni problému. Skúste prosím neskôr.",
"unavailableTitle": "Nahrávanie nie je dostupné"
},

View File

@@ -73,6 +73,7 @@
},
"noMessagesMessage": "V sestanku še ni sporočilo. Tukaj začnite pogovor!",
"privateNotice": "Zasebno sporočilo za uporabnika {{recipient}}",
"sendButton": "Pošlji",
"smileysPanel": "Čustvenčki",
"tabs": {
"chat": "Klepet",
@@ -384,7 +385,7 @@
"veryGood": "Zelo dobro"
},
"helpView": {
"header": "Center za pomoč"
"title": "Center za pomoč"
},
"incomingCall": {
"answer": "Odgovori",
@@ -493,6 +494,7 @@
"signedInAs": "Trenutno ste prijavljeni kot:",
"start": "Začni prenos v živo",
"streamIdHelp": "Kaj je to?",
"title": "Prenos v živo",
"unavailableTitle": "Prenos v živo ni na voljo",
"youtubeTerms": "Pogoji uporabe YouTube"
},
@@ -531,6 +533,7 @@
"passwordJoinButton": "Pridruži se",
"reject": "Zavrni",
"rejectAll": "Zavrni vse",
"title": "Predsoba",
"toggleLabel": "Omogoči predsobo"
},
"localRecording": {
@@ -641,12 +644,12 @@
"videoModeration": "Vklopi njihov video"
},
"close": "Zapri",
"header": "Udeleženci",
"headings": {
"lobby": "Predsoba ({{count}})",
"participantsList": "Seznam udeležencev ({{count}})",
"waitingLobby": "Čakajoči v predsobi ({{count}})"
}
},
"title": "Udeleženci"
},
"passwordDigitsOnly": "Do {{number}} številk",
"passwordSetRemotely": "nastavljeno s strani drugega uporabnika",
@@ -790,6 +793,7 @@
"serviceName": "Storitev snemanja",
"signIn": "Prijava",
"signOut": "Odjava",
"title": "Snemanje",
"unavailable": "Ups! {{ServiceName}} trenutno ni na voljo. Delamo na tem, da težavo odpravimo. Prosimo, poskusite kasneje.",
"unavailableTitle": "Snemanje ni mogoče",
"uploadToCloud": "Naloži v oblak"

View File

@@ -95,6 +95,7 @@
},
"noMessagesMessage": "Te takimi ska ende mesazhe. Nisni një bisedë këtu!",
"privateNotice": "Mesazh privat për {{recipient}}",
"sendButton": "Dërgoje",
"smileysPanel": "Panel emoji-sh",
"tabs": {
"chat": "Fjalosje",
@@ -408,7 +409,7 @@
"veryGood": "Shumë i Mirë"
},
"helpView": {
"header": "Qendër ndihme"
"title": "Qendër ndihme"
},
"incomingCall": {
"answer": "Përgjigjuni",
@@ -519,6 +520,7 @@
"signedInAs": "Aktualisht jeni i futur si:",
"start": "Nisni një transmetim të drejtpërdrejtë",
"streamIdHelp": është?",
"title": "Transmetim i Drejtpërdrejtë",
"unavailableTitle": "Transmetim i Drejtpërdrejtë jo i passhëm",
"youtubeTerms": "Kushte shërbimi YouTube"
},
@@ -557,6 +559,7 @@
"passwordJoinButton": "Hyni",
"reject": "Hidhe poshtë",
"rejectAll": "Hidhi poshtë të tërë",
"title": "Holl",
"toggleLabel": "Aktivizoni hollin"
},
"localRecording": {
@@ -686,13 +689,13 @@
"videoModeration": "Nis videon e vet"
},
"close": "Mbylle",
"header": "Pjesëmarrës",
"headings": {
"lobby": "Holli ({{count}})",
"participantsList": "Pjesëmarrës në takim ({{count}})",
"waitingLobby": "Duke pritur në holl ({{count}})"
},
"search": "Kërkoni te pjesëmarrësit"
"search": "Kërkoni te pjesëmarrësit",
"title": "Pjesëmarrës"
},
"passwordDigitsOnly": "Deri në {{number}} shifra",
"passwordSetRemotely": "Caktuar nga një tjetër pjesëmarrës",
@@ -800,7 +803,7 @@
"ringing": "Po i bihet ziles…"
},
"privacyView": {
"header": "Privatësi"
"title": "Privatësi"
},
"profile": {
"avatar": "avatar",
@@ -843,6 +846,7 @@
"sessionAlreadyActive": "Ky sesion po regjistrohet ose transmetohet drejtpërsëdrejti tashmë.",
"signIn": "Hyni",
"signOut": "Dilni",
"title": "Regjistrim",
"unavailable": "Hëm! {{serviceName}} sështë i passhëm aktualisht. Po punojmë për të zgjidhur problemin. Ju lutemi, riprovoni më vonë.",
"unavailableTitle": "Regjistrim jo i passhëm",
"uploadToCloud": "Ngarkojeni te reja"
@@ -853,8 +857,8 @@
"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.",
"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ë."
"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ë.",
"title": "Mundësi Sigurie"
},
"settings": {
"calendar": {
@@ -950,7 +954,7 @@
"title": "Thirrja juaj video u ndërpre, ngaqë kompjuteri u kalua në dremitje."
},
"termsView": {
"header": "Terma"
"title": "Terma"
},
"toolbar": {
"Settings": "Rregullime",

View File

@@ -373,6 +373,7 @@
"signedInAs": "",
"start": окрeни eмитовање уживо",
"streamIdHelp": "",
"title": "Емитовање уживо",
"unavailableTitle": ""
},
"localRecording": {
@@ -525,6 +526,7 @@
"serviceName": "",
"signIn": "",
"signOut": окрeнитe eмитовање уживо",
"title": "Снимањe",
"unavailable": "",
"unavailableTitle": ""
},

View File

@@ -6,30 +6,22 @@
"copyInvite": "Kopiera mötesinbjudan",
"copyLink": "Kopiera möteslänk",
"copyStream": "Kopiera livestreamlänk",
"countryNotSupported": "Vi stöder inte den här platsen ännu.",
"countryNotSupported": "Vi stöder inte det här landsnumret ännu.",
"countryReminder": "Ringer du till utlandsnummer? Börja alltid med landskoden.",
"defaultEmail": "Din mailadress",
"disabled": "Du kan inte bjuda in andra.",
"failedToAdd": "Kunde inte lägga till deltagare",
"footerText": "Utringningsfunktionen är avstängd.",
"googleEmail": "Google email",
"inviteMoreHeader": "Du är enda deltagaren i mötet",
"inviteMoreMailSubject": "Anslut till {{appName}} möte",
"inviteMorePrompt": "Bjud in fler personer",
"linkCopied": "Länk kopierad till utklipp",
"loading": "Söker efter personer och telefonnummer",
"loadingNumber": "Bekräftar telefonnummer",
"loadingPeople": "Söker efter personer att bjuda in",
"noResults": "Inga sökträffar",
"noValidNumbers": "Ange ett telefonnummer",
"outlookEmail": "Outlook email",
"phoneNumbers": "Telefonnummer",
"searchNumbers": "Lägg till telefonnummer",
"searchPeople": "Sök efter personer",
"searchPeopleAndNumbers": "Sök efter personer eller lägg till deras telefonnummer",
"searching": "Söker....",
"shareInvite": "Dela mötes inbjudan",
"shareLink": "Dela mötes inbjudan för att bjuda in fler",
"shareInvite": "Dela mötesinbjudan",
"shareLink": "Dela mötesinbjudan för att bjuda in fler",
"shareStream": "Dela livestreamlänken",
"sipAddresses": "sip-adress",
"telephone": "Telefon: {{number}}",
@@ -38,6 +30,7 @@
},
"audioDevices": {
"bluetooth": "Bluetooth",
"car": "Bil",
"headphones": "Hörlurar",
"none": "Inga ljudenheter tillgängliga",
"phone": "Telefon",
@@ -46,6 +39,25 @@
"audioOnly": {
"audioOnly": "Enbart ljud"
},
"breakoutRooms": {
"actions": {
"add": "Lägg till grupprum",
"autoAssign": "Automatisk fördelning av grupprum",
"close": "Stäng",
"join": "Gå med",
"leaveBreakoutRoom": "Lämna grupprum",
"more": "Mer",
"remove": "Ta bort",
"sendToBreakoutRoom": "Skicka deltagare till grupprum:"
},
"defaultName": "Grupprum #{{index}}",
"mainRoom": "Huvudrum",
"notifications": {
"joined": "Gick med i \"{{name}}\"",
"joinedMainRoom": "Gick med i huvudrummet",
"joinedTitle": "Grupprum"
}
},
"calendarSync": {
"addMeetingURL": "Lägg till en möteslänk",
"confirmAddLink": "Vill du lägga till en Jitsi-länk i händelsen?",
@@ -64,15 +76,27 @@
"refresh": "Uppdatera kalender",
"today": "Idag"
},
"carmode": {
"actions": {
"selectSoundDevice": "Välj ljudkälla"
},
"labels": {
"buttonLabel": "Billäge",
"title": "Billäge",
"videoStopped": "Video avstängd"
}
},
"chat": {
"enter": "Delta i mötet",
"error": "Fel: ditt meddelande skickades inte. Orsak: {{error}}",
"fieldPlaceHolder": "Skriv ditt meddelande här",
"lobbyChatMessageTo": "Skicka meddelande",
"message": "Meddelande",
"messageAccessibleTitle": "{{user}} Säger:",
"messageAccessibleTitleMe": "Jag säger: ",
"messageTo": "Privat meddelande till {{recipient}}",
"messagebox": "Skriv ett meddelande",
"newMessages": "Nytt meddelande",
"nickname": {
"popover": "Välj ett namn",
"title": "Skriv in ett namn för att börja använda chatten",
@@ -80,9 +104,10 @@
},
"noMessagesMessage": "Det finns ännu inga meddelanden i mötet. Påbörja en konversation!",
"privateNotice": "Privat meddelande till {{recipient}}",
"sendButton": "Skicka",
"smileysPanel": "Emoji panel",
"tabs": {
"chat": "Chat",
"chat": "Chatt",
"polls": "Omröstningar"
},
"title": "Chatt",
@@ -91,6 +116,7 @@
},
"chromeExtensionBanner": {
"buttonText": "Installera Chrome-tillägg",
"buttonTextEdge": "Installera Edge-tillägg",
"close": "Stäng",
"dontShowAgain": "Visa inte det här igen",
"installExtensionText": "Installera tillägget för integration med Google Kalender och Office 365"
@@ -111,8 +137,7 @@
"FETCH_SESSION_ID": "Hämtar sessions-id ...",
"GET_SESSION_ID_ERROR": "Hämta sessions-id-fel: {{code}}",
"GOT_SESSION_ID": "Hämta sessions-id ... Klart",
"LOW_BANDWIDTH": "Video för {{displayName}} har stängts av för att spara bandbredd",
"RECONNECTING": "Ett nätverksproblem uppstod. Återansluter..."
"LOW_BANDWIDTH": "Video för {{displayName}} har stängts av för att spara bandbredd"
},
"connectionindicator": {
"address": "Adress:",
@@ -148,7 +173,6 @@
"status": "Anslutning:",
"transport": "Transport:",
"transport_plural": "Transporter:",
"turn": " (turn)",
"video_ssrc": "Video SSRC:"
},
"dateUtils": {
@@ -163,11 +187,11 @@
"downloadApp": "Hämta appen",
"ifDoNotHaveApp": "Om du inte har appen än:",
"ifHaveApp": "Om du redan har appen:",
"joinInApp": "Delta i denna möte med din app",
"joinInApp": "Delta i detta möte med din app",
"launchWebButton": "Starta på webben",
"openApp": "Fortsätt till appen",
"title": "Startar ditt möte i {{app}} ...",
"tryAgainButton": "Försök igen på skrivbordet"
"tryAgainButton": "Försök igen på skrivbordet",
"unsupportedBrowser": "Det verkar som att du använder en webbläsare som vi inte stöder."
},
"defaultLink": "t ex. {{url}}",
"defaultNickname": "till exempel Julia Eriksson",
@@ -183,6 +207,9 @@
"selectADevice": "Välj en enhet",
"testAudio": "Spela upp ett testljud"
},
"dialIn": {
"screenTitle": "Ring in"
},
"dialOut": {
"statusMessage": "är nu {{status}}"
},
@@ -195,13 +222,14 @@
"Share": "Dela",
"Submit": "Skicka",
"WaitForHostMsg": "Konferensen har inte börjat än. Autentisera konferensen om du är värd. Vänta annars på att värden startar konferensen.",
"WaitingForHost": "Väntar på värden ...",
"WaitingForHostTitle": "Väntar på värden ...",
"Yes": "Ja",
"accessibilityLabel": {
"liveStreaming": "Livesändning"
},
"add": "Lägg till",
"addMeetingNote": "Mötesinformation",
"addOptionalNote": "Ytterligare information",
"allow": "Tillåt",
"alreadySharedVideoMsg": "En annan deltagare delar redan en video. Konferensen tillåter bara en video-delning åt gången.",
"alreadySharedVideoTitle": "Endast en delad video åt gången tillåts",
@@ -233,22 +261,20 @@
"displayNameRequired": "Hej, vad heter du?",
"done": "Klar",
"e2eeDescription": "Stödet för End-to-End kryptering är EXPERIMENTELLT. Notera att om du aktiverar det kommer vissa funktioner som t.ex. telefondeltagande försvinna. Mötet kommer även att begränsas till deltagare med webbläsare som har stöd för insertable streams.",
"e2eeDisabledDueToMaxModeDescription": "Det går inte att aktivera end-to-end-kryptering på grund av stort antal deltagare i konferensen.",
"e2eeLabel": "Aktivera \"end-to-end\" kryptering",
"e2eeWarning": "Varning, alla deltagare i mötet har ej stöd för \"end-to-end\" kryptering",
"e2eeWillDisableDueToMaxModeDescription": "VARNING: End-to-end-kryptering kommer att inaktiveras automatiskt om fler deltagare går med i konferensen.",
"embedMeeting": "Bädda in möte",
"enterDisplayName": "Ange namn",
"error": "Fel",
"externalInstallationMsg": "Misslyckades att installera skrivbordsdelnings-tillägget.",
"externalInstallationTitle": "Tillägg krävs",
"goToStore": "Gå till appbutiken",
"gracefulShutdown": "Vår tjänst är för tillfället nedstängd för underhåll. Vänligen försök senare.",
"grantModeratorDialog": "Är du säker du vill göra denna deltagare till en moderator?",
"grantModeratorTitle": "Godkänn moderator",
"hide": "Dölj",
"hideShareAudioHelper": "Visa inte denna dialog igen ",
"incorrectPassword": "Fel användarnamn eller lösenord",
"incorrectRoomLockPassword": "Felaktigt lösenord",
"inlineInstallExtension": "Installera nu",
"inlineInstallationMsg": "Misslyckades att installera skrivbordsdelnings-tillägget.",
"internalError": "Ett fel uppstod. Fel: {{error}}",
"internalErrorTitle": "Internt fel",
"kickMessage": "Du kan kontakta {{participantDisplayName}} för mer information.",
@@ -256,10 +282,10 @@
"kickParticipantDialog": "Vill du sparka ut den här deltagaren?",
"kickParticipantTitle": "Tysta deltagaren?",
"kickTitle": "Aj! {{participantDisplayName}} sparkade ut dig ur mötet",
"liveStreaming": "Strömma",
"linkMeeting": "Länka möte",
"linkMeetingTitle": "Länka möte till Salesforce",
"liveStreaming": "Streama",
"liveStreamingDisabledBecauseOfActiveRecordingTooltip": "Ej möjligt medan inspelning pågår",
"liveStreamingDisabledForGuestTooltip": "Gäster kan inte starta en livesändning.",
"liveStreamingDisabledTooltip": "Starta livesändning har inaktiverats.",
"localUserControls": "Lokala användarkontroller",
"lockMessage": "Misslyckades att låsa konferensen.",
"lockRoom": "Lägg till möte $t(lockRoomPasswordUppercase)",
@@ -276,7 +302,10 @@
"micPermissionDeniedError": "Du har inte tillåtit användning av din mikrofon. Du kan gå med i mötet men de andra kan då inte höra dej. Om du vill tillåta användning av din mikrofon gör du det via mikrofonknappen i URL-fältet.",
"micTimeoutError": "Time out, kunde ej starta ljud enhet",
"micUnknownError": "Av okänd anledning kan inte din mikrofon användas.",
"moderationAudioLabel": "Tillåt deltagarna att slå på ljudet för sig själva",
"moderationVideoLabel": "Tillåt deltagarna att starta sin video",
"muteEveryoneDialog": "Är du säker på att du vill tysta alla? Du kan inte slå på mikrofonen åt dem, men de kan själva slå på sin egen mikrofon när som helst.",
"muteEveryoneDialogModerationOn": "Deltagarna kan när som helst begära att få prata.",
"muteEveryoneElseDialog": "När någon tystats kan du inte slå på mikrofonen, men de kan själva slå på sin egen mikrofon när som helst.",
"muteEveryoneElseTitle": "Tysta alla utom {{whom}}?",
"muteEveryoneElsesVideoDialog": "När kameran är inaktiverad kan den inte aktiveras igen. Däremot kan övriga deltagare aktivera sina kameror.",
@@ -285,15 +314,16 @@
"muteEveryoneStartMuted": "Alla börjar tystade",
"muteEveryoneTitle": "Tysta alla?",
"muteEveryonesVideoDialog": "Är du säker du vill inaktivera allas kameror. Du kommer inte att kunna aktivera dessa igen. Däremot kommer deltagarna att kunna aktivera sin egen kamera när som.",
"muteEveryonesVideoDialogOk": "Inkativera",
"muteEveryonesVideoDialogModerationOn": "Deltagarna kan när som helst begära att få aktivera sin kamera.",
"muteEveryonesVideoDialogOk": "Inaktivera",
"muteEveryonesVideoTitle": "Inaktiveras allas kameror",
"muteParticipantBody": "Du kan inte aktivera deras mikrofoner, men de kan göra det själva.",
"muteParticipantButton": "Tysta",
"muteParticipantDialog": "Vill du tysta den här deltagaren? Du kan inte aktivera mikrofonen igen, men deltagaren kan när som helst göra det själv.",
"muteParticipantTitle": "Tysta deltagaren?",
"muteParticipantsVideoBody": "Du kommer inte att kunna aktivera kameran igen. Däremot kan deltagaren kunna aktivera sin egen kamera när som.",
"muteParticipantsVideoBodyModerationOn": "Du och deltagarna kommer inte att kunna aktivera kameran igen.",
"muteParticipantsVideoButton": "Inaktivera kamera",
"muteParticipantsVideoDialog": "Är du säker du vill inaktivera denna deltagares kamera. Du kommer inte att kunna aktivera den igen. Däremot kan deltagaren kunna aktivera sin egen kamera när som.",
"muteParticipantsVideoDialogModerationOn": "Är du säker på att du vill inaktivera den här deltagarens kamera? Du kommer inte att kunna aktivera kameran igen och inte de heller.",
"muteParticipantsVideoTitle": "Inaktivera denna deltagares kamera?",
"noDropboxToken": "Ingen giltig dropbox tecken",
"password": "Lösenord",
@@ -307,10 +337,9 @@
"popupError": "Din webbläsare blockerar pop-up-fönster från sajten. Tillåt pop-up-fönster från den här sajten i inställningarna och försök igen.",
"popupErrorTitle": "Pop-up blockerad",
"readMore": "Mer",
"recentlyUsedObjects": "Dina senaste använda objekt",
"recording": "Inspelning",
"recordingDisabledBecauseOfActiveLiveStreamingTooltip": "Ej möjligt medan livestreaming pågår.",
"recordingDisabledForGuestTooltip": "Gäster kan inte starta inspelningar.",
"recordingDisabledTooltip": "Starta inspelning har inaktiverats.",
"rejoinNow": "Återanslut nu",
"remoteControlAllowedMessage": "{{user}} godkände din begäran om fjärrstyrning.",
"remoteControlDeniedMessage": "{{user}} avböjde din begäran om fjärrstyrning.",
@@ -329,11 +358,13 @@
"screenSharingAudio": "Dela ljud",
"screenSharingFailed": "Oops! Något gick fel, skärmdelning kunde ej startas.",
"screenSharingFailedTitle": "Skärmdelning misslyckades!",
"screenSharingFailedToInstall": "Utökningen för skärmdelning kunde inte installeras.",
"screenSharingFailedToInstallTitle": "Utökningen för skärmdelning kunde inte installeras",
"screenSharingFirefoxPermissionDeniedError": "Något gick fel när du försökte dela skärmen. Det kan vara för att du inte tillåter det. ",
"screenSharingFirefoxPermissionDeniedTitle": "Skärmdelningen misslyckades!",
"screenSharingPermissionDeniedError": "Något är fel med åtkomstinställningarna för skärmdelningen. Ladda om sidan och försök igen.",
"searchInSalesforce": "Sök i Salesforce",
"searchResults": "Sökresultat ({{count}})",
"searchResultsDetailsError": "Något gick fel när ägardata hämtades.",
"searchResultsError": "Något gick fel när data hämtades.",
"searchResultsNotFound": "Inga sökresultat hittades.",
"searchResultsTryAgain": "Try using alternative keywords.",
"sendPrivateMessage": "Du har fått ett privat meddelande. Tänkte du svara på det privat, eller vill du skicka ditt meddelande till alla deltagare?",
"sendPrivateMessageCancel": "Skicka till alla deltagare",
"sendPrivateMessageOk": "Skicka privat",
@@ -356,7 +387,10 @@
"shareVideoTitle": "Ta bort en delad video",
"shareYourScreen": "Dela din skärm",
"shareYourScreenDisabled": "Skärmdelning har inaktiverats.",
"shareYourScreenDisabledForGuest": "Gäster kan inte skärmdela.",
"sharedVideoDialogError": "Fel: Ogiltig URL",
"sharedVideoLinkPlaceholder": "YouTube-länk eller direkt videolänk",
"show": "Visa",
"start": "Starta",
"startLiveStreaming": "Starta livesändning",
"startRecording": "Starta inspelning",
"startRemoteControlErrorMessage": "Ett fel inträffade när fjärrsessionen skulle starta!",
@@ -399,8 +433,12 @@
"veryBad": "Mycket dåligt",
"veryGood": "Mycket bra"
},
"giphy": {
"noResults": "Inga resultat funna :(",
"search": "Sök efter GIPHY"
},
"helpView": {
"header": "Hjälpcenter"
"title": "Hjälpcenter"
},
"incomingCall": {
"answer": "Svara",
@@ -442,9 +480,11 @@
"noRoom": "Inget rum specificerades för inringning.",
"numbers": "Inringningsnummer",
"password": "$t(lockRoomPasswordUppercase):",
"reachedLimit": "Du har nått gränsen för din prenumeration.",
"sip": "SIP adress",
"title": "Dela",
"tooltip": "Dela länk och information om inringning för mötet"
"tooltip": "Dela länk och information om inringning för mötet",
"upgradeOptions": "Vänligen kontrollera om uppgraderingsalternativen är på"
},
"inlineDialogFailure": {
"msg": "Vi slirade lite.",
@@ -465,6 +505,7 @@
"focusLocal": "Sätt fokus på din videobild",
"focusRemote": "Fokusera på någon annans video",
"fullScreen": "Visa eller stäng fullskärm",
"giphyMenu": "Växla GIPHY meny",
"keyboardShortcuts": "Tangentbordsgenvägar",
"localRecording": "Visa eller dölj lokala inspelningsverktyg",
"mute": "Tysta eller aktivera din mikrofon",
@@ -478,6 +519,10 @@
"toggleShortcuts": "Visa eller dölj kortkommandon",
"videoMute": "Aktivera / avaktivera din kamera"
},
"largeVideo": {
"screenIsShared": "Du delar din skärm",
"showMeWhatImSharing": "Visa mig vad det är jag delar"
},
"liveStreaming": {
"busy": "Vi försöker frigöra fler strömningsresurser. Försök igen senare.",
"busyTitle": "Alla strömningsresurser är upptagna",
@@ -494,6 +539,7 @@
"failedToStart": "Strömningen kunde inte påbörjas",
"getStreamKeyManually": "Vi kunde inte hämta några direktströmmar. Försök att få din direktströmningsnyckel från YouTube.",
"googlePrivacyPolicy": "Googles sekretesspolicy",
"inProgress": "Inspelning eller livestreaming pågår",
"invalidStreamKey": "Livesändningslösenordet kan vara felaktigt.",
"limitNotificationDescriptionNative": "Din strömning är begränsad till {{limit}} min. För obegränsad strömning, prova {{app}}.",
"limitNotificationDescriptionWeb": "På grund av stor efterfrågan kommer din strömning att begränsas till {{limit}} min. För obegränsad strömning, prova <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
@@ -503,12 +549,14 @@
"onBy": "{{name}} startade direktströmningen",
"pending": "Börja strömma ...",
"serviceName": "Livesändningstjänst",
"sessionAlreadyActive": "Den här sessionen spelas redan in eller livestreamas.",
"signIn": "Logga in med Google",
"signInCTA": "Logga in eller ange ditt livesändningslösenord från YouTube.",
"signOut": "Logga ut",
"signedInAs": "Du är nu inloggad som:",
"start": "Starta en livesändning",
"streamIdHelp": "Vad är det här?",
"title": "Direktsändning",
"unavailableTitle": "Livesändning otillgänglig",
"youtubeTerms": "Tjänstevillkor för YouTube"
},
@@ -517,6 +565,7 @@
"admitAll": "Godkänn alla",
"allow": "Tillåt",
"backToKnockModeButton": "Tillbaka till väntrum",
"chat": "Chatt",
"dialogTitle": "Väntrum",
"disableDialogContent": "Väntrumsläge är för närvarande aktiverat. Denna funktion säkerställer att oönskade deltagare inte kan gå med i ditt möte. Vill du inaktivera det?",
"disableDialogSubmit": "Inaktivera",
@@ -529,6 +578,7 @@
"errorMissingPassword": "Ange möteslösenord",
"invalidPassword": "Felaktigt lösenord",
"joinRejectedMessage": "Din anslutningsbegäran avvisades av en moderator.",
"joinRejectedTitle": "Anslutningsbegäran avvisades.",
"joinTitle": "Anslut till mötet",
"joinWithPasswordMessage": "Försöker ansluta med lösenord, vänta...",
"joiningMessage": "Du kommer anslutas till mötet så snart någon accepterat din begäran",
@@ -537,6 +587,8 @@
"knockButton": "Anslut till mötet",
"knockTitle": "Någon önskar delta i mötet",
"knockingParticipantList": "Väntande deltagare",
"lobbyChatStartedNotification": "{{moderator}} startade en lobbychatt med {{attendee}}",
"lobbyChatStartedTitle": "{{moderator}} har startat en lobbychatt med dig.",
"nameField": "Ange ditt namn",
"notificationLobbyAccessDenied": "{{targetParticipantName}} har nekats att delta av {{originParticipantName}}",
"notificationLobbyAccessGranted": "{{targetParticipantName}} har godkänts att delta av {{originParticipantName}}",
@@ -547,6 +599,7 @@
"passwordJoinButton": "Anslut",
"reject": "Avvisa",
"rejectAll": "Avvisa alla",
"title": "Lobby",
"toggleLabel": "Aktivera väntrum"
},
"localRecording": {
@@ -573,6 +626,7 @@
"no": "Nej",
"participant": "Deltagare",
"participantStats": "Deltagarstatistik",
"selectTabTitle": "🎥 Välj den här fliken för inspelning",
"sessionToken": "Sessionstoken",
"start": "Starta inspelning",
"stop": "Avsluta inspelning",
@@ -587,19 +641,36 @@
"me": "jag",
"notify": {
"OldElectronAPPTitle": "Säkerhetsproblem!",
"allowAction": "Tillåt",
"allowedUnmute": "Du kan slå på mikrofonen, starta kameran eller dela din skärm.",
"audioUnmuteBlockedDescription": "Aktivering av mikrofonen har tillfälligt blockerats på grund av systembegränsningar.",
"audioUnmuteBlockedTitle": "Mikrofonen har blockerats!",
"chatMessages": "Chattmeddelanden",
"connectedOneMember": "{{name}} har gått med i mötet",
"connectedThreePlusMembers": "{{name}} och {{count}} andra har gått med i mötet",
"connectedTwoMembers": "{{first}} och {{second}} har gått med i mötet",
"disconnected": "frånkopplad",
"displayNotifications": "Visa aviseringar för",
"focus": "Konferensfokus",
"focusFail": "{{component}} inte tillgänglig försöker igen om {{ms}} sek",
"grantedTo": "Moderatorsrättigheter tilldelat till {{to}}!",
"gifsMenu": "GIPHY",
"groupTitle": "Notifieringar",
"hostAskedUnmute": "Värden vill att du ska stänga av ljudet",
"invitedOneMember": "{{name}} har bjudits in",
"invitedThreePlusMembers": "{{name}} och {{count}} andra har bjudits in",
"invitedTwoMembers": "{{first}} och {{second}} har bjudits in",
"kickParticipant": "{{kicked}} sparkades ut av {{kicker}}",
"leftOneMember": "{{name}} lämnade mötet",
"leftThreePlusMembers": "{{name}} och många andra lämnade mötet",
"leftTwoMembers": "{{first}} och {{second}} lämnade mötet",
"linkToSalesforce": "Länk till Salesforce",
"linkToSalesforceDescription": "Du kan länka mötessammanfattningen till ett Salesforce-objekt.",
"linkToSalesforceError": "Det gick inte att länka mötet till Salesforce",
"linkToSalesforceKey": "Länka detta möte",
"linkToSalesforceProgress": "Länkar möte till Salesforce...",
"linkToSalesforceSuccess": "Mötet länkades till Salesforce",
"localRecordingStarted": "{{name}} har påbörjat en lokal inspelning.",
"localRecordingStopped": "{{name}} har stoppat en lokal inspelning.",
"me": "Jag",
"moderationInEffectCSDescription": "Räck upp handen om du vill dela din video",
"moderationInEffectCSTitle": "Innehållsdelning är inaktiverat av moderator",
@@ -620,59 +691,79 @@
"newDeviceAction": "Använd",
"newDeviceAudioTitle": "Ny ljudenhet hittad",
"newDeviceCameraTitle": "Ny kamera hittad",
"noiseSuppressionDesktopAudioDescription": "Brusreducering kan inte aktiveras när du delar skrivbordsljud, vänligen inaktivera det och försök igen.",
"noiseSuppressionFailedTitle": "Det gick inte att starta brusreducering",
"noiseSuppressionNoTrackDescription": "Slå på mikrofonen först.",
"noiseSuppressionStereoDescription": "Brusreducering i stereoljud stöds för närvarande inte.",
"oldElectronClientDescription1": "Den version av Jitsi meet som används är gammal och har säkerhetsluckor. Var god uppdatera till den senaste versionen.",
"oldElectronClientDescription2": "senast build",
"oldElectronClientDescription3": "nu!",
"participantWantsToJoin": "Vill vara med på mötet",
"participantsWantToJoin": "Vill vara med på mötet",
"passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) togs bort av en annan deltagare",
"passwordSetRemotely": "$t(lockRoomPasswordUppercase) satt av en annan deltagare",
"raiseHandAction": "Räck upp handen",
"raisedHand": "{{name}} vill prata.",
"raisedHands": "{{participantName}} och {{raisedHands}} fler personer",
"reactionSounds": "Inaktivera ljud",
"reactionSoundsForAll": "Inaktivera ljud för alla",
"screenShareNoAudio": "\"Dela ljudrutan\" aktiverades inte i fönstret för val av fönster.",
"screenShareNoAudioTitle": "Det gick inte att dela systemljud!",
"selfViewTitle": "Du kan alltid ta bort döljandet av självvyn från inställningarna",
"somebody": "Någon",
"startSilentDescription": "Anslut till mötet igen för att aktivera ljud",
"startSilentTitle": "Du gick med utan ljud aktiverat!",
"suboptimalBrowserWarning": "Din mötesupplevelse kommer tyvärr inte att bli så bra. Vi letar efter sätt att förbättra detta, men fram till dess kan du försöka använda en av de <a href='{{recommendedBrowserPageLink}}' target='_blank'> fullt stödda webbläsarna </a>.",
"suboptimalExperienceDescription": "Hmm... din upplevelse med {{appName}} kommer inte att bli särskilt bra. Vi försöker hitta sätt att förbättra det, men till dess använd en av <a href='{{recommendedBrowserPageLink}}' target='_blank'>de helt stödda webbläsarna</a>.",
"suboptimalExperienceTitle": "Webbläsarvarning",
"unmute": "Slå på mikrofonen",
"videoMutedRemotelyDescription": "Du kan alltid slå på den igen.",
"videoMutedRemotelyTitle": "Din kamera har inaktiverats av {{participantDisplayName}}!"
"videoMutedRemotelyTitle": "Din kamera har inaktiverats av {{participantDisplayName}}!",
"videoUnmuteBlockedDescription": "Aktivering av kameran och delning av skrivbord har tillfälligt blockerats på grund av systembegränsningar.",
"videoUnmuteBlockedTitle": "Aktivering av kameran och skrivbordsdelning blockerad!",
"viewLobby": "Visa lobby",
"waitingParticipants": "{{waitingParticipants}} personer"
},
"participantsPane": {
"actions": {
"allow": "Låt deltagarna:",
"allowVideo": "Tillåt kamera",
"askUnmute": "Be om att aktivera ljud",
"audioModeration": "Slå på ljudet för sig själva",
"blockEveryoneMicCamera": "Inaktivera allas mikrofon och kamera",
"invite": "Bjud in någon",
"moreModerationActions": "Fler modereringsalternativ",
"moreModerationControls": "Fler modereringskontroller",
"moreParticipantOptions": "Fler deltagaralternativ",
"mute": "Stäng av ljud",
"muteAll": "Stäng av all ljud",
"muteAll": "Stäng av allt ljud",
"muteEveryoneElse": "Inaktivera ljud för alla deltagare",
"startModeration": "Slå på ljudet själv eller starta video",
"stopEveryonesVideo": "Inaktivera allas video",
"stopVideo": "Inaktivera video",
"unblockEveryoneMicCamera": "Aktivera allas mikrofon och kamera"
"unblockEveryoneMicCamera": "Aktivera allas mikrofon och kamera",
"videoModeration": "Starta deras video"
},
"close": "Stäng",
"header": "Deltagare",
"headings": {
"lobby": "Väntrum ({{count}})",
"participantsList": "Mötesdeltagare ({{count}})",
"waitingLobby": "Väntar i väntrum ({{count}})"
}
},
"search": "Sök efter deltagare",
"title": "Deltagare"
},
"passwordDigitsOnly": "Ange max {{number}} siffror",
"passwordSetRemotely": "satt av en annan deltagare",
"pinnedParticipant": "Deltagaren är fäst",
"polls": {
"answer": {
"skip": "Skippa",
"skip": "Avstå",
"submit": "Skicka"
},
"by": "Av {{ name }}",
"create": {
"addOption": "Lägg till alternativ",
"answerPlaceholder": "Alternativ",
"cancel": "Cancellera",
"cancel": "Avbryt",
"create": "Skapa en omröstning",
"pollOption": "Alternativ för omröstning",
"pollQuestion": "Fråga för omröstning",
@@ -732,12 +823,14 @@
"errorDialOutFailed": "Kunde inte ringa ut. Samtal misslyckades",
"errorDialOutStatus": "Kunde inte hämta status på utgående samtal",
"errorMissingName": "Ange ditt namn för att ansluta till mötet",
"errorNoPermissions": "Du måste aktivera mikrofon- och kameraåtkomst",
"errorStatusCode": "Kunde inte ringa ut, statuskod: {{status}}",
"errorValidation": "Ogiltigt nummer",
"iWantToDialIn": "Jag vill ringa in",
"initiated": "Samtalet påbörjades",
"joinAudioByPhone": "Anslut med ljud via telefon",
"joinMeeting": "Anslut till mötet",
"joinMeetingInLowBandwidthMode": "Gå med i lågbandbreddsläge",
"joinWithoutAudio": "Anslut utan ljud",
"keyboardShortcuts": "Aktivera kortkommandon",
"linkCopied": "Länken kopierades till urklipp",
@@ -765,6 +858,9 @@
"rejected": "Avvisad",
"ringing": "Ringer..."
},
"privacyView": {
"title": "Privat"
},
"profile": {
"avatar": "avatar",
"setDisplayNameLabel": "Ange ditt visningsnamn",
@@ -773,6 +869,19 @@
"title": "Profil"
},
"raisedHand": "Räck upp handen",
"raisedHandsLabel": "Antal upphöjda händer",
"record": {
"already": {
"linked": "Mötet är redan länkat till detta Salesforce-objekt."
},
"type": {
"account": "Konto",
"contact": "Kontakt",
"lead": "Leda",
"opportunity": "Tillfälle",
"owner": "Ägare"
}
},
"recording": {
"authDropboxText": "Ladda upp till Dropbox",
"availableSpace": "Tillgängligt utrymme: {{spaceLeft}} MB (ungefär {{duration}} minuter inspelning)",
@@ -787,26 +896,47 @@
"expandedPending": "Inspelningen påbörjas...",
"failedToStart": "Inspelningen kunde inte påbörjas",
"fileSharingdescription": "Dela inspelningen med mötesdeltagare",
"highlight": "Framhäva",
"highlightMoment": "Framhäv ögonblick",
"highlightMomentDisabled": "Du kan framhäva ögonblick när inspelningen startar",
"highlightMomentSuccess": "Moment framhävt",
"highlightMomentSucessDescription": "Ditt framhävda ögonblick läggs till i mötessammanfattningen.",
"inProgress": "Inspelning eller livestreaming pågår",
"limitNotificationDescriptionNative": "På grund av stor efterfrågan är din inspelning begränsad till {{limit}} min. För obegränsade inspelningar, försök <3>{{app}}</3>.",
"limitNotificationDescriptionWeb": "På grund av stor efterfrågan är din inspelning begränsad till {{limit}} min. För obegränsade inspelningar, prova <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
"linkGenerated": "Vi har genererat en länk till din inspelning.",
"live": "LIVE",
"localRecordingNoNotificationWarning": "Inspelningen kommer inte att meddelas till andra deltagare. Du måste meddela dem att mötet inspelas.",
"localRecordingNoVideo": "Video spelas inte in",
"localRecordingStartWarning": "Se till att du stoppar inspelningen innan du avslutar mötet för att spara det.",
"localRecordingStartWarningTitle": "Stoppa inspelningen för att spara den",
"localRecordingVideoStop": "Om du stoppar din video stoppas även den lokala inspelningen. Är du säker på att du vill fortsätta?",
"localRecordingVideoWarning": "För att spela in din video måste du ha den på när du startar inspelningen",
"localRecordingWarning": "Se till att du väljer den aktuella fliken för att kunna använda rätt video och ljud. Inspelningen är för närvarande begränsad till 1 GB, vilket är cirka 100 minuter.",
"loggedIn": "Inloggad som {{userName}}",
"noStreams": "Ingen ljud- eller videoström upptäcktes.",
"off": "Inspelningen avslutades",
"offBy": "{{name}} avslutade inspelningen",
"on": "Inspelning",
"onBy": "{{name}} påbörjade inspelningen",
"onlyRecordSelf": "Spela bara in mina ljud- och videoströmmar",
"pending": "Förbereder inspelning av mötet...",
"rec": "REC",
"saveLocalRecording": "Spara inspelningsfil lokalt (beta)",
"serviceDescription": "Din inspelning kommer att sparas av inspelningstjänsten",
"serviceDescriptionCloud": "Molninspelning",
"serviceDescriptionCloudInfo": "Inspelade möten rensas automatiskt 24 timmar efter inspelningstiden.",
"serviceName": "Inspelningstjänst",
"sessionAlreadyActive": "Den här sessionen spelas redan in eller livestreamas.",
"signIn": "Logga in",
"signOut": "Logga ut",
"surfaceError": "Välj aktuell flik.",
"title": "Inspelning",
"unavailable": "{{serviceName}} är inte tillgänglig. Vi försöker åtgärda felet. Försök igen senare.",
"unavailableTitle": "Inspelning kan inte göras",
"uploadToCloud": "Ladda upp till molnet"
},
"screenshareDisplayName": "{{name}}s skärm",
"sectionList": {
"pullToRefresh": "Dra för att uppdatera"
},
@@ -814,9 +944,10 @@
"about": "Du kan lägga till ett $t(lockRoomPassword) till ditt möte. Deltagarna måste ange $t(lockRoomPassword) innan de får gå med i mötet.",
"aboutReadOnly": "Moderatorn kan lägga till ett $t(lockRoomPassword) till mötet. Deltagarna måste ange $t(lockRoomPassword) innan de får gå med i mötet.",
"insecureRoomNameWarning": "Rummets namn är osäkert. Oönskade deltagare kan gå med i din konferens. Överväg att säkra ditt möte med hjälp av säkerhetsknappen.",
"securityOptions": "Säkerhetsalternativ"
"title": "Säkerhetsalternativ"
},
"settings": {
"buttonLabel": "Inställningar",
"calendar": {
"about": "Kalenderintegrationen med {{appName}} används för att hämta din kalender på ett säkert sätt så att den kan läsa framtida händelser.",
"disconnect": "Koppla ifrån",
@@ -833,12 +964,14 @@
"incomingMessage": "Inkommande meddelande",
"language": "Språk",
"loggedIn": "Inloggad som {{name}}",
"maxStageParticipants": "Maximalt antal deltagare som kan fästas på huvudscenen",
"microphones": "Mikrofoner",
"moderator": "Moderator",
"more": "Mer",
"name": "Namn",
"noDevice": "Inga enheter",
"participantJoined": "Deltagare ansluten",
"participantKnocking": "Deltagare har anslutit till lobbyn",
"participantLeft": "Deltagare lämnat mötet",
"playSounds": "Spelljud på",
"reactions": "Reaktioner",
@@ -846,9 +979,11 @@
"selectAudioOutput": "Ljudutmatning",
"selectCamera": "Kamera",
"selectMic": "Mikrofon",
"selfView": "Självvy",
"sounds": "Ljud",
"speakers": "Högtalare",
"startAudioMuted": "Alla börjar tystade",
"startReactionsMuted": "Stäng av reaktionsljud för alla",
"startVideoMuted": "Alla börjar osynliga",
"talkWhileMuted": "Prata medan din ljud är inaktiverad",
"title": "Inställningar"
@@ -866,13 +1001,20 @@
"disableCrashReportingWarning": "Är du säker på att du vill inaktivera kraschrapportering? Inställningen tillämpas när du startar om appen.",
"disableP2P": "Inaktivera Dator-till-dator-läge",
"displayName": "Skärmnamn",
"displayNamePlaceholderText": "Exempel: John Doe",
"email": "E-post",
"goTo": "Gå till",
"header": "Inställningar",
"help": "Hjälp",
"links": "Länkar",
"privacy": "Sekretess",
"profileSection": "Profil",
"serverURL": "Serverlänk",
"showAdvanced": "Visa avancerade inställningar",
"startCarModeInLowBandwidthMode": "Starta billäget i lågbandbreddsläge",
"startWithAudioMuted": "Starta med ljudet avstängt",
"startWithVideoMuted": "Starta med videon avstängd",
"terms": "Villkor",
"version": "Version"
},
"share": {
@@ -881,13 +1023,21 @@
},
"speaker": "Talare",
"speakerStats": {
"angry": "Arg",
"disgusted": "Äcklad",
"displayEmotions": "Visa känslor",
"fearful": "Rädd",
"happy": "Glad",
"hours": "{{count}} h",
"minutes": "{{count}} m",
"name": "Namn",
"neutral": "Neutral",
"sad": "Ledsen",
"search": "Sök",
"seconds": "{{count}} s",
"speakerStats": "Talarstatistik",
"speakerTime": "Talartid"
"speakerTime": "Talartid",
"surprised": "Överraskad"
},
"startupoverlay": {
"genericTitle": "Mötet måste använda din mikrofon och kamera.",
@@ -899,6 +1049,10 @@
"text": "Klicka på knappen <i>Återanslut</i> för att koppla upp igen.",
"title": "Ditt videosamtal avbröts då din dator gick in i viloläge."
},
"termsView": {
"title": "Villkor"
},
"toggleTopPanelLabel": "Växla topppanelen",
"toolbar": {
"Settings": "Inställningar",
"accessibilityLabel": {
@@ -906,24 +1060,31 @@
"audioOnly": "Slå av eller på ljudet",
"audioRoute": "Välj ljudenhet",
"boo": "Bua",
"breakoutRoom": "Gå med i/lämna grupprum",
"callQuality": "Hantera videokvalitet",
"carmode": "Billäge",
"cc": "Slå av eller på undertexter",
"chat": "Öppna eller stäng chattfönster",
"clap": "Klappa",
"collapse": "Kollaps",
"dock": "Docka i huvudfönstret",
"document": "Öppna eller stäng delat dokument",
"download": "Ladda ner app",
"embedMeeting": "Bädda in möte",
"endConference": "Avsluta mötet för alla",
"expand": "Expandera",
"feedback": "Lämna återkoppling",
"fullScreen": "Öppna eller stäng fullskärm",
"giphy": "Växla GIPHY meny",
"grantModerator": "Godkänn moderator",
"hangup": "Lämna samtalet",
"help": "Hjälp",
"invite": "Bjud in andra",
"kick": "Sparka ut deltagare",
"laugh": "Skratta",
"leaveConference": "Lämna möte",
"like": "Tummen upp",
"linkToSalesforce": "Länk till Salesforce",
"lobbyButton": "Aktivera/inaktivera väntrumsläge",
"localRecording": "Öppna eller stäng lokala inspelningsverktyg",
"lockRoom": "Slå av eller på möteslösenord",
@@ -933,8 +1094,9 @@
"mute": "Slå av eller på ljud",
"muteEveryone": "Tysta alla",
"muteEveryoneElse": "Inkativerad ljud för alla andra",
"muteEveryoneElsesVideo": "Inaktivera alla andras kameror",
"muteEveryonesVideo": "Inkommande medelande",
"muteEveryoneElsesVideoStream": "Stoppa alla andras video",
"muteEveryonesVideoStream": "Stoppa allas video",
"noiseSuppression": "Brusreducering",
"participants": "Deltagare",
"pip": "Öppna eller stäng bild-i-bild-läge",
"privateMessage": "Skicka privat meddelande",
@@ -946,6 +1108,7 @@
"remoteVideoMute": "Inaktivera kamera för deltagare",
"security": "Säkerhetsalternativ",
"selectBackground": "Välj bakgrund",
"selfView": "Växla självvy",
"shareRoom": "Bjud in någon",
"shareYourScreen": "Slå av eller på skärmdelning",
"shareaudio": "Dela ljud",
@@ -958,8 +1121,10 @@
"tileView": "Öppna eller stäng panelvyn",
"toggleCamera": "Växla kamera",
"toggleFilmstrip": "Växla filmremsa",
"undock": "Lossa till ett separat fönster",
"videoblur": "Växla videooskärpa",
"videomute": "Sätt på eller stäng av mikrofonen"
"videomute": "Sätt på eller stäng av mikrofonen",
"whiteboard": "Visa/dölj whiteboardtavlan"
},
"addPeople": "Lägg till personer i samtal",
"audioOnlyOff": "Avsluta ljudläget",
@@ -973,22 +1138,31 @@
"clap": "Klappa",
"closeChat": "Stäng chatt",
"closeReactionsMenu": "Stäng meny för reaktioner",
"disableNoiseSuppression": "Inaktivera brusreducering",
"disableReactionSounds": "Du kan inaktivera reaktionsljud för det här mötet",
"dock": "Docka i huvudfönstret",
"documentClose": "Stäng delat dokument",
"documentOpen": "Öppna delat dokument",
"download": "Ladda ner vår app",
"e2ee": "End-to-End kryptering",
"embedMeeting": "Bädda in möte",
"endConference": "Avsluta mötet för alla",
"enterFullScreen": "Visa fullskärm",
"enterTileView": "Öppna panelvy",
"exitFullScreen": "Stäng fullskärm",
"exitTileView": "Stäng panelvy",
"feedback": "Lämna återkoppling",
"giphy": "Växla GIPHY-menyn",
"hangup": "Lämna",
"help": "Hjälp",
"hideWhiteboard": "Dölj whiteboardtavlan",
"invite": "Bjud in andra",
"joinBreakoutRoom": "Gå med i grupprummet",
"laugh": "Skratta",
"leaveBreakoutRoom": "Lämna grupprum",
"leaveConference": "Lämna mötet",
"like": "Tummen upp",
"linkToSalesforce": "Länk till Salesforce",
"lobbyButtonDisable": "Inaktivera väntrumsläge",
"lobbyButtonEnable": "Aktivera väntrumsläge",
"login": "Logga in",
@@ -1004,6 +1178,7 @@
"noAudioSignalDialInDesc": "Du kan också ringa in med:",
"noAudioSignalDialInLinkDesc": "Uppringningsnummer",
"noAudioSignalTitle": "Det kommer inget ljud från din mikrofon!",
"noiseSuppression": "Brusreducering",
"noisyAudioInputDesc": "Din mikrofon skapar brus, tysta din mikrofon eller byt ljudenhet!",
"noisyAudioInputTitle": "Din mikrofon verkar vara bullrig!",
"openChat": "Öppna chatt",
@@ -1026,20 +1201,20 @@
"shareaudio": "Dela ljud",
"sharedvideo": "Dela en video",
"shortcuts": "Visa genvägar",
"showWhiteboard": "Visa whiteboardtavlan",
"silence": "Tystnad",
"speakerStats": "Talarstatistik",
"startScreenSharing": "Starta skärmdelning",
"startSubtitles": "Starta undertextning",
"startvideoblur": "Blurra min bakgrund",
"stopAudioSharing": "Inaktivera ljuddelning",
"stopScreenSharing": "Avsluta skämdelning",
"stopSharedVideo": "Pausa video",
"stopSubtitles": "Avsluta undertextning",
"stopvideoblur": "Inaktivera bakgrundsblurr",
"surprised": "Överaskad",
"talkWhileMutedPopup": "Försöker du tala? Din mikrofon är tystad.",
"tileViewToggle": "Öppna eller stäng panelvyn",
"toggleCamera": "Byta kamera",
"undock": "Lossa till ett separat fönster",
"videoSettings": "Video inställningar",
"videomute": "Aktivera / avaktivera kameran"
},
@@ -1051,8 +1226,12 @@
"labelToolTip": "Mötet transkriberas",
"off": "Transkribering avslutades",
"pending": "Förbereder transkribering av mötet ...",
"sourceLanguageDesc": "För närvarande är mötesspråket inställt på <b>{{sourceLanguage}}</b>. <br/> Du kan ändra det från ",
"sourceLanguageHere": "här",
"start": "Börja visa undertexter",
"stop": "Sluta visa undertexter",
"subtitles": "Undertexter",
"subtitlesOff": "Av",
"tr": "TR"
},
"userMedia": {
@@ -1078,19 +1257,21 @@
"pending": "{{displayName}} har bjudits in"
},
"videoStatus": {
"adjustFor": "Justera för:",
"audioOnly": "AUD",
"audioOnlyExpanded": "Du använder ljudläget. Läget sparar bandbredd men du kan inte se andras videor.",
"bestPerformance": "Bäst prestanda",
"callQuality": "Videokvalitet",
"hd": "HD",
"hdTooltip": "Titta på högupplöst video",
"highDefinition": "Hög upplösning",
"highestQuality": "Högsta kvalitet",
"labelTooiltipNoVideo": "Ingen video",
"labelTooltipAudioOnly": "Läge med enbart ljud aktiverat",
"ld": "LD",
"ldTooltip": "Titta på lågupplöst video",
"lowDefinition": "Låg upplösning",
"onlyAudioAvailable": "Enbart ljud tillgängligt",
"onlyAudioSupported": "Vi stöder bara ljud i denna webbläsare.",
"performanceSettings": "Prestandainställningar",
"sd": "SD",
"sdTooltip": "Titta på video med standardupplösning",
"standardDefinition": "Normal upplösning"
@@ -1103,12 +1284,17 @@
"domuteVideoOfOthers": "Inkativera kamera för alla andra",
"flip": "Vänd",
"grantModerator": "Godkänn moderator",
"hideSelfView": "Dölj självvyn",
"kick": "Sparka ut",
"moderator": "Moderator",
"mute": "Deltagaren har avstängd mikrofon",
"muted": "Tystad",
"pinToStage": "Fäst till scenen",
"remoteControl": "Fjärrkontroll",
"screenSharing": "Deltagaren delar sin skärm",
"show": "Visa på scenen",
"showSelfView": "Visa självvy",
"unpinFromStage": "Ta loss",
"videoMuted": "kamera inaktiverad",
"videomute": "Deltagaren har stäng av kameran"
},
@@ -1133,7 +1319,8 @@
"slightBlur": "Lätt oskärpa",
"title": "Virtuella bakgrunder",
"uploadedImage": "Uppladdad bild {{index}}",
"webAssemblyWarning": "WebAssembly stöds inte"
"webAssemblyWarning": "WebAssembly stöds inte",
"webAssemblyWarningDescription": "WebAssembly inaktiverad eller stöds inte av den här webbläsaren"
},
"volumeSlider": "Volymreglage",
"welcomepage": {
@@ -1155,7 +1342,6 @@
"go": "KÖR",
"goSmall": "BÖRJA",
"headerSubtitle": "Säkra möten med hög kvalitet",
"headerTitle": "Jitsi Meet",
"info": "Info",
"jitsiOnMobile": "Jitsi på mobilen - ladda ner våra appar och starta ett möte var som helst",
"join": "Gå med",
@@ -1180,6 +1366,7 @@
"roomname": "Skriv in rumsnamn",
"roomnameHint": "Ange namnet eller URL:en till mötesrummet du vill ansluta till. Du kan hitta på ett nytt namn, berätta då för de andra du tänker möta så de anger samma namn.",
"sendFeedback": "Ge återkoppling",
"settings": "Inställningar",
"startMeeting": "Starta möte",
"terms": "Villkor",
"title": "Säkra, välutrustade och helt kostnadsfria videokonferenser"

View File

@@ -74,6 +74,7 @@
},
"noMessagesMessage": "ఈ సమావేశంలో ఇంకా సందేశాలేమీ లేవు. ఇక్కడ ఒక సంభాషణను మొదలుపెట్టండి!",
"privateNotice": "{{recipient}}‌కి అంతరంగిక సందేశం",
"sendButton": "పంపించు",
"title": "సంభాషణ",
"titleWithPolls": "సంభాషణ",
"you": "మీరు"
@@ -348,7 +349,7 @@
"veryGood": "చాలా బాగుందిా"
},
"helpView": {
"header": "సహాయ కేంద్రం"
"title": "సహాయ కేంద్రం"
},
"incomingCall": {
"answer": "బదులివ్వు",
@@ -449,6 +450,7 @@
"signedInAs": "మీరు ప్రస్తుతం ఇలా ప్రవేశించివున్నారు:",
"start": "ఒక లైవ్ స్ట్రీమ్ మొదలుపెట్టండి",
"streamIdHelp": "ఇది ఏమిటి?",
"title": "తాజా స్ట్రీమింగ్",
"unavailableTitle": "లైవ్ స్ట్రీమింగ్ అందుబాటులో లేదు",
"youtubeTerms": "యూట్యూబ్ సేవా నియమాలు"
},
@@ -484,6 +486,7 @@
"passwordField": "సమావేశం సంకేతపదం ఇవ్వండి",
"passwordJoinButton": "చేరు",
"reject": "నిరాకరించు",
"title": "Lobby",
"toggleLabel": "Enable lobby"
},
"localRecording": {
@@ -680,6 +683,7 @@
"serviceName": "రికార్డింగు సేవ",
"signIn": "Sign in",
"signOut": "Sign out",
"title": "రికార్డింగు",
"unavailable": "Oops! The {{serviceName}} is currently unavailable. We're working on resolving the issue. Please try again later.",
"unavailableTitle": "రికార్డింగు అందుబాటులో లేదు"
},

View File

@@ -11,22 +11,14 @@
"defaultEmail": "Varsayılan E-postanız",
"disabled": "Kişi davet edemezsiniz.",
"failedToAdd": "Kişi eklenemedi",
"footerText": "Dış arama devre dışı.",
"googleEmail": "Google Email",
"inviteMoreHeader": "Toplantıdaki tek kişisiniz",
"inviteMoreMailSubject": "{{appName}} toplantısına katıl",
"inviteMorePrompt": "Daha fazla kişi davet et",
"linkCopied": "Bağlantı panoya kopyalandı",
"loading": "Kişiler ve telefon numaraları aranıyor...",
"loadingNumber": "Telefon numarası doğrulanıyor",
"loadingPeople": "Davet edilecek kişi aranıyor",
"noResults": "Eşleşen sonuç bulunamadı",
"noValidNumbers": "Lütfen bir telefon numarası girin",
"outlookEmail": "Outlook Email",
"phoneNumbers": "telefon numaraları",
"searchNumbers": "Telefon numarası ekle",
"searchPeople": "Kişi ara",
"searchPeopleAndNumbers": "Kişi arayın veya telefon numarası ekleyin",
"searching": "Aranıyor...",
"shareInvite": "Toplantı davetini paylaş",
"shareLink": "Katılımcıları davet etmek için toplantı bağlantısını paylaşın",
@@ -38,6 +30,7 @@
},
"audioDevices": {
"bluetooth": "Bluetooth",
"car": "",
"headphones": "Kulaklık",
"none": "Geçerli Ses cihazı yok",
"phone": "Telefon",
@@ -46,6 +39,25 @@
"audioOnly": {
"audioOnly": "Düşük bant genişliği"
},
"breakoutRooms": {
"actions": {
"add": "Alt oda ekle",
"autoAssign": "Alt odalara otomatik ekle",
"close": "Kapat",
"join": "Katıl",
"leaveBreakoutRoom": "Alt odadan çık",
"more": "Daha",
"remove": "Sil",
"sendToBreakoutRoom": "Katılımcıya gönder:"
},
"defaultName": "Alt oda #{{index}}",
"mainRoom": "Ana oda",
"notifications": {
"joined": "\"{{name}}\" alt odasına giriliyor",
"joinedMainRoom": "Ana odaya giriliyor",
"joinedTitle": "Alt Odalar"
}
},
"calendarSync": {
"addMeetingURL": "Bir toplantı bağlantısı ekle",
"confirmAddLink": "Bu etkinliğe bir toplantı bağlantısı eklensin mi?",
@@ -64,6 +76,16 @@
"refresh": "Takvimi yenile",
"today": "Bugün"
},
"carmode": {
"actions": {
"selectSoundDevice": "Ses cihazı seç"
},
"labels": {
"buttonLabel": "Araba modu",
"title": "Arama modu",
"videoStopped": "Video durduruldu"
}
},
"chat": {
"enter": "Odaya gir",
"error": "Hata: Mesajınız gönderilmedi. Neden: {{error}}",
@@ -74,6 +96,7 @@
"messageAccessibleTitleMe": "ben diyorum:",
"messageTo": "{{recipient}} adlı kişiye özel mesaj",
"messagebox": "Bir mesaj yazın",
"newMessages": "Yeni mesajlar",
"nickname": {
"popover": "Bir takma ad seçin",
"title": "Sohbette kullanmak için bir takma ad girin",
@@ -81,6 +104,7 @@
},
"noMessagesMessage": "Toplantıda henüz mesaj yok. Burada bir konuşma başlatın!",
"privateNotice": "{{recipient}} için özel mesaj",
"sendButton": "Gönder",
"smileysPanel": "Emoji paneli",
"tabs": {
"chat": "Sohbet",
@@ -92,6 +116,7 @@
},
"chromeExtensionBanner": {
"buttonText": "Chrome Eklentisi'ni indirin",
"buttonTextEdge": "",
"close": "Kapat",
"dontShowAgain": "Bunu bir daha gösterme",
"installExtensionText": "Google Takvim ve Office 365 entegrasyonu için uzantıyı yükleyin"
@@ -112,8 +137,7 @@
"FETCH_SESSION_ID": "Oturum kimliği alınıyor…",
"GET_SESSION_ID_ERROR": "Oturum kimliği alma hatası: {{code}}",
"GOT_SESSION_ID": "Oturum kimliği alınıyor… Tamam",
"LOW_BANDWIDTH": "Bant genişliğinden tasarruf etmek için {{displayName}} kişisinin videosu kapatıldı",
"RECONNECTING": "Bir bağlantı hatası oluştu. Tekrar bağlanıyor..."
"LOW_BANDWIDTH": "Bant genişliğinden tasarruf etmek için {{displayName}} kişisinin videosu kapatıldı"
},
"connectionindicator": {
"address": "Adres:",
@@ -149,7 +173,6 @@
"status": "Bağlantı:",
"transport": "Transport:",
"transport_plural": "Transportlar:",
"turn": " (turn)",
"video_ssrc": "Video SSRC:"
},
"dateUtils": {
@@ -166,9 +189,9 @@
"ifHaveApp": "Uygulamanız zaten varsa: ",
"joinInApp": "Uygulamayı kullanarak bu toplantıya katıl",
"launchWebButton": "Web'de aç",
"openApp": "Uygulamaya devam et",
"title": "Toplantınız {{app}} uygulamasında açılıyor...",
"tryAgainButton": "Masaüstünde tekrar deneyin"
"tryAgainButton": "Masaüstünde tekrar deneyin",
"unsupportedBrowser": "Şu an kullandığınız tarayıcıyı desteklemiyoruz."
},
"defaultLink": "örneğin {{url}}",
"defaultNickname": "örnek Jane Pink",
@@ -184,6 +207,9 @@
"selectADevice": "Bir cihaz seç",
"testAudio": "Bir test sesi çal"
},
"dialIn": {
"screenTitle": "Arama özeti"
},
"dialOut": {
"statusMessage": "şimdi {{status}}"
},
@@ -196,13 +222,14 @@
"Share": "Paylaş",
"Submit": "Gönder",
"WaitForHostMsg": "Toplantısı henüz başlamadı. Toplantı sahibi sizseniz, lütfen kimlik doğrulaması yapın. Değilseniz lütfen toplantı sahibinin gelmesini bekleyin.",
"WaitingForHost": "Toplantı sahibi bekleniyor...",
"WaitingForHostTitle": "Toplantı sahibi bekleniyor ...",
"Yes": "Evet",
"accessibilityLabel": {
"liveStreaming": "Canlı akış"
},
"add": "Ekle",
"addMeetingNote": "",
"addOptionalNote": "",
"allow": "İzin ver",
"alreadySharedVideoMsg": "Başka bir katılımcı zaten bir video paylaşıyor. Bu konferans aynı anda yalnızca bir paylaşılan videoya izin verir.",
"alreadySharedVideoTitle": "Aynı anda yalnızca bir paylaşılan videoya izin verilir.",
@@ -241,17 +268,13 @@
"embedMeeting": "Toplantıyı yerleştir",
"enterDisplayName": "Lütfen adınızı buraya girin...",
"error": "Hata",
"externalInstallationMsg": "Masaüstü paylaşım uzantımızı yüklemeniz gerekmektedir.",
"externalInstallationTitle": "Uzantı gerekli",
"goToStore": "Mağazaya git",
"gracefulShutdown": "Hizmetimiz şu anda bakım için devre dışı. Lütfen daha sonra tekrar deneyiniz.",
"grantModeratorDialog": "{{participantName}} için moderatör hakları vermek istediğinize emin misiniz?",
"grantModeratorTitle": "Moderatör hakları ver",
"hide": "Gizle",
"hideShareAudioHelper": "Bu iletişim kutusunu bir daha gösterme",
"incorrectPassword": "Kullanıcı adı veya parola hatalı",
"incorrectRoomLockPassword": "Yanlış paralo",
"inlineInstallExtension": "Şimdi yükle",
"inlineInstallationMsg": "Masaüstü paylaşım uzantımızı yüklemeniz gerekmektedir.",
"internalError": "Hata! Bir şeyler ters gitti. Şu hata oluştu: {{error}}",
"internalErrorTitle": "İç hata",
"kickMessage": "Daha fazla ayrıntı için {{participantDisplayName}} ile iletişime geçebilirsiniz.",
@@ -259,10 +282,10 @@
"kickParticipantDialog": "Bu katılımcıyı çıkarmak istediğinizden emin misiniz?",
"kickParticipantTitle": "Bu katılımcı çıkarılsın mı?",
"kickTitle": "Ah! {{participantDisplayName}} sizi toplantıdan çıkardı.",
"linkMeeting": "Toplantıyı Linkle",
"linkMeetingTitle": "Salesforce'a toplantıyı linkle",
"liveStreaming": "Canlı akış",
"liveStreamingDisabledBecauseOfActiveRecordingTooltip": "Kayıt etkinken mümkün değil",
"liveStreamingDisabledForGuestTooltip": "Konuklar canlı akışa başlayamaz.",
"liveStreamingDisabledTooltip": "Canlı akışı başlatma devre dışı.",
"localUserControls": "Yerel kullanıcı kontrolleri",
"lockMessage": "Toplantı kilitlenemedi.",
"lockRoom": "Toplantı parolası ekle",
@@ -281,26 +304,26 @@
"micUnknownError": "Bilinmeyen bir nedenden dolayı mikrofon kullanılamıyor.",
"moderationAudioLabel": "Katılımcıların kendi seslerini açmalarına izin ver",
"moderationVideoLabel": "Katılımcıların kendi videolarını başlatmalarına izin ver",
"muteEveryoneDialog": "Herkesi susturmak istediğinizden emin misiniz? Onları sessizden çıkaramayacaksınız ancak onlar kendilerini her zaman sessizden çıkarabilirler.",
"muteEveryoneDialog": "Herkesi sessize almak istediğinizden emin misiniz? Onları sessizden çıkaramayacaksınız ancak onlar kendilerini her zaman sessizden çıkarabilirler.",
"muteEveryoneDialogModerationOn": "Katılımcılar istedikleri zaman konuşma talebi gönderebilirler.",
"muteEveryoneElseDialog": "Susturulduğunda, mikrofonlarını sessizden çıkaramayacaksınız ancak onlar diledikleri zaman kendilerini sessizden çıkarabilirler.",
"muteEveryoneElseTitle": "{{whom}} hariç herkesi sustur?",
"muteEveryoneElseDialog": "Sessize alındığında, mikrofonlarını sessizden çıkaramayacaksınız ancak onlar diledikleri zaman kendilerini sessizden çıkarabilirler.",
"muteEveryoneElseTitle": "{{whom}} hariç herkesi sessize al?",
"muteEveryoneElsesVideoDialog": "Kameraları devre dışı bırakıldığında geri açamayacaksınız, ancak onlar kameralarını her zaman açabilirler.",
"muteEveryoneElsesVideoTitle": "{{whom}} hariç herkesin kamerasını devre dışı bırak?",
"muteEveryoneSelf": "Kendiniz",
"muteEveryoneStartMuted": "Şu andan itibaren herkes sessizde başlayacak",
"muteEveryoneTitle": "Herkesi sustur?",
"muteEveryoneTitle": "Herkesi sessize al?",
"muteEveryonesVideoDialog": "Herkesin kamerasını devre dışı bırakmak istediğinizden emin misiniz? Kameralar devre dışı bırakıldığında geri açamayacaksınız, ancak onlar kameralarını her zaman açabilirler.",
"muteEveryonesVideoDialogModerationOn": "Katılımcılar istedikleri zaman videolarını açmak için istek gönderebilirler.",
"muteEveryonesVideoDialogOk": "Kameraları Kapat",
"muteEveryonesVideoTitle": "Herkesin kamerasını devre dışı bırak?",
"muteParticipantBody": "Sesi açamazsınız, ancak istedikleri zaman kendileri seslerini açabilirler.",
"muteParticipantButton": "Sustur",
"muteParticipantDialog": "Bu katılımcının sesini kapatmak istediğinizden emin misiniz? Sesini açamazsınız, ancak istedikleri zaman kendileri seslerini açabilirler.",
"muteParticipantTitle": "Bu katılımcı susturulsun mu?",
"muteParticipantButton": "Sessize al",
"muteParticipantsVideoBody": "Kamerayı tekrar açamazsınız ancak istedikleri zaman tekrar açabilirler.",
"muteParticipantsVideoBodyModerationOn": "",
"muteParticipantsVideoButton": "Kamerayı durdur",
"muteParticipantsVideoDialog": "Bu katılımcının kamerasını kapatmak istediğinize emin misiniz? Kamerayı tekrar açamazsınız ancak istedikleri zaman tekrar açabilirler.",
"muteParticipantsVideoDialogModerationOn": "",
"muteParticipantsVideoTitle": "Bu katılımcı için kamerayı durdur?",
"noDropboxToken": "Dropbox anahtarı geçerli değil",
"password": "Parola",
@@ -314,10 +337,9 @@
"popupError": "Tarayıcınız bu siteden açılan pencereleri engelliyor. Lütfen tarayıcınızın güvenlik ayarlarından açılır pencereleri etkinleştirin ve tekrar deneyin.",
"popupErrorTitle": "Açılır pencere engellendi",
"readMore": "daha fazla",
"recentlyUsedObjects": "Son zamanlarda kullandığınız objeler",
"recording": "Kaydediliyor",
"recordingDisabledBecauseOfActiveLiveStreamingTooltip": "Canlı akış etkinken mümkün değil...",
"recordingDisabledForGuestTooltip": "Misafirler kayıt etmeye başlayamaz.",
"recordingDisabledTooltip": "Kaydetmeye başlama devre dışı.",
"rejoinNow": "Tekrar katıl",
"remoteControlAllowedMessage": "{{user}} uzaktan kontrol isteğinizi kabul etti!",
"remoteControlDeniedMessage": "{{user}} uzaktan kontrol isteğinizi reddetti!",
@@ -336,11 +358,13 @@
"screenSharingAudio": "Sesi paylaş",
"screenSharingFailed": "Hop! Bir şeyler ters gitti, ekran paylaşımınızı başlatamıyoruz!",
"screenSharingFailedTitle": "Ekran paylaşımı başarısız!",
"screenSharingFailedToInstall": "Hata! Ekran paylaşım uzantınız yüklenemedi.",
"screenSharingFailedToInstallTitle": "Ekran paylaşım uzantısı yüklenemedi",
"screenSharingFirefoxPermissionDeniedError": "Ekranınızı paylaşmaya çalışırken bir şeyler ters gitti. Lütfen bize izin verdiğinizden emin olun.",
"screenSharingFirefoxPermissionDeniedTitle": "Hata! Ekran paylaşımına başlayamadık!",
"screenSharingPermissionDeniedError": "Hata! Ekran paylaşma uzantısı izinlerinizle ilgili bir sorun oluştu. Lütfen yeniden yükleyin ve tekrar deneyin.",
"searchInSalesforce": "Salesforce'ta ara",
"searchResults": "Arama sonuçları({{count}})",
"searchResultsDetailsError": "Veriler getirilirken bir şeyler yanlış gitti.",
"searchResultsError": "Sahip verileri getirilirken bir şeyler yanlış gitti.",
"searchResultsNotFound": "Arama sonucunda bir şey bulunamadı.",
"searchResultsTryAgain": "Alternatif aramaları deneyiniz.",
"sendPrivateMessage": "Kısa süre önce özel bir mesaj aldınız. Buna özel olarak cevap vermek ister misiniz yoksa mesajınızı gruba göndermek mi istiyorsunuz?",
"sendPrivateMessageCancel": "Gruba gönder",
"sendPrivateMessageOk": "Özel olarak gönder",
@@ -363,8 +387,10 @@
"shareVideoTitle": "Bir video paylaş",
"shareYourScreen": "Ekranınızı paylaşın",
"shareYourScreenDisabled": "Ekran paylaşımı devre dışı.",
"shareYourScreenDisabledForGuest": "Konuklar ekran paylaşımı yapamaz.",
"sharedVideoDialogError": "",
"sharedVideoLinkPlaceholder": "YouTube bağlantısı veya doğrudan video bağlantısı",
"show": "Göster",
"start": "Başlat",
"startLiveStreaming": "Canlı akışı başlat",
"startRecording": "Kaydı başlat",
"startRemoteControlErrorMessage": "Uzaktan kontrol oturumunu başlatmaya çalışırken bir hata oluştu!",
@@ -407,8 +433,12 @@
"veryBad": "Çok kötü",
"veryGood": "Çok iyi"
},
"giphy": {
"noResults": "Sonuç yok :(",
"search": "GIPHY ara"
},
"helpView": {
"header": "Yardım Merkezi"
"title": "Yardım merkezi"
},
"incomingCall": {
"answer": "Cevapla",
@@ -450,9 +480,11 @@
"noRoom": "Aranacak oda belirtilmedi.",
"numbers": "Arama Numaraları",
"password": "Parola:",
"reachedLimit": "Plan limitlerine ulaştınız.",
"sip": "SIP adresi",
"title": "Paylaş",
"tooltip": "Bu toplantı için bağlantıyı ve arama bilgilerini paylaşın"
"tooltip": "Bu toplantı için bağlantıyı ve arama bilgilerini paylaşın",
"upgradeOptions": "Lütfen yükseltme seçeneklerini kontrol ediniz."
},
"inlineDialogFailure": {
"msg": "Biraz tökezledik.",
@@ -473,6 +505,7 @@
"focusLocal": "Videoya odaklan",
"focusRemote": "Başka bir kişinin videosuna odaklan",
"fullScreen": "Tam ekran görüntüle veya çık",
"giphyMenu": "GIPHY menü geçişi",
"keyboardShortcuts": "Klavye kısayolları",
"localRecording": "Kayıt denetimlerini göster veya gizle",
"mute": "Mikrofonu aç veya kapat",
@@ -484,8 +517,11 @@
"toggleParticipantsPane": "Katılımcılar bölmesini göster veya gizle",
"toggleScreensharing": "Kamera ve ekran paylaşımı arasında geçiş yap",
"toggleShortcuts": "Klavye kısayollarını göster veya gizle",
"videoMute": "Kamerayı aç veya kapat",
"videoQuality": "Çağrı kalitesini yönetin"
"videoMute": "Kamerayı aç veya kapat"
},
"largeVideo": {
"screenIsShared": "Ekranınızı paylaşıyorsunuz",
"showMeWhatImSharing": "Ne paylaştığımı bana göster"
},
"liveStreaming": {
"busy": "Akış kaynaklarını serbest bırakmaya çalışıyoruz. Lütfen birkaç dakika içinde tekrar deneyin.",
@@ -503,6 +539,7 @@
"failedToStart": "Canlı Akış başlatılamadı",
"getStreamKeyManually": "Canlı akış alınamadı. Canlı akış anahtarınızı Youtube'dan almayı deneyin.",
"googlePrivacyPolicy": "Google Gizlilik Politikası",
"inProgress": "Kaydetme veya canlı akış işlemde",
"invalidStreamKey": "Canlı akış anahtarı yanlış olabilir.",
"limitNotificationDescriptionNative": "Akışınız {{limit}} dk ile sınırlı olacak. Sınırsız akış için {{app}} deneyin.",
"limitNotificationDescriptionWeb": "Yüksek talep nedeniyle akışınız {{limit}} dk ile sınırlı olacaktır. Sınırsız akış için <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a> deneyin.",
@@ -512,12 +549,14 @@
"onBy": "{{name}} canlı akışı başlattı",
"pending": "Canlı Akış başlatılıyor...",
"serviceName": "Canlı Akış hizmeti",
"sessionAlreadyActive": "",
"signIn": "Google ile giriş yap",
"signInCTA": "Oturum açın veya Youtube'dan canlı akış anahtarınızı girin.",
"signOut": ıkış yap",
"signedInAs": "Şu anda oturum açmış durumdasınız:",
"start": "Bir canlı akış başlat",
"streamIdHelp": "Bu nedir?",
"title": "Canlı akış",
"unavailableTitle": "Canlı Akış kullanılamıyor",
"youtubeTerms": "YouTube hizmet şartları"
},
@@ -539,6 +578,7 @@
"errorMissingPassword": "Lütfen toplantı parolasını girin",
"invalidPassword": "Geçersiz parola",
"joinRejectedMessage": "Katılma isteğiniz bir moderatör tarafından reddedildi.",
"joinRejectedTitle": "Katılma isteğiniz reddedildi",
"joinTitle": "Toplantıya katıl",
"joinWithPasswordMessage": "Parola ile katılmaya çalışıyorsunuz lütfen bekleyin...",
"joiningMessage": "Birisi isteğinizi kabul eder etmez toplantıya katılacaksınız",
@@ -559,6 +599,7 @@
"passwordJoinButton": "Katıl",
"reject": "Reddet",
"rejectAll": "Hepsini reddet",
"title": "Lobi",
"toggleLabel": "Lobiyi etkinleştir"
},
"localRecording": {
@@ -585,6 +626,7 @@
"no": "Hayır",
"participant": "Katılımcı",
"participantStats": "Katılımcı İstatistikleri",
"selectTabTitle": "🎥 Lütfen kayıt için bu sekmeyi seçin",
"sessionToken": "Oturum Tokeni",
"start": "Kaydı başlat",
"stop": "Kaydı durdur",
@@ -601,6 +643,8 @@
"OldElectronAPPTitle": "Güvenlik açığı!",
"allowAction": "İzin ver",
"allowedUnmute": "Mikrofonunuzu sessizden çıkarabilir, kameranızı başlatabilir veya ekranınızı paylaşabilirsiniz.",
"audioUnmuteBlockedDescription": "Sistem sınırları nedeniyle mikrofon sesini açma işlemi geçici olarak engellendi",
"audioUnmuteBlockedTitle": "Mikrofon sesini açma işlemi engellendi!",
"chatMessages": "Sohbet mesajları",
"connectedOneMember": "{{name}} toplantıya katıldı",
"connectedThreePlusMembers": "{{name}} ve {{count}} kişi daha toplantıya katıldı",
@@ -609,18 +653,29 @@
"displayNotifications": "Bildirimleri görüntüle",
"focus": "Toplantı odağı",
"focusFail": "{{component}} uygun değil - {{ms}} saniye içinde tekrar deneyin",
"grantedTo": "{{to}} kişisine yönetici hakları verildi!",
"gifsMenu": "GIPHY",
"groupTitle": "Bildirimler",
"hostAskedUnmute": "Moderatör konuşmanı istiyor",
"invitedOneMember": "{{name}} davet edildi",
"invitedThreePlusMembers": "{{name}} ve {{count}} kişi daha davet edildi",
"invitedTwoMembers": "{{first}} ve {{second}} davet edildi",
"kickParticipant": "{{kicked}} kişisi {{kicker}} tarafından çıkarıldı",
"leftOneMember": "{{name}} toplantıdan ayrıldı",
"leftThreePlusMembers": "{{name}} ve diğerleri toplantıdan ayrıldı",
"leftTwoMembers": "{{first}} ve {{second}} toplantıdan ayrıldı",
"linkToSalesforce": "Salesforce'a linkle",
"linkToSalesforceDescription": "Toplantı özetini bir Salesforce nesnesine bağlayabilirsiniz",
"linkToSalesforceError": "Toplantı Salesforce'a bağlanamadı",
"linkToSalesforceKey": "Bu toplantıyı bağla",
"linkToSalesforceProgress": "Toplantı Salesforce'a bağlanıyor...",
"linkToSalesforceSuccess": "Toplantı Salesforce'a bağlandı",
"localRecordingStarted": "{{name}} lokal kayıt başlattı",
"localRecordingStopped": "{{name}} lokal kaydı durdurdu",
"me": "Ben",
"moderationInEffectCSDescription": "Ekranınızı paylaşmak isterseniz lütfen el kaldırın.",
"moderationInEffectCSTitle": "Ekran paylaşımı moderatör tarafından bloklandı",
"moderationInEffectDescription": "Konuşmak isterseniz lütfen el kaldırın.",
"moderationInEffectTitle": "Mikrofonunuz moderatör tarafından susturuldu",
"moderationInEffectTitle": "Mikrofonunuz moderatör tarafından sessize alındı",
"moderationInEffectVideoDescription": "Kameranızı başlatmak isterseniz lütfen el kaldırın.",
"moderationInEffectVideoTitle": "Kameranız moderatör tarafından bloklandı",
"moderationRequestFromModerator": "Ev sahibi sesi açmanızı istiyor",
@@ -636,16 +691,25 @@
"newDeviceAction": "Kullan",
"newDeviceAudioTitle": "Yeni ses aygıtı algılandı",
"newDeviceCameraTitle": "Yeni kamera algılandı",
"noiseSuppressionDesktopAudioDescription": "Masaüstü sesi paylaşılırken gürültü bastırma etkinleştirilemez, lütfen devre dışı bırakın ve tekrar deneyin.",
"noiseSuppressionFailedTitle": "Gürültü bastırma başlatılamadı",
"noiseSuppressionNoTrackDescription": "Lütfen önce mikrofonunuzun sesini açın.",
"noiseSuppressionStereoDescription": "Stereo ses gürültü bastırma şu anda desteklenmemektedir.",
"oldElectronClientDescription1": "Güvenlik açıkları bilinen Jitsi Meet istemcisinin eski bir sürümünü kullanıyor görünüyorsunuz. Lütfen güncellediğinizden emin olun.",
"oldElectronClientDescription2": "son yapı",
"oldElectronClientDescription3": " şimdi!",
"participantWantsToJoin": "toplantıya katılmak istiyor",
"participantsWantToJoin": "toplantıya katılmak istiyor",
"passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) başka bir katılımcı tarafından kaldırıldı",
"passwordSetRemotely": "$t(lockRoomPasswordUppercase) başka bir katılımcı tarafından ayarlandı",
"raiseHandAction": "El kaldır",
"raisedHand": "{{name}} söz hakkı istiyor.",
"raisedHands": "{{participantName}} ve {{raisedHands}}'ten daha fazla kişi",
"reactionSounds": "Sesleri devre dışı bırak",
"reactionSoundsForAll": "Herkes için sesleri devre dışı bırak",
"screenShareNoAudio": " Pencere seçim ekranında sesi paylaş kutusu işaretlenmedi.",
"screenShareNoAudioTitle": "Sistem sesi paylaşılamadı!",
"selfViewTitle": "Kendi kendine görünümü her zaman ayarlardan gizleyebilirsiniz",
"somebody": "Birisi",
"startSilentDescription": "Ses çıkışını açtıktan sonra tekrar bağlanın",
"startSilentTitle": "Ses çıkışı olmadan bağlandınız",
@@ -653,7 +717,11 @@
"suboptimalExperienceTitle": "Tarayıcı Uyarısı",
"unmute": "Sessizden çıkar",
"videoMutedRemotelyDescription": "Her zaman yeniden açabilirsiniz.",
"videoMutedRemotelyTitle": "{{moderator}} tarafından videonuz kapatıldı"
"videoMutedRemotelyTitle": "{{moderator}} tarafından videonuz kapatıldı",
"videoUnmuteBlockedDescription": "Sistem sınırları nedeniyle kamera sesini açma ve masaüstü paylaşım işlemi geçici olarak engellendi.",
"videoUnmuteBlockedTitle": "Kameranın sesini açma ve masaüstü paylaşımı engellendi!",
"viewLobby": "Lobiyi göster",
"waitingParticipants": "{{waitingParticipants}} kişi"
},
"participantsPane": {
"actions": {
@@ -666,8 +734,8 @@
"moreModerationActions": "Daha fazla denetleme seçeneği",
"moreModerationControls": "Daha fazla denetleme kontrolü",
"moreParticipantOptions": "Daha fazla katılımcı seçeneği",
"mute": "Sustur",
"muteAll": "Herkesi sustur",
"mute": "Sessize al",
"muteAll": "Herkesi sessize al",
"muteEveryoneElse": "Diğer herkesi sessize al",
"stopEveryonesVideo": "Herkesin videosunu durdur",
"stopVideo": "Video'yu durdur",
@@ -675,21 +743,23 @@
"videoModeration": "Videolarını başlat"
},
"close": "Kapat",
"header": "Katılımcılar",
"headings": {
"lobby": "Lobi ({{count}})",
"participantsList": "Toplantı Katılımcıları ({{count}})",
"waitingLobby": "Lobide bekleyen ({{count}})"
},
"search": "Katılımcıları ara"
"search": "Katılımcıları ara",
"title": "Katılımcılar"
},
"passwordDigitsOnly": "{{number}} rakama kadar",
"passwordSetRemotely": "başka katılımcı tarafından ayarlandı",
"pinnedParticipant": "Katılımcı sabitlendi",
"polls": {
"answer": {
"skip": "Geç",
"submit": "Gönder"
},
"by": "{{ name }} tarafından",
"create": {
"addOption": "Seçenek Ekle",
"answerPlaceholder": "Seçenek {{index}}",
@@ -713,7 +783,7 @@
"vote": "Oylar"
}
},
"poweredby": "",
"poweredby": "tarafından",
"prejoin": {
"audioAndVideoError": "Ses ve video hatası:",
"audioDeviceProblem": "Ses cihazınızla ilgili bir sorun var",
@@ -760,6 +830,7 @@
"initiated": "Çağrı başlatıldı",
"joinAudioByPhone": "Join with phone audio",
"joinMeeting": "Toplantıya katıl",
"joinMeetingInLowBandwidthMode": "Düşük bant genişliği modunda katılın",
"joinWithoutAudio": "Ses olmadan katıl",
"keyboardShortcuts": "Klavye kısayollarını etkinleştir",
"linkCopied": "Bağlantı panoya kopyalandı",
@@ -787,6 +858,9 @@
"rejected": "Reddedildi",
"ringing": "Çalıyor..."
},
"privacyView": {
"title": "Gizlilik"
},
"profile": {
"avatar": "avatar",
"setDisplayNameLabel": "Görünür adınızı ayarlayın",
@@ -795,6 +869,19 @@
"title": "Profil"
},
"raisedHand": "Konuşmak ister misiniz?",
"raisedHandsLabel": "Kaldırılan ellerin sayısı",
"record": {
"already": {
"linked": "Toplantı zaten bu Salesforce nesnesine bağlı."
},
"type": {
"account": "Hesap",
"contact": "Kontak",
"lead": "Lider",
"opportunity": "İmkan",
"owner": "Sahip"
}
},
"recording": {
"authDropboxText": "Dropbox'a yükle",
"availableSpace": "Kullanılabilir alan: {{spaceLeft}} MB (yaklaşık {{duration}} dakika kayıt)",
@@ -809,26 +896,47 @@
"expandedPending": "Kayıt başlatılıyor ...",
"failedToStart": "Kayıt başlatılamadı",
"fileSharingdescription": "Toplantı katılımcılarıyla kaydı paylaş",
"highlight": "Önemli Olay",
"highlightMoment": "Vurgu anı",
"highlightMomentDisabled": "Kayıt başladığında önemli anları vurgulayabilirsiniz",
"highlightMomentSuccess": "An vurgulandı",
"highlightMomentSucessDescription": "Vurgulanan anınız toplantı özetine eklenecektir.",
"inProgress": "Kayıt veya canlı akış devam ediyor",
"limitNotificationDescriptionNative": "Yüksek talep nedeniyle kaydınız {{limit}} dakika ile sınırlı olacaktır. Sınırsız kayıt için deneyin <3>{{app}}</3>.",
"limitNotificationDescriptionWeb": "Yüksek talep nedeniyle kaydınız {{limit}} dakika ile sınırlı olacaktır. Sınırsız kayıt için deneyin <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
"linkGenerated": "Kaydınızla ilgili link oluşturduk.",
"live": "CANLI",
"localRecordingNoNotificationWarning": "Kayıt diğer katılımcılara duyurulmayacaktır. Onlara toplantının kaydedildiğini bildirmeniz gerekecek.",
"localRecordingNoVideo": "Video kaydedilmiyor",
"localRecordingStartWarning": "Lütfen kaydetmek için toplantıdan çıkmadan önce kaydı durdurduğunuzdan emin olun.",
"localRecordingStartWarningTitle": "Kaydetmek için kaydı durdurun",
"localRecordingVideoStop": "Videonuzu durdurmak yerel kaydı da durduracaktır. Devam etmek istediğine emin misin?",
"localRecordingVideoWarning": "Videonuzu kaydetmek için kayda başlarken açmış olmanız gerekir",
"localRecordingWarning": "Doğru video ve sesi kullanmak için geçerli sekmeyi seçtiğinizden emin olun. Kayıt şu anda yaklaşık 100 dakika olan 1GB ile sınırlıdır.",
"loggedIn": "{{userName}} olarak giriş yapıldı",
"noStreams": "Ses veya video akışı algılanmadı",
"off": "Kayıt durdu",
"offBy": "{{name}} isimli kayıt durduruldu",
"on": "Kayıt başladı",
"onBy": "{{name}} isimli kayıt başlatıldı",
"onlyRecordSelf": "Yalnızca ses ve video akışlarımı kaydet",
"pending": "Toplantıyı kaydetmeye hazırlanıyor ...",
"rec": "KAYIT",
"saveLocalRecording": "Kayıt dosyasını yerel olarak kaydet (Beta)",
"serviceDescription": "Kaydınız kayıt hizmeti tarafından kaydedilecektir",
"serviceDescriptionCloud": "Bulut kaydı",
"serviceDescriptionCloudInfo": "Kaydedilen toplantılar, kayıt süresinden 24 saat sonra otomatik olarak temizlenir.",
"serviceName": "Kayıt hizmeti",
"sessionAlreadyActive": "Bu oturum zaten kaydediliyor veya canlı yayınlanıyor.",
"signIn": "Giriş yap",
"signOut": ıkış yap",
"surfaceError": "Lütfen geçerli sekmeyi seçin",
"title": "Kaydediliyor",
"unavailable": "Ah! {{serviceName}} şu anda kullanılamıyor. Sorunu çözmek için çalışıyoruz. Lütfen daha sonra tekrar deneyin.",
"unavailableTitle": "Kayıt yapılamıyor",
"uploadToCloud": "Buluta yükle"
},
"screenshareDisplayName": "{{name}}'nin ekranı",
"sectionList": {
"pullToRefresh": "Yenilemek için çekin"
},
@@ -836,9 +944,10 @@
"about": "Toplantınıza bir parola ekleyebilirsiniz. Katılımcıların toplantıya katılmasına izin verilmeden önce parolayı girmeleri gerekecektir.",
"aboutReadOnly": "Moderatörler toplantıya toplantıya bir $t(lockRoomPassword) eklenebilir. Katılımcıların toplantıya katılmalarına izin verilmeden önce $t(lockRoomPassword) bilgilerini sağlamaları gerekir..",
"insecureRoomNameWarning": "Toplantı odası güvenli değil. Konferansınıza istenmeyen katılımcılar katılabilir.",
"securityOptions": "Güvenlik Seçenekleri"
"title": "Güvenlik Seçenekleri"
},
"settings": {
"buttonLabel": "Ayarlar",
"calendar": {
"about": "{{appName}} takvim entegrasyonu, yaklaşan etkinlikleri okuyabilmesi için takviminize güvenli bir şekilde erişmek için kullanılır.",
"disconnect": "Bağlantıyı Kes",
@@ -862,6 +971,7 @@
"name": "Ad",
"noDevice": "Yok",
"participantJoined": "Katılımcı katıldı",
"participantKnocking": "",
"participantLeft": "Katılımcı ayrıldı",
"playSounds": "Sesi çal",
"reactions": "Toplantı reaksiyonları",
@@ -869,9 +979,11 @@
"selectAudioOutput": "Ses çıkışı",
"selectCamera": "Kamera",
"selectMic": "Mikrofon",
"selfView": "Kendi görünümüm",
"sounds": "Sesler",
"speakers": "Hoparlörler",
"startAudioMuted": "Herkes ses kapalı başlasın",
"startReactionsMuted": "Reaksiyon seslerini herkes için kapat",
"startVideoMuted": "Herkes görüntü kapalı başlasın",
"talkWhileMuted": "Sesi kapalıyken konuş",
"title": "Ayarlar"
@@ -889,13 +1001,20 @@
"disableCrashReportingWarning": "Kilitlenme raporlamasını devre dışı bırakmak istediğinizden emin misiniz? Ayar, uygulamayı yeniden başlattıktan sonra uygulanacaktır.",
"disableP2P": "Peer-To-Peer modunu devre dışı bırak",
"displayName": "Görünür ad",
"displayNamePlaceholderText": "Ör: John Doe",
"email": "E-posta",
"goTo": "Git",
"header": "Ayarlar",
"help": "Yardım",
"links": "Linkler",
"privacy": "Gizlilik",
"profileSection": "Profil",
"serverURL": "Sunucu Bağlantısı",
"showAdvanced": "Gelişmiş ayarları göster",
"startCarModeInLowBandwidthMode": "Düşük bağlantı modunda araba modunu başlat",
"startWithAudioMuted": "Ses kapalı başla",
"startWithVideoMuted": "Görüntü kapalı başla",
"terms": "Şartlar",
"version": "Versiyon"
},
"share": {
@@ -904,13 +1023,21 @@
},
"speaker": "Konuşmacı",
"speakerStats": {
"angry": "Kızgın",
"disgusted": "Bıkkın",
"displayEmotions": "Duyguları göster",
"fearful": "Korkunç",
"happy": "Mutlu",
"hours": "{{count}}sa",
"minutes": "{{count}}dk",
"name": "Ad",
"neutral": "Nötr",
"sad": "Üzgün",
"search": "Ara",
"seconds": "{{count}}sn",
"speakerStats": "Konuşmacı İstatistikleri",
"speakerTime": "Konuşmacı Süresi"
"speakerTime": "Konuşmacı Süresi",
"surprised": "Sürpriz"
},
"startupoverlay": {
"genericTitle": "Toplantının mikrofonunuzu ve kameranızı kullanması gerekli.",
@@ -922,6 +1049,10 @@
"text": "Tekrar bağlanmak için <i>Tekrar katıl</i> butonuna basın.",
"title": "Bu bilgisayar uyku moduna geçtiği için görüntülü görüşmeniz kesildi."
},
"termsView": {
"title": "Şartlar"
},
"toggleTopPanelLabel": "",
"toolbar": {
"Settings": "Ayarlar",
"accessibilityLabel": {
@@ -929,25 +1060,31 @@
"audioOnly": "Yalnızca sesi aç/kapat",
"audioRoute": "Ses aygıtını seçin",
"boo": "Boo",
"callQuality": "Arama kalitesini yönetin",
"breakoutRoom": "Alt oda",
"callQuality": "Armama kalitesini yönetin",
"carmode": "Araba odu",
"cc": "Altyazıları aç/kapat",
"chat": "Mesajlaşma penceresini aç/kapat",
"clap": "Alkış",
"collapse": "Daralt",
"dock": "Ana pencerede sabitleyin",
"document": "Paylaşılan dokümanı aç/kapat",
"download": "Uygulamalarımızı indirin",
"e2ee": "Uçtan uca şifreleme",
"embedMeeting": "Toplantıyı yerleştir",
"endConference": "Herkes için toplantıyı sonlandır",
"expand": "Genişlet",
"feedback": "Geri bildirim bırakın",
"fullScreen": "Tam ekranı aç/kapat",
"giphy": "GIPHY menüsünü aç/kapat",
"grantModerator": "Moderatör Hakları Ver",
"hangup": "Aramadan ayrıl",
"help": "Yardım",
"invite": "İnsanları davet et",
"kick": "Katılımcı çıkar",
"laugh": "Gül",
"leaveConference": "Toplantıdan ayrıl",
"like": "Çok iyi!",
"linkToSalesforce": "Salesforce'a bağla",
"lobbyButton": "Lobi modunu etkinleştir / devre dışı bırak",
"localRecording": "Kayıt denetimlerini aç/kapat",
"lockRoom": "Toplantı parolasını aç/kapat",
@@ -955,10 +1092,11 @@
"moreActionsMenu": "Diğer işlemler menüsü",
"moreOptions": "Daha fazla seçenek göster",
"mute": "Sesi aç/kapat",
"muteEveryone": "Herkesi sustur",
"muteEveryone": "Herkesi sessize al",
"muteEveryoneElse": "Diğer herkesi sessize al",
"muteEveryoneElsesVideo": "Diğer herkesin kamerasını devre dışı bırak",
"muteEveryonesVideo": "Herkesin kamerasını devre dışı bırak",
"muteEveryoneElsesVideoStream": "Diğer herkesin videosunu durdur",
"muteEveryonesVideoStream": "Herkesin videosunu durdur",
"noiseSuppression": "Gürültü azaltma",
"participants": "Katılımcılar",
"pip": "Resim içinde Resim modunu aç/kapat",
"privateMessage": "Özel mesaj gönder",
@@ -970,6 +1108,7 @@
"remoteVideoMute": "Katılımcının kamerasını devre dışı bırak",
"security": "Güvenlik seçenekleri",
"selectBackground": "Arkaplan Seç",
"selfView": "Kendi kendine görünümü aç/kapat",
"shareRoom": "Birini davet et",
"shareYourScreen": "Ekran paylaşımını aç/kapat",
"shareaudio": "Sesi paylaş",
@@ -982,8 +1121,10 @@
"tileView": "Döşeme görünümünü aç/kapat",
"toggleCamera": "Kamerayı değiştir",
"toggleFilmstrip": "Film şeridini aç/kapat",
"videoblur": "",
"videomute": "Sessiz videoyu aç/kapat"
"undock": "Ayrı pencereye çıkarın",
"videoblur": "Video bulanıklaştırma aç/kapat",
"videomute": "Sessiz videoyu aç/kapat",
"whiteboard": "Beyaztahtayı Göster / Gizle"
},
"addPeople": "Aramanıza kişi ekleyin",
"audioOnlyOff": "Yalnızca ses modunu devre dışı bırak",
@@ -997,22 +1138,31 @@
"clap": "Alkış",
"closeChat": "Mesajlaşmayı kapat",
"closeReactionsMenu": "Reaksiyon menüsünü kapat",
"disableNoiseSuppression": "",
"disableReactionSounds": "Toplantı için reaksiyon seslerini devre dışı bırak",
"dock": "Ana pencerede sabitleyin",
"documentClose": "Paylaşılan dokümanı kapat",
"documentOpen": "Paylaşılan dokümanı aç",
"download": "Uygulamalarımızı indirin",
"e2ee": "Uçtan uca şifreleme",
"embedMeeting": "Toplantıyı yerleştir",
"endConference": "Herkes için toplantıyı sonlandır",
"enterFullScreen": "Tam ekran görüntüle",
"enterTileView": "Döşeme görünümüne geç",
"exitFullScreen": "Tam ekrandan çık",
"exitTileView": "Döşeme görünümünden çık",
"feedback": "Geri bildirim bırakın",
"giphy": "GIPHY menü aç/kapat",
"hangup": "Ayrıl",
"help": "Yardım",
"hideWhiteboard": "Beyaztahtayı gizle",
"invite": "Kişi davet et",
"joinBreakoutRoom": "Alt odaya katıl",
"laugh": "Gül",
"leaveBreakoutRoom": "Alt odadan ayrıl",
"leaveConference": "Toplantıdan Ayrıl",
"like": "Çok iyi!",
"linkToSalesforce": "Salesforce'a bağla",
"lobbyButtonDisable": "Lobi modunu devre dışı bırak",
"lobbyButtonEnable": "Lobi modunu devre aktifleştir",
"login": "Oturum aç",
@@ -1021,13 +1171,14 @@
"moreActions": "Daha fazla işlem",
"moreOptions": "Daha fazla seçenek",
"mute": "Sessiz / Sesli",
"muteEveryone": "Herkesi sustur",
"muteEveryone": "Herkesi sessize al",
"muteEveryonesVideo": "Herkesin kamerasını devre dışı bırak",
"noAudioSignalDesc": "Sistem ayarlarından veya donanımdan sesi kapatmadıysanız, cihazınızı değiştirin.",
"noAudioSignalDescSuggestion": "Sistem ayarlarından veya donanımdan kasıtlı olarak kapatmadıysanız, önerilen aygıta geçmeyi düşünün.",
"noAudioSignalDialInDesc": "",
"noAudioSignalDialInLinkDesc": "İçeri arama numaraları",
"noAudioSignalTitle": "Mikrofonunuzdan hiçbir giriş gelmiyor!",
"noiseSuppression": "Gürültü azaltma",
"noisyAudioInputDesc": "Mikrofonunuz gürültü yapıyor gibi görünüyor, lütfen cihazı kapatmayı veya değiştirmeyi düşünün.",
"noisyAudioInputTitle": "Mikrofonunuz gürültülü görünüyor!",
"openChat": "Mesajlaşmayı aç",
@@ -1050,20 +1201,20 @@
"shareaudio": "Ses paylaş",
"sharedvideo": "Bir videosu paylaş",
"shortcuts": "Kısayolları göster",
"showWhiteboard": "Beyaztahtayı Göster",
"silence": "Sessiz",
"speakerStats": "Konuşmacı istatistikleri",
"startScreenSharing": "Ekran paylaşımını başlat",
"startSubtitles": "Altyazıları başlat",
"startvideoblur": "",
"stopAudioSharing": "Ses paylaşımını durdur",
"stopScreenSharing": "Ekran paylaşımını durdur",
"stopSharedVideo": "Videosunu durdur",
"stopSubtitles": "Altyazıları durdur",
"stopvideoblur": "",
"surprised": "Sürpriz",
"talkWhileMutedPopup": "Bir şey mi dediniz? Mikrofonunuz kapalı.",
"tileViewToggle": "Döşeme görünümünü aç/kapat",
"toggleCamera": "Kamerayı değiştir",
"undock": "Ayrı pencereye çıkarın",
"videoSettings": "Video ayarları",
"videomute": "Kamera başlat / durdur"
},
@@ -1077,6 +1228,8 @@
"pending": "Toplantıyı deşifre etmeye hazırlanıyor...",
"start": "Altyazıları göstermeye başla",
"stop": "Altyazıları göstermeyi durdur",
"subtitles": "Altyazılar",
"subtitlesOff": "Kapat",
"tr": "TR"
},
"userMedia": {
@@ -1102,19 +1255,20 @@
"pending": "{{displayName}} davet edildi"
},
"videoStatus": {
"adjustFor": "Ayala:",
"audioOnly": "SES",
"audioOnlyExpanded": "Yalnızca ses modundasınız. Bu mod bant genişliğinden tasarruf sağlar, ancak başkalarının videolarını göremezsiniz.",
"bestPerformance": "En iyi performans",
"callQuality": "Arama Kalitesi",
"hd": "HD",
"hdTooltip": "Yüksek çözünürlükte video görüntüleniyor",
"highDefinition": "Yüksek çözünürlük",
"highestQuality": "En yüksek kalite",
"labelTooiltipNoVideo": "Görüntü yok",
"labelTooltipAudioOnly": "Yalnızca ses modu etkin",
"ld": "LD",
"ldTooltip": "Düşük çözünürlüklü video görüntüleme",
"lowDefinition": "Düşük çözünürlük",
"onlyAudioAvailable": "Yalnızca ses kullanılabilir",
"onlyAudioSupported": "Bu tarayıcıda yalnızca sesi destekliyoruz.",
"performanceSettings": "Performans ayarları",
"sd": "SD",
"sdTooltip": "Standart çözünürlüklü video görüntüleme",
@@ -1122,18 +1276,23 @@
},
"videothumbnail": {
"connectionInfo": "Bağlantı Bilgisi",
"domute": "Sustur",
"domuteOthers": "Diğer herkesi sustur",
"domute": "Sessize al",
"domuteOthers": "Diğer herkesi sessize al",
"domuteVideo": "Kamerayı devre dışı bırak",
"domuteVideoOfOthers": "Diğer herkesin kamerasını devre dışı bırak",
"flip": "Döndür",
"grantModerator": "Moderatör Hakları Ver",
"hideSelfView": "Kendi görüntümü gizle",
"kick": ıkar",
"moderator": "Yönetici",
"mute": "Katılımcı sessiz",
"muted": "Sessiz",
"pinToStage": "Sahneye sabitle",
"remoteControl": "Uzaktan kontrol",
"screenSharing": "Katılımcı ekranını paylaşıyor",
"show": "Sahnede göster",
"showSelfView": "Kendi görüntümü göster",
"unpinFromStage": "Sabitlemeyi kaldır",
"videoMuted": "Kamerayı devre dışı bırakıldı",
"videomute": "Katılımcı kamerayı durdurdu"
},
@@ -1158,7 +1317,8 @@
"slightBlur": "Hafif Bulanıklık",
"title": "Sanal arkaplanlar",
"uploadedImage": "Yüklenen resim {{index}}",
"webAssemblyWarning": "WebAssembly desteklenmiyor"
"webAssemblyWarning": "WebAssembly desteklenmiyor",
"webAssemblyWarningDescription": "WebAssembly devre dışı bırakıldı veya bu tarayıcı tarafından desteklenmiyor"
},
"volumeSlider": "Ses kaydırıcısı",
"welcomepage": {
@@ -1174,7 +1334,7 @@
},
"calendar": "Takvim",
"connectCalendarButton": "Takviminizi bağlayın",
"connectCalendarText": "",
"connectCalendarText": "{{app}} uygulamasındaki tüm toplantılarınızı görüntülemek için takviminizi bağlayın. Ayrıca, takviminize {{provide}} toplantı ekleyin ve tek tıklamayla başlatın.",
"enterRoomTitle": "Yeni bir toplantı başlat",
"getHelp": "Yardım alın",
"go": "GİT",
@@ -1200,11 +1360,12 @@
"recentList": "En son",
"recentListDelete": "Sil",
"recentListEmpty": "En son görüşülenler listeniz şu anda boş. Sohbet edin ve son toplantılarınızı burada görüntüleyin.",
"reducedUIText": "",
"reducedUIText": "Hoşgeldiniz - {{app}}!",
"roomNameAllowedChars": "Toplantı adı şu karakterlerden hiçbirini içermemelidir: ?, &, :, ', \", %, #.",
"roomname": "Oda adı girin",
"roomnameHint": "Katılmak istediğiniz odanın adını veya bağlantısını girin. İstediğiniz oda adını uydurabilirsiniz. Aynı odada buluşmak için görüşmek istediğiniz kişilere bunu iletmeniz yeterli.",
"sendFeedback": "Geri bildirim gönder",
"settings": "Ayarlar",
"startMeeting": "Toplantı başlat",
"terms": "Kurallar",
"title": "Güvenli, tüm özelliklere erişimli ve tamamen ücretsiz görüntülü arama"

View File

@@ -82,7 +82,7 @@
},
"labels": {
"buttonLabel": "Режим «За кермом»",
"title": "Режим для використання під час керування автомобілем",
"title": "Режим «За кермом»",
"videoStopped": "Ваше відео зупинено"
}
},

View File

@@ -56,6 +56,7 @@
"title": "Nhập tên của bạn để tán gẫu",
"titleWithPolls": "Nhập tên của bạn để tán gẫu"
},
"sendButton": "Gửi",
"title": "Tán gẫu",
"titleWithPolls": "Tán gẫu",
"you": "bạn"
@@ -387,6 +388,7 @@
"signedInAs": "Bạn đang đăng nhập theo:",
"start": "Bắt đầu phát trực tuyến",
"streamIdHelp": "Đây là gì?",
"title": "Phát trực tuyến",
"unavailableTitle": "Không Live Stream được"
},
"localRecording": {
@@ -515,6 +517,7 @@
"serviceName": "Dịch vụ ghi hình",
"signIn": "Đăng nhập",
"signOut": "Đăng xuất",
"title": "Đang ghi âm",
"unavailable": "Rất tiếc! Dịch vụ {{serviceName}} đang không sẵn sàng. Chúng tôi đang xử lý vấn đề này. Vui lòng thử lại sau.",
"unavailableTitle": "Ghi hình không hoạt động."
},

View File

@@ -89,7 +89,7 @@
"chat": {
"enter": "Enter room",
"error": "Error: your message was not sent. Reason: {{error}}",
"fieldPlaceHolder": "Type your message here",
"fieldPlaceHolder": "Aa",
"lobbyChatMessageTo": "Lobby chat message to {{recipient}}",
"message": "Message",
"messageAccessibleTitle": "{{user}} says:",
@@ -266,7 +266,7 @@
"e2eeWarning": "WARNING: Not all participants in this meeting seem to have support for End-to-End encryption. If you enable it they won't be able to see nor hear you.",
"e2eeWillDisableDueToMaxModeDescription": "WARNING: End-to-End Encryption will be automatically disabled if more participants join the conference.",
"embedMeeting": "Embed meeting",
"enterDisplayName": "Enter your name here",
"enterDisplayName": "Enter your name",
"error": "Error",
"gracefulShutdown": "Our service is currently down for maintenance. Please try again later.",
"grantModeratorDialog": "Are you sure you want to grant moderator rights to {{participantName}}?",
@@ -556,7 +556,7 @@
"signedInAs": "You are currently signed in as:",
"start": "Start a live stream",
"streamIdHelp": "What's this?",
"title": "Live stream",
"title": "Live Stream",
"unavailableTitle": "Live Streaming unavailable",
"youtubeTerms": "YouTube terms of services"
},
@@ -964,7 +964,7 @@
"incomingMessage": "Incoming message",
"language": "Language",
"loggedIn": "Logged in as {{name}}",
"maxStageParticipants": "Maximum number of participants who can be pinned to the main stage",
"maxStageParticipants": "Maximum number of participants who can be pinned to the main stage (EXPERIMENTAL)",
"microphones": "Microphones",
"moderator": "Moderator",
"more": "More",
@@ -1003,6 +1003,7 @@
"displayName": "Display name",
"displayNamePlaceholderText": "Eg: John Doe",
"email": "Email",
"emailPlaceholderText": "email@example.com",
"goTo": "Go to",
"header": "Settings",
"help": "Help",

View File

@@ -18,6 +18,7 @@ import {
} from '../../react/features/av-moderation/actions';
import { isEnabledFromState } from '../../react/features/av-moderation/functions';
import {
endConference,
getCurrentConference,
sendTones,
setFollowMe,
@@ -777,6 +778,19 @@ function initCommands() {
},
'toggle-virtual-background': () => {
APP.store.dispatch(toggleDialog(VirtualBackgroundDialog));
},
'end-conference': () => {
APP.store.dispatch(endConference());
const state = APP.store.getState();
const conference = getCurrentConference(state);
if (!conference) {
logger.error('Conference not yet available');
} else if (conference.isEndConferenceSupported()) {
APP.store.dispatch(endConference());
} else {
logger.error(' End Conference not supported');
}
}
};
transport.on('event', ({ data, name }) => {

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