mirror of
https://gitcode.com/GitHub_Trending/ji/jitsi-meet.git
synced 2026-05-25 14:07:51 +00:00
Compare commits
119 Commits
3868
...
update-js-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7469e7fa3d | ||
|
|
c170970992 | ||
|
|
d19a659871 | ||
|
|
955b24be9d | ||
|
|
de6c7e0117 | ||
|
|
feb8fe9e34 | ||
|
|
aff6d4b36d | ||
|
|
45c60717d6 | ||
|
|
6596e27f69 | ||
|
|
8cba7e91d3 | ||
|
|
3a871cbed8 | ||
|
|
a46fd60788 | ||
|
|
97735ff548 | ||
|
|
9fdc18d1ec | ||
|
|
4a21882345 | ||
|
|
cb0cea4ebd | ||
|
|
b894daa9cf | ||
|
|
06641a7dd6 | ||
|
|
94f7b570d7 | ||
|
|
ca5605620a | ||
|
|
8d0202113a | ||
|
|
f2e59226c0 | ||
|
|
951086e499 | ||
|
|
d3a26f9b4e | ||
|
|
e1a4478a06 | ||
|
|
ed8009883b | ||
|
|
4fd5dc0ee0 | ||
|
|
1bbb937d9d | ||
|
|
c1fb276937 | ||
|
|
3867d5d62e | ||
|
|
08ab513d4e | ||
|
|
a2eca4f029 | ||
|
|
3121494d4b | ||
|
|
92e81c3dbf | ||
|
|
2761a6dbb3 | ||
|
|
faf24ca7ec | ||
|
|
c5ce44f09d | ||
|
|
6969114675 | ||
|
|
1aba57e6bb | ||
|
|
e9785c8b3d | ||
|
|
03215d8906 | ||
|
|
9a5b19babe | ||
|
|
e5d87e66bf | ||
|
|
e00036d44a | ||
|
|
d8059fd0ee | ||
|
|
6fc7456196 | ||
|
|
0bd96b9c0e | ||
|
|
f502e13edc | ||
|
|
08f55ccb94 | ||
|
|
17ca9722b7 | ||
|
|
8cc9b78e21 | ||
|
|
25b4843327 | ||
|
|
d13edd8f63 | ||
|
|
cdc14586de | ||
|
|
a7f8bf2d8f | ||
|
|
8cd881945a | ||
|
|
579d08e27e | ||
|
|
5148c81dd8 | ||
|
|
40bc844caa | ||
|
|
c990a64ba9 | ||
|
|
f5a0a1ef8c | ||
|
|
58018a086c | ||
|
|
b3a7f5f38b | ||
|
|
435d11793d | ||
|
|
9ec3faa6b3 | ||
|
|
959d61468e | ||
|
|
9f28048742 | ||
|
|
19c9a808cf | ||
|
|
7576f850e9 | ||
|
|
7970b38823 | ||
|
|
b40363be31 | ||
|
|
9a0b924f99 | ||
|
|
52def54cd9 | ||
|
|
8d3b59a0d0 | ||
|
|
b0e7471a83 | ||
|
|
4616065b1d | ||
|
|
14855f3255 | ||
|
|
c40a7f736e | ||
|
|
8ffd226159 | ||
|
|
b8dda4c6c2 | ||
|
|
fca4977987 | ||
|
|
7bcece52ea | ||
|
|
155c6de822 | ||
|
|
d0bc3da0f5 | ||
|
|
011b7f9d00 | ||
|
|
9b0f5b0299 | ||
|
|
7e21c277b3 | ||
|
|
e6ade2cf84 | ||
|
|
99b21cdb2a | ||
|
|
677752c78d | ||
|
|
4e81a7abd3 | ||
|
|
5d8d0b9a01 | ||
|
|
2dd5d0a180 | ||
|
|
ccdfff8e9a | ||
|
|
829e3bfe15 | ||
|
|
e90cc0a615 | ||
|
|
b6ccc91038 | ||
|
|
beb4487044 | ||
|
|
add84af7b6 | ||
|
|
cb0d10fbe1 | ||
|
|
9a162c266c | ||
|
|
6654531112 | ||
|
|
b9cc6b6f96 | ||
|
|
6cbc04175c | ||
|
|
fb23aa54e8 | ||
|
|
b73d98f863 | ||
|
|
0289a93e5a | ||
|
|
401003b907 | ||
|
|
025e2b1ecb | ||
|
|
05a8591110 | ||
|
|
d2e6d57be8 | ||
|
|
41fd142977 | ||
|
|
04c0945930 | ||
|
|
5f2acb70de | ||
|
|
4dc10e82f1 | ||
|
|
582d4aff1c | ||
|
|
b13200ac92 | ||
|
|
53f937ba4e | ||
|
|
b9addaed71 |
16
.github/workflows/ci.yml
vendored
Normal file
16
.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
name: Simple CI
|
||||
|
||||
on: [pull_request]
|
||||
|
||||
jobs:
|
||||
run-ci:
|
||||
name: Build Frontend
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: '12.x'
|
||||
- run: npm install
|
||||
- run: npm run lint
|
||||
- run: make
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
Jitsi Meet is an open-source (Apache) WebRTC JavaScript application that uses [Jitsi Videobridge](https://jitsi.org/videobridge) to provide high quality, [secure](#security) and scalable video conferences. Jitsi Meet in action can be seen at [here at the session #482 of the VoIP Users Conference](http://youtu.be/7vFUVClsNh0).
|
||||
|
||||
The Jitsi Meet client runs in your browser, without installing anything on your computer. You can try it out at https://meet.jit.si .
|
||||
The Jitsi Meet client runs in your browser, without installing anything else on your computer. You can try it out at https://meet.jit.si .
|
||||
|
||||
Jitsi Meet allows very efficient collaboration. Users can stream their desktop or only some windows. It also supports shared document editing with Etherpad.
|
||||
|
||||
|
||||
@@ -20,5 +20,5 @@
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
|
||||
appVersion=20.1.0
|
||||
sdkVersion=2.6.0
|
||||
appVersion=20.2.0
|
||||
sdkVersion=2.8.0
|
||||
|
||||
@@ -108,7 +108,8 @@ class AudioDeviceHandlerConnectionService implements
|
||||
*/
|
||||
private int supportedRouteMask = -1;
|
||||
|
||||
public AudioDeviceHandlerConnectionService() {
|
||||
public AudioDeviceHandlerConnectionService(AudioManager audioManager) {
|
||||
this.audioManager = audioManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -136,11 +137,10 @@ class AudioDeviceHandlerConnectionService implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start(Context context, AudioModeModule audioModeModule) {
|
||||
public void start(AudioModeModule audioModeModule) {
|
||||
JitsiMeetLogger.i("Using " + TAG + " as the audio device handler");
|
||||
|
||||
module = audioModeModule;
|
||||
audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
|
||||
|
||||
RNConnectionService rcs = ReactInstanceManagerHolder.getNativeModule(RNConnectionService.class);
|
||||
if (rcs != null) {
|
||||
|
||||
@@ -117,7 +117,8 @@ class AudioDeviceHandlerGeneric implements
|
||||
}
|
||||
};
|
||||
|
||||
public AudioDeviceHandlerGeneric() {
|
||||
public AudioDeviceHandlerGeneric(AudioManager audioManager) {
|
||||
this.audioManager = audioManager;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -178,11 +179,10 @@ class AudioDeviceHandlerGeneric implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start(Context context, AudioModeModule audioModeModule) {
|
||||
public void start(AudioModeModule audioModeModule) {
|
||||
JitsiMeetLogger.i("Using " + TAG + " as the audio device handler");
|
||||
|
||||
module = audioModeModule;
|
||||
audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
|
||||
|
||||
// Setup runtime device change detection.
|
||||
audioManager.registerAudioDeviceCallback(audioDeviceCallback, null);
|
||||
|
||||
@@ -59,7 +59,8 @@ class AudioDeviceHandlerLegacy implements
|
||||
*/
|
||||
private BluetoothHeadsetMonitor bluetoothHeadsetMonitor;
|
||||
|
||||
public AudioDeviceHandlerLegacy() {
|
||||
public AudioDeviceHandlerLegacy(AudioManager audioManager) {
|
||||
this.audioManager = audioManager;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -155,11 +156,11 @@ class AudioDeviceHandlerLegacy implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start(Context context, AudioModeModule audioModeModule) {
|
||||
public void start(AudioModeModule audioModeModule) {
|
||||
JitsiMeetLogger.i("Using " + TAG + " as the audio device handler");
|
||||
|
||||
module = audioModeModule;
|
||||
audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
|
||||
Context context = module.getContext();
|
||||
|
||||
// Setup runtime device change detection.
|
||||
//
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package org.jitsi.meet.sdk;
|
||||
|
||||
import android.content.Context;
|
||||
import android.media.AudioManager;
|
||||
import android.os.Build;
|
||||
|
||||
import com.facebook.react.bridge.Arguments;
|
||||
@@ -85,6 +86,12 @@ class AudioModeModule extends ReactContextBaseJavaModule {
|
||||
return supportsConnectionService && useConnectionService_;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link AudioManager} instance used to interact with the Android audio
|
||||
* subsystem.
|
||||
*/
|
||||
private AudioManager audioManager;
|
||||
|
||||
private AudioDeviceHandlerInterface audioDeviceHandler;
|
||||
|
||||
/**
|
||||
@@ -136,6 +143,8 @@ class AudioModeModule extends ReactContextBaseJavaModule {
|
||||
*/
|
||||
public AudioModeModule(ReactApplicationContext reactContext) {
|
||||
super(reactContext);
|
||||
|
||||
audioManager = (AudioManager)reactContext.getSystemService(Context.AUDIO_SERVICE);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -198,7 +207,12 @@ class AudioModeModule extends ReactContextBaseJavaModule {
|
||||
*/
|
||||
@Override
|
||||
public void initialize() {
|
||||
setAudioDeviceHandler();
|
||||
runInAudioThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
setAudioDeviceHandler();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void setAudioDeviceHandler() {
|
||||
@@ -207,14 +221,14 @@ class AudioModeModule extends ReactContextBaseJavaModule {
|
||||
}
|
||||
|
||||
if (useConnectionService()) {
|
||||
audioDeviceHandler = new AudioDeviceHandlerConnectionService();
|
||||
audioDeviceHandler = new AudioDeviceHandlerConnectionService(audioManager);
|
||||
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
audioDeviceHandler = new AudioDeviceHandlerGeneric();
|
||||
audioDeviceHandler = new AudioDeviceHandlerGeneric(audioManager);
|
||||
} else {
|
||||
audioDeviceHandler = new AudioDeviceHandlerLegacy();
|
||||
audioDeviceHandler = new AudioDeviceHandlerLegacy(audioManager);
|
||||
}
|
||||
|
||||
audioDeviceHandler.start(getReactApplicationContext(), this);
|
||||
audioDeviceHandler.start(this);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -292,9 +306,14 @@ class AudioModeModule extends ReactContextBaseJavaModule {
|
||||
* @param use Boolean indicator of where it should be used or not.
|
||||
*/
|
||||
@ReactMethod
|
||||
public void setUseConnectionService(boolean use) {
|
||||
useConnectionService_ = use;
|
||||
setAudioDeviceHandler();
|
||||
public void setUseConnectionService(final boolean use) {
|
||||
runInAudioThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
useConnectionService_ = use;
|
||||
setAudioDeviceHandler();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -408,16 +427,24 @@ class AudioModeModule extends ReactContextBaseJavaModule {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Needed on the legacy handler...
|
||||
*
|
||||
* @return Context for the application.
|
||||
*/
|
||||
Context getContext() {
|
||||
return getReactApplicationContext();
|
||||
}
|
||||
|
||||
/**
|
||||
* Interface for the modules implementing the actual audio device management.
|
||||
*/
|
||||
interface AudioDeviceHandlerInterface {
|
||||
/**
|
||||
* Start detecting audio device changes.
|
||||
* @param context Android {@link Context} where detection should take place.
|
||||
* @param audioModeModule Reference to the main {@link AudioModeModule}.
|
||||
*/
|
||||
void start(Context context, AudioModeModule audioModeModule);
|
||||
void start(AudioModeModule audioModeModule);
|
||||
|
||||
/**
|
||||
* Stop audio device detection.
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package org.jitsi.meet.sdk;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Build;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
@@ -33,16 +32,11 @@ import com.facebook.react.modules.core.DeviceEventManagerModule;
|
||||
import com.facebook.react.uimanager.ViewManager;
|
||||
import com.facebook.soloader.SoLoader;
|
||||
|
||||
import com.oney.WebRTCModule.EglUtils;
|
||||
import com.oney.WebRTCModule.RTCVideoViewManager;
|
||||
import com.oney.WebRTCModule.WebRTCModule;
|
||||
|
||||
import org.webrtc.DefaultVideoDecoderFactory;
|
||||
import org.webrtc.EglBase;
|
||||
import org.webrtc.SoftwareVideoDecoderFactory;
|
||||
import org.webrtc.SoftwareVideoEncoderFactory;
|
||||
import org.webrtc.VideoDecoderFactory;
|
||||
import org.webrtc.VideoEncoderFactory;
|
||||
import org.webrtc.audio.AudioDeviceModule;
|
||||
import org.webrtc.audio.JavaAudioDeviceModule;
|
||||
|
||||
@@ -91,22 +85,8 @@ class ReactInstanceManagerHolder {
|
||||
.createAudioDeviceModule();
|
||||
options.setAudioDeviceModule(adm);
|
||||
|
||||
VideoEncoderFactory videoEncoderFactory = new SoftwareVideoEncoderFactory();
|
||||
VideoDecoderFactory videoDecoderFactory = new SoftwareVideoDecoderFactory();
|
||||
|
||||
// Initialize EGL context required for HW acceleration. We are only going to use it for
|
||||
// decoding.
|
||||
// NOTE: We are explicitly skipping Samsung devices because we have observed a high crash
|
||||
// count on them.
|
||||
if (!Build.MANUFACTURER.toLowerCase().contains("samsung")) {
|
||||
EglBase.Context eglContext = EglUtils.getRootEglBaseContext();
|
||||
if (eglContext != null) {
|
||||
videoDecoderFactory = new DefaultVideoDecoderFactory(eglContext);
|
||||
}
|
||||
}
|
||||
|
||||
options.setVideoDecoderFactory(videoDecoderFactory);
|
||||
options.setVideoEncoderFactory(videoEncoderFactory);
|
||||
options.setVideoDecoderFactory(new SoftwareVideoDecoderFactory());
|
||||
options.setVideoEncoderFactory(new SoftwareVideoEncoderFactory());
|
||||
|
||||
nativeModules.add(new WebRTCModule(reactContext, options));
|
||||
|
||||
|
||||
127
conference.js
127
conference.js
@@ -2,6 +2,7 @@
|
||||
|
||||
import { openConnection } from './connection';
|
||||
|
||||
import { ENDPOINT_TEXT_MESSAGE_NAME } from './modules/API/constants';
|
||||
import AuthHandler from './modules/UI/authentication/AuthHandler';
|
||||
import Recorder from './modules/recorder/Recorder';
|
||||
|
||||
@@ -119,6 +120,7 @@ import {
|
||||
import { mediaPermissionPromptVisibilityChanged } from './react/features/overlay';
|
||||
import { suspendDetected } from './react/features/power-monitor';
|
||||
import { setSharedVideoStatus } from './react/features/shared-video';
|
||||
import { AudioMixerEffect } from './react/features/stream-effects/audio-mixer/AudioMixerEffect';
|
||||
import { createPresenterEffect } from './react/features/stream-effects/presenter';
|
||||
import { endpointMessageReceived } from './react/features/subtitles';
|
||||
import { createRnnoiseProcessorPromise } from './react/features/rnnoise';
|
||||
@@ -658,10 +660,10 @@ export default {
|
||||
startAudioOnly: config.startAudioOnly,
|
||||
startScreenSharing: config.startScreenSharing,
|
||||
startWithAudioMuted: config.startWithAudioMuted
|
||||
|| config.startSilent
|
||||
|| isUserInteractionRequiredForUnmute(APP.store.getState()),
|
||||
|| config.startSilent
|
||||
|| isUserInteractionRequiredForUnmute(APP.store.getState()),
|
||||
startWithVideoMuted: config.startWithVideoMuted
|
||||
|| isUserInteractionRequiredForUnmute(APP.store.getState())
|
||||
|| isUserInteractionRequiredForUnmute(APP.store.getState())
|
||||
}))
|
||||
.then(([ tracks, con ]) => {
|
||||
tracks.forEach(track => {
|
||||
@@ -1286,6 +1288,13 @@ export default {
|
||||
options.confID = `${locationURL.host}${locationURL.pathname}`;
|
||||
options.createVADProcessor = createRnnoiseProcessorPromise;
|
||||
|
||||
// Disable CallStats, if requessted.
|
||||
if (options.disableThirdPartyRequests) {
|
||||
delete options.callStatsID;
|
||||
delete options.callStatsSecret;
|
||||
delete options.getWiFiStatsMethod;
|
||||
}
|
||||
|
||||
return options;
|
||||
},
|
||||
|
||||
@@ -1416,7 +1425,7 @@ export default {
|
||||
* in case it fails.
|
||||
* @private
|
||||
*/
|
||||
_turnScreenSharingOff(didHaveVideo) {
|
||||
async _turnScreenSharingOff(didHaveVideo) {
|
||||
this._untoggleScreenSharing = null;
|
||||
this.videoSwitchInProgress = true;
|
||||
const { receiver } = APP.remoteControl;
|
||||
@@ -1445,6 +1454,20 @@ export default {
|
||||
}
|
||||
});
|
||||
|
||||
// If system audio was also shared stop the AudioMixerEffect and dispose of the desktop audio track.
|
||||
if (this._mixerEffect) {
|
||||
await this.localAudio.setEffect(undefined);
|
||||
await this._desktopAudioStream.dispose();
|
||||
this._mixerEffect = undefined;
|
||||
this._desktopAudioStream = undefined;
|
||||
|
||||
// In case there was no local audio when screen sharing was started the fact that we set the audio stream to
|
||||
// null will take care of the desktop audio stream cleanup.
|
||||
} else if (this._desktopAudioStream) {
|
||||
await this.useAudioStream(null);
|
||||
this._desktopAudioStream = undefined;
|
||||
}
|
||||
|
||||
if (didHaveVideo) {
|
||||
promise = promise.then(() => createLocalTracksF({ devices: [ 'video' ] }))
|
||||
.then(([ stream ]) => this.useVideoStream(stream))
|
||||
@@ -1584,26 +1607,31 @@ export default {
|
||||
}
|
||||
});
|
||||
|
||||
return getDesktopStreamPromise.then(([ desktopStream ]) => {
|
||||
return getDesktopStreamPromise.then(desktopStreams => {
|
||||
// Stores the "untoggle" handler which remembers whether was
|
||||
// there any video before and whether was it muted.
|
||||
this._untoggleScreenSharing
|
||||
= this._turnScreenSharingOff.bind(this, didHaveVideo);
|
||||
desktopStream.on(
|
||||
JitsiTrackEvents.LOCAL_TRACK_STOPPED,
|
||||
() => {
|
||||
// If the stream was stopped during screen sharing
|
||||
// session then we should switch back to video.
|
||||
this.isSharingScreen
|
||||
&& this._untoggleScreenSharing
|
||||
&& this._untoggleScreenSharing();
|
||||
}
|
||||
);
|
||||
|
||||
const desktopVideoStream = desktopStreams.find(stream => stream.getType() === MEDIA_TYPE.VIDEO);
|
||||
|
||||
if (desktopVideoStream) {
|
||||
desktopVideoStream.on(
|
||||
JitsiTrackEvents.LOCAL_TRACK_STOPPED,
|
||||
() => {
|
||||
// If the stream was stopped during screen sharing
|
||||
// session then we should switch back to video.
|
||||
this.isSharingScreen
|
||||
&& this._untoggleScreenSharing
|
||||
&& this._untoggleScreenSharing();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
// close external installation dialog on success.
|
||||
externalInstallation && $.prompt.close();
|
||||
|
||||
return desktopStream;
|
||||
return desktopStreams;
|
||||
}, error => {
|
||||
DSExternalInstallationInProgress = false;
|
||||
|
||||
@@ -1754,7 +1782,29 @@ export default {
|
||||
this.videoSwitchInProgress = true;
|
||||
|
||||
return this._createDesktopTrack(options)
|
||||
.then(stream => this.useVideoStream(stream))
|
||||
.then(async streams => {
|
||||
const desktopVideoStream = streams.find(stream => stream.getType() === MEDIA_TYPE.VIDEO);
|
||||
|
||||
if (desktopVideoStream) {
|
||||
this.useVideoStream(desktopVideoStream);
|
||||
}
|
||||
|
||||
this._desktopAudioStream = streams.find(stream => stream.getType() === MEDIA_TYPE.AUDIO);
|
||||
|
||||
if (this._desktopAudioStream) {
|
||||
// If there is a localAudio stream, mix in the desktop audio stream captured by the screen sharing
|
||||
// api.
|
||||
if (this.localAudio) {
|
||||
this._mixerEffect = new AudioMixerEffect(this._desktopAudioStream);
|
||||
|
||||
await this.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.
|
||||
await this.useAudioStream(this._desktopAudioStream);
|
||||
}
|
||||
}
|
||||
})
|
||||
.then(() => {
|
||||
this.videoSwitchInProgress = false;
|
||||
if (config.enableScreenshotCapture) {
|
||||
@@ -2041,7 +2091,22 @@ export default {
|
||||
|
||||
room.on(
|
||||
JitsiConferenceEvents.ENDPOINT_MESSAGE_RECEIVED,
|
||||
(...args) => APP.store.dispatch(endpointMessageReceived(...args)));
|
||||
(...args) => {
|
||||
APP.store.dispatch(endpointMessageReceived(...args));
|
||||
if (args && args.length >= 2) {
|
||||
const [ sender, eventData ] = args;
|
||||
|
||||
if (eventData.name === ENDPOINT_TEXT_MESSAGE_NAME) {
|
||||
APP.API.notifyEndpointTextMessageReceived({
|
||||
senderInfo: {
|
||||
jid: sender._jid,
|
||||
id: sender._id
|
||||
},
|
||||
eventData
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
room.on(
|
||||
JitsiConferenceEvents.LOCK_STATE_CHANGED,
|
||||
@@ -2272,9 +2337,19 @@ export default {
|
||||
|
||||
return stream;
|
||||
})
|
||||
.then(stream => this.useAudioStream(stream))
|
||||
.then(async stream => {
|
||||
// In case screen sharing audio is also shared we mix it with new input stream. The old _mixerEffect
|
||||
// will be cleaned up when the existing track is replaced.
|
||||
if (this._mixerEffect) {
|
||||
this._mixerEffect = new AudioMixerEffect(this._desktopAudioStream);
|
||||
|
||||
await stream.setEffect(this._mixerEffect);
|
||||
}
|
||||
|
||||
return this.useAudioStream(stream);
|
||||
})
|
||||
.then(() => {
|
||||
logger.log('switched local audio device');
|
||||
logger.log(`switched local audio device: ${this.localAudio?.getDeviceId()}`);
|
||||
|
||||
this._updateAudioDeviceId();
|
||||
})
|
||||
@@ -2651,12 +2726,6 @@ export default {
|
||||
// audio devices detected or if the local audio stream already exists.
|
||||
const available = audioDeviceCount > 0 || Boolean(this.localAudio);
|
||||
|
||||
logger.debug(
|
||||
`Microphone button enabled: ${available}`,
|
||||
`local audio: ${this.localAudio}`,
|
||||
`audio devices: ${audioMediaDevices}`,
|
||||
`device count: ${audioDeviceCount}`);
|
||||
|
||||
APP.store.dispatch(setAudioAvailable(available));
|
||||
APP.API.notifyAudioAvailabilityChanged(available);
|
||||
},
|
||||
@@ -2677,12 +2746,6 @@ export default {
|
||||
// config).
|
||||
const available = videoDeviceCount > 0 || Boolean(this.localVideo);
|
||||
|
||||
logger.debug(
|
||||
`Camera button enabled: ${available}`,
|
||||
`local video: ${this.localVideo}`,
|
||||
`video devices: ${videoMediaDevices}`,
|
||||
`device count: ${videoDeviceCount}`);
|
||||
|
||||
APP.store.dispatch(setVideoAvailable(available));
|
||||
APP.API.notifyVideoAvailabilityChanged(available);
|
||||
},
|
||||
|
||||
41
config.js
41
config.js
@@ -110,7 +110,7 @@ var config = {
|
||||
|
||||
// w3c spec-compliant video constraints to use for video capture. Currently
|
||||
// used by browsers that return true from lib-jitsi-meet's
|
||||
// util#browser#usesNewGumFlow. The constraints are independency from
|
||||
// util#browser#usesNewGumFlow. The constraints are independent from
|
||||
// this config's resolution value. Defaults to requesting an ideal aspect
|
||||
// ratio of 16:9 with an ideal resolution of 720.
|
||||
// constraints: {
|
||||
@@ -311,10 +311,10 @@ var config = {
|
||||
// callStatsSecret: '',
|
||||
|
||||
// enables sending participants display name to callstats
|
||||
// enableDisplayNameInStats: false
|
||||
// enableDisplayNameInStats: false,
|
||||
|
||||
// enables sending participants email if available to callstats and other analytics
|
||||
// enableEmailInStats: false
|
||||
// enableEmailInStats: false,
|
||||
|
||||
// Privacy
|
||||
//
|
||||
@@ -344,9 +344,7 @@ var config = {
|
||||
stunServers: [
|
||||
|
||||
// { urls: 'stun:jitsi-meet.example.com:443' },
|
||||
{ urls: 'stun:stun.l.google.com:19302' },
|
||||
{ urls: 'stun:stun1.l.google.com:19302' },
|
||||
{ urls: 'stun:stun2.l.google.com:19302' }
|
||||
{ urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' }
|
||||
],
|
||||
|
||||
// Sets the ICE transport policy for the p2p connection. At the time
|
||||
@@ -390,7 +388,7 @@ var config = {
|
||||
// shard: "shard1",
|
||||
// region: "europe",
|
||||
// userRegion: "asia"
|
||||
}
|
||||
},
|
||||
|
||||
// Information for the chrome extension banner
|
||||
// chromeExtensionBanner: {
|
||||
@@ -404,7 +402,7 @@ var config = {
|
||||
// path: 'jitsi-logo-48x48.png'
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
// },
|
||||
|
||||
// Local Recording
|
||||
//
|
||||
@@ -422,7 +420,7 @@ var config = {
|
||||
// format: 'flac'
|
||||
//
|
||||
|
||||
// }
|
||||
// },
|
||||
|
||||
// Options related to end-to-end (participant to participant) ping.
|
||||
// e2eping: {
|
||||
@@ -434,22 +432,22 @@ var config = {
|
||||
// // with the measured RTT will be sent. Defaults to 60000, set
|
||||
// // to <= 0 to disable.
|
||||
// analyticsInterval: 60000,
|
||||
// }
|
||||
// },
|
||||
|
||||
// If set, will attempt to use the provided video input device label when
|
||||
// triggering a screenshare, instead of proceeding through the normal flow
|
||||
// for obtaining a desktop stream.
|
||||
// NOTE: This option is experimental and is currently intended for internal
|
||||
// use only.
|
||||
// _desktopSharingSourceDevice: 'sample-id-or-label'
|
||||
// _desktopSharingSourceDevice: 'sample-id-or-label',
|
||||
|
||||
// If true, any checks to handoff to another application will be prevented
|
||||
// and instead the app will continue to display in the current browser.
|
||||
// disableDeepLinking: false
|
||||
// disableDeepLinking: false,
|
||||
|
||||
// A property to disable the right click context menu for localVideo
|
||||
// the menu has option to flip the locally seen video for local presentations
|
||||
// disableLocalVideoFlip: false
|
||||
// disableLocalVideoFlip: false,
|
||||
|
||||
// Deployment specific URLs.
|
||||
// deploymentUrls: {
|
||||
@@ -459,7 +457,16 @@ var config = {
|
||||
// // If specified a 'Download our apps' button will be displayed in the overflow menu with a link
|
||||
// // to the specified URL for an app download page.
|
||||
// downloadAppsUrl: 'https://docs.example.com/our-apps.html'
|
||||
// }
|
||||
// },
|
||||
|
||||
// Options related to the remote participant menu.
|
||||
// remoteVideoMenu: {
|
||||
// // If set to true the 'Kick out' button will be disabled.
|
||||
// disableKick: true
|
||||
// },
|
||||
|
||||
// If set to true all muting operations of remote participants will be disabled.
|
||||
// disableRemoteMute: true,
|
||||
|
||||
// List of undocumented settings used in jitsi-meet
|
||||
/**
|
||||
@@ -511,6 +518,12 @@ var config = {
|
||||
startBitrate
|
||||
*/
|
||||
|
||||
|
||||
// Allow all above example options to include a trailing comma and
|
||||
// prevent fear when commenting out the last value.
|
||||
makeJsonParserHappy: 'even if last key had a trailing comma'
|
||||
|
||||
// no configuration value should follow this line.
|
||||
};
|
||||
|
||||
/* eslint-enable no-unused-vars, no-var */
|
||||
|
||||
2
debian/compat
vendored
2
debian/compat
vendored
@@ -1 +1 @@
|
||||
8
|
||||
12
|
||||
|
||||
11
debian/control
vendored
11
debian/control
vendored
@@ -16,8 +16,7 @@ Description: WebRTC JavaScript video conferences
|
||||
Videobridge to provide high quality, scalable video conferences.
|
||||
.
|
||||
It is a web interface to Jitsi Videobridge for audio and video
|
||||
forwarding and relaying, configured to work with jetty instance
|
||||
running embedded into Jitsi Videobridge
|
||||
forwarding and relaying.
|
||||
|
||||
Package: jitsi-meet-web-config
|
||||
Architecture: all
|
||||
@@ -27,9 +26,7 @@ Description: Configuration for web serving of Jitsi Meet
|
||||
Videobridge to provide high quality, scalable video conferences.
|
||||
.
|
||||
It is a web interface to Jitsi Videobridge for audio and video
|
||||
forwarding and relaying, configured to work with jetty instance
|
||||
running embedded into Jitsi Videobridge or using a webserver Nginx or
|
||||
Apache2.
|
||||
forwarding and relaying, using a webserver Nginx or Apache2.
|
||||
.
|
||||
This package contains configuration for Nginx to be used with
|
||||
Jitsi Meet.
|
||||
@@ -43,8 +40,7 @@ Description: Prosody configuration for Jitsi Meet
|
||||
Videobridge to provide high quality, scalable video conferences.
|
||||
.
|
||||
It is a web interface to Jitsi Videobridge for audio and video
|
||||
forwarding and relaying, configured to work with jetty instance
|
||||
running embedded into Jitsi Videobridge
|
||||
forwarding and relaying.
|
||||
.
|
||||
This package contains configuration for Prosody to be used with
|
||||
Jitsi Meet.
|
||||
@@ -56,5 +52,6 @@ Description: Prosody token authentication plugin for Jitsi Meet
|
||||
|
||||
Package: jitsi-meet-turnserver
|
||||
Architecture: all
|
||||
Breaks: apache2
|
||||
Depends: ${misc:Depends}, nginx (>= 1.13.10) | nginx-full (>= 1.13.10) | nginx-extras (>= 1.13.10), jitsi-meet-prosody, coturn, dnsutils
|
||||
Description: Configures coturn to be used with Jitsi Meet
|
||||
|
||||
2
debian/jitsi-meet-prosody.postinst
vendored
2
debian/jitsi-meet-prosody.postinst
vendored
@@ -136,7 +136,7 @@ case "$1" in
|
||||
echo -e "\nComponent \"internal.auth.$JVB_HOSTNAME\" \"muc\"" >> $PROSODY_HOST_CONFIG
|
||||
echo -e " storage = \"null\"" >> $PROSODY_HOST_CONFIG
|
||||
echo -e " modules_enabled = { \"ping\"; }" >> $PROSODY_HOST_CONFIG
|
||||
echo -e " admins = { \"focusUser@auth.jitmeet.example.com\", \"jvb@auth.jitmeet.example.com\" }" >> $PROSODY_HOST_CONFIG
|
||||
echo -e " admins = { \"$JICOFO_AUTH_USER@auth.$JVB_HOSTNAME\", \"jvb@auth.$JVB_HOSTNAME\" }" >> $PROSODY_HOST_CONFIG
|
||||
fi
|
||||
|
||||
if [ ! -f /var/lib/prosody/$JVB_HOSTNAME.crt ]; then
|
||||
|
||||
10
debian/jitsi-meet-prosody.postrm
vendored
10
debian/jitsi-meet-prosody.postrm
vendored
@@ -36,13 +36,17 @@ case "$1" in
|
||||
rm -f /etc/prosody/conf.avail/$JVB_HOSTNAME.cfg.lua
|
||||
rm -f /etc/prosody/conf.d/$JVB_HOSTNAME.cfg.lua
|
||||
|
||||
JICOFO_AUTH_DOMAIN="auth.$JVB_HOSTNAME"
|
||||
# clean up generated certificates
|
||||
rm -f /etc/prosody/certs/$JVB_HOSTNAME.crt
|
||||
rm -f /etc/prosody/certs/$JVB_HOSTNAME.key
|
||||
rm -f /etc/prosody/certs/auth.$JVB_HOSTNAME.crt
|
||||
rm -f /etc/prosody/certs/auth.$JVB_HOSTNAME.key
|
||||
rm -rf /var/lib/prosody/auth.$JVB_HOSTNAME.*
|
||||
rm -f /etc/prosody/certs/$JICOFO_AUTH_DOMAIN.crt
|
||||
rm -f /etc/prosody/certs/$JICOFO_AUTH_DOMAIN.key
|
||||
rm -rf /var/lib/prosody/$JICOFO_AUTH_DOMAIN.*
|
||||
rm -rf /var/lib/prosody/$JVB_HOSTNAME.*
|
||||
|
||||
# clean created users
|
||||
rm -rf /var/lib/prosody/`echo $JICOFO_AUTH_DOMAIN | sed -e "s/\./%2e/g"`
|
||||
fi
|
||||
|
||||
# Clear the debconf variable
|
||||
|
||||
1
debian/jitsi-meet-turnserver.postinst
vendored
1
debian/jitsi-meet-turnserver.postinst
vendored
@@ -97,6 +97,7 @@ case "$1" in
|
||||
NGINX_STREAM_CONFIG="/etc/nginx/modules-enabled/60-jitsi-meet.conf"
|
||||
if [ -f $NGINX_STREAM_CONFIG ] && [ -f $NGINX_CONFIG ] ; then
|
||||
sed -i "s/listen 443 ssl/listen 4444 ssl http2/g" $NGINX_CONFIG
|
||||
sed -i "s/listen \[\:\:\]\:443 ssl/listen \[\:\:\]\:4444 ssl http2/g" $NGINX_CONFIG
|
||||
invoke-rc.d nginx reload || true
|
||||
fi
|
||||
|
||||
|
||||
60
debian/jitsi-meet-turnserver.postrm
vendored
Normal file
60
debian/jitsi-meet-turnserver.postrm
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
#!/bin/sh
|
||||
# postrm script for jitsi-meet-turnserver
|
||||
#
|
||||
# see: dh_installdeb(1)
|
||||
|
||||
set -e
|
||||
|
||||
# summary of how this script can be called:
|
||||
# * <postrm> `remove'
|
||||
# * <postrm> `purge'
|
||||
# * <old-postrm> `upgrade' <new-version>
|
||||
# * <new-postrm> `failed-upgrade' <old-version>
|
||||
# * <new-postrm> `abort-install'
|
||||
# * <new-postrm> `abort-install' <old-version>
|
||||
# * <new-postrm> `abort-upgrade' <old-version>
|
||||
# * <disappearer's-postrm> `disappear' <overwriter>
|
||||
# <overwriter-version>
|
||||
# for details, see http://www.debian.org/doc/debian-policy/ or
|
||||
# the debian-policy package
|
||||
|
||||
# Load debconf
|
||||
. /usr/share/debconf/confmodule
|
||||
|
||||
|
||||
case "$1" in
|
||||
remove)
|
||||
if [ -x "/etc/init.d/nginx" ]; then
|
||||
invoke-rc.d nginx reload || true
|
||||
fi
|
||||
if [ -x "/etc/init.d/apache2" ]; then
|
||||
invoke-rc.d apache2 reload || true
|
||||
fi
|
||||
;;
|
||||
purge)
|
||||
if [ -x "/etc/init.d/nginx" ]; then
|
||||
invoke-rc.d nginx reload || true
|
||||
fi
|
||||
if [ -x "/etc/init.d/apache2" ]; then
|
||||
invoke-rc.d apache2 reload || true
|
||||
fi
|
||||
# Clear the debconf variable
|
||||
db_purge
|
||||
;;
|
||||
upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "postrm called with unknown argument \`$1'" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# dh_installdeb will replace this with shell code automatically
|
||||
# generated by other debhelper scripts.
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
db_stop
|
||||
|
||||
exit 0
|
||||
64
debian/jitsi-meet-web-config.postinst
vendored
64
debian/jitsi-meet-web-config.postinst
vendored
@@ -68,12 +68,11 @@ case "$1" in
|
||||
FORCE_APACHE="true"
|
||||
fi
|
||||
|
||||
UPLOADED_CERT_CHOICE="I want to use my own certificate"
|
||||
# if first time config ask for certs, or if we are reconfiguring
|
||||
if [ -z "$JVB_HOSTNAME_OLD" ] || [ "$RECONFIGURING" = "true" ] ; then
|
||||
# SSL for nginx
|
||||
db_get jitsi-meet/cert-choice
|
||||
CERT_CHOICE="$RET"
|
||||
UPLOADED_CERT_CHOICE="I want to use my own certificate"
|
||||
|
||||
if [ "$CERT_CHOICE" = "$UPLOADED_CERT_CHOICE" ] ; then
|
||||
db_set jitsi-meet/cert-path-key "/etc/ssl/$JVB_HOSTNAME.key"
|
||||
@@ -104,24 +103,57 @@ case "$1" in
|
||||
if [ ! -f $JITSI_MEET_CONFIG ] ; then
|
||||
cp /usr/share/jitsi-meet-web-config/config.js $JITSI_MEET_CONFIG
|
||||
# replaces needed config for multidomain as it works only with nginx
|
||||
sed -i "s/conference.jitsi-meet.example.com/conference.<\!--# echo var=\"subdomain\" default=\"\" -->jitsi-meet.example.com/g" $JITSI_MEET_CONFIG
|
||||
if [[ "$FORCE_NGINX" = "true" ]] ; then
|
||||
sed -i "s/conference.jitsi-meet.example.com/conference.<\!--# echo var=\"subdomain\" default=\"\" -->jitsi-meet.example.com/g" $JITSI_MEET_CONFIG
|
||||
fi
|
||||
sed -i "s/jitsi-meet.example.com/$JVB_HOSTNAME/g" $JITSI_MEET_CONFIG
|
||||
fi
|
||||
|
||||
# this is new install let's configure jvb to serve meet
|
||||
# no-nginx, no-apache installed on machine, this is new install or reconfiguring old one which have jvb_serve set
|
||||
# getting rid of jetty serving web
|
||||
if [[ "$JVB_SERVE" = "true" ]] ; then
|
||||
echo ""
|
||||
echo "------------------------------------------------"
|
||||
echo "You are using jetty to serve jitsi-meet, it is recommended to uninstall(purge) and use default installation that comes with nginx!"
|
||||
echo ""
|
||||
echo "When using the following command, any custom config will be LOST, please backup /etc/jitsi !!!"
|
||||
echo ""
|
||||
echo "You can purge your installation using the following command:"
|
||||
echo "apt-get purge jitsi-meet jitsi-meet-web-config jitsi-meet-prosody jitsi-meet-web jicofo jitsi-videobridge"
|
||||
echo "------------------------------------------------"
|
||||
echo ""
|
||||
elif [[ "$FORCE_NGINX" = "true" && ( -z "$JVB_HOSTNAME_OLD" || "$RECONFIGURING" = "true" ) ]] ; then
|
||||
JVB_CONFIG="/etc/jitsi/videobridge/sip-communicator.properties"
|
||||
|
||||
# we will write to the file if missing create it
|
||||
if [ -f $JVB_CONFIG ] ; then
|
||||
echo ""
|
||||
echo "------------------------------------------------"
|
||||
echo ""
|
||||
echo "You are using jetty to serve jitsi-meet, we are now upgrading you to use nginx!"
|
||||
echo ""
|
||||
echo "If you are using Let’s Encrypt certificates please re-run the script."
|
||||
echo ""
|
||||
echo "------------------------------------------------"
|
||||
echo ""
|
||||
|
||||
sed -i "s/org.jitsi.videobridge.rest.jetty/#org.jitsi.videobridge.rest.jetty/g" $JVB_CONFIG
|
||||
sed -i "s/org.jitsi.videobridge.TCP_HARVESTER_PORT/#org.jitsi.videobridge.TCP_HARVESTER_PORT/g" $JVB_CONFIG
|
||||
|
||||
if [ -d /run/systemd/system ]; then
|
||||
systemctl restart jitsi-videobridge2.service >/dev/null || true
|
||||
fi
|
||||
|
||||
# Removing this value will force nginx or apache to be locally configured
|
||||
JVB_HOSTNAME_OLD=""
|
||||
|
||||
db_get jitsi-meet/cert-choice
|
||||
CERT_CHOICE="$RET"
|
||||
# Fix certs on upgrade from jetty
|
||||
if [ "$CERT_CHOICE" = "$UPLOADED_CERT_CHOICE" ] ; then
|
||||
db_get jitsi-meet/cert-path-key
|
||||
CERT_KEY="$RET"
|
||||
db_get jitsi-meet/cert-path-crt
|
||||
CERT_CRT="$RET"
|
||||
else
|
||||
# create self-signed certs
|
||||
CERT_KEY="/etc/jitsi/meet/$JVB_HOSTNAME.key"
|
||||
CERT_CRT="/etc/jitsi/meet/$JVB_HOSTNAME.crt"
|
||||
fi
|
||||
fi
|
||||
|
||||
db_set jitsi-meet/jvb-serve "false"
|
||||
fi
|
||||
|
||||
if [[ "$FORCE_NGINX" = "true" && ( -z "$JVB_HOSTNAME_OLD" || "$RECONFIGURING" = "true" ) ]] ; then
|
||||
|
||||
# this is a reconfigure, lets just delete old links
|
||||
if [ "$RECONFIGURING" = "true" ] ; then
|
||||
|
||||
1
debian/jitsi-meet-web.install
vendored
1
debian/jitsi-meet-web.install
vendored
@@ -11,4 +11,5 @@ fonts /usr/share/jitsi-meet/
|
||||
images /usr/share/jitsi-meet/
|
||||
lang /usr/share/jitsi-meet/
|
||||
connection_optimization /usr/share/jitsi-meet/
|
||||
resources/robots.txt /usr/share/jitsi-meet/
|
||||
resources/*.sh /usr/share/jitsi-meet/scripts/
|
||||
|
||||
20
doc/api.md
20
doc/api.md
@@ -270,6 +270,11 @@ api.executeCommand('email', 'example@example.com');
|
||||
api.executeCommand('avatarUrl', 'https://avatars0.githubusercontent.com/u/3671647');
|
||||
```
|
||||
|
||||
* **sendEndpointTextMessage** - Sends a text message to another participant through the datachannels.
|
||||
```javascript
|
||||
api.executeCommand('receiverParticipantId', 'text');
|
||||
```
|
||||
|
||||
You can also execute multiple commands using the `executeCommands` method:
|
||||
```javascript
|
||||
api.executeCommands(commands);
|
||||
@@ -323,6 +328,21 @@ changes. The listener will receive an object with the following structure:
|
||||
}
|
||||
```
|
||||
|
||||
* **endpointTextMessageReceived** - event notifications about a text message received through datachannels.
|
||||
The listener will receive an object with the following structure:
|
||||
```javascript
|
||||
{
|
||||
senderInfo: {
|
||||
jid: string, // the jid of the sender
|
||||
id: string // the participant id of the sender
|
||||
},
|
||||
eventData: {
|
||||
name: string // the name of the datachannel event: `endpoint-text-message`
|
||||
text: string // the received text from the sender
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
* **micError** - event notifications about Jitsi-Meet having failed to access the mic. The listener will receive an object with the following structure:
|
||||
```javascript
|
||||
{
|
||||
|
||||
@@ -50,6 +50,8 @@ Component "conference.jitmeet.example.com" "muc"
|
||||
-- "token_verification";
|
||||
}
|
||||
admins = { "focusUser@auth.jitmeet.example.com" }
|
||||
muc_room_locking = false
|
||||
muc_room_default_public_jids = true
|
||||
|
||||
-- internal muc component
|
||||
Component "internal.auth.jitmeet.example.com" "muc"
|
||||
|
||||
@@ -2,6 +2,7 @@ server_names_hash_bucket_size 64;
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name jitsi-meet.example.com;
|
||||
|
||||
location ^~ /.well-known/acme-challenge/ {
|
||||
@@ -17,6 +18,7 @@ server {
|
||||
}
|
||||
server {
|
||||
listen 443 ssl;
|
||||
listen [::]:443 ssl;
|
||||
server_name jitsi-meet.example.com;
|
||||
|
||||
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
|
||||
|
||||
@@ -4,4 +4,4 @@ A. In general, if the tool ifconfig (or ipconfig) shows the assigned IP address
|
||||
|
||||
**2. Clients could communicate well in room created at meet.jit.si . The same clients still could connect to my self-hosted instance but can neither hear nor see one another. What's wrong?**
|
||||
|
||||
A. Most probably, the server is behind NAT. See this [resolved question](https://community.jitsi.org/t/cannot-see-video-or-hear-audio-on-self-hosted-instance/). You need to follow the steps detailed [here](https://github.com/jitsi/ice4j/blob/master/doc/quick-install.md#Advanced-configuration)
|
||||
A. Most probably, the server is behind NAT. See this [resolved question](https://community.jitsi.org/t/cannot-see-video-or-hear-audio-on-self-hosted-instance/). You need to follow the steps detailed [here](https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md#Advanced-configuration)
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
# Server Installation for Jitsi Meet
|
||||
|
||||
|
||||
:warning: **WARNING:** Manual installation is not recommended. We recommend following the [quick-install](https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md) document. The current document describes the steps that are needed to install a working deployment, but steps are easy to mess up, and the debian packages are more up-to-date, where this document sometimes is not updated to latest changes.
|
||||
|
||||
|
||||
:warning: **WARNING:** Manual installation is not recommended. We recommend following the [quick-install](https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md) document. The current document describes the steps that are needed to install a working deployment, but steps are easy to mess up, and the debian packages are more up-to-date, where this document is sometimes not updated to reflect latest changes.
|
||||
|
||||
This describes configuring a server `jitsi.example.com` running Debian or a Debian Derivative. You will need to
|
||||
change references to that to match your host, and generate some passwords for
|
||||
@@ -22,7 +19,7 @@ This is how the network looks:
|
||||
443 |
|
||||
+-------+ |
|
||||
| | |
|
||||
| NginX | |
|
||||
| Nginx | |
|
||||
| | |
|
||||
+--+-+--+ |
|
||||
| | |
|
||||
@@ -31,7 +28,7 @@ This is how the network looks:
|
||||
| jitsi-meet +<---+ +--->+ prosody/xmpp | |
|
||||
| |files 5280 | | |
|
||||
+------------+ +--------------+ v
|
||||
5222,5347^ ^5347 4443
|
||||
5222,5347^ ^5347 4443,10000
|
||||
+--------+ | | +-------------+
|
||||
| | | | | |
|
||||
| jicofo +----^ ^----+ videobridge |
|
||||
@@ -112,7 +109,7 @@ Restart prosody XMPP server with the new config
|
||||
prosodyctl restart
|
||||
```
|
||||
|
||||
## Install nginx
|
||||
## Install Nginx
|
||||
```sh
|
||||
apt-get install nginx
|
||||
```
|
||||
@@ -122,12 +119,13 @@ Add a new file `jitsi.example.com` in `/etc/nginx/sites-available` (see also the
|
||||
server_names_hash_bucket_size 64;
|
||||
|
||||
server {
|
||||
listen 443;
|
||||
listen 0.0.0.0:443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
# tls configuration that is not covered in this guide
|
||||
# we recommend the use of https://certbot.eff.org/
|
||||
server_name jitsi.example.com;
|
||||
# set the root
|
||||
root /srv/jitsi.example.com;
|
||||
root /srv/jitsi-meet;
|
||||
index index.html;
|
||||
location ~ ^/([a-zA-Z0-9=\?]+)$ {
|
||||
rewrite ^/(.*)$ / break;
|
||||
@@ -142,6 +140,12 @@ server {
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header Host $http_host;
|
||||
}
|
||||
# external_api.js must be accessible from the root of the
|
||||
# installation for the electron version of Jitsi Meet to work
|
||||
# https://github.com/jitsi/jitsi-meet-electron
|
||||
location /external_api.js {
|
||||
alias /srv/jitsi-meet/libs/external_api.min.js;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
@@ -152,6 +156,7 @@ ln -s ../sites-available/jitsi.example.com jitsi.example.com
|
||||
```
|
||||
|
||||
## Install Jitsi Videobridge
|
||||
Visit https://download.jitsi.org/jitsi-videobridge/linux to determine the current build number, download and unzip it:
|
||||
```sh
|
||||
wget https://download.jitsi.org/jitsi-videobridge/linux/jitsi-videobridge-linux-{arch-buildnum}.zip
|
||||
unzip jitsi-videobridge-linux-{arch-buildnum}.zip
|
||||
@@ -164,9 +169,15 @@ apt-get install openjdk-8-jre
|
||||
|
||||
_NOTE: When installing on older Debian releases keep in mind that you need JRE >= 1.7._
|
||||
|
||||
In the user home that will be starting Jitsi Videobridge create `.sip-communicator` folder and add the file `sip-communicator.properties` with one line in it:
|
||||
```
|
||||
Create `~/.sip-communicator/sip-communicator.properties` in the home folder of the user that will be starting Jitsi Videobridge:
|
||||
```sh
|
||||
mkdir -p ~/.sip-communicator
|
||||
cat > ~/.sip-communicator/sip-communicator.properties << EOF
|
||||
org.jitsi.impl.neomedia.transform.srtp.SRTPCryptoContext.checkReplay=false
|
||||
# The videobridge uses 443 by default with 4443 as a fallback, but since we're already
|
||||
# running nginx on 443 in this example doc, we specify 4443 manually to avoid a race condition
|
||||
org.jitsi.videobridge.TCP_HARVESTER_PORT=4443
|
||||
EOF
|
||||
```
|
||||
|
||||
Start the videobridge with:
|
||||
@@ -191,7 +202,7 @@ Clone source from Github repo:
|
||||
```sh
|
||||
git clone https://github.com/jitsi/jicofo.git
|
||||
```
|
||||
Build distribution package. Replace {os-name} with one of: 'lin', 'lin64', 'macosx', 'win', 'win64'.
|
||||
Build the package.
|
||||
```sh
|
||||
cd jicofo
|
||||
mvn package -DskipTests -Dassembly.skipAssembly=false
|
||||
@@ -199,8 +210,8 @@ mvn package -DskipTests -Dassembly.skipAssembly=false
|
||||
Run jicofo:
|
||||
```sh
|
||||
=======
|
||||
unzip target/jicofo-{os-name}-1.0-SNAPSHOT.zip
|
||||
cd jicofo-{os-name}-1.0-SNAPSHOT'
|
||||
unzip target/jicofo-1.1-SNAPSHOT-archive.zip
|
||||
cd jicofo-1.1-SNAPSHOT-archive'
|
||||
./jicofo.sh --host=localhost --domain=jitsi.example.com --secret=YOURSECRET2 --user_domain=auth.jitsi.example.com --user_name=focus --user_password=YOURSECRET3
|
||||
```
|
||||
|
||||
@@ -209,13 +220,14 @@ Checkout and configure Jitsi Meet:
|
||||
```sh
|
||||
cd /srv
|
||||
git clone https://github.com/jitsi/jitsi-meet.git
|
||||
mv jitsi-meet/ jitsi.example.com
|
||||
cd jitsi.example.com
|
||||
cd jitsi-meet
|
||||
npm install
|
||||
make
|
||||
```
|
||||
|
||||
Edit host names in `/srv/jitsi.example.com/config.js` (see also the example config file):
|
||||
_NOTE: When installing on older distributions keep in mind that you need Node.js >= 10 and npm >= 6._
|
||||
|
||||
Edit host names in `/srv/jitsi-meet/config.js` (see also the example config file):
|
||||
```
|
||||
var config = {
|
||||
hosts: {
|
||||
@@ -231,15 +243,19 @@ var config = {
|
||||
};
|
||||
```
|
||||
|
||||
Restart nginx to get the new configuration:
|
||||
Verify that nginx config is valid and reload nginx:
|
||||
```sh
|
||||
invoke-rc.d nginx restart
|
||||
nginx -t && nginx -s reload
|
||||
```
|
||||
|
||||
## Running behind NAT
|
||||
Jitsi-Videobridge can run behind a NAT, provided that all required ports are routed (forwarded) to the machine that it runs on. By default these ports are (TCP/443 or TCP/4443 and UDP 10000).
|
||||
Jitsi Videobridge can run behind a NAT, provided that both required ports are routed (forwarded) to the machine that it runs on. By default these ports are `TCP/4443` and `UDP/10000`.
|
||||
|
||||
The following extra lines need to be added the file `~/.sip-communicator/sip-communicator.properties` (in the home directory of the user running the videobridge):
|
||||
If you do not route these two ports, Jitsi Meet will only work with video for two people, breaking upon 3 or more people trying to show video.
|
||||
|
||||
`TCP/443` is required for the webserver which can be running on another machine than the Jitsi Videobrige is running on.
|
||||
|
||||
The following extra lines need to be added to the file `~/.sip-communicator/sip-communicator.properties` (in the home directory of the user running the videobridge):
|
||||
```
|
||||
org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=<Local.IP.Address>
|
||||
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=<Public.IP.Address>
|
||||
@@ -248,6 +264,5 @@ org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=<Public.IP.Address>
|
||||
# Hold your first conference
|
||||
You are now all set and ready to have your first meet by going to http://jitsi.example.com
|
||||
|
||||
|
||||
## Enabling recording
|
||||
[Jibri](https://github.com/jitsi/jibri)is a set of tools for recording and/or streaming a Jitsi Meet conference.
|
||||
[Jibri](https://github.com/jitsi/jibri) is a set of tools for recording and/or streaming a Jitsi Meet conference.
|
||||
|
||||
@@ -1,68 +1,75 @@
|
||||
# Jitsi Meet quick install
|
||||
|
||||
This document describes the required steps for a quick Jitsi Meet installation on a Debian based GNU/Linux system. Debian 8 (Jessie) or later, and Ubuntu 14.04 or later are supported out-of-the-box.
|
||||
This guide helps you ___host your own Jitsi server___. If you want to have a video conference without setting up any infrastructure, use https://meet.jit.si instead.
|
||||
|
||||
Debian Wheezy and other older systems may require additional things to be done. Specifically for Wheezy, [libc needs to be updated](http://lists.jitsi.org/pipermail/users/2015-September/010064.html).
|
||||
This document describes the required steps for a quick Jitsi Meet installation on a Debian based GNU/Linux system. Debian 9 (Stretch) or later, and Ubuntu 18.04 (Bionic Beaver) or later are supported out-of-the-box.
|
||||
|
||||
Also note that a recent default Ubuntu installation has only the `main` repository enabled, and Jitsi Meet needs packages from `universe`. Check your `/etc/apt/sources.list` file, and if `universe` is not present refer to [Ubuntu's documentation](https://help.ubuntu.com/community/Repositories/Ubuntu) on how to enable it. (Usually it amounts to copying the `main` lines and changing to `universe`.)
|
||||
On Ubuntu systems, Jitsi requires dependencies from Ubuntu's `universe` package repository. To ensure this is enabled, run `apt-add-repository universe` at the command-line.
|
||||
|
||||
N.B.:
|
||||
|
||||
a.) All commands are supposed to be run by root. If you are logged in as a regular user with sudo rights, please prepend ___sudo___ to each of the commands.
|
||||
|
||||
b.) You only need to do this if you want to ___host your own Jitsi server___. If you just want to have a video conference with someone, use https://meet.jit.si instead.
|
||||
_Note_: Many of the installation steps require elevated privileges. If you are logged in using a regular user account, you may need to temporarily increase your permissions (for example, by using `sudo` for individual commands).
|
||||
|
||||
## Basic Jitsi Meet install
|
||||
|
||||
### Add the repository
|
||||
### Set up the Fully Qualified Domain Name (FQDN) (optional)
|
||||
|
||||
If the machine used to host the Jitsi Meet instance has a FQDN (for example `meet.example.org`) already set up in DNS, `/etc/hostname` must contain this FQDN; if this is not the case yet, [change the hostname](https://wiki.debian.org/HowTo/ChangeHostname).
|
||||
|
||||
Then add the same FQDN in the `/etc/hosts` file, associating it with the loopback address:
|
||||
|
||||
127.0.0.1 localhost meet.example.org
|
||||
|
||||
Finally on the same machine test that you can ping the FQDN with: `ping "$(hostname)"`-
|
||||
|
||||
### Add the Jitsi package repository
|
||||
```sh
|
||||
echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list
|
||||
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -
|
||||
```
|
||||
|
||||
### Update the package lists
|
||||
|
||||
```sh
|
||||
apt-get update
|
||||
```
|
||||
|
||||
(If you get an error:
|
||||
E: The method driver /usr/lib/apt/methods/https could not be found.
|
||||
run:
|
||||
```sh
|
||||
apt-get install apt-transport-https
|
||||
```
|
||||
)
|
||||
|
||||
### Install Jitsi Meet
|
||||
|
||||
Note : Something to consider before installation is how you're planning to serve Jitsi Meet. The installer will check if Nginx or Apache is present (with this order) and configure a virtualhost within the web server it finds to serve Jitsi Meet. If none of the above is found it then configures itself to be served via jetty. So if for example you are planning on deploying Jitsi Meet with a web server, you have to make sure to install the server **before** installing jitsi-meet.
|
||||
_Note_: The installer will check if [Nginx](https://nginx.org/) or [Apache](https://httpd.apache.org/) is present (in that order) and configure a virtualhost within the web server it finds to serve Jitsi Meet. If none of the above is found it then defaults to Nginx.
|
||||
If you are already running Nginx on port 443 on the same machine you better skip the turnserver configuration as it will conflict with your current port 443, so use the command `apt install --no-install-recommends jitsi-meet`.
|
||||
|
||||
```sh
|
||||
# Ensure support is available for apt repositories served via HTTPS
|
||||
apt-get install apt-transport-https
|
||||
|
||||
# Retrieve the latest package versions across all repositories
|
||||
apt-get update
|
||||
|
||||
# Perform jitsi-meet installation
|
||||
apt-get -y install jitsi-meet
|
||||
```
|
||||
|
||||
During the installation, you will be asked to enter the hostname of the Jitsi Meet instance. If you have a FQDN hostname for the instance already set up in DNS, enter it there. If you don't have a resolvable hostname, you can enter the IP address of the machine (if it is static or doesn't change).
|
||||
During the installation, you will be asked to enter the hostname of the Jitsi Meet instance. If you have a [FQDN](https://en.wikipedia.org/wiki/Fully_qualified_domain_name) for the instance already set up in DNS, enter it there. If you don't have a resolvable hostname, you can enter the IP address of the machine (if it is static or doesn't change).
|
||||
|
||||
This hostname (or IP address) will be used for virtualhost configuration inside the Jitsi Meet and also, you and your correspondents will be using it to access the web conferences.
|
||||
|
||||
### Generate a Let's Encrypt certificate
|
||||
### Generate a Let's Encrypt certificate (optional, recommended)
|
||||
|
||||
Simply run the following in your shell
|
||||
In order to have encrypted communications, you need a [TLS certificate](https://en.wikipedia.org/wiki/Transport_Layer_Security). The easiest way is to use [Let's Encrypt](https://letsencrypt.org/).
|
||||
|
||||
_Note_: Jitsi Meet mobile apps *require* a valid certificate signed by a trusted [Certificate Authority](https://en.wikipedia.org/wiki/Certificate_authority) and will not be able to connect to your server if you choose a self-signed certificate.
|
||||
|
||||
Simply run the following in your shell:
|
||||
|
||||
```sh
|
||||
/usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
|
||||
```
|
||||
|
||||
Note that this script uses the [HTTP-01 challenge type](https://letsencrypt.org/docs/challenge-types/) and thus your instance needs to be accessible from the public internet. If you want to use a different challenge type, don't use this script and instead choose ___I want to use my own certificate___ during jitsi-meet installation.
|
||||
|
||||
#### Advanced configuration
|
||||
If installation is on a machine [behind NAT](https://github.com/jitsi/jitsi-meet/blob/master/doc/faq.md) further configuration of jitsi-videobridge is needed in order for it to be accessible.
|
||||
Provided that all required ports are routed (forwarded) to the machine that it runs on. By default these ports are (TCP/443 or TCP/4443 and UDP 10000).
|
||||
The following extra lines need to be added the file `/etc/jitsi/videobridge/sip-communicator.properties`:
|
||||
If the installation is on a machine [behind NAT](https://github.com/jitsi/jitsi-meet/blob/master/doc/faq.md) jitsi-videobridge should configure itself automatically on boot. If three way call does not work further configuration of jitsi-videobridge is needed in order for it to be accessible from outside.
|
||||
Provided that all required ports are routed (forwarded) to the machine that it runs on. By default these ports are (TCP/443 or TCP/4443 and UDP/10000).
|
||||
The following extra lines need to be added to the file `/etc/jitsi/videobridge/sip-communicator.properties`:
|
||||
```
|
||||
org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=<Local.IP.Address>
|
||||
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=<Public.IP.Address>
|
||||
```
|
||||
See [the documenation of ice4j](https://github.com/jitsi/ice4j/blob/master/doc/configuration.md)
|
||||
And comment the existing `org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES`.
|
||||
See [the documentation of ice4j](https://github.com/jitsi/ice4j/blob/master/doc/configuration.md)
|
||||
for details.
|
||||
|
||||
Default deployments on systems using systemd will have low default values for maximum processes and open files. If the used bridge will expect higher number of participants the default values need to be adjusted (the default values are good for less than 100 participants).
|
||||
@@ -74,20 +81,24 @@ DefaultTasksMax=65000
|
||||
```
|
||||
To load the values and check them look [here](#systemd-details) for details.
|
||||
|
||||
By default, anyone who has access to your jitsi instance will be able to start a conferencee: if your server is open to the world, anyone can have a chat with anyone else. If you want to limit the ability to start a conference to registered users, set up a "secure domain". Follow the instructions at https://github.com/jitsi/jicofo#secure-domain.
|
||||
By default, anyone who has access to your jitsi instance will be able to start a conference: if your server is open to the world, anyone can have a chat with anyone else. If you want to limit the ability to start a conference to registered users, set up a "secure domain". Follow the instructions at https://github.com/jitsi/jicofo#secure-domain.
|
||||
|
||||
### Open a conference
|
||||
### Confirm that your installation is working
|
||||
|
||||
Launch a web browser (Chrome, Chromium or latest Opera) and enter in the URL bar the hostname (or IP address) you used in the previous step.
|
||||
Launch a web browser (Chrome, Chromium or latest Opera) and enter the hostname or IP address from the previous step into the address bar.
|
||||
|
||||
Confirm that you trust the self-signed certificate of the newly installed Jitsi Meet.
|
||||
If you used a self-signed certificate (as opposed to using Let's Encrypt), your web browser will ask you to confirm that you trust the certificate.
|
||||
|
||||
Enjoy!
|
||||
You should see a web page prompting you to create a new meeting. Make sure that you can successfully create a meeting and that other participants are able to join the session.
|
||||
|
||||
If this all worked, then congratulations! You have an operational Jitsi conference service.
|
||||
|
||||
## Adding sip-gateway to Jitsi Meet
|
||||
|
||||
### Install Jigasi
|
||||
|
||||
Jigasi is a server-side application acting as a gateway to Jitsi Meet conferences. It allows regular [SIP](https://en.wikipedia.org/wiki/Session_Initiation_Protocol) clients to join meetings and provides transcription capabilities.
|
||||
|
||||
```sh
|
||||
apt-get -y install jigasi
|
||||
```
|
||||
@@ -109,7 +120,7 @@ Enjoy!
|
||||
## Uninstall
|
||||
|
||||
```sh
|
||||
apt-get purge jigasi jitsi-meet jitsi-meet-web-config jitsi-meet-prosody jitsi-meet-turnserver jitsi-meet-web jicofo jitsi-videobridge
|
||||
apt-get purge jigasi jitsi-meet jitsi-meet-web-config jitsi-meet-prosody jitsi-meet-turnserver jitsi-meet-web jicofo jitsi-videobridge2
|
||||
```
|
||||
|
||||
Sometimes the following packages will fail to uninstall properly:
|
||||
@@ -119,13 +130,25 @@ Sometimes the following packages will fail to uninstall properly:
|
||||
|
||||
When this happens, just run the uninstall command a second time and it should be ok.
|
||||
|
||||
The reason for failure is that sometimes, the uninstall script is faster than the process that stops the daemons. The second run of the uninstall command fixes this, as by then the jigasi or jvb daemons are already stopped.
|
||||
The reason for the failure is that sometimes the uninstall script is faster than the process that stops the daemons. The second run of the uninstall command fixes this, as by then the jigasi or jitsi-videobridge daemons are already stopped.
|
||||
|
||||
#### Systemd details
|
||||
To reload the systemd changes on a running system execute `systemctl daemon-reload` and `service jitsi-videobridge restart`.
|
||||
To check the tasks part execute `service jitsi-videobridge status` and you should see `Tasks: XX (limit: 65000)`.
|
||||
To check the files and process part execute ```cat /proc/`cat /var/run/jitsi-videobridge.pid`/limits``` and you should see:
|
||||
To reload the systemd changes on a running system execute `systemctl daemon-reload` and `service jitsi-videobridge2 restart`.
|
||||
To check the tasks part execute `service jitsi-videobridge2 status` and you should see `Tasks: XX (limit: 65000)`.
|
||||
To check the files and process part execute ```cat /proc/`cat /var/run/jitsi-videobridge/jitsi-videobridge.pid`/limits``` and you should see:
|
||||
```
|
||||
Max processes 65000 65000 processes
|
||||
Max open files 65000 65000 files
|
||||
```
|
||||
|
||||
## Debugging problems
|
||||
|
||||
If you run into problems, one thing to try is using a different web browser. Some versions of some browsers are known to have issues with Jitsi Meet. You can also visit https://test.webrtc.org to test your browser's [WebRTC](https://en.wikipedia.org/wiki/WebRTC) support.
|
||||
|
||||
Another place to look is the various log files:
|
||||
|
||||
```
|
||||
/var/log/jitsi/jvb.log
|
||||
/var/log/jitsi/jicofo.log
|
||||
/var/log/prosody/prosody.log
|
||||
```
|
||||
|
||||
@@ -31,7 +31,7 @@ var interfaceConfig = {
|
||||
APP_NAME: 'Jitsi Meet',
|
||||
NATIVE_APP_NAME: 'Jitsi Meet',
|
||||
PROVIDER_NAME: 'Jitsi',
|
||||
LANG_DETECTION: false, // Allow i18n to detect the system language
|
||||
LANG_DETECTION: true, // Allow i18n to detect the system language
|
||||
INVITATION_POWERED_BY: true,
|
||||
|
||||
/**
|
||||
@@ -74,6 +74,7 @@ var interfaceConfig = {
|
||||
|
||||
// A html text to be shown to guests on the close page, false disables it
|
||||
CLOSE_PAGE_GUEST_HINT: false,
|
||||
SHOW_PROMOTIONAL_CLOSE_PAGE: false,
|
||||
RANDOM_AVATAR_URL_PREFIX: false,
|
||||
RANDOM_AVATAR_URL_SUFFIX: false,
|
||||
FILM_STRIP_MAX_HEIGHT: 120,
|
||||
@@ -127,7 +128,7 @@ var interfaceConfig = {
|
||||
* If indicated some of the error dialogs may point to the support URL for
|
||||
* help.
|
||||
*/
|
||||
SUPPORT_URL: 'https://github.com/jitsi/jitsi-meet/issues/new',
|
||||
SUPPORT_URL: 'https://community.jitsi.org/',
|
||||
|
||||
/**
|
||||
* Whether the connection indicator icon should hide itself based on
|
||||
@@ -207,6 +208,11 @@ var interfaceConfig = {
|
||||
*/
|
||||
SHOW_CHROME_EXTENSION_BANNER: false
|
||||
|
||||
/**
|
||||
* When enabled, the kick participant button will not be presented for users without a JWT
|
||||
*/
|
||||
// HIDE_KICK_BUTTON_FOR_GUESTS: false
|
||||
|
||||
/**
|
||||
* How many columns the tile view can expand to. The respected range is
|
||||
* between 1 and 5.
|
||||
|
||||
@@ -5,10 +5,10 @@ require_relative '../node_modules/@react-native-community/cli-platform-ios/nativ
|
||||
target 'jitsi-meet' do
|
||||
project 'app/app.xcodeproj'
|
||||
|
||||
pod 'Crashlytics', '~> 3.12.0'
|
||||
pod 'Fabric', '~> 1.9.0'
|
||||
pod 'Firebase/Core', '~> 5.18.0'
|
||||
pod 'Firebase/DynamicLinks', '~> 5.18.0'
|
||||
pod 'Crashlytics', '~> 3.14.0'
|
||||
pod 'Fabric', '~> 1.10.2'
|
||||
pod 'Firebase/Core', '~> 6.16.0'
|
||||
pod 'Firebase/DynamicLinks', '~> 6.16.0'
|
||||
end
|
||||
|
||||
target 'JitsiMeet' do
|
||||
|
||||
169
ios/Podfile.lock
169
ios/Podfile.lock
@@ -11,10 +11,10 @@ PODS:
|
||||
- CocoaLumberjack (3.5.3):
|
||||
- CocoaLumberjack/Core (= 3.5.3)
|
||||
- CocoaLumberjack/Core (3.5.3)
|
||||
- Crashlytics (3.12.0):
|
||||
- Fabric (~> 1.9.0)
|
||||
- Crashlytics (3.14.0):
|
||||
- Fabric (~> 1.10.2)
|
||||
- DoubleConversion (1.1.6)
|
||||
- Fabric (1.9.0)
|
||||
- Fabric (1.10.2)
|
||||
- FBLazyVector (0.61.5-jitsi.1)
|
||||
- FBReactNativeSpec (0.61.5-jitsi.1):
|
||||
- Folly (= 2018.10.22.00)
|
||||
@@ -23,34 +23,48 @@ PODS:
|
||||
- React-Core (= 0.61.5-jitsi.1)
|
||||
- React-jsi (= 0.61.5-jitsi.1)
|
||||
- ReactCommon/turbomodule/core (= 0.61.5-jitsi.1)
|
||||
- Firebase/Core (5.18.0):
|
||||
- Firebase/Core (6.16.0):
|
||||
- Firebase/CoreOnly
|
||||
- FirebaseAnalytics (= 5.7.0)
|
||||
- Firebase/CoreOnly (5.18.0):
|
||||
- FirebaseCore (= 5.3.1)
|
||||
- Firebase/DynamicLinks (5.18.0):
|
||||
- FirebaseAnalytics (= 6.2.2)
|
||||
- Firebase/CoreOnly (6.16.0):
|
||||
- FirebaseCore (= 6.6.1)
|
||||
- Firebase/DynamicLinks (6.16.0):
|
||||
- Firebase/CoreOnly
|
||||
- FirebaseDynamicLinks (= 3.4.1)
|
||||
- FirebaseAnalytics (5.7.0):
|
||||
- FirebaseCore (~> 5.3)
|
||||
- FirebaseInstanceID (~> 3.6)
|
||||
- GoogleAppMeasurement (= 5.7.0)
|
||||
- GoogleUtilities/AppDelegateSwizzler (~> 5.2)
|
||||
- GoogleUtilities/MethodSwizzler (~> 5.2)
|
||||
- GoogleUtilities/Network (~> 5.2)
|
||||
- "GoogleUtilities/NSData+zlib (~> 5.2)"
|
||||
- nanopb (~> 0.3)
|
||||
- FirebaseAnalyticsInterop (1.2.0)
|
||||
- FirebaseCore (5.3.1):
|
||||
- GoogleUtilities/Logger (~> 5.2)
|
||||
- FirebaseDynamicLinks (3.4.1):
|
||||
- FirebaseAnalytics (~> 5.1)
|
||||
- FirebaseAnalyticsInterop (~> 1.0)
|
||||
- FirebaseCore (~> 5.2)
|
||||
- FirebaseInstanceID (3.7.0):
|
||||
- FirebaseCore (~> 5.2)
|
||||
- GoogleUtilities/Environment (~> 5.2)
|
||||
- GoogleUtilities/UserDefaults (~> 5.2)
|
||||
- FirebaseDynamicLinks (~> 4.0.6)
|
||||
- FirebaseAnalytics (6.2.2):
|
||||
- FirebaseCore (~> 6.6)
|
||||
- FirebaseInstanceID (~> 4.3)
|
||||
- GoogleAppMeasurement (= 6.2.2)
|
||||
- GoogleUtilities/AppDelegateSwizzler (~> 6.0)
|
||||
- GoogleUtilities/MethodSwizzler (~> 6.0)
|
||||
- GoogleUtilities/Network (~> 6.0)
|
||||
- "GoogleUtilities/NSData+zlib (~> 6.0)"
|
||||
- nanopb (= 0.3.9011)
|
||||
- FirebaseAnalyticsInterop (1.5.0)
|
||||
- FirebaseCore (6.6.1):
|
||||
- FirebaseCoreDiagnostics (~> 1.2)
|
||||
- FirebaseCoreDiagnosticsInterop (~> 1.2)
|
||||
- GoogleUtilities/Environment (~> 6.5)
|
||||
- GoogleUtilities/Logger (~> 6.5)
|
||||
- FirebaseCoreDiagnostics (1.2.2):
|
||||
- FirebaseCoreDiagnosticsInterop (~> 1.2)
|
||||
- GoogleDataTransportCCTSupport (~> 2.0)
|
||||
- GoogleUtilities/Environment (~> 6.5)
|
||||
- GoogleUtilities/Logger (~> 6.5)
|
||||
- nanopb (~> 0.3.901)
|
||||
- FirebaseCoreDiagnosticsInterop (1.2.0)
|
||||
- FirebaseDynamicLinks (4.0.8):
|
||||
- FirebaseAnalyticsInterop (~> 1.3)
|
||||
- FirebaseCore (~> 6.2)
|
||||
- FirebaseInstallations (1.1.1):
|
||||
- FirebaseCore (~> 6.6)
|
||||
- GoogleUtilities/UserDefaults (~> 6.5)
|
||||
- PromisesObjC (~> 1.2)
|
||||
- FirebaseInstanceID (4.3.2):
|
||||
- FirebaseCore (~> 6.6)
|
||||
- FirebaseInstallations (~> 1.0)
|
||||
- GoogleUtilities/Environment (~> 6.5)
|
||||
- GoogleUtilities/UserDefaults (~> 6.5)
|
||||
- Folly (2018.10.22.00):
|
||||
- boost-for-react-native
|
||||
- DoubleConversion
|
||||
@@ -61,33 +75,37 @@ PODS:
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- glog (0.3.5)
|
||||
- GoogleAppMeasurement (5.7.0):
|
||||
- GoogleUtilities/AppDelegateSwizzler (~> 5.2)
|
||||
- GoogleUtilities/MethodSwizzler (~> 5.2)
|
||||
- GoogleUtilities/Network (~> 5.2)
|
||||
- "GoogleUtilities/NSData+zlib (~> 5.2)"
|
||||
- nanopb (~> 0.3)
|
||||
- GoogleAppMeasurement (6.2.2):
|
||||
- GoogleUtilities/AppDelegateSwizzler (~> 6.0)
|
||||
- GoogleUtilities/MethodSwizzler (~> 6.0)
|
||||
- GoogleUtilities/Network (~> 6.0)
|
||||
- "GoogleUtilities/NSData+zlib (~> 6.0)"
|
||||
- nanopb (= 0.3.9011)
|
||||
- GoogleDataTransport (5.1.0)
|
||||
- GoogleDataTransportCCTSupport (2.0.1):
|
||||
- GoogleDataTransport (~> 5.1)
|
||||
- nanopb (~> 0.3.901)
|
||||
- GoogleSignIn (5.0.1):
|
||||
- AppAuth (~> 1.2)
|
||||
- GTMAppAuth (~> 1.0)
|
||||
- GTMSessionFetcher/Core (~> 1.1)
|
||||
- GoogleUtilities/AppDelegateSwizzler (5.4.1):
|
||||
- GoogleUtilities/AppDelegateSwizzler (6.5.2):
|
||||
- GoogleUtilities/Environment
|
||||
- GoogleUtilities/Logger
|
||||
- GoogleUtilities/Network
|
||||
- GoogleUtilities/Environment (5.4.1)
|
||||
- GoogleUtilities/Logger (5.4.1):
|
||||
- GoogleUtilities/Environment (6.5.2)
|
||||
- GoogleUtilities/Logger (6.5.2):
|
||||
- GoogleUtilities/Environment
|
||||
- GoogleUtilities/MethodSwizzler (5.4.1):
|
||||
- GoogleUtilities/MethodSwizzler (6.5.2):
|
||||
- GoogleUtilities/Logger
|
||||
- GoogleUtilities/Network (5.4.1):
|
||||
- GoogleUtilities/Network (6.5.2):
|
||||
- GoogleUtilities/Logger
|
||||
- "GoogleUtilities/NSData+zlib"
|
||||
- GoogleUtilities/Reachability
|
||||
- "GoogleUtilities/NSData+zlib (5.4.1)"
|
||||
- GoogleUtilities/Reachability (5.4.1):
|
||||
- "GoogleUtilities/NSData+zlib (6.5.2)"
|
||||
- GoogleUtilities/Reachability (6.5.2):
|
||||
- GoogleUtilities/Logger
|
||||
- GoogleUtilities/UserDefaults (5.4.1):
|
||||
- GoogleUtilities/UserDefaults (6.5.2):
|
||||
- GoogleUtilities/Logger
|
||||
- GTMAppAuth (1.0.0):
|
||||
- AppAuth/Core (~> 1.0)
|
||||
@@ -97,12 +115,13 @@ PODS:
|
||||
- GTMSessionFetcher/Core (1.2.2)
|
||||
- GTMSessionFetcher/Full (1.2.2):
|
||||
- GTMSessionFetcher/Core (= 1.2.2)
|
||||
- nanopb (0.3.901):
|
||||
- nanopb/decode (= 0.3.901)
|
||||
- nanopb/encode (= 0.3.901)
|
||||
- nanopb/decode (0.3.901)
|
||||
- nanopb/encode (0.3.901)
|
||||
- nanopb (0.3.9011):
|
||||
- nanopb/decode (= 0.3.9011)
|
||||
- nanopb/encode (= 0.3.9011)
|
||||
- nanopb/decode (0.3.9011)
|
||||
- nanopb/encode (0.3.9011)
|
||||
- ObjectiveDropboxOfficial (3.9.4)
|
||||
- PromisesObjC (1.2.8)
|
||||
- RCTRequired (0.61.5-jitsi.1)
|
||||
- RCTTypeSafety (0.61.5-jitsi.1):
|
||||
- FBLazyVector (= 0.61.5-jitsi.1)
|
||||
@@ -352,13 +371,13 @@ DEPENDENCIES:
|
||||
- Amplitude-iOS (~> 4.0.4)
|
||||
- BVLinearGradient (from `../node_modules/react-native-linear-gradient`)
|
||||
- CocoaLumberjack (~> 3.5.3)
|
||||
- Crashlytics (~> 3.12.0)
|
||||
- Crashlytics (~> 3.14.0)
|
||||
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
|
||||
- Fabric (~> 1.9.0)
|
||||
- Fabric (~> 1.10.2)
|
||||
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector/`)
|
||||
- FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec/`)
|
||||
- Firebase/Core (~> 5.18.0)
|
||||
- Firebase/DynamicLinks (~> 5.18.0)
|
||||
- Firebase/Core (~> 6.16.0)
|
||||
- Firebase/DynamicLinks (~> 6.16.0)
|
||||
- Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`)
|
||||
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
|
||||
- ObjectiveDropboxOfficial (~> 3.9.4)
|
||||
@@ -401,23 +420,29 @@ SPEC REPOS:
|
||||
- Amplitude-iOS
|
||||
- boost-for-react-native
|
||||
- CocoaLumberjack
|
||||
- ObjectiveDropboxOfficial
|
||||
trunk:
|
||||
- AppAuth
|
||||
- Crashlytics
|
||||
- Fabric
|
||||
- Firebase
|
||||
- FirebaseAnalytics
|
||||
- FirebaseAnalyticsInterop
|
||||
- FirebaseCore
|
||||
- FirebaseCoreDiagnostics
|
||||
- FirebaseCoreDiagnosticsInterop
|
||||
- FirebaseDynamicLinks
|
||||
- FirebaseInstallations
|
||||
- FirebaseInstanceID
|
||||
- GoogleAppMeasurement
|
||||
- GoogleUtilities
|
||||
- nanopb
|
||||
- ObjectiveDropboxOfficial
|
||||
trunk:
|
||||
- AppAuth
|
||||
- GoogleDataTransport
|
||||
- GoogleDataTransportCCTSupport
|
||||
- GoogleSignIn
|
||||
- GoogleUtilities
|
||||
- GTMAppAuth
|
||||
- GTMSessionFetcher
|
||||
- nanopb
|
||||
- PromisesObjC
|
||||
|
||||
EXTERNAL SOURCES:
|
||||
BVLinearGradient:
|
||||
@@ -501,26 +526,32 @@ SPEC CHECKSUMS:
|
||||
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
|
||||
BVLinearGradient: e3aad03778a456d77928f594a649e96995f1c872
|
||||
CocoaLumberjack: 2f44e60eb91c176d471fdba43b9e3eae6a721947
|
||||
Crashlytics: 07fb167b1694128c1c9a5a5cc319b0e9c3ca0933
|
||||
Crashlytics: 540b7e5f5da5a042647227a5e3ac51d85eed06df
|
||||
DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2
|
||||
Fabric: f988e33c97f08930a413e08123064d2e5f68d655
|
||||
Fabric: 706c8b8098fff96c33c0db69cbf81f9c551d0d74
|
||||
FBLazyVector: 4a5251159a3ed05dc11cc8b74cf937869935814b
|
||||
FBReactNativeSpec: 6fa602a20993212cc9877a81838578ffb0008bc9
|
||||
Firebase: 02f3281965c075426141a0ce1277e9de6649cab9
|
||||
FirebaseAnalytics: 23851fe602c872130a2c5c55040b302120346cc2
|
||||
FirebaseAnalyticsInterop: efbe45c8385ec626e29f9525e5ebd38520dfb6c1
|
||||
FirebaseCore: 52f851b30e11360f1e67cf04b1edfebf0a47a2d3
|
||||
FirebaseDynamicLinks: f209c3caccd82102caa0e91d393e3ccc593501fd
|
||||
FirebaseInstanceID: bd6fc5a258884e206fd5c474ebe4f5b00e21770e
|
||||
Firebase: 497158b816d0a86fc31babbd05546fcd7e6083ff
|
||||
FirebaseAnalytics: cf95d3aab897612783020fbd98401d5366f135ee
|
||||
FirebaseAnalyticsInterop: 3f86269c38ae41f47afeb43ebf32a001f58fcdae
|
||||
FirebaseCore: 85064903ed6c28e47fec9c7bd149d94ba1b6b6e7
|
||||
FirebaseCoreDiagnostics: e9b4cd8ba60dee0f2d13347332e4b7898cca5b61
|
||||
FirebaseCoreDiagnosticsInterop: 296e2c5f5314500a850ad0b83e9e7c10b011a850
|
||||
FirebaseDynamicLinks: 417dc6dbb6013233c77558290d73296f429656a6
|
||||
FirebaseInstallations: acb3216eb9784d3b1d2d2d635ff74fa892cc0c44
|
||||
FirebaseInstanceID: 7ee0d6777013bb952f377b41965bf132b6a075be
|
||||
Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51
|
||||
glog: 1f3da668190260b06b429bb211bfbee5cd790c28
|
||||
GoogleAppMeasurement: 6cf307834da065863f9faf4c0de0a936d81dd832
|
||||
GoogleAppMeasurement: d0560d915abf15e692e8538ba1d58442217b6aff
|
||||
GoogleDataTransport: b29a21d813e906014ca16c00897827e40e4a24ab
|
||||
GoogleDataTransportCCTSupport: 6f15a89b0ca35d6fa523e1f752ef818588885988
|
||||
GoogleSignIn: 3a51b9bb8e48b635fd7f4272cee06ca260345b86
|
||||
GoogleUtilities: 1e25823cbf46540b4284f6ef8e17b3a68ee12bbc
|
||||
GoogleUtilities: ad0f3b691c67909d03a3327cc205222ab8f42e0e
|
||||
GTMAppAuth: 4deac854479704f348309e7b66189e604cf5e01e
|
||||
GTMSessionFetcher: 61bb0f61a4cb560030f1222021178008a5727a23
|
||||
nanopb: 2901f78ea1b7b4015c860c2fdd1ea2fee1a18d48
|
||||
nanopb: 18003b5e52dab79db540fe93fe9579f399bd1ccd
|
||||
ObjectiveDropboxOfficial: a5afefc83f6467c42c45f2253f583f2ad1ffc701
|
||||
PromisesObjC: c119f3cd559f50b7ae681fa59dc1acd19173b7e6
|
||||
RCTRequired: f63dd90a89a60602acdd44c42e5d2645ca60ab79
|
||||
RCTTypeSafety: 24a3c6d55684046ed550b1d0ef083a9bf71c8bd4
|
||||
React: 71c5a51135f291c3b32c0b558e167b858ae50e84
|
||||
@@ -553,6 +584,6 @@ SPEC CHECKSUMS:
|
||||
RNWatch: 09738b339eceb66e4d80a2371633ca5fb380fa42
|
||||
Yoga: 7b4209fda2441f99d54dd6cf4c82b094409bb68f
|
||||
|
||||
PODFILE CHECKSUM: 0fdfa45ae809c9460c80be3e0d4bbb822fccc418
|
||||
PODFILE CHECKSUM: f615794fb9184757b00cd16e534824ba6ee2fc98
|
||||
|
||||
COCOAPODS: 1.8.4
|
||||
|
||||
@@ -293,7 +293,7 @@
|
||||
B35383AD1DDA0083008F406A /* Adjust embedded framework architectures */,
|
||||
0BB7DA181EC9E695007AAE98 /* Adjust ATS */,
|
||||
DEF4813D224925A2002AD03A /* Copy Google Plist file */,
|
||||
DEC2069321CBBD6900072F03 /* Setup Fabric */,
|
||||
DEC2069321CBBD6900072F03 /* Setup Crashlytics */,
|
||||
DE11877A21EE09640078D059 /* Setup Google reverse URL handler */,
|
||||
DE4F6D6E22005C0400DE699E /* Setup Dropbox */,
|
||||
0BEA5C491F7B8F73000D0AB4 /* Embed Watch Content */,
|
||||
@@ -492,7 +492,7 @@
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "INFO_PLIST=\"$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH\"\nDROPBOX_KEY_FILE=\"$PROJECT_DIR/dropbox.key\"\n\nif [[ -f $DROPBOX_KEY_FILE ]]; then\n /usr/libexec/PlistBuddy -c \"Delete :LSApplicationQueriesSchemes\" $INFO_PLIST\n /usr/libexec/PlistBuddy -c \"Add :LSApplicationQueriesSchemes array\" $INFO_PLIST\n /usr/libexec/PlistBuddy -c \"Add :LSApplicationQueriesSchemes:0 string 'dbapi-2'\" $INFO_PLIST\n /usr/libexec/PlistBuddy -c \"Add :LSApplicationQueriesSchemes:1 string 'dbapi-8-emm'\" $INFO_PLIST\n\n DROPBOX_KEY=$(head -n 1 $DROPBOX_KEY_FILE)\n /usr/libexec/PlistBuddy -c \"Add :CFBundleURLTypes:2:CFBundleURLName string dropbox\" $INFO_PLIST\n /usr/libexec/PlistBuddy -c \"Add :CFBundleURLTypes:2:CFBundleURLSchemes array\" $INFO_PLIST\n /usr/libexec/PlistBuddy -c \"Add :CFBundleURLTypes:2:CFBundleURLSchemes:0 string $DROPBOX_KEY\" $INFO_PLIST\nfi\n";
|
||||
};
|
||||
DEC2069321CBBD6900072F03 /* Setup Fabric */ = {
|
||||
DEC2069321CBBD6900072F03 /* Setup Crashlytics */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
@@ -501,14 +501,14 @@
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Setup Fabric";
|
||||
name = "Setup Crashlytics";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "${PODS_ROOT}/Fabric/run\n";
|
||||
shellScript = "GOOGLE_PLIST=\"$PROJECT_DIR/GoogleService-Info.plist\"\n\nif [[ -f $GOOGLE_PLIST ]]; then\n if [ \"${CONFIGURATION}\" != \"Debug\" ]; then\n find \"${DWARF_DSYM_FOLDER_PATH}\" -name \"*.dSYM\" | xargs -I \\{\\} ${PODS_ROOT}/Fabric/upload-symbols -gsp $GOOGLE_PLIST -p ios \\{\\}\n fi\nfi\n";
|
||||
};
|
||||
DEF4813D224925A2002AD03A /* Copy Google Plist file */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>20.1.0</string>
|
||||
<string>20.2.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleURLTypes</key>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>20.1.0</string>
|
||||
<string>20.2.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>20.1.0</string>
|
||||
<string>20.2.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>CLKComplicationPrincipalClass</key>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.6.0</string>
|
||||
<string>2.8.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"bg": "Búlgar",
|
||||
"ca": "Català",
|
||||
"cs": "Txec",
|
||||
"da": "Danès",
|
||||
"de": "Alemany",
|
||||
"el": "Grec",
|
||||
"enGB": "Anglès (Regne Unit)",
|
||||
@@ -12,9 +13,9 @@
|
||||
"esUS": "Espanyol (Amèrica llatina)",
|
||||
"fi": "Finès",
|
||||
"fr": "Francès",
|
||||
"frCA": "Francès (Canadenc)",
|
||||
"frCA": "Francès (Canadà)",
|
||||
"hr": "Croat",
|
||||
"hu": "",
|
||||
"hu": "Hongarès",
|
||||
"hy": "Armeni",
|
||||
"it": "Italià",
|
||||
"ja": "Japonès",
|
||||
@@ -28,5 +29,5 @@
|
||||
"tr": "Turc",
|
||||
"vi": "Vietnamita",
|
||||
"zhCN": "Xinès (Xina)",
|
||||
"zhTW": "Coreà"
|
||||
}
|
||||
"zhTW": "Xinès (Taiwan)"
|
||||
}
|
||||
|
||||
33
lang/languages-da.json
Normal file
33
lang/languages-da.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"en": "Engelsk",
|
||||
"af": "Sydafrikansk",
|
||||
"bg": "Bulgarsk",
|
||||
"ca": "Katalansk",
|
||||
"cs": "Tjekkisk",
|
||||
"da": "Dansk",
|
||||
"de": "Tysk",
|
||||
"el": "Græsk",
|
||||
"enGB": "Engelsk (Storbritannien)",
|
||||
"eo": "Esperanto",
|
||||
"es": "Spansk",
|
||||
"esUS": "Spansk (Latin Amerika)",
|
||||
"fi": "Finsk",
|
||||
"fr": "Fransk",
|
||||
"frCA": "Fransk (Canada)",
|
||||
"hr": "Kroatisk",
|
||||
"hu": "Ungarsk",
|
||||
"hy": "Armensk",
|
||||
"it": "Italiensk",
|
||||
"ja": "Japansk",
|
||||
"ko": "Koreansk",
|
||||
"nl": "Hollandsk",
|
||||
"oc": "Occitansk",
|
||||
"pl": "Polsk",
|
||||
"ptBR": "Portugisisk (Brazilien)",
|
||||
"ru": "Russisk",
|
||||
"sv": "Svensk",
|
||||
"tr": "Tyrkisk",
|
||||
"vi": "Vietnamesisk",
|
||||
"zhCN": "Kinesisk (China)",
|
||||
"zhTW": "Kinesisk (Taiwan)"
|
||||
}
|
||||
@@ -1,18 +1,18 @@
|
||||
{
|
||||
"en": "Englisch",
|
||||
"af": "",
|
||||
"az": "",
|
||||
"af": "Afrikaans",
|
||||
"az": "Aserbaidschanisch",
|
||||
"bg": "Bulgarisch",
|
||||
"cs": "",
|
||||
"cs": "Tschechisch",
|
||||
"de": "Deutsch",
|
||||
"el": "",
|
||||
"el": "Griechisch",
|
||||
"eo": "Esperanto",
|
||||
"es": "Spanisch",
|
||||
"fr": "Französisch",
|
||||
"hy": "Armenisch",
|
||||
"it": "Italienisch",
|
||||
"ja": "",
|
||||
"ko": "",
|
||||
"ja": "Japanisch",
|
||||
"ko": "Koreanisch",
|
||||
"nb": "Norwegisch (Bokmal)",
|
||||
"oc": "Okzitanisch",
|
||||
"pl": "Polnisch",
|
||||
@@ -22,6 +22,6 @@
|
||||
"sl": "Slowenisch",
|
||||
"sv": "Schwedisch",
|
||||
"tr": "Türkisch",
|
||||
"vi": "",
|
||||
"vi": "Vietnamesisch",
|
||||
"zhCN": "Chinesisch (China)"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,5 +28,5 @@
|
||||
"tr": "Turco",
|
||||
"vi": "Vietnamita",
|
||||
"zhCN": "Chino (China)",
|
||||
"zhTW": "Chino (Taiwan)\"msgstr \""
|
||||
"zhTW": "Chino (Taiwan)"
|
||||
}
|
||||
@@ -28,5 +28,5 @@
|
||||
"tr": "Turco",
|
||||
"vi": "Vietnamita",
|
||||
"zhCN": "Chino (China)",
|
||||
"zhTW": "Chino (Taiwan)\"msgstr \""
|
||||
"zhTW": "Chino (Taiwan)"
|
||||
}
|
||||
33
lang/languages-et.json
Normal file
33
lang/languages-et.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"en": "Inglise keel",
|
||||
"af": "Afrikaani keel",
|
||||
"bg": "Bulgaaria keel",
|
||||
"ca": "Katalaani keel",
|
||||
"cs": "Tšehhi keel",
|
||||
"de": "Saksa keel",
|
||||
"el": "Kreeka keel",
|
||||
"enGB": "Inglise keel (Ühendkuningriik)",
|
||||
"eo": "Esperanto keel",
|
||||
"es": "Hispaania keel",
|
||||
"esUS": "Hispaania keel (Ladina-Ameerika)",
|
||||
"et": "Eesti keel",
|
||||
"fi": "Soome keel",
|
||||
"fr": "Prantsuse keel",
|
||||
"frCA": "Prantsuse keel (Kanada)",
|
||||
"hr": "Horvaadi keel",
|
||||
"hu": "Ungari keel",
|
||||
"hy": "Armeenia keel",
|
||||
"it": "Itaalia keel",
|
||||
"ja": "Jaapani keel",
|
||||
"ko": "Korea keel",
|
||||
"nl": "Hollandi keel",
|
||||
"oc": "Oksitaani keel",
|
||||
"pl": "Poola keel",
|
||||
"ptBR": "Portigali keel (Brasiilia)",
|
||||
"ru": "Vene keel",
|
||||
"sv": "Roosi keel",
|
||||
"tr": "Türgi keel",
|
||||
"vi": "Vietnami keel",
|
||||
"zhCN": "Hiina keel (Hiina)",
|
||||
"zhTW": "Hiina keel (Tai)"
|
||||
}
|
||||
@@ -28,5 +28,5 @@
|
||||
"tr": "Török",
|
||||
"vi": "Vietnámi",
|
||||
"zhCN": "Kínai (Kína)",
|
||||
"zhTW": "Kínai (Tajvan)\"msgstr \""
|
||||
"zhTW": "Kínai (Tajvan)"
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"en": "Inglese",
|
||||
"af": "",
|
||||
"af": "Afrikaans",
|
||||
"az": "Azero",
|
||||
"bg": "Bulgaro",
|
||||
"cs": "Ceco",
|
||||
@@ -24,4 +24,4 @@
|
||||
"tr": "Turco",
|
||||
"vi": "Vietnamita",
|
||||
"zhCN": "Cinese (Cina)"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,32 +1,32 @@
|
||||
{
|
||||
"en": "Angielski",
|
||||
"af": "Afrykanerski",
|
||||
"bg": "Bułgarski",
|
||||
"ca": "Kataloński",
|
||||
"cs": "Czeski",
|
||||
"de": "Niemiecki",
|
||||
"el": "Grecki",
|
||||
"enGB": "Angielski (Zjednoczone Królestwo)",
|
||||
"eo": "Esperanto",
|
||||
"es": "Hiszpański",
|
||||
"esUS": "Hiszpański (Ameryka Łacińska)",
|
||||
"fi": "Fiński",
|
||||
"fr": "Francuski",
|
||||
"frCA": "Francuski (kanadyjski)",
|
||||
"hr": "Chorwacki",
|
||||
"hu": "Węgierski",
|
||||
"hy": "Ormiański",
|
||||
"it": "Włoski",
|
||||
"ja": "Japoński",
|
||||
"ko": "Koreański",
|
||||
"nl": "Holenderski",
|
||||
"oc": "Oksytański",
|
||||
"pl": "Polski",
|
||||
"ptBR": "Portugalski (brazylijski)",
|
||||
"ru": "Rosyjski",
|
||||
"sv": "Szwedzki",
|
||||
"tr": "Turecki",
|
||||
"vi": "Wietnamski",
|
||||
"zhCN": "Chiński (Chiny)",
|
||||
"zhTW": "Chiński (Tajwan)\"msgstr \""
|
||||
"en": "angielski",
|
||||
"af": "afrykanerski",
|
||||
"bg": "bułgarski",
|
||||
"ca": "kataloński",
|
||||
"cs": "czeski",
|
||||
"de": "niemiecki",
|
||||
"el": "grecki",
|
||||
"enGB": "angielski (Zjednoczone Królestwo)",
|
||||
"eo": "esperanto",
|
||||
"es": "hiszpański",
|
||||
"esUS": "hiszpański (Ameryka Łacińska)",
|
||||
"fi": "fiński",
|
||||
"fr": "francuski",
|
||||
"frCA": "francuski (kanadyjski)",
|
||||
"hr": "chorwacki",
|
||||
"hu": "węgierski",
|
||||
"hy": "ormiański",
|
||||
"it": "włoski",
|
||||
"ja": "japoński",
|
||||
"ko": "koreański",
|
||||
"nl": "holenderski",
|
||||
"oc": "oksytański",
|
||||
"pl": "polski",
|
||||
"ptBR": "portugalski (brazylijski)",
|
||||
"ru": "rosyjski",
|
||||
"sv": "szwedzki",
|
||||
"tr": "turecki",
|
||||
"vi": "wietnamski",
|
||||
"zhCN": "chiński (Chiny)",
|
||||
"zhTW": "chiński (Tajwan)"
|
||||
}
|
||||
@@ -28,5 +28,5 @@
|
||||
"tr": "Turco",
|
||||
"vi": "Vietnamita",
|
||||
"zhCN": "Chinês (China)",
|
||||
"zhTW": "Chinês (Taiwan)\"msgstr \""
|
||||
"zhTW": "Chinês (Taiwan)"
|
||||
}
|
||||
@@ -28,5 +28,5 @@
|
||||
"tr": "Turkish",
|
||||
"vi": "Vietnamese",
|
||||
"zhCN": "中文 简体 (中国)",
|
||||
"zhTW": "中文 正體 (台灣)\"msgstr \""
|
||||
"zhTW": "中文 正體 (台灣)"
|
||||
}
|
||||
@@ -4,12 +4,14 @@
|
||||
"bg": "Bulgarian",
|
||||
"ca": "Catalan",
|
||||
"cs": "Czech",
|
||||
"da": "Danish",
|
||||
"de": "German",
|
||||
"el": "Greek",
|
||||
"enGB": "English (United Kingdom)",
|
||||
"eo": "Esperanto",
|
||||
"es": "Spanish",
|
||||
"esUS": "Spanish (Latin America)",
|
||||
"et": "Estonian",
|
||||
"fi": "Finnish",
|
||||
"fr": "French",
|
||||
"frCA": "French (Canadian)",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -24,7 +24,7 @@
|
||||
"speaker": "Řečník"
|
||||
},
|
||||
"audioOnly": {
|
||||
"audioOnly": "Jen zvuk"
|
||||
"audioOnly": "Pouze zvuk"
|
||||
},
|
||||
"calendarSync": {
|
||||
"addMeetingURL": "",
|
||||
@@ -46,7 +46,7 @@
|
||||
},
|
||||
"chat": {
|
||||
"error": "",
|
||||
"messagebox": "",
|
||||
"messagebox": "Prostor pro zprávu",
|
||||
"nickname": {
|
||||
"popover": "Zvolte si přezdívku",
|
||||
"title": ""
|
||||
@@ -73,7 +73,7 @@
|
||||
"address": "Adresa:",
|
||||
"bandwidth": "Odhadovaná šířka pásma:",
|
||||
"bitrate": "Přenosová rychlost:",
|
||||
"bridgeCount": "",
|
||||
"bridgeCount": "Počet serverů:",
|
||||
"connectedTo": "",
|
||||
"framerate": "Rychlost snímkování:",
|
||||
"less": "Zobrazit méně",
|
||||
@@ -86,7 +86,7 @@
|
||||
"more": "Zobrazit více",
|
||||
"packetloss": "Ztracené pakety:",
|
||||
"quality": {
|
||||
"good": "",
|
||||
"good": "Dobré",
|
||||
"inactive": "Neaktivní",
|
||||
"lost": "Ztraceno",
|
||||
"nonoptimal": "Není optimální",
|
||||
@@ -122,16 +122,16 @@
|
||||
},
|
||||
"defaultLink": "např. {{url}}",
|
||||
"deviceError": {
|
||||
"cameraError": "",
|
||||
"cameraPermission": "",
|
||||
"microphoneError": "",
|
||||
"microphonePermission": ""
|
||||
"cameraError": "Chyba při přístupu ke kameře",
|
||||
"cameraPermission": "Aplikace nemá oprávnění přistupovat ke kameře",
|
||||
"microphoneError": "Chyba při přístupu k mikrofonu",
|
||||
"microphonePermission": "Aplikace nemá oprávnění přistupovat k mikrofonu"
|
||||
},
|
||||
"deviceSelection": {
|
||||
"noPermission": "",
|
||||
"previewUnavailable": "",
|
||||
"selectADevice": "",
|
||||
"testAudio": ""
|
||||
"noPermission": "Oprávnění není uděleno",
|
||||
"previewUnavailable": "Náhled není dostupný",
|
||||
"selectADevice": "Zvolte zvukové zařízení",
|
||||
"testAudio": "Vyzkoušet zvuk"
|
||||
},
|
||||
"dialog": {
|
||||
"accessibilityLabel": {
|
||||
@@ -150,7 +150,7 @@
|
||||
"cameraUnknownError": "",
|
||||
"cameraUnsupportedResolutionError": "",
|
||||
"Cancel": "Storno",
|
||||
"close": "",
|
||||
"close": "Zavřít",
|
||||
"conferenceDisconnectMsg": "Možná byste měli zkontrolovat připojení k síti. Znovu se připojíte za {{seconds}} s...",
|
||||
"conferenceDisconnectTitle": "Byl jste odhlášen.",
|
||||
"conferenceReloadMsg": "Pokoušíme se to opravit. Znovu se připojíte za {{seconds}} s...",
|
||||
@@ -223,7 +223,7 @@
|
||||
"remoteControlStopMessage": "",
|
||||
"remoteControlTitle": "",
|
||||
"Remove": "Odstranit",
|
||||
"removePassword": "",
|
||||
"removePassword": "Zrušit heslo",
|
||||
"removeSharedVideoMsg": "",
|
||||
"removeSharedVideoTitle": "",
|
||||
"reservationError": "",
|
||||
@@ -239,7 +239,7 @@
|
||||
"Share": "Sdílet",
|
||||
"shareVideoLinkError": "Zadejte prosím správný odkaz na youtube video.",
|
||||
"shareVideoTitle": "Sdílet obraz",
|
||||
"shareYourScreen": "",
|
||||
"shareYourScreen": "Sdílet obrazovku",
|
||||
"shareYourScreenDisabled": "",
|
||||
"shareYourScreenDisabledForGuest": "",
|
||||
"startLiveStreaming": "",
|
||||
@@ -285,34 +285,34 @@
|
||||
"videoCallTitle": ""
|
||||
},
|
||||
"info": {
|
||||
"accessibilityLabel": "",
|
||||
"addPassword": "",
|
||||
"cancelPassword": "",
|
||||
"conferenceURL": "",
|
||||
"country": "",
|
||||
"accessibilityLabel": "Více info",
|
||||
"addPassword": "Nastavit heslo",
|
||||
"cancelPassword": "Zrušit heslo",
|
||||
"conferenceURL": "Odkaz:",
|
||||
"country": "Země",
|
||||
"dialANumber": "",
|
||||
"dialInConferenceID": "",
|
||||
"dialInNotSupported": "",
|
||||
"dialInNumber": "",
|
||||
"dialInSummaryError": "",
|
||||
"dialInTollFree": "",
|
||||
"genericError": "",
|
||||
"inviteLiveStream": "",
|
||||
"invitePhone": "",
|
||||
"genericError": "Ups, něco se pokazilo.",
|
||||
"inviteLiveStream": "K zobrazení živého vysílání tohoto meetingu, klikněte na tento odkaz: {{url}}",
|
||||
"invitePhone": "One tap audio Dial In: {{number}},,{{conferenceID}}#",
|
||||
"invitePhoneAlternatives": "",
|
||||
"inviteURLFirstPartGeneral": "",
|
||||
"inviteURLFirstPartPersonal": "",
|
||||
"inviteURLSecondPart": "",
|
||||
"liveStreamURL": "",
|
||||
"moreNumbers": "",
|
||||
"noNumbers": "",
|
||||
"noPassword": "Hotovo",
|
||||
"noRoom": "",
|
||||
"numbers": "",
|
||||
"password": "",
|
||||
"liveStreamURL": "Živé vysílání:",
|
||||
"moreNumbers": "More numbers",
|
||||
"noNumbers": "No dial-in numbers.",
|
||||
"noPassword": "Bez hesla",
|
||||
"noRoom": "No room was specified to dial-in into.",
|
||||
"numbers": "Dial-in Numbers",
|
||||
"password": "Heslo:",
|
||||
"title": "Sdílet",
|
||||
"tooltip": "",
|
||||
"label": ""
|
||||
"tooltip": "Sdílet odkaz k tomuto meetingu",
|
||||
"label": "Informace o meetingu"
|
||||
},
|
||||
"\u0005info": {},
|
||||
"inviteDialog": {
|
||||
@@ -334,16 +334,16 @@
|
||||
"focusRemote": "Vybrat obraz jiného volajícího",
|
||||
"fullScreen": "Zobrazení / Opuštění režimu celé obrazovky",
|
||||
"keyboardShortcuts": "Klávesové zkratky",
|
||||
"localRecording": "",
|
||||
"localRecording": "Spravovat kvalitu hovoru",
|
||||
"mute": "Ztlumení nebo zesílení vašeho mikrofonu",
|
||||
"pushToTalk": "Zmáčknout a mluvit",
|
||||
"raiseHand": "Přihlásit nebo odhlásit se o slovo",
|
||||
"showSpeakerStats": "Zobrazení statistiky řečníka",
|
||||
"toggleChat": "Otevřít nebo zavřít chat",
|
||||
"toggleFilmstrip": "",
|
||||
"toggleFilmstrip": "Zobrazit / Skrýt videonáhledy účastníků",
|
||||
"toggleScreensharing": "Přepnutí mezi kamerou a sdílením obrazovky",
|
||||
"toggleShortcuts": "",
|
||||
"videoMute": "Spuštění nebo vypnutí vaší kamery"
|
||||
"toggleShortcuts": "Zobrazení / Skrytí klávesových zkratek",
|
||||
"videoMute": "Spuštění / Vypnutí vaší kamery"
|
||||
},
|
||||
"\u0005keyboardShortcuts": {},
|
||||
"liveStreaming": {
|
||||
@@ -397,23 +397,23 @@
|
||||
"moderator": "Moderátor",
|
||||
"no": "",
|
||||
"participant": "",
|
||||
"participantStats": "",
|
||||
"participantStats": "Zobrazit statistiku účastníků",
|
||||
"sessionToken": "",
|
||||
"start": "",
|
||||
"stop": "",
|
||||
"yes": ""
|
||||
},
|
||||
"lockRoomPassword": "Heslo",
|
||||
"lockRoomPassword": "heslo",
|
||||
"lockRoomPasswordUppercase": "Heslo",
|
||||
"me": "já",
|
||||
"notify": {
|
||||
"connectedOneMember": "",
|
||||
"connectedThreePlusMembers": "",
|
||||
"connectedOneMember": "{{name}} se připojil",
|
||||
"connectedThreePlusMembers": "{{name}} a {{count}} dalších se připojili",
|
||||
"connectedTwoMembers": "",
|
||||
"disconnected": "odpojeno",
|
||||
"focus": "Vybrat konferenci",
|
||||
"focusFail": "{{component}} není k dispozici - další pokus za {{ms}} sec",
|
||||
"grantedTo": "Moderátorská práva přidělena účastníkovi{{to}}!",
|
||||
"grantedTo": "Moderátorská práva přidělena účastníkovi {{to}}!",
|
||||
"invitedOneMember": "",
|
||||
"invitedThreePlusMembers": "",
|
||||
"invitedTwoMembers": "",
|
||||
@@ -440,27 +440,27 @@
|
||||
"\u0005notify": {},
|
||||
"passwordSetRemotely": "",
|
||||
"passwordDigitsOnly": "",
|
||||
"poweredby": "poháněno",
|
||||
"poweredby": "Poháněno",
|
||||
"presenceStatus": {
|
||||
"busy": "",
|
||||
"calling": "",
|
||||
"connected": "",
|
||||
"connecting": "Připojení:",
|
||||
"connecting2": "Připojení:",
|
||||
"disconnected": "odpojeno",
|
||||
"expired": "",
|
||||
"ignored": "",
|
||||
"initializingCall": "",
|
||||
"invited": "",
|
||||
"rejected": "",
|
||||
"ringing": ""
|
||||
"busy": "Obsazeno",
|
||||
"calling": "Vytáčím...",
|
||||
"connected": "Spojování",
|
||||
"connecting": "Spojování...",
|
||||
"connecting2": "Spojování*...",
|
||||
"disconnected": "Odpojeno",
|
||||
"expired": "Spojení vypršelo",
|
||||
"ignored": "Spojení ignorováno",
|
||||
"initializingCall": "Nastavuji hovor...",
|
||||
"invited": "Pozván",
|
||||
"rejected": "Odmítnuto",
|
||||
"ringing": "Zvoní..."
|
||||
},
|
||||
"\u0005presenceStatus": {},
|
||||
"profile": {
|
||||
"setDisplayNameLabel": "Nastavte si jméno",
|
||||
"setEmailInput": "Zadejte e-mail",
|
||||
"setEmailLabel": "Nastavte si email vašeho gravataru",
|
||||
"title": ""
|
||||
"title": "Profil"
|
||||
},
|
||||
"recording": {
|
||||
"authDropboxText": "",
|
||||
@@ -498,20 +498,20 @@
|
||||
"signedIn": "",
|
||||
"title": "Kalendář"
|
||||
},
|
||||
"devices": "",
|
||||
"devices": "Zařízení",
|
||||
"followMe": "Všichni sledují mě",
|
||||
"language": "",
|
||||
"loggedIn": "",
|
||||
"language": "Jazyk",
|
||||
"loggedIn": "Přihlášen jako {{name}}",
|
||||
"moderator": "Moderátor",
|
||||
"more": "",
|
||||
"name": "",
|
||||
"noDevice": "Hotovo",
|
||||
"more": "Více",
|
||||
"name": "Jméno",
|
||||
"noDevice": "Žádné zařízení",
|
||||
"selectAudioOutput": "Zvukový výstup",
|
||||
"selectCamera": "Kamera",
|
||||
"selectMic": "Mikrofon",
|
||||
"startAudioMuted": "Při připojení všem zlumit zvuk",
|
||||
"startVideoMuted": "Všechny připojovat jako skrýté",
|
||||
"title": ""
|
||||
"title": "Nastavení"
|
||||
},
|
||||
"\u0005settings": {
|
||||
"calendar": {}
|
||||
@@ -539,10 +539,10 @@
|
||||
"speakerStats": {
|
||||
"hours": "",
|
||||
"minutes": "",
|
||||
"name": "",
|
||||
"name": "Řečník",
|
||||
"seconds": "",
|
||||
"speakerStats": "",
|
||||
"speakerTime": ""
|
||||
"speakerStats": "Statistika řečníků",
|
||||
"speakerTime": "Mluvil již"
|
||||
},
|
||||
"startupoverlay": {
|
||||
"policyText": " ",
|
||||
@@ -568,7 +568,7 @@
|
||||
"kick": "",
|
||||
"localRecording": "",
|
||||
"lockRoom": "",
|
||||
"moreActions": "",
|
||||
"moreActions": "Více možností",
|
||||
"moreActionsMenu": "",
|
||||
"mute": "",
|
||||
"pip": "",
|
||||
@@ -579,11 +579,11 @@
|
||||
"Settings": "",
|
||||
"sharedvideo": "",
|
||||
"shareRoom": "",
|
||||
"shareYourScreen": "",
|
||||
"shortcuts": "",
|
||||
"shareYourScreen": "Sdílet obrazovku",
|
||||
"shortcuts": "Zobrazit zkratky",
|
||||
"show": "",
|
||||
"speakerStats": "",
|
||||
"tileView": "",
|
||||
"speakerStats": "Statistika řečníků",
|
||||
"tileView": "Přepnout režim zobrazení",
|
||||
"toggleCamera": "",
|
||||
"videomute": "",
|
||||
"videoblur": ""
|
||||
@@ -593,13 +593,13 @@
|
||||
"audioOnlyOn": "",
|
||||
"audioRoute": "",
|
||||
"authenticate": "Ověřit",
|
||||
"callQuality": "",
|
||||
"callQuality": "Kvalita hovoru",
|
||||
"chat": "Otevřít / Zavřít chat",
|
||||
"closeChat": "",
|
||||
"documentClose": "Otevřít / Zavřít sdílený dokument",
|
||||
"documentOpen": "Otevřít / Zavřít sdílený dokument",
|
||||
"enterFullScreen": "",
|
||||
"enterTileView": "",
|
||||
"enterFullScreen": "Přepnout na celou obrazovku",
|
||||
"enterTileView": "Přepnout režim zobrazení",
|
||||
"exitFullScreen": "",
|
||||
"exitTileView": "",
|
||||
"feedback": "",
|
||||
@@ -608,29 +608,29 @@
|
||||
"login": "Přihlásit se",
|
||||
"logout": "Odhlásit",
|
||||
"lowerYourHand": "",
|
||||
"moreActions": "",
|
||||
"moreActions": "Více možností",
|
||||
"mute": "Ztlumit / Zesílit",
|
||||
"openChat": "",
|
||||
"pip": "",
|
||||
"profile": "Upravit váš profil",
|
||||
"raiseHand": "Příhlásit / Odhlásit se o slovo",
|
||||
"raiseYourHand": "",
|
||||
"Settings": "",
|
||||
"sharedvideo": "Sdílet YouTube video",
|
||||
"Settings": "Nastavení",
|
||||
"sharedvideo": "Sdílet obraz YouTube videa",
|
||||
"shareRoom": "",
|
||||
"shortcuts": "",
|
||||
"speakerStats": "",
|
||||
"shortcuts": "Klávesové zkratky",
|
||||
"speakerStats": "Statistiky řečníků",
|
||||
"startScreenSharing": "",
|
||||
"startSubtitles": "",
|
||||
"stopScreenSharing": "",
|
||||
"stopSubtitles": "",
|
||||
"stopSharedVideo": "",
|
||||
"talkWhileMutedPopup": "Snažíte se mluvit? Máte ztlumené audio.",
|
||||
"tileViewToggle": "",
|
||||
"tileViewToggle": "Přepnout režim zobrazení",
|
||||
"toggleCamera": "",
|
||||
"videomute": "Zapnutí / Vypnutí kamery",
|
||||
"startvideoblur": "",
|
||||
"stopvideoblur": ""
|
||||
"startvideoblur": "Rozmazat pozadí",
|
||||
"stopvideoblur": "Zrušit rozmazání"
|
||||
},
|
||||
"\u0005toolbar": {
|
||||
"accessibilityLabel": {}
|
||||
@@ -670,22 +670,25 @@
|
||||
"pending": ""
|
||||
},
|
||||
"videoStatus": {
|
||||
"audioOnly": "",
|
||||
"audioOnly": "AU",
|
||||
"audioOnlyExpanded": "",
|
||||
"callQuality": "",
|
||||
"callQuality": "Nastavení kvality hovoru",
|
||||
"hd": "",
|
||||
"highDefinition": "",
|
||||
"hdTooltip": "Sledujete obraz ve vysoké kvalitě",
|
||||
"highDefinition": "Vysoká kvalita",
|
||||
"labelTooiltipNoVideo": "",
|
||||
"labelTooltipAudioOnly": "",
|
||||
"ld": "",
|
||||
"lowDefinition": "",
|
||||
"ldTooltip": "Sledujete obraz v nízké kvalitě",
|
||||
"lowDefinition": "Nizká kvalita",
|
||||
"onlyAudioAvailable": "",
|
||||
"onlyAudioSupported": "",
|
||||
"p2pEnabled": "",
|
||||
"p2pVideoQualityDescription": "",
|
||||
"recHighDefinitionOnly": "",
|
||||
"sd": "",
|
||||
"standardDefinition": ""
|
||||
"sdTooltip": "Sledujete obraz v běžné kvalitě",
|
||||
"standardDefinition": "Běžná kvalita"
|
||||
},
|
||||
"videothumbnail": {
|
||||
"domute": "Ztlumený zvuk",
|
||||
@@ -704,7 +707,7 @@
|
||||
"join": "",
|
||||
"roomname": "Zadejte jméno místnosti"
|
||||
},
|
||||
"appDescription": "Jděte na to, videokonference v rámci celého týmu. Do konference můžete pozvat kohokoliv. Veškerá komunikace přes aplikaci {{app}} je plně šifrovaná, 100% open source zajištuje, že aplikaci můžete využívat bez omezení a navíc se nemusíte ani registrovat.",
|
||||
"appDescription": "Videokonference pro celý Váš tým, zdarma, bez nároků na Vaše data. Do konference můžete pozvat kohokoliv. Veškerá komunikace přes aplikaci {{app}} je plně šifrovaná, 100% open source zajištuje, že aplikaci můžete využívat bez omezení a navíc se nemusíte ani registrovat.",
|
||||
"audioVideoSwitch": {
|
||||
"audio": "Hlas",
|
||||
"video": "Obraz"
|
||||
@@ -712,19 +715,19 @@
|
||||
"calendar": "Kalendář",
|
||||
"connectCalendarButton": "",
|
||||
"connectCalendarText": "",
|
||||
"enterRoomTitle": "",
|
||||
"enterRoomTitle": "Začít nový videohovor",
|
||||
"go": "ZAČÍT",
|
||||
"join": "PŘIPOJIT",
|
||||
"info": "",
|
||||
"privacy": "Soukromí",
|
||||
"recentList": "",
|
||||
"recentListDelete": "",
|
||||
"recentListEmpty": "",
|
||||
"recentListEmpty": "Váš seznam nedávných hovorů je prázdný. Spojte se s kolegy z Vašeho týmu, poté zde naleznete seznam nedávných hovorů.",
|
||||
"reducedUIText": "",
|
||||
"roomname": "Zadejte jméno místnosti",
|
||||
"roomnameHint": "Zadejte název nebo URL odkaz místnosti ke které se chcete připojit. Pokud jste místnost vytvořili, ujistěte se, že ostatní účastníci schůzky zadají stejné jméno jako vy.",
|
||||
"sendFeedback": "Poslat zpětnou vazbu",
|
||||
"terms": "Podmínky používání",
|
||||
"title": ""
|
||||
"title": "Bezpečné, plnotučné videokonference, zcela zdarma a soukromě, od lidí pro lidi."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
772
lang/main-da.json
Normal file
772
lang/main-da.json
Normal file
@@ -0,0 +1,772 @@
|
||||
{
|
||||
"addPeople": {
|
||||
"add": "Inviter",
|
||||
"countryNotSupported": "Vi supporterer ikke dette land endnu.",
|
||||
"countryReminder": "Ringer du til uden for USA? Benyt venligst landekode!",
|
||||
"disabled": "Du kan ikke invitere deltagere.",
|
||||
"failedToAdd": "Kunne ikke tilføje deltagere.",
|
||||
"footerText": "Udgående opkald er slået fra.",
|
||||
"loading": "Søger efter personer og telefonnumre.",
|
||||
"loadingNumber": "Validerer telefonnummer",
|
||||
"loadingPeople": "Søger efter folk der kan inviteres",
|
||||
"noResults": "Der blev ikke fundet noget",
|
||||
"noValidNumbers": "Indtast venligst er telefonnummer",
|
||||
"searchNumbers": "Tilføj telefonnummer",
|
||||
"searchPeople": "Søg efter personer",
|
||||
"searchPeopleAndNumbers": "Søg efter personer eller tilføj deres telefonnummer",
|
||||
"telephone": "Telefon: {{number}}",
|
||||
"title": "Inviter personer til dette møde"
|
||||
},
|
||||
"audioDevices": {
|
||||
"bluetooth": "Bluetooth",
|
||||
"headphones": "Høretelefoner",
|
||||
"phone": "Telefon",
|
||||
"speaker": "Højtaler",
|
||||
"none": "Der er ikke nogen lyd enheder tilgængelige"
|
||||
},
|
||||
"audioOnly": {
|
||||
"audioOnly": "Kun lyd"
|
||||
},
|
||||
"calendarSync": {
|
||||
"addMeetingURL": "Tilføj et mødelink",
|
||||
"confirmAddLink": "Ønsker du at tilføj et Jitsi link til denne aftale?",
|
||||
"error": {
|
||||
"appConfiguration": "Kalender integration er ikke sat korrekt op.",
|
||||
"generic": "Der er sket en fejl. Verificer venligst dine kalenderindstilliinger eller prøv på at genopfriske din kalender.",
|
||||
"notSignedIn": "Der er sket en fejl under log ind for at hente kalenderaftalerne. Kontroller venligst dine kalenderindstilliinger og forsøg at logge ind igen."
|
||||
},
|
||||
"join": "Deltag",
|
||||
"joinTooltip": "Deltag i mødet",
|
||||
"nextMeeting": "næste møde",
|
||||
"noEvents": "Der er ikke nogen kommande aftaler i kalenderen.",
|
||||
"ongoingMeeting": "igangværende møde",
|
||||
"permissionButton": "Åben indstillinger",
|
||||
"permissionMessage": "Kalender tilladelsen er nødvendig for at kunne se dine aftaler i appen.",
|
||||
"refresh": "Genopfrisk aftaler",
|
||||
"today": "I dag"
|
||||
},
|
||||
"chat": {
|
||||
"error": "Fejl: din besked \"{{originalText}}\" blev ikke sendt. Årsag: {{error}}",
|
||||
"fieldPlaceHolder": "Skriv din besked her",
|
||||
"messagebox": "Indtast en besked",
|
||||
"messageTo": "Privat besked til {{recipient}}",
|
||||
"noMessagesMessage": "Der er ikke nogen beskeder i mødet endnu. Skriv noget!",
|
||||
"nickname": {
|
||||
"popover": "Vælg dit navn/alias",
|
||||
"title": "Indtast et navn/alias for at deltage i chatten"
|
||||
},
|
||||
"privateNotice": "Privat besked til {{recipient}}",
|
||||
"title": "Chat",
|
||||
"you": "dig"
|
||||
},
|
||||
"chromeExtensionBanner": {
|
||||
"installExtensionText": "Installér plugin for Google Kalender og Office 365 integration",
|
||||
"buttonText": "Installér Chrome plugin",
|
||||
"dontShowAgain": "Vis ikke dette igen"
|
||||
},
|
||||
"connectingOverlay": {
|
||||
"joiningRoom": "Forbinder dig til mødet..."
|
||||
},
|
||||
"connection": {
|
||||
"ATTACHED": "Forbundet",
|
||||
"AUTHENTICATING": "Autoriserer",
|
||||
"AUTHFAIL": "Autorisation lykkedes ikke",
|
||||
"CONNECTED": "Forbundet",
|
||||
"CONNECTING": "Forbinder",
|
||||
"CONNFAIL": "Forbindelse kunne ikke oprettes",
|
||||
"DISCONNECTED": "Frakoblet",
|
||||
"DISCONNECTING": "Frakobler",
|
||||
"ERROR": "Fejl",
|
||||
"RECONNECTING": "Et netværksproblem opstod. Forbinder igen...",
|
||||
"GET_SESSION_ID_ERROR": "Hent session-id fejl: {{code}}",
|
||||
"GOT_SESSION_ID": "HEnter session-id... Udført",
|
||||
"LOW_BANDWIDTH": "Video for {{displayName}} er slået fra for at spare båndbredde"
|
||||
},
|
||||
"connectionindicator": {
|
||||
"address": "Adresse:",
|
||||
"bandwidth": "Estimeret båndbredde:",
|
||||
"bitrate": "Bitrate:",
|
||||
"bridgeCount": "Server antal: ",
|
||||
"connectedTo": "Forbundet til:",
|
||||
"e2e_rtt": "E2E RTT:",
|
||||
"framerate": "Frame rate:",
|
||||
"less": "Vis mindre",
|
||||
"localaddress": "Lokal adresse:",
|
||||
"localaddress_plural": "Lokale adresser:",
|
||||
"localport": "Lokal port:",
|
||||
"localport_plural": "Lokale porte:",
|
||||
"more": "Vis mere",
|
||||
"packetloss": "Pakke tab:",
|
||||
"quality": {
|
||||
"good": "God",
|
||||
"inactive": "Inaktiv",
|
||||
"lost": "Tabt",
|
||||
"nonoptimal": "Ikke optimal",
|
||||
"poor": "Dårlig"
|
||||
},
|
||||
"remoteaddress": "Fjern adresse:",
|
||||
"remoteaddress_plural": "Fjern adresser:",
|
||||
"remoteport": "Fjern port:",
|
||||
"remoteport_plural": "Fjern porte:",
|
||||
"resolution": "Opløsning:",
|
||||
"status": "Forbindelse:",
|
||||
"transport": "Transport:",
|
||||
"transport_plural": "Transporter:",
|
||||
"turn": " (turn)"
|
||||
},
|
||||
"dateUtils": {
|
||||
"earlier": "Tidligere",
|
||||
"today": "I dag",
|
||||
"yesterday": "I går"
|
||||
},
|
||||
"deepLinking": {
|
||||
"appNotInstalled": "Du skal bruge {{app}} mobil appen for at forbinde til dette møde med din mobiltelefon.",
|
||||
"description": "Skete der ikke noget? Vi forsøgte at åbne dit videomøde i {{app}} desktop appen. Prøv igen eller start mødet på {{app}} web app.",
|
||||
"descriptionWithoutWeb": "",
|
||||
"downloadApp": "Download appen",
|
||||
"launchWebButton": "Start på web",
|
||||
"openApp": "Fortsæt til appen",
|
||||
"title": "Start dit møde i {{app}}...",
|
||||
"tryAgainButton": "Prøv igen"
|
||||
},
|
||||
"defaultLink": "e.g. {{url}}",
|
||||
"defaultNickname": "ex. Jane Pink",
|
||||
"deviceError": {
|
||||
"cameraError": "Kunne ikke forbinde til dit kamera",
|
||||
"cameraPermission": "Kamera tilladelse mangler",
|
||||
"microphoneError": "Kunne ikke forbinde til din mikrofon",
|
||||
"microphonePermission": "Mikrofon tilladelse mangler"
|
||||
},
|
||||
"deviceSelection": {
|
||||
"noPermission": "Tilladelse ikke givet",
|
||||
"previewUnavailable": "Forhåndsvisning mangler",
|
||||
"selectADevice": "Vælg en enhed",
|
||||
"testAudio": "Afspil testlyd"
|
||||
},
|
||||
"dialog": {
|
||||
"accessibilityLabel": {
|
||||
"liveStreaming": "Live Stream"
|
||||
},
|
||||
"allow": "Tillad",
|
||||
"alreadySharedVideoMsg": "En anden deltager deler allerede en video. Denne konference tillader kun en delt video af gangen.",
|
||||
"alreadySharedVideoTitle": "Det er kun muligt at dele en video af gangen",
|
||||
"applicationWindow": "Applikations vindue",
|
||||
"Back": "Tilbage",
|
||||
"cameraConstraintFailedError": "Dit kamera lever ikke op til de nødvendige krav..",
|
||||
"cameraNotFoundError": "Kamera kunne ikke findes.",
|
||||
"cameraNotSendingData": "Vi kan ikke tilgå dit kamera. Kontroller venligst om der er en anden applikation der gør brug af dit kamera, eller vælg en andet kamera og genindlæs siden.",
|
||||
"cameraNotSendingDataTitle": "Kan ikke tilgå kamera",
|
||||
"cameraPermissionDeniedError": "Du har ikke givet tilladelse til at bruge dit kamera. Du kan stadig deltage i mødet men de andre deltagere vil ikke kunne se dig. Gør brug af kamera knappen i adressebaren for at give tilladelse.",
|
||||
"cameraUnknownError": "Kan ikke gør brug af dit kamera, årsag ukendt.",
|
||||
"cameraUnsupportedResolutionError": "Dit kamera supporterer ikke den nødvendige opløsning.",
|
||||
"Cancel": "Afbryd",
|
||||
"close": "Luk",
|
||||
"conferenceDisconnectMsg": "Kontroller venligst din netværksforbindelse. Forbinder igen om {{seconds}} sekunder...",
|
||||
"conferenceDisconnectTitle": "Din forbindelse er blevet afbrudt.",
|
||||
"conferenceReloadMsg": "Forsøger at genoprette forbindelsen. Forbinder igen om {{seconds}} sekunder...",
|
||||
"conferenceReloadTitle": "Der er desværre gået noget galt.",
|
||||
"confirm": "Bekræft",
|
||||
"confirmNo": "Nej",
|
||||
"confirmYes": "Ja",
|
||||
"connectError": "Det var ikke muligt at forbinde til mødet.",
|
||||
"connectErrorWithMsg": "Det var ikke muligt at forbinde til mødet: {{msg}}",
|
||||
"connecting": "Forbinder",
|
||||
"contactSupport": "Kontakt support",
|
||||
"copy": "Kopier invitation",
|
||||
"dismiss": "Afbryd",
|
||||
"displayNameRequired": "Navn/alias er påkrævet",
|
||||
"done": "Gem",
|
||||
"enterDisplayName": "Indtast venligst dit navn/alias",
|
||||
"error": "Fejl",
|
||||
"externalInstallationMsg": "Du skal installerer vores skærmdelings plugin.",
|
||||
"externalInstallationTitle": "Plugin skal bruges",
|
||||
"goToStore": "Gå til webstore",
|
||||
"gracefulShutdown": "Vores service er pt. under vedligeholdese. Forsøg venligst igen senere.",
|
||||
"IamHost": "Jeg er vært",
|
||||
"incorrectRoomLockPassword": "",
|
||||
"incorrectPassword": "Forkert brugernavn eller adgangskode",
|
||||
"inlineInstallationMsg": "Du skal installerer vores skærmdelings plugin.",
|
||||
"inlineInstallExtension": "Installer nu",
|
||||
"internalError": "Der er opstået en fejl: {{error}}",
|
||||
"internalErrorTitle": "Intern fejl",
|
||||
"kickMessage": "Du er blevet afbrudt fra mødet!",
|
||||
"kickParticipantButton": "Afbryd",
|
||||
"kickParticipantDialog": "Er du sikker på at du vil afbryde den deltager?",
|
||||
"kickParticipantTitle": "Afbryd denne deltager?",
|
||||
"kickTitle": "Afbrudt fra møde",
|
||||
"liveStreaming": "Live Streaming",
|
||||
"liveStreamingDisabledForGuestTooltip": "Gæster kan ikke starte en live stream.",
|
||||
"liveStreamingDisabledTooltip": "Live streaming er slået fra.",
|
||||
"lockMessage": "Kunne ikke sikre mødet.",
|
||||
"lockRoom": "Tilføj adgangskode",
|
||||
"lockTitle": "Sikring fejlet",
|
||||
"logoutQuestion": "Er du sikker på at du vil logge ud og stoppe mødet?",
|
||||
"logoutTitle": "Log ud",
|
||||
"maxUsersLimitReached": "Grænsen for antal deltagere er nået. Mødet er fuldt. Kontakt ejeren af mødet eller prøv igen senere!",
|
||||
"maxUsersLimitReachedTitle": "Maksimum antal deltagere nået",
|
||||
"micConstraintFailedError": "Din mikrofon supporterer ikke de nødvendige specifikationer.",
|
||||
"micNotFoundError": "Mikrofon ikke fundet.",
|
||||
"micNotSendingData": "Vi kunne ikke tilgå din mikrofon. Vælg en anden mikrofon under indstillinger eller genindlæs applikationen.",
|
||||
"micNotSendingDataTitle": "Kunne ikke tilgå din mikrofon",
|
||||
"micPermissionDeniedError": "Du har ikke givet tilladelse til at bruge din mikrofon. Du kan stadig deltage i mødet men de andre deltagere kan ikke høre dig. Benyt kamera knappen i adressbaren for at give tilladelse.",
|
||||
"micUnknownError": "Kan ikke tilgå mikrofon af ukendt årsag.",
|
||||
"muteEveryoneElseDialog": "Er du sikker på at du vil slå lyden fra for denne deltager? Du kan ikke tænde igen, men de kan selv tænde til enhver tid.",
|
||||
"muteEveryoneElseTitle": "Slå lyd fra for alle undtagen {{whom}}?",
|
||||
"muteEveryoneDialog": "Er du sikker på at du vil slå lyden fra for denne deltager? Du kan ikke tænde igen, men de kan selv tænde til enhver tid.",
|
||||
"muteEveryoneTitle": "Slå lyd fra for alle?",
|
||||
"muteEveryoneSelf": "dig selv",
|
||||
"muteEveryoneStartMuted": "Lyden er slpet fra for alle fra nu af",
|
||||
"muteParticipantBody": "Du kan ikke tænde for deres mikrofon, men de kan selv tænde for deres mikrofon til enhver tid.",
|
||||
"muteParticipantButton": "Slå lyd fra",
|
||||
"muteParticipantDialog": "Er du sikker på at du vil slå lyden fra for denne deltager? Du kan ikke tænde igen, men de kan selv tænde til enhver tid.",
|
||||
"muteParticipantTitle": "Slå lyd fra for denne deltager?",
|
||||
"Ok": "Ok",
|
||||
"passwordLabel": "Adgangskode",
|
||||
"passwordNotSupported": "Sætte en adgangskode for mødet er ikke understøttet.",
|
||||
"passwordNotSupportedTitle": "Adgangskode er ikke understøttet",
|
||||
"passwordRequired": "Adgangskode påkrævet",
|
||||
"popupError": "Din browser blockerer for pop-upper fra denne hjemmeside. Slå venligst pop-upper til i din browsers indstillinger og forsøg igen.",
|
||||
"popupErrorTitle": "Pop-up blokkeret",
|
||||
"recording": "Optager",
|
||||
"recordingDisabledForGuestTooltip": "Gæster kan ikke starte en optagelse.",
|
||||
"recordingDisabledTooltip": "Start optagelse er slået fra.",
|
||||
"rejoinNow": "Deltag igen",
|
||||
"remoteControlAllowedMessage": "{{user}} accepterede din fjernstyring anmodning!",
|
||||
"remoteControlDeniedMessage": "{{user}} afviste din fjernstyring anmodning!",
|
||||
"remoteControlErrorMessage": "En fejl er opstået ved anmodning om fjernstyring for {{user}}!",
|
||||
"remoteControlRequestMessage": "Vil du tillade at {{user}} fjerstyrer din computer?",
|
||||
"remoteControlShareScreenWarning": "Bemærk at hvis du vælger \"Tillad\" så vil du tillade fjernstyring!",
|
||||
"remoteControlStopMessage": "Fjernstyrings sessionen er afsluttet!",
|
||||
"remoteControlTitle": "Fjerstyring",
|
||||
"Remove": "Fjern",
|
||||
"removePassword": "Fjern adgangskode",
|
||||
"removeSharedVideoMsg": "Er du sikker på at du vil fjerne di delte video?",
|
||||
"removeSharedVideoTitle": "Fjern delt video",
|
||||
"reservationError": "Reservation - system fejl",
|
||||
"reservationErrorMsg": "Fejlkode: {{code}}, fejl: {{msg}}",
|
||||
"retry": "Forsøg igen",
|
||||
"screenSharingFailedToInstall": "Skærmdelings-plugin kunne ikke installeres.",
|
||||
"screenSharingFailedToInstallTitle": "Skærmdelings-plugin kunne ikke installeres.",
|
||||
"screenSharingFirefoxPermissionDeniedError": "Noget gik galt under skærmdeling. Kontroller venligst at du har givet tilladelse til skærmdeling. ",
|
||||
"screenSharingFirefoxPermissionDeniedTitle": "Skærmdeling kunne ikke startes!",
|
||||
"screenSharingPermissionDeniedError": "Noget gik galt under skærmdeling. Kontroller venligst at du har givet tilladelse til skærmdeling. Genindlæs siden og forsøg igen.",
|
||||
"sendPrivateMessage": "Du har modtage en privat besked. Ønsker du at svare private eller øsnker du at svare til gruppen?",
|
||||
"sendPrivateMessageCancel": "Send til gruppen",
|
||||
"sendPrivateMessageOk": "Send privat",
|
||||
"sendPrivateMessageTitle": "Send privat?",
|
||||
"serviceUnavailable": "Service er ikke tilgængelig",
|
||||
"sessTerminated": "Møde afsluttet",
|
||||
"Share": "Del",
|
||||
"shareVideoLinkError": "Angiv venligst et validt Youtube link.",
|
||||
"shareVideoTitle": "Del en video",
|
||||
"shareYourScreen": "Del din skærm",
|
||||
"shareYourScreenDisabled": "Skærmdeling er ikke slået til.",
|
||||
"shareYourScreenDisabledForGuest": "Gæster kan ikke dele deres skærm.",
|
||||
"startLiveStreaming": "Start live stream",
|
||||
"startRecording": "Start optagelse",
|
||||
"startRemoteControlErrorMessage": "Der er sket en fejl under opstart af fjern kontrol sessionen!",
|
||||
"stopLiveStreaming": "Stop live stream",
|
||||
"stopRecording": "Stop optagelse",
|
||||
"stopRecordingWarning": "Er du sikker på at du ønsker at stoppe optagelesen?",
|
||||
"stopStreamingWarning": "Er du sikker på at du ønsker at stoppe live streaming?",
|
||||
"streamKey": "Live stream nøgle",
|
||||
"Submit": "Gem",
|
||||
"thankYou": "Tak for at du har benyttet {{appName}}!",
|
||||
"token": "token",
|
||||
"tokenAuthFailed": "Beklager, du kan ikke deltage i dette møde.",
|
||||
"tokenAuthFailedTitle": "Log ind fejlede",
|
||||
"transcribing": "Transcribering",
|
||||
"unlockRoom": "Fjern møde adgangskode",
|
||||
"userPassword": "bruger adgangskode",
|
||||
"WaitForHostMsg": "Mødet <b>{{room}}</b> er ikke startet endnu. Hvis du er hosten log venligst ind, ellers vent på at hosten kommer.",
|
||||
"WaitForHostMsgWOk": "Mødet <b>{{room}}</b> er ikke startet endnu. Hvis du er hosten tryk venligst på OK for at logge ind, ellers vent på at hosten kommer.",
|
||||
"WaitingForHost": "Venter på host ...",
|
||||
"Yes": "Ja",
|
||||
"yourEntireScreen": "Hele din skærm"
|
||||
},
|
||||
"dialOut": {
|
||||
"statusMessage": "er nu {{status}}"
|
||||
},
|
||||
"documentSharing": {
|
||||
"title": "Delt dokument"
|
||||
},
|
||||
"feedback": {
|
||||
"average": "Normal",
|
||||
"bad": "Dårlig",
|
||||
"detailsLabel": "Uddyb.",
|
||||
"good": "God",
|
||||
"rateExperience": "Vurder din oplevelse",
|
||||
"veryBad": "Meget dårlig",
|
||||
"veryGood": "Meget god"
|
||||
},
|
||||
"incomingCall": {
|
||||
"answer": "Besvar",
|
||||
"audioCallTitle": "Indkommende opkald",
|
||||
"decline": "Afvis",
|
||||
"productLabel": "fra Appinux skærmbesøg",
|
||||
"videoCallTitle": "Indkommende videoopkald"
|
||||
},
|
||||
"info": {
|
||||
"accessibilityLabel": "Vis info",
|
||||
"addPassword": "Tilføj adgangskode",
|
||||
"cancelPassword": "Annulé adgangskode",
|
||||
"conferenceURL": "Link:",
|
||||
"country": "Land",
|
||||
"dialANumber": "For at deltage i mødet ring til et af følgende telefonnumre og indtast pinkode.",
|
||||
"dialInConferenceID": "Pinkode:",
|
||||
"dialInNotSupported": "Deltagelse vis telfonen er pt. ikke understøttet.",
|
||||
"dialInNumber": "Ring ind:",
|
||||
"dialInSummaryError": "Der er opstået en fejl under hentning af ring ind information. Forsøg venligst igen senere.",
|
||||
"dialInTollFree": "Gratis",
|
||||
"genericError": "Der er opstået en fejl",
|
||||
"inviteLiveStream": "For at se en live stream i dette møde klik på dette link: {{url}}",
|
||||
"invitePhone": "Ring-ind: {{number}},,{{conferenceID}}#",
|
||||
"invitePhoneAlternatives": "",
|
||||
"inviteURLFirstPartGeneral": "Der er blevet inviteret til at deltage i et møde.",
|
||||
"inviteURLFirstPartPersonal": "{{name}} inviterer dig til at deltage i et møde.\n",
|
||||
"inviteURLSecondPart": "\nDeltag i mødet:\n{{url}}\n",
|
||||
"liveStreamURL": "Live stream:",
|
||||
"moreNumbers": "Flere telefonnumre",
|
||||
"noNumbers": "Ring-ind nummer findes ikke.",
|
||||
"noPassword": "Ingen",
|
||||
"noRoom": "Ring-ind møde information blev ikke angivet.",
|
||||
"numbers": "Ring-ind numre",
|
||||
"password": "Adgangskode:",
|
||||
"title": "Del",
|
||||
"tooltip": "Del link og rind-ind information for dette møde",
|
||||
"label": "Møde information"
|
||||
},
|
||||
"inviteDialog": {
|
||||
"alertText": "Kunne ikke invitere nogle af deltagerne.",
|
||||
"header": "Invitér",
|
||||
"searchCallOnlyPlaceholder": "Indtast telefonnummer",
|
||||
"searchPeopleOnlyPlaceholder": "Søg efter deltagere",
|
||||
"searchPlaceholder": "Deltager eller telefonnummer",
|
||||
"send": "Send"
|
||||
},
|
||||
"inlineDialogFailure": {
|
||||
"msg": "Der er opstået en fejl.",
|
||||
"retry": "Forsøg igen",
|
||||
"support": "Support",
|
||||
"supportMsg": "Hvis denne fejl bliver ved, kontakt"
|
||||
},
|
||||
"keyboardShortcuts": {
|
||||
"focusLocal": "Fokusér på din video",
|
||||
"focusRemote": "Fokusér på en anden persons video",
|
||||
"fullScreen": "Vis eller annullér fuld skærm",
|
||||
"keyboardShortcuts": "Tastaturgenveje",
|
||||
"localRecording": "Vis eller skjul optage kontrolknapper",
|
||||
"mute": "Slå lyd fra eller til for din mikrofon",
|
||||
"pushToTalk": "Tryk for at tale",
|
||||
"raiseHand": "Lyft eller sænk din hånd",
|
||||
"showSpeakerStats": "Vis højtaler statistik",
|
||||
"toggleChat": "Åben eller luk chat",
|
||||
"toggleFilmstrip": "Vis eller skjul video små billeder",
|
||||
"toggleScreensharing": "Skift mellem video og skærmdeling",
|
||||
"toggleShortcuts": "Vis eller skjul tastaturgenveje",
|
||||
"videoMute": "Tænd eller sluk dit kamera",
|
||||
"videoQuality": "Indstil opkaldskvalitet"
|
||||
},
|
||||
"liveStreaming": {
|
||||
"busy": "Der arbejdes på at frigive streamingresourcer, forsøg venligst igen om et par minutter.",
|
||||
"busyTitle": "Alle streamers er optaget",
|
||||
"changeSignIn": "Skift konto.",
|
||||
"choose": "Vælg en live stream",
|
||||
"chooseCTA": "Vælg en stream mulighed. Du er pt. logget ind som {{email}}.",
|
||||
"enterStreamKey": "Indtast din Youtube live stream her.",
|
||||
"error": "Fejl under live streaming. Forsøg venligst igen.",
|
||||
"errorAPI": "En fejl opstod ved forsøg på at tilgå din YouTube broadcast. Forsøg venligst at logge ind igen.",
|
||||
"errorLiveStreamNotEnabled": "Live Streaming er ikke slpet til for {{email}}. Slå venligst live streaming til eller log ind på en konto der har live streaming slået til.",
|
||||
"expandedOff": "Live stream er stoppet",
|
||||
"expandedOn": "Mødet bliver pt. streamet til Youtube.",
|
||||
"expandedPending": "Live streaming starter...",
|
||||
"failedToStart": "Kunne ikke starte live streaming",
|
||||
"getStreamKeyManually": "Vi kunne ikke hente nogle live streams. Forsøg at hente din live stream nøgle fra Youtube.",
|
||||
"invalidStreamKey": "Live stream nøgle er muligvis forkert.",
|
||||
"off": "Live Streaming er stoppet",
|
||||
"offBy": "{{name}} stoppede live streaming",
|
||||
"on": "Live Streaming",
|
||||
"onBy": "{{name}} startede live streaming",
|
||||
"pending": "Starter Live Stream...",
|
||||
"serviceName": "Live Streaming service",
|
||||
"signedInAs": "Du er pt. logget ind som:",
|
||||
"signIn": "Log ind med Google",
|
||||
"signInCTA": "Log ind eller indtast din live stream nøgle fra YouTube.",
|
||||
"signOut": "Log ud",
|
||||
"start": "Start en live stream",
|
||||
"streamIdHelp": "Hvad er dette?",
|
||||
"unavailableTitle": "Live Streaming er ikke tilgængelig"
|
||||
},
|
||||
"localRecording": {
|
||||
"clientState": {
|
||||
"off": "Slået fra",
|
||||
"on": "Slået til",
|
||||
"unknown": "Ukendt"
|
||||
},
|
||||
"dialogTitle": "Optage kontrolknapper",
|
||||
"duration": "Varighed",
|
||||
"durationNA": "Ikke tilgængelig",
|
||||
"encoding": "Encoding",
|
||||
"label": "Optager",
|
||||
"labelToolTip": "Optager er slået til",
|
||||
"localRecording": "Local Recording",
|
||||
"me": "Mig",
|
||||
"messages": {
|
||||
"engaged": "Optager er slået til.",
|
||||
"finished": "Optagelses session {{token}} afsluttet. Send venligst den optagede fil til moderator.",
|
||||
"finishedModerator": "Optagelses session {{token}} afsluttet. Optagelsen er gemt. Bed deltageren om at sende deres optagelser.",
|
||||
"notModerator": "Du er ikke moderator. Du kan ikke starte eller stoppe optagelser."
|
||||
},
|
||||
"moderator": "Moderator",
|
||||
"no": "Nej",
|
||||
"participant": "Deltager",
|
||||
"participantStats": "Deltager statistik",
|
||||
"sessionToken": "Sessionsnøgle",
|
||||
"start": "Start optagelse",
|
||||
"stop": "Stop optagelse",
|
||||
"yes": "Ja"
|
||||
},
|
||||
"lockRoomPassword": "adgangskode",
|
||||
"lockRoomPasswordUppercase": "Adgangskode",
|
||||
"me": "mig",
|
||||
"notify": {
|
||||
"connectedOneMember": "{{name}} deltager nu i mødet",
|
||||
"connectedThreePlusMembers": "{{name}} og {{count}} andre deltager nu i mødet",
|
||||
"connectedTwoMembers": "{{first}} og {{second}} deltager nu i mødet",
|
||||
"disconnected": "afbrudt",
|
||||
"focus": "Konference fokus",
|
||||
"focusFail": "{{component}} ikke tilgængelig - forsøg igen om {{ms}} sekunder",
|
||||
"grantedTo": "Moderator rettigheder er givet til {{to}}!",
|
||||
"invitedOneMember": "{{name}} er blevet inviteret",
|
||||
"invitedThreePlusMembers": "{{name}} og {{count}} andre er blevet inviteret",
|
||||
"invitedTwoMembers": "{{first}} og {{second}} er blevet inviteret",
|
||||
"kickParticipant": "{{kicked}} blev afbrudt fra mødet af {{kicker}}",
|
||||
"me": "Mig",
|
||||
"moderator": "Moderator rettigheder givet!",
|
||||
"muted": "Du har startet samtalen med lyden slået fra.",
|
||||
"mutedTitle": "Din lyd er slået fra!",
|
||||
"mutedRemotelyTitle": "Din lyd er slået fra af {{participantDisplayName}}!",
|
||||
"mutedRemotelyDescription": "",
|
||||
"passwordRemovedRemotely": "",
|
||||
"passwordSetRemotely": "",
|
||||
"raisedHand": "{{name}} ønsker at få ordet.",
|
||||
"somebody": "Nogen",
|
||||
"startSilentTitle": "",
|
||||
"startSilentDescription": "",
|
||||
"suboptimalExperienceDescription": "Hmmm... vi er bange for at din oplevelse med {{appName}} ikke vil være optimal. Vi arbejder på at forbedre dette, men indtil da så forsøg venligst at bruge en af følgende <a href='static/recommendedBrowsers.html' target='_blank'>fuldt understøttede internet browsere</a>.",
|
||||
"suboptimalExperienceTitle": "Browser Advarsel",
|
||||
"unmute": "",
|
||||
"newDeviceCameraTitle": "Nyt kamerat fundet",
|
||||
"newDeviceAudioTitle": "Ny lyd enhed fundet",
|
||||
"newDeviceAction": "Benyt"
|
||||
},
|
||||
"passwordSetRemotely": "sat af et andet medlem",
|
||||
"passwordDigitsOnly": "Op til {{number}} tal",
|
||||
"poweredby": "powered by",
|
||||
"presenceStatus": {
|
||||
"busy": "Optaget",
|
||||
"calling": "Ringer op...",
|
||||
"connected": "Forbundet",
|
||||
"connecting": "Forbinder...",
|
||||
"connecting2": "Forbinder*...",
|
||||
"disconnected": "Forbindelse afbrudt",
|
||||
"expired": "Udløbet",
|
||||
"ignored": "Ignoreret",
|
||||
"initializingCall": "Starter opkald...",
|
||||
"invited": "Inviteret",
|
||||
"rejected": "Afvist",
|
||||
"ringing": "Ringer..."
|
||||
},
|
||||
"profile": {
|
||||
"setDisplayNameLabel": "Vælg navn/alias",
|
||||
"setEmailInput": "Indtast email",
|
||||
"setEmailLabel": "Indtast gravatar email",
|
||||
"title": "Profil"
|
||||
},
|
||||
"raisedHand": "Ønsker at tale",
|
||||
"recording": {
|
||||
"authDropboxText": "Upload til Dropbox",
|
||||
"availableSpace": "Tilgængelig plads: {{spaceLeft}} MB (plads til ca. {{duration}} minutters optagelse)",
|
||||
"beta": "BETA",
|
||||
"busy": "Der arbejdes på at frigive optagelsesresourcer. Prøv venligst igen om nogle få minutter.",
|
||||
"busyTitle": "Alle optagere er pt optaget",
|
||||
"error": "Fejl under optagelse, forsøg venligst igen om lidt.",
|
||||
"expandedOff": "Optagelse er stoppet½",
|
||||
"expandedOn": "Mødet bliver pt. optaget.",
|
||||
"expandedPending": "Optagelse starter...",
|
||||
"failedToStart": "Kunne ikke start optagelse",
|
||||
"fileSharingdescription": "Del optagelse med deltagere",
|
||||
"live": "LIVE",
|
||||
"loggedIn": "Logget ind som {{userName}}",
|
||||
"off": "Optagelse stoppet",
|
||||
"offBy": "{{name}} stoppede optagelsen",
|
||||
"on": "Optager",
|
||||
"onBy": "{{name}} startede optagelsen",
|
||||
"pending": "Gør klar til at optage mødet...",
|
||||
"rec": "REC",
|
||||
"serviceDescription": "Din optagelse bliver gemt af optager servicen",
|
||||
"serviceName": "Optager service",
|
||||
"signIn": "Log ind",
|
||||
"signOut": "Log ud",
|
||||
"unavailable": "Optager service {{serviceName}} er ikke tilgængelig. Der arbejdes på at løse problemet, forsøg igen senere.",
|
||||
"unavailableTitle": "Optagelse ikke tilgængelig"
|
||||
},
|
||||
"sectionList": {
|
||||
"pullToRefresh": "Træk ned for update"
|
||||
},
|
||||
"settings": {
|
||||
"calendar": {
|
||||
"about": "{{appName}}s kalenderintegration benyttes til at sikkert tilgå din kalender så den kan læse fremtidige aftaler.",
|
||||
"disconnect": "Afbryd",
|
||||
"microsoftSignIn": "Log ind med Microsoft",
|
||||
"signedIn": "Henter kalenderaftaler for {{email}}. Tryk på Afbryd knappen for at afbryde forbindelsen.",
|
||||
"title": "Kalender"
|
||||
},
|
||||
"devices": "Enheder",
|
||||
"followMe": "Alle følger mig",
|
||||
"language": "Sprog",
|
||||
"loggedIn": "Logget ind som {{name}}",
|
||||
"moderator": "Moderator",
|
||||
"more": "Mere",
|
||||
"name": "Navn",
|
||||
"noDevice": "Ingen",
|
||||
"selectAudioOutput": "Lyd udgang",
|
||||
"selectCamera": "Kamera",
|
||||
"selectMic": "Mikrofon",
|
||||
"startAudioMuted": "Alle starter med lyden slået fra",
|
||||
"startVideoMuted": "Alle starter skjult",
|
||||
"title": "Indstillinger"
|
||||
},
|
||||
"settingsView": {
|
||||
"advanced": "Avanceret",
|
||||
"alertOk": "OK",
|
||||
"alertTitle": "Advarsel",
|
||||
"alertURLText": "Den indtastede server url er ikke korrekt",
|
||||
"buildInfoSection": "Build Information",
|
||||
"conferenceSection": "Konference",
|
||||
"disableCallIntegration": "Slå indbygget opkalds integration fra",
|
||||
"disableP2P": "Slå Peer-To-Peer fra",
|
||||
"displayName": "Navn/alias",
|
||||
"email": "Email",
|
||||
"header": "Indstillinger",
|
||||
"profileSection": "Profil",
|
||||
"serverURL": "Server URL",
|
||||
"showAdvanced": "Show advanced settings",
|
||||
"startWithAudioMuted": "Start med lyden slået fra",
|
||||
"startWithVideoMuted": "Start med video slået fra",
|
||||
"version": "Version"
|
||||
},
|
||||
"share": {
|
||||
"dialInfoText": "\n\n=====\n\nØnsker du at ringe ind fra din telefon?\n\n{{defaultDialInNumber}}Klik på dette link for at se telefonnummeret for dette møde\n{{dialInfoPageUrl}}",
|
||||
"mainText": "Klik på det følgende link for at deltage i mødet:\n{{roomUrl}}"
|
||||
},
|
||||
"speaker": "Højtaler",
|
||||
"speakerStats": {
|
||||
"hours": "{{count}}t",
|
||||
"minutes": "{{count}}m",
|
||||
"name": "Navn",
|
||||
"seconds": "{{count}}s",
|
||||
"speakerStats": "Højtaler info",
|
||||
"speakerTime": "Højtaler tid"
|
||||
},
|
||||
"startupoverlay": {
|
||||
"policyText": " ",
|
||||
"title": "{{app}} har brug for adgang til din mikrofon og kamera."
|
||||
},
|
||||
"suspendedoverlay": {
|
||||
"rejoinKeyTitle": "Forbind igen",
|
||||
"text": "Tryk på <i>Forbind igen </i> knappen for at deltage igen.",
|
||||
"title": "Dit møde blev afbrudt da din computer gik i dvale."
|
||||
},
|
||||
"toolbar": {
|
||||
"accessibilityLabel": {
|
||||
"audioOnly": "Tænd/sluk lyd",
|
||||
"audioRoute": "Vælg lydenhed",
|
||||
"callQuality": "Indstil møde kvalitet",
|
||||
"cc": "Slå undertekst fra/til",
|
||||
"chat": "Slå chat fra/til",
|
||||
"document": "Slå delte dokumenter fra/til",
|
||||
"download": "Hent vores apps",
|
||||
"feedback": "Giv tilbagemelding",
|
||||
"fullScreen": "Slå fuld skærm fra/til",
|
||||
"hangup": "Forlad mødet",
|
||||
"help": "Hjælp",
|
||||
"invite": "Inviter deltagere",
|
||||
"kick": "Afbryd deltager",
|
||||
"localRecording": "Slå optagekontroller fra/til",
|
||||
"lockRoom": "Slå mødeadgangskode fra/til",
|
||||
"moreActions": "Slå \"Flere indstillinger\" menu fra/til",
|
||||
"moreActionsMenu": "Flere indtstillinger",
|
||||
"moreOptions": "Show more options",
|
||||
"mute": "Slå lyd til/fra",
|
||||
"muteEveryone": "Mute everyone",
|
||||
"pip": "Slå Billede-i-billede fra/til",
|
||||
"privateMessage": "Send privat besked",
|
||||
"profile": "Redigér profil",
|
||||
"raiseHand": "Slå løft hånden fra/til",
|
||||
"recording": "Slå optagelse til/fra",
|
||||
"remoteMute": "Slå lyd fra for deltager",
|
||||
"Settings": "Slå indstillinger fra/til",
|
||||
"sharedvideo": "Slå Youtube video deling fra/til",
|
||||
"shareRoom": "Invitér nogen",
|
||||
"shareYourScreen": "Slå skærmdeling fra/til",
|
||||
"shortcuts": "Slå genveje fra/til",
|
||||
"show": "Vis",
|
||||
"speakerStats": "Slå højtaler info fra/til",
|
||||
"tileView": "Slå tileview fra/til",
|
||||
"toggleCamera": "Slå kamera fra/til",
|
||||
"videomute": "Slå video fra/til",
|
||||
"videoblur": "Slå baggrundsløring fra/til"
|
||||
},
|
||||
"addPeople": "Tilføj deltager til mødet",
|
||||
"audioOnlyOff": "Slå kun-lyd møder fra",
|
||||
"audioOnlyOn": "Slå kun-lyd møder til",
|
||||
"audioRoute": "Vælg lydenhed",
|
||||
"authenticate": "Log ind",
|
||||
"callQuality": "Indstil møde kvalitet",
|
||||
"chat": "Åben / Luk chat",
|
||||
"closeChat": "Luk chat",
|
||||
"documentClose": "Luk delt dokument",
|
||||
"documentOpen": "Åben delt dokument",
|
||||
"download": "Hent vores apps",
|
||||
"enterFullScreen": "Vis fuld skærm",
|
||||
"enterTileView": "Tileview",
|
||||
"exitFullScreen": "Luk fuld skærm",
|
||||
"exitTileView": "Luk Tileview",
|
||||
"feedback": "Giv tilbagemeldign",
|
||||
"hangup": "Forlad",
|
||||
"help": "Hjælp",
|
||||
"invite": "Invitér deltagere",
|
||||
"login": "Log ind",
|
||||
"logout": "Log ud",
|
||||
"lowerYourHand": "Ta hånden ned",
|
||||
"moreActions": "Flere handlinger",
|
||||
"moreOptions": "Flere indstillinger",
|
||||
"mute": "Slå lyd fra / Slå lyd til",
|
||||
"muteEveryone": "Slå lyd fra for alle",
|
||||
"noAudioSignalTitle": "Der kommer ingen input fra din mikrofon!",
|
||||
"noAudioSignalDesc": "Hvis du ikke med vilje har slået den fra under systemindstillinger eller hardware, kan du overveje at skifte enhed.",
|
||||
"noAudioSignalDescSuggestion": "Hvis du ikke med vilje har slået den fra under systemindstillinger eller hardware, skal du overveje at skifte til den foreslåede enhed.",
|
||||
"noAudioSignalDialInDesc": "Du kan også ringe op ved hjælp af:",
|
||||
"noAudioSignalDialInLinkDesc": "Opkaldsnumre",
|
||||
"noisyAudioInputTitle": "Det lyder som om din mikrofon laver støj!",
|
||||
"noisyAudioInputDesc": "Det lyder som om din mikrofon laver støj. Overvej venligst at slå lyden fra eller skifte enhed.",
|
||||
"openChat": "Åben chat",
|
||||
"pip": "Benyt Billede-i-billede",
|
||||
"privateMessage": "Send private message",
|
||||
"profile": "Rediger profil",
|
||||
"raiseHand": "Ræk hånden op / Tag hånden ned",
|
||||
"raiseYourHand": "Ræk hånden op",
|
||||
"Settings": "Indstillinger",
|
||||
"sharedvideo": "Del en Youtube video",
|
||||
"shareRoom": "Invitér deltagere",
|
||||
"shortcuts": "Vis genveje",
|
||||
"speakerStats": "Højtaler info",
|
||||
"startScreenSharing": "Start skærmdeling",
|
||||
"startSubtitles": "Vis undertekster",
|
||||
"stopScreenSharing": "Stop skærmdeling",
|
||||
"stopSubtitles": "Skjul undertekster",
|
||||
"stopSharedVideo": "Stop YouTube video",
|
||||
"talkWhileMutedPopup": "Forsøger du at sige noget? Din lyd er slået fra.",
|
||||
"tileViewToggle": "Slå tileview fra/til",
|
||||
"toggleCamera": "Slå kamera fra/til",
|
||||
"videomute": "Start / Stop kamera",
|
||||
"startvideoblur": "Slå baggrundssløring til",
|
||||
"stopvideoblur": "Slå baggrundssløring fra"
|
||||
},
|
||||
"transcribing": {
|
||||
"ccButtonTooltip": "Start / Stop undertekster",
|
||||
"error": "Transkription mislykkedes. Prøv venligst igen.",
|
||||
"expandLabel": "Transkription er i øjeblikket tændt",
|
||||
"failedToStart": "Transkription kunne ikke starte",
|
||||
"labelToolTip": "Mødet transkriberes",
|
||||
"off": "Transkription stoppet",
|
||||
"pending": "Forbereder sig til at transkribere mødet ...",
|
||||
"start": "Begynd at vise undertekster",
|
||||
"stop": "Stop med at få vist undertekster",
|
||||
"tr": "TR"
|
||||
},
|
||||
"userMedia": {
|
||||
"androidGrantPermissions": "Vælg <b><i> Tillad</i> </b>, når din browser beder om tilladelser.",
|
||||
"chromeGrantPermissions": "Vælg <b><i> Tillad</i> </b>, når din browser beder om tilladelser.",
|
||||
"edgeGrantPermissions": "Vælg <b><i>Ja</i> </b>, når din browser beder om tilladelser.",
|
||||
"electronGrantPermissions": "Giv tilladelse til at bruge dit kamera og din mikrofon",
|
||||
"firefoxGrantPermissions": "Vælg <b> <i> Del valgt enhed </i> </b>, når din browser beder om tilladelser.",
|
||||
"iexplorerGrantPermissions": "Vælg <b><i>OK</i> </b>, når din browser beder om tilladelser.",
|
||||
"nwjsGrantPermissions": "Giv tilladelse til at bruge dit kamera og din mikrofon",
|
||||
"operaGrantPermissions": "Vælg <b><i> Tillad</i> </b>, når din browser beder om tilladelser.",
|
||||
"react-nativeGrantPermissions": "Vælg <b><i> Tillad</i> </b>, når din browser beder om tilladelser.",
|
||||
"safariGrantPermissions": "Vælg <b><i>OK</i> </b>, når din browser beder om tilladelser."
|
||||
},
|
||||
"videoSIPGW": {
|
||||
"busy": "Vi arbejder på at frigøre ressourcer. Prøv igen om et par minutter.",
|
||||
"busyTitle": "Mødeservice er i øjeblikket optaget",
|
||||
"errorAlreadyInvited": "{{displayName}} allerede inviteret",
|
||||
"errorInvite": "Mødet er endnu ikke etableret. Prøv igen senere.",
|
||||
"errorInviteFailed": "Vi arbejder på at løse problemet. Prøv igen senere.",
|
||||
"errorInviteFailedTitle": "Inviterer {{displayName}} mislykkedes",
|
||||
"errorInviteTitle": "Fejl ved indbydelse til møde",
|
||||
"pending": "{{displayName}} er blevet inviteret"
|
||||
},
|
||||
"videoStatus": {
|
||||
"audioOnly": "AUD",
|
||||
"audioOnlyExpanded": "Du er i kun-lyd tilstand. Denne tilstand sparrer båndbredde, men du kan ikke se andres video.",
|
||||
"callQuality": "Opkaldskvalitet",
|
||||
"hd": "HD",
|
||||
"hdTooltip": "Viser HD video",
|
||||
"highDefinition": "Høj opløsning",
|
||||
"labelTooiltipNoVideo": "Ingen video",
|
||||
"labelTooltipAudioOnly": "Tilstand kun-lyd er slået til",
|
||||
"ld": "LD",
|
||||
"ldTooltip": "Viser lav opløsnings video",
|
||||
"lowDefinition": "Lav opløsning",
|
||||
"onlyAudioAvailable": "Kun-lyd er tilgængelig",
|
||||
"onlyAudioSupported": "Vi understøtter kun-lyd i denne browser.",
|
||||
"p2pEnabled": "Peer to Peer slået til",
|
||||
"p2pVideoQualityDescription": "I peer-to-peer tilstand kan den modtagne opkaldskvalitet kun skiftes mellem høj og kun-lyd. Andre indstillinger vil ikke virke, før peer to peer er afsluttet.",
|
||||
"recHighDefinitionOnly": "Foretrækker høj opløsning.",
|
||||
"sd": "SD",
|
||||
"sdTooltip": "Vider normal opløsnings video",
|
||||
"standardDefinition": "Standard opløsning"
|
||||
},
|
||||
"videothumbnail": {
|
||||
"domute": "Slå lyd fra",
|
||||
"domuteOthers": "Slå lyd fra for alle andre",
|
||||
"flip": "Flip",
|
||||
"kick": "Afbryd",
|
||||
"moderator": "Moderator",
|
||||
"mute": "Medlemmets lyd er slået fra",
|
||||
"muted": "Lyd slået fra",
|
||||
"remoteControl": "Fjernbetjening",
|
||||
"show": "",
|
||||
"videomute": "Deltageren har stoppet kameraet"
|
||||
},
|
||||
"welcomepage": {
|
||||
"accessibilityLabel": {
|
||||
"join": "Tryk for at deltage",
|
||||
"roomname": "Skriv møde navn"
|
||||
},
|
||||
"appDescription": "Chat med hele dit team eller inviter alle du kender. {{app}} er en fuldt krypteret, 100% open source videokonference løsning som du kan bruge hele dagen, hver dag, gratis - uden at du behøver en konto. ",
|
||||
"audioVideoSwitch": {
|
||||
"audio": "Lyd",
|
||||
"video": "Video"
|
||||
},
|
||||
"calendar": "Kalender",
|
||||
"connectCalendarButton": "Forbind til din kalender",
|
||||
"connectCalendarText": "",
|
||||
"enterRoomTitle": "Start et nyt møde",
|
||||
"go": "Start",
|
||||
"join": "Deltag",
|
||||
"info": "Info",
|
||||
"privacy": "Privatliv",
|
||||
"recentList": "Seneste",
|
||||
"recentListDelete": "Slet",
|
||||
"recentListEmpty": "Din seneste liste er i øjeblikket tom. Chat med dit team, og du finder alle dine seneste møder her.",
|
||||
"reducedUIText": "",
|
||||
"roomname": "Indtast mødenavn",
|
||||
"roomnameHint": "Indtast mødenavnet, du vil deltage i.",
|
||||
"sendFeedback": "Giv tilbagemelding",
|
||||
"betingelser": "Betingelser",
|
||||
"title": "Skærmbesøg & videomøder"
|
||||
}
|
||||
}
|
||||
@@ -20,8 +20,8 @@
|
||||
"audioDevices": {
|
||||
"bluetooth": "Bluetooth",
|
||||
"headphones": "Kopfhörer",
|
||||
"phone": "Telefon",
|
||||
"speaker": "Sprecher",
|
||||
"phone": "Hörer",
|
||||
"speaker": "Lautsprecher",
|
||||
"none": "Keine Audiogeräte verfügbar"
|
||||
},
|
||||
"audioOnly": {
|
||||
@@ -29,19 +29,19 @@
|
||||
},
|
||||
"calendarSync": {
|
||||
"addMeetingURL": "Meeting-Link hinzufügen",
|
||||
"confirmAddLink": "Wollen Sie einen Jitsi-Link zu dieser Veranstaltung hinzufügen?",
|
||||
"confirmAddLink": "Wollen Sie einen Jitsi-Link zu diesem Termin hinzufügen?",
|
||||
"error": {
|
||||
"appConfiguration": "Kalenderintegration ist nicht richtig konfiguriert.",
|
||||
"generic": "Ein Fehler ist aufgetreten. Prüfen Sie Ihre Kalendereinstellungen oder versuchen Sie, den Kalender zu aktualisieren.",
|
||||
"notSignedIn": "Ein Fehler ist während der Authentifizierung zur Anzeige von Kalendererveranstaltungen aufgetreten. Prüfen Sie Ihre Kalendereinstellungen oder versuchen Sie, sich erneut anzumelden."
|
||||
"notSignedIn": "Ein Fehler ist während der Authentifizierung zur Anzeige von Kalenderertermine aufgetreten. Prüfen Sie Ihre Kalendereinstellungen oder versuchen Sie, sich erneut anzumelden."
|
||||
},
|
||||
"join": "Teilnehmen",
|
||||
"joinTooltip": "Am Meeting teilnehmen",
|
||||
"nextMeeting": "Nächste Konferenz",
|
||||
"noEvents": "Es sind keine bevorstehenden Veranstaltungen geplant.",
|
||||
"noEvents": "Es gibt keine bevorstehenden Termine.",
|
||||
"ongoingMeeting": "Laufendes Meeting",
|
||||
"permissionButton": "Einstellungen öffnen",
|
||||
"permissionMessage": "Die App benötigt Zugriff auf den Kalender um die Termine und Konferenzen anzuzeigen.",
|
||||
"permissionMessage": "Die App benötigt Zugriff auf den Kalender, um Termine und Konferenzen anzuzeigen.",
|
||||
"refresh": "Kalender aktualisieren",
|
||||
"today": "Heute"
|
||||
},
|
||||
@@ -50,7 +50,7 @@
|
||||
"fieldPlaceHolder": "Geben Sie Ihre Nachricht hier ein",
|
||||
"messagebox": "Nachricht eingeben",
|
||||
"messageTo": "Private Nachricht an {{recipient}}",
|
||||
"noMessagesMessage": "Es gibt noch keine Nachricht in dieser Konverenz. Starten Sie hier eine Unterhaltung!",
|
||||
"noMessagesMessage": "Es gibt noch keine Nachricht in dieser Konferenz. Starten Sie hier eine Unterhaltung!",
|
||||
"nickname": {
|
||||
"popover": "Name",
|
||||
"title": "Geben Sie einen Alias zum Chatten ein"
|
||||
@@ -61,7 +61,7 @@
|
||||
},
|
||||
"chromeExtensionBanner": {
|
||||
"installExtensionText": "Installieren Sie die Erweiterung für die Integration von Google Calendar und Office 365",
|
||||
"buttonText": "Chrome Erweiterung installieren",
|
||||
"buttonText": "Chrome-Erweiterung installieren",
|
||||
"dontShowAgain": "Hinweis nicht mehr anzeigen"
|
||||
},
|
||||
"connectingOverlay": {
|
||||
@@ -78,9 +78,9 @@
|
||||
"DISCONNECTING": "Verbindung wird getrennt",
|
||||
"ERROR": "Fehler",
|
||||
"FETCH_SESSION_ID": "Sitzungs-ID erhalten...",
|
||||
"GET_SESSION_ID_ERROR": "Session-ID-Fehler erhalten: {{code}}",
|
||||
"GET_SESSION_ID_ERROR": "Sitzungs-ID-Fehler erhalten: {{code}}",
|
||||
"GOT_SESSION_ID": "Sitzungs-ID erhalten... Beendet",
|
||||
"LOW_BANDWIDTH": "Video für {{displayName}} wurde ausgeschaltet um Bandbreite einzusparen"
|
||||
"LOW_BANDWIDTH": "Video für {{displayName}} wurde ausgeschaltet, um Bandbreite einzusparen"
|
||||
},
|
||||
"connectionindicator": {
|
||||
"address": "Adresse:",
|
||||
@@ -119,9 +119,9 @@
|
||||
"yesterday": "Gestern"
|
||||
},
|
||||
"deepLinking": {
|
||||
"appNotInstalled": "Sie benötigen die {{app}} App um der Konferenz auf dem Smartphone beizutreten.",
|
||||
"description": "Nichts passiert? Wir haben versucht die Konferenz in {{app}} zu öffnen. Versuchen Sie es erneut oder treten Sie der Konferenz in {{app}} im Web bei.",
|
||||
"descriptionWithoutWeb": "Ist nichts passiert? Wir haben versucht, Ihre Besprechung in der {{{app}}} Desktop-App zu starten.",
|
||||
"appNotInstalled": "Sie benötigen die „{{app}}“-App, um der Konferenz auf dem Smartphone beizutreten.",
|
||||
"description": "Nichts passiert? Wir haben versucht, die Konferenz in {{app}} zu öffnen. Versuchen Sie es erneut oder treten Sie der Konferenz in {{app}} im Web bei.",
|
||||
"descriptionWithoutWeb": "Ist nichts passiert? Wir haben versucht, Ihre Besprechung in der „{{{app}}}“-Desktop-App zu starten.",
|
||||
"downloadApp": "App herunterladen",
|
||||
"launchWebButton": "Im Web öffnen",
|
||||
"openApp": "In der App fortfahren",
|
||||
@@ -153,13 +153,13 @@
|
||||
"Back": "Zurück",
|
||||
"cameraConstraintFailedError": "Ihre Kamera erfüllt die notwendigen Anforderungen nicht.",
|
||||
"cameraNotFoundError": "Kamera nicht gefunden.",
|
||||
"cameraNotSendingData": "Die Kamera ist nicht verfügbar. Bitte prüfen ob eine andere Applikation die Kamera verwendet, eine andere Kamera vom Einstellungs-Menu auswählen oder die Applikation neu laden.",
|
||||
"cameraNotSendingData": "Die Kamera ist nicht verfügbar. Bitte prüfen, ob eine andere Applikation die Kamera verwendet, eine andere Kamera vom Einstellungs-Menü auswählen oder die Applikation neu laden.",
|
||||
"cameraNotSendingDataTitle": "Zugriff auf Kamera nicht möglich",
|
||||
"cameraPermissionDeniedError": "Die Berechtigung zur Verwendung der Kamera wurde nicht erteilt. Sie können trotzdem an der Konferenz teilnehmen, aber die anderen Teilnehmer können Sie nicht sehen. Verwenden Sie die Kamera-Schaltfläche in der Adressleiste um die Berechtigungen zu erteilen.",
|
||||
"cameraUnknownError": "Die Kamera kann aus einem unbekannten Grund nicht verwendet werden.",
|
||||
"cameraUnsupportedResolutionError": "Die Kamera unterstützt die erforderliche Auflösung nicht.",
|
||||
"Cancel": "Abbrechen",
|
||||
"close": "Schliessen",
|
||||
"close": "Schließen",
|
||||
"conferenceDisconnectMsg": "Prüfen Sie allenfalls Ihre Netzwerkverbindung. Verbinde in {{seconds}} Sekunden...",
|
||||
"conferenceDisconnectTitle": "Ihre Verbindung ist getrennt worden.",
|
||||
"conferenceReloadMsg": "Wir versuchen das zu beheben. Verbinde in {{seconds}} Sekunden...",
|
||||
@@ -177,14 +177,14 @@
|
||||
"done": "Fertig",
|
||||
"enterDisplayName": "Bitte geben Sie hier Ihren Namen ein",
|
||||
"error": "Fehler",
|
||||
"externalInstallationMsg": "Die Bildschirmfreigabeerweiterung muss installiert werden.",
|
||||
"externalInstallationMsg": "Die Bildschirmfreigabe-Erweiterung muss installiert werden.",
|
||||
"externalInstallationTitle": "Erweiterung erforderlich",
|
||||
"goToStore": "Zum Store",
|
||||
"gracefulShutdown": "Der Dienst steht momentan wegen Wartungsarbeiten nicht zur Verfügung. Bitte versuchen Sie es später noch einmal.",
|
||||
"IamHost": "Ich bin der Organisator",
|
||||
"incorrectRoomLockPassword": "Falsches Passwort",
|
||||
"incorrectPassword": "Benutzername oder Passwort ungültig",
|
||||
"inlineInstallationMsg": "Die Bildschirmfreigabeerweiterung muss installiert werden.",
|
||||
"inlineInstallationMsg": "Die Bildschirmfreigabe-Erweiterung muss installiert werden.",
|
||||
"inlineInstallExtension": "Jetzt installieren",
|
||||
"internalError": "Oh! Es hat etwas nicht funktioniert. Der folgende Fehler ist aufgetreten: {{error}}",
|
||||
"internalErrorTitle": "Interner Fehler",
|
||||
@@ -193,9 +193,9 @@
|
||||
"kickParticipantDialog": "Wollen Sie diesen Teilnehmer wirklich entfernen?",
|
||||
"kickParticipantTitle": "Teilnehmer stummschalten?",
|
||||
"kickTitle": "Autsch! {{participantDisplayName}} hat Sie aus dem Meeting geworfen.",
|
||||
"liveStreaming": "Live-Streaming",
|
||||
"liveStreamingDisabledForGuestTooltip": "Gäste können kein Live-Streaming starten.",
|
||||
"liveStreamingDisabledTooltip": "Starten des Live-Streams deaktiviert.",
|
||||
"liveStreaming": "Livestreaming",
|
||||
"liveStreamingDisabledForGuestTooltip": "Gäste können kein Livestreaming starten.",
|
||||
"liveStreamingDisabledTooltip": "Starten des Livestreams deaktiviert.",
|
||||
"lockMessage": "Die Konferenz konnte nicht gesperrt werden.",
|
||||
"lockRoom": "Meeting $t(lockRoomPasswordUppercase) hinzufügen",
|
||||
"lockTitle": "Sperren fehlgeschlagen",
|
||||
@@ -210,7 +210,7 @@
|
||||
"micPermissionDeniedError": "Die Berechtigung zur Verwendung des Mikrofons wurde nicht erteilt. Sie können trotzdem an der Konferenz teilnehmen, aber die anderen Teilnehmer können Sie nicht hören. Verwenden Sie die Kamera-Schaltfläche in der Adressleiste um die Berechtigungen zu erteilen.",
|
||||
"micUnknownError": "Das Mikrofon kann aus einem unbekannten Grund nicht verwendet werden.",
|
||||
"muteEveryoneElseDialog": "Einmal stummgeschaltet, können Sie deren Stummschaltung nicht mehr beenden, aber sie können ihre Stummschaltung jederzeit selbst beenden.",
|
||||
"muteEveryoneElseTitle": "Alle ausser {{whom}} stummschaten?",
|
||||
"muteEveryoneElseTitle": "Alle außer {{whom}} stummschaten?",
|
||||
"muteEveryoneDialog": "Wollen Sie wirklich alle stummschalten? Sie können deren Stummschaltung nicht mehr beenden, aber sie können ihre Stummschaltung jederzeit selbst beenden.",
|
||||
"muteEveryoneTitle": "Alle stummschalten?",
|
||||
"muteEveryoneSelf": "sich selbst",
|
||||
@@ -224,22 +224,22 @@
|
||||
"passwordNotSupported": "Setzen eines Konferenz-Passworts ist nicht unterstützt",
|
||||
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) nicht unterstützt",
|
||||
"passwordRequired": "$t(lockRoomPasswordUppercase) erforderlich",
|
||||
"popupError": "Ihr Browser blockiert Popups von dieser Website. Bitte aktivieren Sie Popups in den Sicherheitseinstellungen des Browsers und versuchen Sie es erneut.",
|
||||
"popupErrorTitle": "Popup blockiert",
|
||||
"popupError": "Ihr Browser blockiert Pop-ups von dieser Website. Bitte aktivieren Sie Pop-ups in den Sicherheitseinstellungen des Browsers und versuchen Sie es erneut.",
|
||||
"popupErrorTitle": "Pop-up blockiert",
|
||||
"recording": "Aufnahme",
|
||||
"recordingDisabledForGuestTooltip": "Gäste können kein Aufzeichnungen starten.",
|
||||
"recordingDisabledForGuestTooltip": "Gäste können keine Aufzeichnungen starten.",
|
||||
"recordingDisabledTooltip": "Start der Aufzeichnung deaktiviert.",
|
||||
"rejoinNow": "Jetzt erneut beitreten",
|
||||
"remoteControlAllowedMessage": "{{user}} hat die Anfrage zur Fernsteuerung angenommen.",
|
||||
"remoteControlDeniedMessage": "{{user}} hat die Anfrage zur Fernsteuerung verweigert.",
|
||||
"remoteControlErrorMessage": "Beim Anfordern der Fernsteuerungsberechtigung von {{user}} ist ein Fehler aufgetreten.",
|
||||
"remoteControlRequestMessage": "Möchten Sie {{user}} erlauben den Computer fernzusteuern?",
|
||||
"remoteControlShareScreenWarning": "Achtung, wenn Sie die Anfrage genehmigen starten Sie die Bildschirmfreigabe!",
|
||||
"remoteControlRequestMessage": "Möchten Sie {{user}} erlauben, den Computer fernzusteuern?",
|
||||
"remoteControlShareScreenWarning": "Achtung, wenn Sie die Anfrage genehmigen, starten Sie die Bildschirmfreigabe!",
|
||||
"remoteControlStopMessage": "Die Fernsteuerung wurde beendet.",
|
||||
"remoteControlTitle": "Fernsteuerung",
|
||||
"Remove": "Entfernen",
|
||||
"removePassword": "$t(lockRoomPassword) entfernen",
|
||||
"removeSharedVideoMsg": "Sind Sie sicher dass Sie das geteilte Video entfernen möchten?",
|
||||
"removeSharedVideoMsg": "Sind Sie sicher, dass Sie das geteilte Video entfernen möchten?",
|
||||
"removeSharedVideoTitle": "Freigegebenes Video entfernen",
|
||||
"reservationError": "Fehler im Reservationssystem",
|
||||
"reservationErrorMsg": "Fehler, Nummer: {{code}}, Nachricht: {{msg}}",
|
||||
@@ -264,21 +264,21 @@
|
||||
"startLiveStreaming": "Einen Livestream starten",
|
||||
"startRecording": "Aufnahme starten",
|
||||
"startRemoteControlErrorMessage": "Beim Versuch die Fernsteuerung zu starten ist ein Fehler aufgetreten.",
|
||||
"stopLiveStreaming": "Live-Streaming stoppen",
|
||||
"stopLiveStreaming": "Livestreaming stoppen",
|
||||
"stopRecording": "Aufnahme stoppen",
|
||||
"stopRecordingWarning": "Sind Sie sicher dass Sie die Aufnahme stoppen möchten?",
|
||||
"stopStreamingWarning": "Sind Sie sicher dass Sie das Live-Streaming stoppen möchten?",
|
||||
"stopRecordingWarning": "Sind Sie sicher, dass Sie die Aufnahme stoppen möchten?",
|
||||
"stopStreamingWarning": "Sind Sie sicher, dass Sie das Livestreaming stoppen möchten?",
|
||||
"streamKey": "Name/Schlüssel für den Stream",
|
||||
"Submit": "OK",
|
||||
"thankYou": "Danke für die Verwendung von {{appName}}!",
|
||||
"token": "Token",
|
||||
"tokenAuthFailed": "Sie sind nicht berechtigt dieser Konferenz beizutreten.",
|
||||
"tokenAuthFailed": "Sie sind nicht berechtigt, dieser Konferenz beizutreten.",
|
||||
"tokenAuthFailedTitle": "Authentifizierung fehlgeschlagen",
|
||||
"transcribing": "Wird transkribiert",
|
||||
"unlockRoom": "Meeting $t(lockRoomPassword) entfernen",
|
||||
"userPassword": "Benutzerpasswort",
|
||||
"WaitForHostMsg": "Die Konferenz <b>{{room}}</b> wurde noch nicht gestartet. Wenn Sie der Veranstalter sind, authentifizieren Sie sich. Warten Sie andernfalls, bis der Veranstalter erscheint.",
|
||||
"WaitForHostMsgWOk": "Die Konferenz <b>{{room}}</b> wurde noch nicht gestartet. Wenn Sie der Veranstalter sind, drücken Sie zum Authentifizieren auf OK. Warten Sie andernfalls, bis der Veranstalter erscheint.",
|
||||
"WaitForHostMsg": "Die Konferenz <b>{{room}}</b> wurde noch nicht gestartet. Wenn Sie der Organisator sind, authentifizieren Sie sich. Warten Sie andernfalls, bis der Veranstalter erscheint.",
|
||||
"WaitForHostMsgWOk": "Die Konferenz <b>{{room}}</b> wurde noch nicht gestartet. Wenn Sie der Organisator sind, drücken Sie zum Authentifizieren auf OK. Warten Sie andernfalls, bis der Veranstalter erscheint.",
|
||||
"WaitingForHost": "Warten auf den Organisator...",
|
||||
"Yes": "Ja",
|
||||
"yourEntireScreen": "Ganzer Bildschirm"
|
||||
@@ -290,7 +290,7 @@
|
||||
"title": "Freigegebenes Dokument"
|
||||
},
|
||||
"feedback": {
|
||||
"average": "Durschnittlich",
|
||||
"average": "Durchschnittlich",
|
||||
"bad": "Schlecht",
|
||||
"detailsLabel": "Sagen Sie uns mehr dazu.",
|
||||
"good": "Gut",
|
||||
@@ -311,7 +311,7 @@
|
||||
"cancelPassword": "$t(lockRoomPassword) löschen",
|
||||
"conferenceURL": "Link:",
|
||||
"country": "Land",
|
||||
"dialANumber": "Um am Metting teilzunehmen, müssen Sie eine dieser Nummern wählen und dann die PIN eingeben.",
|
||||
"dialANumber": "Um am Meeting teilzunehmen, müssen Sie eine dieser Nummern wählen und dann die PIN eingeben.",
|
||||
"dialInConferenceID": "PIN:",
|
||||
"dialInNotSupported": "Entschuldigung, leider wird das Einwählen derzeit nicht unterstützt.",
|
||||
"dialInNumber": "Einwählen:",
|
||||
@@ -347,7 +347,7 @@
|
||||
"msg": "Es ist ein Fehler aufgetreten.",
|
||||
"retry": "Erneut versuchen",
|
||||
"support": "Support",
|
||||
"supportMsg": "Wenn der Fehler erneut auftritt, bitte kontaktieren sie"
|
||||
"supportMsg": "Wenn der Fehler erneut auftritt, bitte kontaktieren Sie"
|
||||
},
|
||||
"keyboardShortcuts": {
|
||||
"focusLocal": "Lokales Video fokussieren",
|
||||
@@ -356,10 +356,10 @@
|
||||
"keyboardShortcuts": "Tastenkürzel",
|
||||
"localRecording": "Lokale Aufzeichnungssteuerelemente ein- oder ausblenden",
|
||||
"mute": "Stummschaltung aktivieren oder deaktivieren",
|
||||
"pushToTalk": "Drücken um zu sprechen",
|
||||
"pushToTalk": "Push-to-Talk (Sprechtaste)",
|
||||
"raiseHand": "Hand erheben",
|
||||
"showSpeakerStats": "Statistiken für Sprecher anzeigen",
|
||||
"toggleChat": "Chat öffnen oder schliessen",
|
||||
"toggleChat": "Chat öffnen oder schließen",
|
||||
"toggleFilmstrip": "Video-Miniaturansichten ein- oder ausblenden",
|
||||
"toggleScreensharing": "Zwischen Kamera und Bildschirmfreigabe wechseln",
|
||||
"toggleShortcuts": "Tastenkombinationen ein- oder ausblenden",
|
||||
@@ -370,31 +370,31 @@
|
||||
"busy": "Es werden Resourcen zum Streamen bereitgestellt. Bitte in ein paar Minuten erneut versuchen.",
|
||||
"busyTitle": "Alle Streaming-Instanzen sind in Gebrauch",
|
||||
"changeSignIn": "Konten wechseln.",
|
||||
"choose": "Live stream auswählen",
|
||||
"choose": "Livestream auswählen",
|
||||
"chooseCTA": "Streaming-Option auswählen. Sie sind aktuell als {{email}} angemeldet.",
|
||||
"enterStreamKey": "Name/Schlüssel für den YouTube Livestream hier eingeben.",
|
||||
"error": "Das Live-Streaming ist fehlgeschlagen. Bitte versuchen Sie es erneut.",
|
||||
"errorAPI": "Beim abrufen der YouTube Livestreams ist ein Fehler aufgetreten. Bitte versuchen Sie sich erneut anzumelden.",
|
||||
"errorLiveStreamNotEnabled": "Live-Streaming ist für {{email}} nicht aktiviert. Aktivieren Sie das Live-Streaming oder melden Sie sich bei einem Konto mit aktiviertem Live-Streaming an.",
|
||||
"expandedOff": "Live-Streaming wurde angehalten",
|
||||
"enterStreamKey": "Name/Schlüssel für den YouTube-Livestream hier eingeben.",
|
||||
"error": "Das Livestreaming ist fehlgeschlagen. Bitte versuchen Sie es erneut.",
|
||||
"errorAPI": "Beim Abrufen der YouTube-Livestreams ist ein Fehler aufgetreten. Bitte versuchen Sie, sich erneut anzumelden.",
|
||||
"errorLiveStreamNotEnabled": "Livestreaming ist für {{email}} nicht aktiviert. Aktivieren Sie das Livestreaming oder melden Sie sich bei einem Konto mit aktiviertem Livestreaming an.",
|
||||
"expandedOff": "Livestreaming wurde angehalten",
|
||||
"expandedOn": "Das Meeting wird momentan an YouTube gestreamt.",
|
||||
"expandedPending": "Live-Streaming wird gestartet...",
|
||||
"failedToStart": "Live-Streaming konnte nicht gestartet werden",
|
||||
"getStreamKeyManually": "Wir waren nicht in der Lage, Live-Streams abzurufen. Versuchen Sie, Ihren Live-Stream-Schlüssel von YouTube zu erhalten.",
|
||||
"invalidStreamKey": "Der Live-Stream-Schlüssel ist u. U. falsch.",
|
||||
"off": "Live-Streaming gestoppt",
|
||||
"offBy": "{{name}} stoppte das Live-Streaming",
|
||||
"on": "Live-Streaming",
|
||||
"onBy": "{{name}} startete das Live-Streaming",
|
||||
"pending": "Live-Stream wird gestartet...",
|
||||
"serviceName": "Live Streaming-Dienst",
|
||||
"expandedPending": "Livestreaming wird gestartet...",
|
||||
"failedToStart": "Livestreaming konnte nicht gestartet werden",
|
||||
"getStreamKeyManually": "Wir waren nicht in der Lage, Livestreams abzurufen. Versuchen Sie, Ihren Livestream-Schlüssel von YouTube zu erhalten.",
|
||||
"invalidStreamKey": "Der Livestream-Schlüssel ist u. U. falsch.",
|
||||
"off": "Livestreaming gestoppt",
|
||||
"offBy": "{{name}} stoppte das Livestreaming",
|
||||
"on": "Livestreaming",
|
||||
"onBy": "{{name}} startete das Livestreaming",
|
||||
"pending": "Livestream wird gestartet...",
|
||||
"serviceName": "Livestreaming-Dienst",
|
||||
"signedInAs": "Sie sind derzeit angemeldet als:",
|
||||
"signIn": "Mit Google anmelden",
|
||||
"signInCTA": "Anmelden oder den Name/Schlüssel des YouTube Livestreams eingeben.",
|
||||
"signInCTA": "Anmelden oder den Namen/Schlüssel des YouTube-Livestreams eingeben.",
|
||||
"signOut": "Abmelden",
|
||||
"start": "Einen Livestream starten",
|
||||
"streamIdHelp": "Was ist das?",
|
||||
"unavailableTitle": "Live-Streaming nicht verfügbar"
|
||||
"unavailableTitle": "Livestreaming nicht verfügbar"
|
||||
},
|
||||
"localRecording": {
|
||||
"clientState": {
|
||||
@@ -413,7 +413,7 @@
|
||||
"messages": {
|
||||
"engaged": "Lokale Aufzeichnung ist aktiviert",
|
||||
"finished": "Aufzeichnung der Sitzung {{token}} ist beendet. Senden Sie die aufgezeichnete Datei an den Moderator.",
|
||||
"finishedModerator": "Aufzeichnung der Sitzung {{token}} ist beendet. Die Aufzeichnung der lokalen Verlaufs wurde gespeichert. Bitten Sie die anderen Teilnehmer, ihre Aufzeichnungen zu übermitteln.",
|
||||
"finishedModerator": "Aufzeichnung der Sitzung {{token}} ist beendet. Die Aufzeichnung des lokalen Verlaufs wurde gespeichert. Bitten Sie die anderen Teilnehmer, ihre Aufzeichnungen zu übermitteln.",
|
||||
"notModerator": "Sie sind nicht der Moderator. Sie können die lokale Aufzeichnung nicht starten oder stoppen."
|
||||
},
|
||||
"moderator": "Moderator",
|
||||
@@ -451,8 +451,8 @@
|
||||
"raisedHand": "{{name}} möchte sprechen.",
|
||||
"somebody": "Jemand",
|
||||
"startSilentTitle": "Sie sind ohne Audioausgabe beigetreten!",
|
||||
"startSilentDescription": "Treten Sie dem Meeting noch einma bei, um Ihr Audio zu aktivieren",
|
||||
"suboptimalExperienceDescription": "Tut uns leid, aber die Konferenz wird mit {{appName}} kein grossartiges Erlebnis. Wir versuchen immer die Situation zu verbessern, bis dahin empfehlen wir aber die Verwendung einer der <a href=\"static/recommendedBrowsers.html\" target=\"_blank\">vollständig unterstützen Browser</a>.",
|
||||
"startSilentDescription": "Treten Sie dem Meeting noch einmal bei, um Ihr Audio zu aktivieren",
|
||||
"suboptimalExperienceDescription": "Tut uns leid, aber die Konferenz wird mit {{appName}} kein großartiges Erlebnis. Wir versuchen immer die Situation zu verbessern, bis dahin empfehlen wir aber die Verwendung einer der <a href=\"static/recommendedBrowsers.html\" target=\"_blank\">vollständig unterstützen Browser</a>.",
|
||||
"suboptimalExperienceTitle": "Browserwarnung",
|
||||
"unmute": "Stummschaltung aufheben",
|
||||
"newDeviceCameraTitle": "Neue Kamera erkannt",
|
||||
@@ -479,7 +479,7 @@
|
||||
"profile": {
|
||||
"setDisplayNameLabel": "Anzeigename festlegen",
|
||||
"setEmailInput": "E-Mail eingeben",
|
||||
"setEmailLabel": "E-Mail Adresse für Gravatar",
|
||||
"setEmailLabel": "E-Mail-Adresse für Gravatar",
|
||||
"title": "Profil"
|
||||
},
|
||||
"raisedHand": "Ich möchte sprechen",
|
||||
@@ -487,7 +487,7 @@
|
||||
"authDropboxText": "In Dropbox hochladen",
|
||||
"availableSpace": "Verfügbarer Speicherplatz: {{spaceLeft}} MB (ca. {{duration}} Minuten Aufzeichnung)",
|
||||
"beta": "BETA",
|
||||
"busy": "Es werden Resourcen für eine Aufnahme bereitgestellt. Bitte in ein paar Minuten erneut versuchen.",
|
||||
"busy": "Es werden Ressourcen für eine Aufnahme bereitgestellt. Bitte in ein paar Minuten erneut versuchen.",
|
||||
"busyTitle": "Alle Aufnahme-Instanzen sind in Gebrauch",
|
||||
"error": "Die Aufzeichnung ist fehlgeschlagen. Bitte versuchen Sie es erneut.",
|
||||
"expandedOff": "Aufzeichnung wurde gestoppt",
|
||||
@@ -511,14 +511,14 @@
|
||||
"unavailableTitle": "Aufnahme nicht verfügbar"
|
||||
},
|
||||
"sectionList": {
|
||||
"pullToRefresh": "Ziehen um zu aktualisieren"
|
||||
"pullToRefresh": "Ziehen, um zu aktualisieren"
|
||||
},
|
||||
"settings": {
|
||||
"calendar": {
|
||||
"about": "Die Kalenderintegration von {{appName}} wird verwendet, um ein sicheres Zugreifen auf Ihren Kalender und Auslesen der bevorstehenden Veranstaltungen zu ermöglichen.",
|
||||
"about": "Die Kalenderintegration von {{appName}} wird verwendet, um ein sicheres Zugreifen auf Ihren Kalender und Auslesen der bevorstehenden Termine zu ermöglichen.",
|
||||
"disconnect": "Getrennt",
|
||||
"microsoftSignIn": "Mit Microsoft anmelden",
|
||||
"signedIn": "Momentan wird auf Kalenderveranstaltungen von {{email}} zugegriffen. Klicken Sie auf die folgende Schaltfläche „Trennen“, um den Zugriff auf die Kalenderveranstaltungen zu stoppen.",
|
||||
"signedIn": "Momentan wird auf Kalendertermine von {{email}} zugegriffen. Klicken Sie auf die folgende Schaltfläche „Trennen“, um den Zugriff auf die Kalendertermine zu stoppen.",
|
||||
"title": "Kalender"
|
||||
},
|
||||
"devices": "Geräte",
|
||||
@@ -540,7 +540,7 @@
|
||||
"advanced": "Erweitert",
|
||||
"alertOk": "OK",
|
||||
"alertTitle": "Warnung",
|
||||
"alertURLText": "Die angegebene Server URL ist ungültig",
|
||||
"alertURLText": "Die angegebene Server-URL ist ungültig",
|
||||
"buildInfoSection": "Build-Informationen",
|
||||
"conferenceSection": "Konferenz",
|
||||
"disableCallIntegration": "Native Anrufintegration deaktivieren",
|
||||
@@ -549,7 +549,7 @@
|
||||
"email": "E-Mail",
|
||||
"header": "Einstellungen",
|
||||
"profileSection": "Profil",
|
||||
"serverURL": "Server URL",
|
||||
"serverURL": "Server-URL",
|
||||
"showAdvanced": "Erweiterte Einstellungen anzeigen",
|
||||
"startWithAudioMuted": "Stumm beitreten",
|
||||
"startWithVideoMuted": "Ohne Video beitreten",
|
||||
@@ -574,20 +574,20 @@
|
||||
},
|
||||
"suspendedoverlay": {
|
||||
"rejoinKeyTitle": "Erneut teilnehmen",
|
||||
"text": "<i>Erneut teilnehmen</i> Schaltfläche betätigen um erneut zu verbinden.",
|
||||
"title": "Die Konferenz wurde unterbrochen weil der Standbymodus aktiviert wurde."
|
||||
"text": "„<i>Erneut teilnehmen</i>“-Schaltfläche betätigen, um erneut zu verbinden.",
|
||||
"title": "Die Konferenz wurde unterbrochen, weil der Standby-Modus aktiviert wurde."
|
||||
},
|
||||
"toolbar": {
|
||||
"accessibilityLabel": {
|
||||
"audioOnly": "Nur Audio ein-/ausschalten",
|
||||
"audioOnly": "„Nur Audio“ ein-/ausschalten",
|
||||
"audioRoute": "Audiogerät auswählen",
|
||||
"callQuality": "Qualitätseinstellungen",
|
||||
"cc": "Untertitel ein-/ausschalten",
|
||||
"chat": "Chatfenster ein-/ausblenden",
|
||||
"document": "Geteiltes Dokument schliessen",
|
||||
"document": "Geteiltes Dokument schließen",
|
||||
"download": "Unsere Apps herunterladen",
|
||||
"feedback": "Feedback hinterlasen",
|
||||
"fullScreen": "Vollbildschirm ein-/ausblenden",
|
||||
"feedback": "Feedback hinterlassen",
|
||||
"fullScreen": "Vollbildmodus aktivieren/deaktivieren",
|
||||
"hangup": "Anruf beenden",
|
||||
"help": "Hilfe",
|
||||
"invite": "Teilnehmer einladen",
|
||||
@@ -613,7 +613,7 @@
|
||||
"show": "Im Vordergrund anzeigen",
|
||||
"speakerStats": "Sprecherstatistik ein-/ausblenden",
|
||||
"tileView": "Kachelansicht ein-/ausschalten",
|
||||
"toggleCamera": "Kamera ein-/ausschalten",
|
||||
"toggleCamera": "Kamera wechseln",
|
||||
"videomute": "„Video stummschalten“ ein-/ausschalten",
|
||||
"videoblur": "Video-Unschärfe ein-/ausschalten"
|
||||
},
|
||||
@@ -623,16 +623,16 @@
|
||||
"audioRoute": "Audiogerät auswählen",
|
||||
"authenticate": "Anmelden",
|
||||
"callQuality": "Qualitätseinstellungen",
|
||||
"chat": "Chat öffnen / schliessen",
|
||||
"chat": "Chat öffnen / schließen",
|
||||
"closeChat": "Chat schließen",
|
||||
"documentClose": "Geteiltes Dokument schliessen",
|
||||
"documentClose": "Geteiltes Dokument schließen",
|
||||
"documentOpen": "Geteiltes Dokument öffnen",
|
||||
"download": "Unsere Apps herunterladen",
|
||||
"enterFullScreen": "Vollbildmodus",
|
||||
"enterTileView": "Kachelansicht einschalten",
|
||||
"exitFullScreen": "Vollbildmodus verlassen",
|
||||
"exitTileView": "Kachelansicht ausschalten",
|
||||
"feedback": "Feedback hinterlasen",
|
||||
"feedback": "Feedback hinterlassen",
|
||||
"hangup": "Verlassen",
|
||||
"help": "Hilfe",
|
||||
"invite": "Teilnehmer einladen",
|
||||
@@ -649,7 +649,7 @@
|
||||
"noAudioSignalDialInDesc": "Sie können sich auch über die Einwahlnummer einwählen:",
|
||||
"noAudioSignalDialInLinkDesc" : "Einwahlnummern:",
|
||||
"noisyAudioInputTitle": "Ihr Mikrofon scheint lärmintensiv zu sein!",
|
||||
"noisyAudioInputDesc": "Es klingt, als ob Ihr Mikrofon Geräusche macht. Bitte überlegen Sie, ob Sie das Gerät stummschalten oder austauschen wollen.",
|
||||
"noisyAudioInputDesc": "Es klingt, als ob Ihr Mikrofon Störgeräusche verursacht. Bitte überlegen Sie, ob Sie das Gerät stummschalten oder austauschen wollen.",
|
||||
"openChat": "Chat öffnen",
|
||||
"pip": "Bild-in-Bild-Modus einschalten",
|
||||
"privateMessage": "Private Nachricht senden",
|
||||
@@ -665,10 +665,10 @@
|
||||
"startSubtitles": "Untertitel einschalten",
|
||||
"stopScreenSharing": "Bildschirmfreigabe stoppen",
|
||||
"stopSubtitles": "Untertitel ausschalten",
|
||||
"stopSharedVideo": "YouTube Video stoppen",
|
||||
"talkWhileMutedPopup": "Versuchen sie zu sprechen? Ihr Mikrofon ist stummgeschaltet.",
|
||||
"stopSharedVideo": "YouTube-Video stoppen",
|
||||
"talkWhileMutedPopup": "Versuchen Sie zu sprechen? Ihr Mikrofon ist stummgeschaltet.",
|
||||
"tileViewToggle": "Kachelansicht ein-/ausschalten",
|
||||
"toggleCamera": "Kamera ein-/ausschalten",
|
||||
"toggleCamera": "Kamera wechseln",
|
||||
"videomute": "Kamera starten / stoppen",
|
||||
"startvideoblur": "Hintergrundunschärfe aktivieren",
|
||||
"stopvideoblur": "Hintergrundunschärfe deaktivieren"
|
||||
@@ -686,16 +686,16 @@
|
||||
"tr": "TR"
|
||||
},
|
||||
"userMedia": {
|
||||
"androidGrantPermissions": "Wählen Sie <b><i>Erlauben</i></b> wenn der Browser um Berechtigungen bittet.",
|
||||
"chromeGrantPermissions": "Wählen Sie <b><i>Erlauben</i></b> wenn der Browser um Berechtigungen bittet.",
|
||||
"edgeGrantPermissions": "Wählen Sie <b><i>Ja</i></b> wenn der Browser um Berechtigungen bittet.",
|
||||
"androidGrantPermissions": "Wählen Sie <b><i>Erlauben</i></b>, wenn der Browser um Berechtigungen bittet.",
|
||||
"chromeGrantPermissions": "Wählen Sie <b><i>Erlauben</i></b>, wenn der Browser um Berechtigungen bittet.",
|
||||
"edgeGrantPermissions": "Wählen Sie <b><i>Ja</i></b>, wenn der Browser um Berechtigungen bittet.",
|
||||
"electronGrantPermissions": "Bitte Berechtigungen zur Verwendung der Kamera und des Mikrofons erteilen",
|
||||
"firefoxGrantPermissions": "Wählen Sie <b><i>Markiertes Gerät teilen</i></b> wenn der Browser um Berechtigungen bittet.",
|
||||
"iexplorerGrantPermissions": "Wählen Sie <b><i>OK</i></b> wenn der Browser um Berechtigungen bittet.",
|
||||
"firefoxGrantPermissions": "Wählen Sie <b><i>Markiertes Gerät teilen</i></b>, wenn der Browser um Berechtigungen bittet.",
|
||||
"iexplorerGrantPermissions": "Wählen Sie <b><i>OK</i></b>, wenn der Browser um Berechtigungen bittet.",
|
||||
"nwjsGrantPermissions": "Bitte Berechtigungen zur Verwendung der Kamera und des Mikrofons erteilen",
|
||||
"operaGrantPermissions": "Wählen Sie <b><i>Erlauben</i></b> wenn der Browser um Berechtigungen bittet.",
|
||||
"react-nativeGrantPermissions": "Wählen Sie <b><i>Erlauben</i></b> wenn der Browser um Berechtigungen bittet.",
|
||||
"safariGrantPermissions": "Wählen Sie <b><i>OK</i></b> wenn der Browser um Berechtigungen bittet."
|
||||
"operaGrantPermissions": "Wählen Sie <b><i>Erlauben</i></b>, wenn der Browser um Berechtigungen bittet.",
|
||||
"react-nativeGrantPermissions": "Wählen Sie <b><i>Erlauben</i></b>, wenn der Browser um Berechtigungen bittet.",
|
||||
"safariGrantPermissions": "Wählen Sie <b><i>OK</i></b>, wenn der Browser um Berechtigungen bittet."
|
||||
},
|
||||
"videoSIPGW": {
|
||||
"busy": "Es stehen keine freien Ressourcen zur Verfügung. Bitte versuchen Sie es später noch einmal.",
|
||||
@@ -710,19 +710,19 @@
|
||||
"videoStatus": {
|
||||
"audioOnly": "AUD",
|
||||
"audioOnlyExpanded": "Sie befinden sich im Modus „Nur Audio“. Dieser Modus benötigt weniger Bandbreite, Sie sehen jedoch nicht die Videos der anderen.",
|
||||
"callQuality": "Video-Qualität",
|
||||
"callQuality": "Videoqualität",
|
||||
"hd": "HD",
|
||||
"hdTooltip": "Video wird in hoher Auflösung angezeigt",
|
||||
"highDefinition": "Hohe Auflösung",
|
||||
"labelTooiltipNoVideo": "Kein Video",
|
||||
"labelTooltipAudioOnly": "Nur-Audio Modus aktiv",
|
||||
"labelTooltipAudioOnly": "„Nur Audio“-Modus aktiv",
|
||||
"ld": "LD",
|
||||
"ldTooltip": "Video wird in niedriger Auflösung angezeigt",
|
||||
"lowDefinition": "Niedrige Auflösung",
|
||||
"onlyAudioAvailable": "Nur Ton",
|
||||
"onlyAudioSupported": "In diesem Browser wird nur Audio unterstützt.",
|
||||
"p2pEnabled": "Ende-zu-Ende aktiviert",
|
||||
"p2pVideoQualityDescription": "Im Ende-zu-Ende-Modus kann die empfangene Videoqualität nur zwischen hoch und Nur-Audio umgeschaltet werden. Andere Einstellungen werden erst beim Verlassen des Ende-zu-Ende-Modus berücksichtigt.",
|
||||
"p2pVideoQualityDescription": "Im Ende-zu-Ende-Modus kann die empfangene Videoqualität nur zwischen „Hoch“ und „Nur Audio“ umgeschaltet werden. Andere Einstellungen werden erst beim Verlassen des Ende-zu-Ende-Modus berücksichtigt.",
|
||||
"recHighDefinitionOnly": "Hohe Qualität wird bevorzugt.",
|
||||
"sd": "SD",
|
||||
"sdTooltip": "Video wird in Standardauflösung angezeigt",
|
||||
@@ -745,9 +745,9 @@
|
||||
"join": "Zum Teilnehmen tippen",
|
||||
"roomname": "Konferenzname eingeben"
|
||||
},
|
||||
"appDescription": "Auf geht's! Beginne eine Videokonferenz mit dem ganzen Team. Oder eigentlich, lade alle ein die du kennst. {{app}} ist eine vollständig verschlüsselte, aus 100% Open-Source-Software bestehende Videokonferenzlösung die du den ganzen Tag kostenlos verwenden kannst — ohne Registrierung.",
|
||||
"appDescription": "Auf geht's! Starten Sie eine Videokonferenz mit dem ganzen Team. Oder besser noch: Laden Sie alle ein, die Sie kennen. {{app}} ist eine vollständig verschlüsselte, aus 100% Open-Source-Software bestehende Videokonferenzlösung, die Sie den ganzen Tag kostenlos verwenden können — ohne Registrierung.",
|
||||
"audioVideoSwitch": {
|
||||
"audio": "Sprache",
|
||||
"audio": "Audio",
|
||||
"video": "Video"
|
||||
},
|
||||
"calendar": "Kalender",
|
||||
@@ -759,15 +759,15 @@
|
||||
"goSmall": "Los",
|
||||
"join": "Beitreten",
|
||||
"info": "Informationen",
|
||||
"privacy": "Privatsphäre",
|
||||
"privacy": "Datenschutz",
|
||||
"recentList": "Letzte",
|
||||
"recentListDelete": "Löschen",
|
||||
"recentListEmpty": "Die Liste „Letzte“ ist momentan leer. Chatten Sie mit Ihrem Team. Sie finden all Ihre letzten Meetings hier.",
|
||||
"reducedUIText": "Willkommen bei {{app}}!",
|
||||
"roomname": "Konferenzname eingeben",
|
||||
"roomnameHint": "Name oder URL der Konferenz der Sie beitreten möchten. Sie können einen Namen erfinden, er muss nur den anderen Teilnehmern übermittelt werden damit sie der gleichen Konferenz beitreten.",
|
||||
"sendFeedback": "Senden Sie uns Ihr Feedback",
|
||||
"terms": "Bedingungen",
|
||||
"roomnameHint": "Name oder URL der Konferenz, der Sie beitreten möchten. Sie können einen Namen erfinden, er muss nur den anderen Teilnehmern übermittelt werden, damit diese der gleichen Konferenz beitreten.",
|
||||
"sendFeedback": "Feedback senden",
|
||||
"terms": "AGB",
|
||||
"title": "Sichere, mit umfassenden Funktionen ausgestattete und vollkommen kostenlose Videokonferenzen"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"addPeople": {
|
||||
"add": "Invitar",
|
||||
"countryNotSupported": "Aun no contamos con soporte a este destino.",
|
||||
"countryNotSupported": "Aún no contamos con soporte a este destino.",
|
||||
"countryReminder": "¿Llamando fuera de los Estados Unidos? ¡Por favor, asegúrese de empezar con el código de país!",
|
||||
"disabled": "No puede invitar a otras personas.",
|
||||
"failedToAdd": "Error al agregar participantes",
|
||||
@@ -31,7 +31,7 @@
|
||||
"addMeetingURL": "Agregar un vínculo a la reunión",
|
||||
"confirmAddLink": "¿Quiere añadir un enlace de Jitsi a este evento?",
|
||||
"error": {
|
||||
"appConfiguration": "La integración del calendario no se está configurada correctamente",
|
||||
"appConfiguration": "La integración del calendario no está configurada correctamente",
|
||||
"generic": "Se ha producido un error. Compruebe la configuración del calendario o pruebe a recargarlo",
|
||||
"notSignedIn": "Se ha producido un error de autenticación para ver los eventos del calendario. Compruebe la configuración del calendario e intente iniciar sesión de nuevo"
|
||||
},
|
||||
@@ -713,7 +713,7 @@
|
||||
"standardDefinition": "Definición estándar"
|
||||
},
|
||||
"videothumbnail": {
|
||||
"domute": "Control de escritorio remoto",
|
||||
"domute": "Silenciar",
|
||||
"flip": "Voltear",
|
||||
"kick": "Expulsar",
|
||||
"moderator": "Moderador",
|
||||
@@ -753,4 +753,4 @@
|
||||
"terms": "Términos",
|
||||
"title": "Seguro, lleno de funcionalidades y videoconferencias completamente gratuitas"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
"addMeetingURL": "Agregar un vínculo a la reunión",
|
||||
"confirmAddLink": "¿Quiere añadir un enlace de Jitsi a este evento?",
|
||||
"error": {
|
||||
"appConfiguration": "La integración del calendario no se está configurada correctamente",
|
||||
"appConfiguration": "La integración del calendario no está configurada correctamente",
|
||||
"generic": "Se ha producido un error. Compruebe la configuración del calendario o pruebe cargarlo nuevamente.",
|
||||
"notSignedIn": "Se ha producido un error de autenticación para ver los eventos del calendario. Compruebe la configuración del calendario e intente iniciar sesión de nuevo"
|
||||
},
|
||||
@@ -60,9 +60,9 @@
|
||||
"you": "usted"
|
||||
},
|
||||
"chromeExtensionBanner": {
|
||||
"installExtensionText": "",
|
||||
"buttonText": "",
|
||||
"dontShowAgain": ""
|
||||
"installExtensionText": "Instalar la extensión para Google Calendar y la integración con Office 365",
|
||||
"buttonText": "Instalar extensión de Chrome",
|
||||
"dontShowAgain": "No mostrar nuevamente"
|
||||
},
|
||||
"connectingOverlay": {
|
||||
"joiningRoom": "Conectando a su reunión..."
|
||||
@@ -77,7 +77,11 @@
|
||||
"DISCONNECTED": "Desconectado",
|
||||
"DISCONNECTING": "Desconectando",
|
||||
"ERROR": "Error",
|
||||
"RECONNECTING": "Ocurrió un problema en la red. Reconectando..."
|
||||
"RECONNECTING": "Ocurrió un problema en la red. Reconectando...",
|
||||
"FETCH_SESSION_ID": "Obteniendo session-id...",
|
||||
"GET_SESSION_ID_ERROR": "Obtener session-id error: {{code}}",
|
||||
"GOT_SESSION_ID": "Obteniendo session-id... Listo",
|
||||
"LOW_BANDWIDTH": "Video para {{displayName}} ha sido deshabilitado para economizar ancho de banda"
|
||||
},
|
||||
"connectionindicator": {
|
||||
"address": "Dirección:",
|
||||
@@ -125,9 +129,9 @@
|
||||
"tryAgainButton": "Intentar de nuevo en el escritorio"
|
||||
},
|
||||
"defaultLink": "p.ej. {{url}}",
|
||||
"defaultNickname": "p. ej. Jane Pink",
|
||||
"defaultNickname": "p. ej. Juan Pérez",
|
||||
"deviceError": {
|
||||
"cameraError": "Error al acceder a su cámara",
|
||||
"cameraError": "Error al acceder a tu cámara",
|
||||
"cameraPermission": "Error de permisos en la cámara",
|
||||
"microphoneError": "Error al acceder a tu micrófono",
|
||||
"microphonePermission": "Error al obtener permiso del micrófono"
|
||||
@@ -187,7 +191,7 @@
|
||||
"kickMessage": "Puede ponerse en contacto con {{participantDisplayName}} para obtener más detalles.",
|
||||
"kickParticipantButton": "Expulsar",
|
||||
"kickParticipantDialog": "¿Seguro que quiere expulsar a este participante?",
|
||||
"kickParticipantTitle": "Sacar este participante ?",
|
||||
"kickParticipantTitle": "¿Sacar este participante?",
|
||||
"kickTitle": "¡Ay! {{participantDisplayName}} te expulsó de la reunión",
|
||||
"liveStreaming": "Transmisión en vivo",
|
||||
"liveStreamingDisabledForGuestTooltip": "Los invitados no pueden iniciar la transmisión en vivo.",
|
||||
@@ -205,10 +209,16 @@
|
||||
"micNotSendingDataTitle": "Su micrófono está silenciado en la configuración de su sistema",
|
||||
"micPermissionDeniedError": "No ha otorgado permisos para usar su micrófono. Puede unirse a la conferencia, pero no lo podrán escuchar. Utilice el botón en la barra de dirección para solucionar esto.",
|
||||
"micUnknownError": "No se puede usar su micrófono por motivos desconocidos.",
|
||||
"muteEveryoneElseDialog": "Una vez silenciados, No podrás quitarles el modo en silencio, pero ellos pueden quitárselo en cualquier momento.",
|
||||
"muteEveryoneElseTitle": "¿Silenciar a todos excepto a {{whom}}?",
|
||||
"muteEveryoneDialog": "¿Está seguro que quiere silenciar a todos? No podrás quitarles el modo en silencio, pero ellos pueden quitárselo en cualquier momento.",
|
||||
"muteEveryoneTitle": "¿Silenciar a todos?",
|
||||
"muteEveryoneSelf": "Usted mismo",
|
||||
"muteEveryoneStartMuted": "Todos inician silenciados desde ahora",
|
||||
"muteParticipantBody": "No podrás quitarles el modo en silencio, pero ellos pueden quitárselo en cualquier momento.",
|
||||
"muteParticipantButton": "Silenciar",
|
||||
"muteParticipantDialog": "¿Seguro que quiere silenciar a este participante? No podrá revertir esta acción, pero el participante podrá hacerlo en cualquier momento",
|
||||
"muteParticipantTitle": "Silenciar este participante ?",
|
||||
"muteParticipantTitle": "Silenciar este participante?",
|
||||
"Ok": "Aceptar",
|
||||
"passwordLabel": "$t(lockRoomPasswordUppercase)",
|
||||
"passwordNotSupported": "No se soporta $t(lockRoomPassword) en la reunión",
|
||||
@@ -220,9 +230,9 @@
|
||||
"recordingDisabledForGuestTooltip": "Los invitados no pueden iniciar grabaciones.",
|
||||
"recordingDisabledTooltip": "Inicio de grabación desactivado.",
|
||||
"rejoinNow": "Reunirse ahora",
|
||||
"remoteControlAllowedMessage": "{{user}} ha aceptado tu solicitud de control remoto!",
|
||||
"remoteControlDeniedMessage": "{{user}} ha rechazado tu solicitud de control remoto!",
|
||||
"remoteControlErrorMessage": "Ha ocurrido un error tratando de solicitar permiso de control remoto de {{user}}!",
|
||||
"remoteControlAllowedMessage": "¡{{user}} ha aceptado tu solicitud de control remoto!",
|
||||
"remoteControlDeniedMessage": "¡{{user}} ha rechazado tu solicitud de control remoto!",
|
||||
"remoteControlErrorMessage": "¡Ha ocurrido un error tratando de solicitar permiso de control remoto de {{user}}!",
|
||||
"remoteControlRequestMessage": "¿Permitirá que {{user}} controle remotamente su escritorio?",
|
||||
"remoteControlShareScreenWarning": "¡Tenga en cuenta que si presiona \"Permitir\" usted compartirá su pantalla!",
|
||||
"remoteControlStopMessage": "¡La sesión de control remoto ha finalizado!",
|
||||
@@ -242,7 +252,7 @@
|
||||
"sendPrivateMessage": "Recientemente ha recibido un mensaje privado. ¿Pretendía responder a eso en privado, o quería enviar su mensaje al grupo?",
|
||||
"sendPrivateMessageCancel": "Enviar al grupo",
|
||||
"sendPrivateMessageOk": "Enviar en privado",
|
||||
"sendPrivateMessageTitle": "Enviar en privado ?",
|
||||
"sendPrivateMessageTitle": "¿Enviar en privado?",
|
||||
"serviceUnavailable": "Servicio no disponible",
|
||||
"sessTerminated": "Llamada finalizada",
|
||||
"Share": "Compartir",
|
||||
@@ -310,7 +320,7 @@
|
||||
"genericError": "Epa, algo salió mal.",
|
||||
"inviteLiveStream": "Para ver la transmisión en vivo de esta reunión, haz clic en este enlace: {{url}}",
|
||||
"invitePhone": "Para unirse por teléfono, marque: {{number}},,{{conferenceID}}#\n",
|
||||
"invitePhoneAlternatives": "Busca un número de acceso diferente?\nConsulte los números de acceso a las reuniones : {{url}}\n\n\nSi también marca a través de un teléfono externo, ingrese sin conectarse al audio: {{silentUrl}}",
|
||||
"invitePhoneAlternatives": "¿Busca un número de acceso diferente?\nConsulte los números de acceso a las reuniones : {{url}}\n\n\nSi también marca a través de un teléfono externo, ingrese sin conectarse al audio: {{silentUrl}}",
|
||||
"inviteURLFirstPartGeneral": "Estás invitado a unirte a una reunión.",
|
||||
"inviteURLFirstPartPersonal": "{{name}} lo invita a una reunión.\n",
|
||||
"inviteURLSecondPart": "\nIngrese a la reunión :\n{{url}}\n",
|
||||
@@ -434,13 +444,13 @@
|
||||
"moderator": "Derechos de moderador otorgados.",
|
||||
"muted": "Has iniciado la conversación con el silencio activado.",
|
||||
"mutedTitle": "Tienes el silencio activado.",
|
||||
"mutedRemotelyTitle": "Su micrófono fue silenciado por {{participantDisplayName}}!",
|
||||
"mutedRemotelyTitle": "¡Su micrófono fue silenciado por {{participantDisplayName}}!",
|
||||
"mutedRemotelyDescription": "Siempre puede reactivar sur micrófono cuando esté listo para hablar. Desactívelo de nuevo cuando termine para mantener el ruido al mínimo en la reunión.",
|
||||
"passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) retirada por otro participante",
|
||||
"passwordSetRemotely": "$t(lockRoomPasswordUppercase) agregada por otro participante",
|
||||
"raisedHand": "{{name}} desea hablar.",
|
||||
"somebody": "Alguien",
|
||||
"startSilentTitle": "Ingresó sin salida de audio!",
|
||||
"startSilentTitle": "¡Ingresó sin salida de audio!",
|
||||
"startSilentDescription": "Vuelva a ingresar para activar el audio",
|
||||
"suboptimalBrowserWarning": "Nos tememos que su experiencia de reunión no será tan buena aquí. Estamos buscando formas de mejorar esto, pero hasta entonces, por favor, intente utilizar uno de los <a href='static/recommendedBrowsers.html' target='_blank'>navegadores soportados</a>.",
|
||||
"suboptimalExperienceTitle": "Advertencia del navegador",
|
||||
@@ -464,7 +474,7 @@
|
||||
"initializingCall": "Inicializando llamada...",
|
||||
"invited": "Invitado",
|
||||
"rejected": "Rechazado",
|
||||
"ringing": "Sonando..."
|
||||
"ringing": "Timbrando..."
|
||||
},
|
||||
"profile": {
|
||||
"setDisplayNameLabel": "Configurar su nombre para mostrar",
|
||||
@@ -546,7 +556,7 @@
|
||||
"version": "Versión"
|
||||
},
|
||||
"share": {
|
||||
"dialInfoText": "\n\n=====\n\nDesea llamar desde su teléfono ?\n\n{{defaultDialInNumber}}La lista de números disponibles para la reunión está disponible aquí : \n{{dialInfoPageUrl}}",
|
||||
"dialInfoText": "\n\n=====\n\n¿Desea llamar desde su teléfono?\n\n{{defaultDialInNumber}}La lista de números disponibles para la reunión está disponible aquí : \n{{dialInfoPageUrl}}",
|
||||
"mainText": "Haz clic en el enlace siguiente para unirte a la reunión:\n{{roomUrl}}"
|
||||
},
|
||||
"speaker": "Altavoz",
|
||||
@@ -560,7 +570,7 @@
|
||||
},
|
||||
"startupoverlay": {
|
||||
"policyText": " ",
|
||||
"title": "{{app}} tiene que usar el micrófono y la cámara."
|
||||
"title": "{{app}} necesita usar el micrófono y la cámara."
|
||||
},
|
||||
"suspendedoverlay": {
|
||||
"rejoinKeyTitle": "Volver a unirme",
|
||||
@@ -586,7 +596,9 @@
|
||||
"lockRoom": "Alternar contraseña de reunión",
|
||||
"moreActions": "Alternar menú de más acciones",
|
||||
"moreActionsMenu": "Menú de más acciones",
|
||||
"moreOptions": "Mostrar más opciones",
|
||||
"mute": "Alternar silenciar audio",
|
||||
"muteEveryone": "Silenciar a todos",
|
||||
"pip": "Alternar modo de imagen en imagen",
|
||||
"privateMessage": "Enviar un mensaje privado",
|
||||
"profile": "Editar el perfil",
|
||||
@@ -628,12 +640,16 @@
|
||||
"logout": "Cierre de sesión",
|
||||
"lowerYourHand": "Bajar la mano",
|
||||
"moreActions": "Más acciones",
|
||||
"moreOptions": "Más opciones",
|
||||
"mute": "Silenciar/anular silencio",
|
||||
"noAudioSignalTitle": "No hay ninguna entrada que provenga de su micrófono!",
|
||||
"muteEveryone": "Silenciar a todos",
|
||||
"noAudioSignalTitle": "¡No hay ninguna entrada que provenga de su micrófono!",
|
||||
"noAudioSignalDesc": "Si no lo silenció intencionalmente desde la configuración del sistema o el hardware, considere la posibilidad de cambiar el dispositivo.",
|
||||
"noAudioSignalDescSuggestion": "Si no lo silenció intencionalmente desde la configuración del sistema o el hardware, considere utilizar el siguiente dispositivo:",
|
||||
"noisyAudioInputTitle": "",
|
||||
"noisyAudioInputDesc": "",
|
||||
"noAudioSignalDialInDesc": "Usted puede además llamar usando:",
|
||||
"noAudioSignalDialInLinkDesc" : "Números de llamada",
|
||||
"noisyAudioInputTitle": "Su micrófono parece estar ruidoso",
|
||||
"noisyAudioInputDesc": "Parece que su micráfono está haciendo ruido, por favor considere silenciarlo o cambiar de dispositivo.",
|
||||
"openChat": "Abrir chat",
|
||||
"pip": "Introducir modo de imagen en imagen",
|
||||
"privateMessage": "Enviar un mensaje privado",
|
||||
@@ -714,6 +730,7 @@
|
||||
},
|
||||
"videothumbnail": {
|
||||
"domute": "Silenciar",
|
||||
"domuteOthers": "Silenciar a todos",
|
||||
"flip": "Dar vuelta",
|
||||
"kick": "Echar",
|
||||
"moderator": "Moderador",
|
||||
@@ -746,11 +763,11 @@
|
||||
"recentList": "Reciente",
|
||||
"recentListDelete": "Eliminar",
|
||||
"recentListEmpty": "Su lista reciente está actualmente vacía. Abra una sesión de chat con su equipo y encontrará todas sus reuniones recientes aquí.",
|
||||
"reducedUIText": "BIenvenid@ a {{app}}!",
|
||||
"reducedUIText": "¡Bienvenid@ a {{app}}!",
|
||||
"roomname": "Introducir nombre de sala",
|
||||
"roomnameHint": "Introduce el nombre o la dirección URL de la sala a la que deseas unirte. Puedes inventar un nombre, simplemente infórmaselo a las personas con las que te reunirás para que introduzcan el mismo nombre.",
|
||||
"sendFeedback": "Enviar comentario",
|
||||
"terms": "Términos",
|
||||
"title": "Conferencias en video seguras, con gran variedad de funciones y completamente gratuitas"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
777
lang/main-et.json
Normal file
777
lang/main-et.json
Normal file
@@ -0,0 +1,777 @@
|
||||
{
|
||||
"addPeople": {
|
||||
"add": "Lisa",
|
||||
"countryNotSupported": "Valitud riik ei ole toetatud.",
|
||||
"countryReminder": "Veendu, et suunakood oleks lisatud.",
|
||||
"disabled": "Uusi kontakte ei saa kõnesse lisada.",
|
||||
"failedToAdd": "Uue kontakti kõnesse lisamine ebaõnnestus",
|
||||
"footerText": "Numbri valimine on keelatud.",
|
||||
"loading": "Kontaktide otsimine...",
|
||||
"loadingNumber": "Telefoninumbri kontrollimine...",
|
||||
"loadingPeople": "Kontaktide otsimine kõnesse lisamiseks...",
|
||||
"noResults": "Vasteid ei leitud",
|
||||
"noValidNumbers": "Sisesta telefoninumber",
|
||||
"searchNumbers": "Lisa telefoninumber",
|
||||
"searchPeople": "Kontaktide otsimine",
|
||||
"searchPeopleAndNumbers": "Otsi kontakti või lisa telefoninumber",
|
||||
"telephone": "Telefoninumber: {{number}}",
|
||||
"title": "Lisa kontakte kõnesse"
|
||||
},
|
||||
"audioDevices": {
|
||||
"bluetooth": "Bluetooth",
|
||||
"headphones": "Kõrvaklapid",
|
||||
"phone": "Telefon",
|
||||
"speaker": "Kõlar",
|
||||
"none": "Heli vahendid pole kättesaadavad"
|
||||
},
|
||||
"audioOnly": {
|
||||
"audioOnly": "Ainult heli"
|
||||
},
|
||||
"calendarSync": {
|
||||
"addMeetingURL": "Lisa kõne link",
|
||||
"confirmAddLink": "Kas soovid käesolevale kõnele lisada lingi?",
|
||||
"error": {
|
||||
"appConfiguration": "Ühendus kalendriga ei ole õigesti seadistatud.",
|
||||
"generic": "Viga! Palun kontrolli kalendri seadistusi või värskenda kalendrit.",
|
||||
"notSignedIn": "Viga kalendri autentimisel! Palun kontrolli kalendri seadistusi ja logi uuesti sisse."
|
||||
},
|
||||
"join": "Liitu",
|
||||
"joinTooltip": "Liitu kõnega",
|
||||
"nextMeeting": "järgmine kõne",
|
||||
"noEvents": "Uusi kõnesid pole planeeritud..",
|
||||
"ongoingMeeting": "aktiivne kõne",
|
||||
"permissionButton": "Ava seadistused",
|
||||
"permissionMessage": "Planeeritud kõne nägemiseks on vajalik kalendri ligipääsuõigus.",
|
||||
"refresh": "Värskenda kalendrit",
|
||||
"today": "Täna"
|
||||
},
|
||||
"chat": {
|
||||
"error": "Viga: sõnumi \"{{originalText}}\" saatmine ebaõnnestus. Põhjus: {{error}}",
|
||||
"fieldPlaceHolder": "Sisesta oma sõnum siia",
|
||||
"messagebox": "Sisesta sõnum",
|
||||
"messageTo": "Privaatsõnum kasutajale {{recipient}}",
|
||||
"noMessagesMessage": "Kirjavahetust pole veel alustatud. Alusta kirjavahetust siin!",
|
||||
"nickname": {
|
||||
"popover": "Sisesta nimi",
|
||||
"title": "Sisesta nimi, et kõnega alustada"
|
||||
},
|
||||
"privateNotice": "Privaatsõnum kasutajale {{recipient}}",
|
||||
"title": "Kõne",
|
||||
"you": "you"
|
||||
},
|
||||
"chromeExtensionBanner": {
|
||||
"installExtensionText": "Paigalda Google Kalendri laiendus ja Office 365 integratsioon",
|
||||
"buttonText": "Paigalda Chrome'i laiendus",
|
||||
"dontShowAgain": "Ära rohkem näita"
|
||||
},
|
||||
"connectingOverlay": {
|
||||
"joiningRoom": "Kõnega ühendamine..."
|
||||
},
|
||||
"connection": {
|
||||
"ATTACHED": "Ühendatud",
|
||||
"AUTHENTICATING": "Autentimine...",
|
||||
"AUTHFAIL": "Autentimine ebaõnnestus",
|
||||
"CONNECTED": "Ühendatud",
|
||||
"CONNECTING": "Ühendamine...",
|
||||
"CONNFAIL": "Ühendamine ebaõnnestus",
|
||||
"DISCONNECTED": "Ühendus katkestatud",
|
||||
"DISCONNECTING": "Ühenduse katkestamine...",
|
||||
"ERROR": "Viga",
|
||||
"FETCH_SESSION_ID": "Sessiooni-ID püüdmine...",
|
||||
"GET_SESSION_ID_ERROR": "Sessiooni-ID püüdmisel tekkis viga: {{code}}",
|
||||
"GOT_SESSION_ID": "Sessiooni-ID püüdmine... Tehtud",
|
||||
"LOW_BANDWIDTH": "Kasutaja {{displayName}} video on ülekandekiiruse parandamiseks välja lülitatud"
|
||||
},
|
||||
"connectionindicator": {
|
||||
"address": "Aadress:",
|
||||
"bandwidth": "Eeldatav ülekandekiirus:",
|
||||
"bitrate": "Andmeedastuskiirus:",
|
||||
"bridgeCount": "Serverite arv: ",
|
||||
"connectedTo": "Ühendatud:",
|
||||
"e2e_rtt": "E2E RTT:",
|
||||
"framerate": "Ekraani eraldusvõime:",
|
||||
"less": "Näita vähem",
|
||||
"localaddress": "Lokaalne aadress:",
|
||||
"localaddress_plural": "Lokaalsed aadressid:",
|
||||
"localport": "Lokaalne port:",
|
||||
"localport_plural": "Lokaalsed pordid:",
|
||||
"more": "Näita rohkem",
|
||||
"packetloss": "Andmepaketi kaotus:",
|
||||
"quality": {
|
||||
"good": "Hea",
|
||||
"inactive": "Mitteaktiivne",
|
||||
"lost": "Kaotatud",
|
||||
"nonoptimal": "Mitteoptimaalne",
|
||||
"poor": "Nõrk"
|
||||
},
|
||||
"remoteaddress": "Kaugtöö aadress:",
|
||||
"remoteaddress_plural": "Kaugtöö aadressid:",
|
||||
"remoteport": "Kaugtöö port:",
|
||||
"remoteport_plural": "Kaugtöö pordid:",
|
||||
"resolution": "Resolutsioon:",
|
||||
"status": "Ühendus:",
|
||||
"transport": "Transport:",
|
||||
"transport_plural": "Transpordid:"
|
||||
},
|
||||
"dateUtils": {
|
||||
"earlier": "Varem",
|
||||
"today": "Täna",
|
||||
"yesterday": "Eile"
|
||||
},
|
||||
"deepLinking": {
|
||||
"appNotInstalled": "Kõnega liitumiseks läbi mobiiltelefoni on vaja paigaldada {{app}} rakendus.",
|
||||
"description": "Midagi ei juhtunud? Proovisime ühendust luua töölaua rakendusega. Proovi uuesti või käivita {{app}} rakendus.",
|
||||
"descriptionWithoutWeb": "Midagi ei juhtunud? Televastuvõttu prooviti avada töölaua rakendusest {{app}}.",
|
||||
"downloadApp": "Laadi rakendus alla",
|
||||
"launchWebButton": "Käivita veebis",
|
||||
"openApp": "Jätka töölaua rakendusega",
|
||||
"title": "Kõne avamine rakenduses {{app}}...",
|
||||
"tryAgainButton": "Proovi töölaua rakendusega uuesti "
|
||||
},
|
||||
"defaultLink": "nt {{url}}",
|
||||
"defaultNickname": "nt. Mari Maasikas",
|
||||
"deviceError": {
|
||||
"cameraError": "Ei saanud kaameraga ühendust",
|
||||
"cameraPermission": "Puudub õigus kasutada kaamerat",
|
||||
"microphoneError": "Ei saanud mikrofoniga ühendust",
|
||||
"microphonePermission": "Puudub õigus kasutada mikrofoni"
|
||||
},
|
||||
"deviceSelection": {
|
||||
"noPermission": "Luba pole antud",
|
||||
"previewUnavailable": "Eelvaade pole kättesaadav",
|
||||
"selectADevice": "Vali seade",
|
||||
"testAudio": "Mängi testimiseks heli"
|
||||
},
|
||||
"dialog": {
|
||||
"accessibilityLabel": {
|
||||
"liveStreaming": "Otseülekanne"
|
||||
},
|
||||
"allow": "Luba",
|
||||
"alreadySharedVideoMsg": "Teine kasutaja jagab videot. Selles kõnes on ainult ühe video jagamine korraga lubatud.",
|
||||
"alreadySharedVideoTitle": "Korraga on lubatud ainult ühe video jagamine.",
|
||||
"applicationWindow": "Rakenduse aken",
|
||||
"Back": "Tagasi",
|
||||
"cameraConstraintFailedError": "Kaamera ei vasta teatud piirangutele.",
|
||||
"cameraNotFoundError": "Kaamerat ei leitud.",
|
||||
"cameraNotSendingData": "Ei saa ühendust kaameraga. Kontrolli, kas vahend on mõne teise rakenduse poolt kasutusel, vali menüüst teine vahend või värskenda rakendust.",
|
||||
"cameraNotSendingDataTitle": "Kaamera pole kättesaadav.",
|
||||
"cameraPermissionDeniedError": "Kaamera kasutamine on keelatud. Kõnega on võimalik ühineda ilma kaamerata. Kaamera kasutamiseks vajuta aadressiribal kaamera nupule.",
|
||||
"cameraUnknownError": "Kaamerat ei saa kasutada! Põhjus teadmata.",
|
||||
"cameraUnsupportedResolutionError": "Kaamera ei toeta nõutud resolutsiooni.",
|
||||
"Cancel": "Tühista",
|
||||
"close": "Sulge",
|
||||
"conferenceDisconnectMsg": "Kontrolli võrguühendust. Taasühendamine {{seconds}}...",
|
||||
"conferenceDisconnectTitle": "Ühendus on katkenud.",
|
||||
"conferenceReloadMsg": "Lahenduse otsime. Taasühendus {{seconds}} sek...",
|
||||
"conferenceReloadTitle": "Midagi läks valesti!",
|
||||
"confirm": "Kinnita",
|
||||
"confirmNo": "Ei",
|
||||
"confirmYes": "Kinnita",
|
||||
"connectError": "Oih, midagi läks valesti! Kõnega ühendamine ebaõnnestus.",
|
||||
"connectErrorWithMsg": "Oih, midagi läks valesti! Kõnega ühendamine ebaõnnestus. Põhjus: {{msg}}.",
|
||||
"connecting": "Ühendamine.",
|
||||
"contactSupport": "Võta ühendust kasutustoega",
|
||||
"copy": "Kopeeri",
|
||||
"dismiss": "Lõpeta",
|
||||
"displayNameRequired": "Nimi on kohustuslik",
|
||||
"done": "Valmis",
|
||||
"enterDisplayName": "Sisesta nimi",
|
||||
"error": "Viga",
|
||||
"externalInstallationMsg": "Töölauale on vaja paigaldada jagamise laiendus.",
|
||||
"externalInstallationTitle": "Laiendus on kohustuslik",
|
||||
"goToStore": "Mine veebipoodi",
|
||||
"gracefulShutdown": "Rakendus on hoolduseks ajutiselt maas. Proovi hiljem uuesti!",
|
||||
"IamHost": "Mina olen võõrustaja",
|
||||
"incorrectRoomLockPassword": "Vale parool",
|
||||
"incorrectPassword": "Vale kasutajanimi või parool",
|
||||
"inlineInstallationMsg": "Töölauale tuleb paigaldada jagamise laiendus.",
|
||||
"inlineInstallExtension": "Paiglada kohe",
|
||||
"internalError": "Oih, midagi läks valesti! Veateate: {{error}}.",
|
||||
"internalErrorTitle": "Sisemine viga",
|
||||
"kickMessage": "Oih, oled kõnest eemaldatud!",
|
||||
"kickParticipantButton": "Eemalda kõnest",
|
||||
"kickParticipantDialog": "Oled kindel, et tahad kasutaja kõnest eemaldada?",
|
||||
"kickParticipantTitle": "Eemalda kasutaja kõnest?",
|
||||
"kickTitle": "Kõnest eemaldatud",
|
||||
"liveStreaming": "Otseülekanne",
|
||||
"liveStreamingDisabledForGuestTooltip": "Külalised ei saa otseülekannet alustada.",
|
||||
"liveStreamingDisabledTooltip": "Otseülekande alustamine on keelatud.",
|
||||
"lockMessage": "Ebaõnnestunud lukustada kõnet.",
|
||||
"lockRoom": "Lisa kõnele parool",
|
||||
"lockTitle": "Lukustamine ebaõnnestus",
|
||||
"logoutQuestion": "Oled kindel, et tahad kõne peatada ja välja logida?",
|
||||
"logoutTitle": "Logi välja",
|
||||
"maxUsersLimitReached": "Maksimaalne kõnes osalejate arv on täis. Võta ühendust kõne omanikuga või proovi hiljem uuesti!",
|
||||
"maxUsersLimitReachedTitle": "Maksimaalne kõnes osalejate arv on täis",
|
||||
"micConstraintFailedError": "Mikrofon ei vasta teatud piirangutele.",
|
||||
"micNotFoundError": "Mikrofoni ei leitud.",
|
||||
"micNotSendingData": "Ei saa ühendust mikrofoniga. Vali menüüst teine vahend või värskenda rakendust.",
|
||||
"micNotSendingDataTitle": "Mikrofon pole kättesaadav.",
|
||||
"micPermissionDeniedError": "Mikrofoni kasutamine on keelatud. Kõnega on võimalik ühineda, aga teised Sind ei kuule. Mikrofoni kasutamiseks vajuta aadressiribal mikrofoni nupule.",
|
||||
"micUnknownError": "Mikrofoni ei saa kasutada. Põhjus teadmata.",
|
||||
"muteEveryoneElseDialog": "Peale mikrofoni vaigistamist saab ainult kasutaja ise oma mikrofoni tagasi sisse lülitada.",
|
||||
"muteEveryoneElseTitle": "Vaigista kõikide teiste mikrofonid, välja arvatud {{whom}}?",
|
||||
"muteEveryoneDialog": "Oled kindel, et soovid kõikide teiste mikrofonid vaigistada? Neid saab tagasi sisse lülitada ainult kasutaja ise.",
|
||||
"muteEveryoneTitle": "Vaigista kõik?",
|
||||
"muteEveryoneSelf": "Sina ise",
|
||||
"muteEveryoneStartMuted": "Edaspidi alustavad kõik välja lülitatud mikrofonidega",
|
||||
"muteParticipantBody": "Teiste kasutajate mikrofoni ei saa sisse lülitada. Kasutaja saab ise otsutada, kas mikrofon on sees või väljas.",
|
||||
"muteParticipantButton": "Lülita mikrofon välja",
|
||||
"muteParticipantDialog": "Oled kindel, et soovid kasutaja mikrofoni välja lülitada? Seda saab ainult kasutaja ise sisse tagasi lülitada.",
|
||||
"muteParticipantTitle": "Lülita kasutaja mikrofon välja?",
|
||||
"Ok": "Jah",
|
||||
"passwordLabel": "Parool",
|
||||
"passwordNotSupported": "Kõnele ei saa parooli määrata.",
|
||||
"passwordNotSupportedTitle": "Parooli lisamine pole toetatud",
|
||||
"passwordRequired": "Parool on kohustuslik",
|
||||
"popupError": "Modaalaknad on veebilehitsejas keelatud. Palun luba modaalakende kasutamine veebilehitseja turvalisuse seadistuses ning proovi uuesti.",
|
||||
"popupErrorTitle": "Modaalaknad on keelatud",
|
||||
"recording": "Salvetamine",
|
||||
"recordingDisabledForGuestTooltip": "Külalised ei saa kõne salvestada.",
|
||||
"recordingDisabledTooltip": "Kõne salvestamine on keelatud.",
|
||||
"rejoinNow": "Ühine uuesti",
|
||||
"remoteControlAllowedMessage": "{{user}} andis kaugjuhtimiseks loa!",
|
||||
"remoteControlDeniedMessage": "{{user}} keelas kaugjuhtimise!",
|
||||
"remoteControlErrorMessage": "Viga kaugjuhtimiseks loa küsimisel kasutajalt {{user}}!",
|
||||
"remoteControlRequestMessage": "Kas lubad kasutajal {{user}} oma töölauda kaugjuhtida?",
|
||||
"remoteControlShareScreenWarning": "Kui vajutad nupule \"Luba\", siis jagad oma ekraani.",
|
||||
"remoteControlStopMessage": "Kaugjuhtimise sessioon on lõppenud!",
|
||||
"remoteControlTitle": "Kaugjuhtimine",
|
||||
"Remove": "Eemalda",
|
||||
"removePassword": "Eemalda parool",
|
||||
"removeSharedVideoMsg": "Oled kindel, et soovid oma jagatud video eemaldada?",
|
||||
"removeSharedVideoTitle": "Eemalda jagatud video",
|
||||
"reservationError": "Broneerimise süsteemi viga",
|
||||
"reservationErrorMsg": "Veakood: {{code}}, sõnum: {{msg}}",
|
||||
"retry": "Proovi uuesti",
|
||||
"screenSharingFailedToInstall": "Oih, ekraanijagamise laienduse paigaldamine ebaõnnestus!",
|
||||
"screenSharingFailedToInstallTitle": "Ekraanijagamise laienduse paigaldamine ebaõnnestus",
|
||||
"screenSharingFirefoxPermissionDeniedError": "Ekraani jagamisega läks midagi valesti! Veendu, et oled ekraani jagamiseks loa andnud.",
|
||||
"screenSharingFirefoxPermissionDeniedTitle": "Oih, ekraani jagamist ei saanud alustada!",
|
||||
"screenSharingPermissionDeniedError": "Oih, midagi läks valesti ekraanijagamise laienduse õigustega! Värskenda ja proovi uuesti.",
|
||||
"sendPrivateMessage": "Sulle saabus privaatsõnum. Kas soovid vastata privaatselt või avalikult?",
|
||||
"sendPrivateMessageCancel": "Saada sõnum avalikult",
|
||||
"sendPrivateMessageOk": "Saada sõnum privaatselt",
|
||||
"sendPrivateMessageTitle": "Saada privaatselt?",
|
||||
"serviceUnavailable": "Teenus pole kättesaadav",
|
||||
"sessTerminated": "Kõne lõpetatud",
|
||||
"Share": "Jaga",
|
||||
"shareVideoLinkError": "Sisesta korrektne Youtube’i link.",
|
||||
"shareVideoTitle": "Jaga videot",
|
||||
"shareYourScreen": "Jaga ekraani",
|
||||
"shareYourScreenDisabled": "Ekraani jagamine on keelatud.",
|
||||
"shareYourScreenDisabledForGuest": "Külalised ei saa ekraani jagada.",
|
||||
"startLiveStreaming": "Alusta otseülekannet",
|
||||
"startRecording": "Alusta salvestamist",
|
||||
"startRemoteControlErrorMessage": "Kaugjuhtimise sessiooni alustamisel tekkis viga!",
|
||||
"stopLiveStreaming": "Lõpeta otseülekanne",
|
||||
"stopRecording": "Lõpeta salvestamine",
|
||||
"stopRecordingWarning": "Oled kindel, et soovid salvestamist lõpetada?",
|
||||
"stopStreamingWarning": "Oled kindel, et soovid otseülekannet lõpetada?",
|
||||
"streamKey": "Otseülekande võti",
|
||||
"Submit": "Esita",
|
||||
"thankYou": "Aitäh, et kasutasid rakendust {{appName}}!",
|
||||
"token": "token",
|
||||
"tokenAuthFailed": "Kahjuks ei ole kõnega ühinemine lubatud.",
|
||||
"tokenAuthFailedTitle": "Autentimine ebaõnnestus",
|
||||
"transcribing": "Transkribeerimine",
|
||||
"unlockRoom": "Eemalda kõne parool",
|
||||
"userPassword": "kasutaja parool",
|
||||
"WaitForHostMsg": "Kõne <b>{{room}}</b> ei ole veel alanud. Autendi ennast, kui oled võõrustaja. Külalisena oota, kuni võõrustaja saabub.",
|
||||
"WaitForHostMsgWOk": "Kõne <b>{{room}}</b> ei ole veel alanud. Kui oled võõrustaja, vajuta OK, et ennast autentida. Külalisena oota, kuni võõrustaja saabub.",
|
||||
"WaitingForHost": "Võõrustaja ootamine...",
|
||||
"Yes": "Jah",
|
||||
"yourEntireScreen": "Täisekraan"
|
||||
},
|
||||
"dialOut": {
|
||||
"statusMessage": "on staatusega {{status}}"
|
||||
},
|
||||
"documentSharing": {
|
||||
"title": "Jagatud dokument"
|
||||
},
|
||||
"feedback": {
|
||||
"average": "Keskmine",
|
||||
"bad": "Halb",
|
||||
"detailsLabel": "Kirjelda täpsemalt.",
|
||||
"good": "Hea",
|
||||
"rateExperience": "Hinda kõne kvaliteeti",
|
||||
"veryBad": "Väga halb",
|
||||
"veryGood": "Väga hea"
|
||||
},
|
||||
"incomingCall": {
|
||||
"answer": "Vasta",
|
||||
"audioCallTitle": "Sissetulev kõne",
|
||||
"decline": "Lõpeta",
|
||||
"productLabel": "Jitsi",
|
||||
"videoCallTitle": "Sissetulev videokõne"
|
||||
},
|
||||
"info": {
|
||||
"accessibilityLabel": "Näita infot",
|
||||
"addPassword": "Lisa parool",
|
||||
"cancelPassword": "Tühista parool",
|
||||
"conferenceURL": "Link:",
|
||||
"country": "Riik",
|
||||
"dialANumber": "Kõnega ühinemiseks vali number ja sisesta pin-kood.",
|
||||
"dialInConferenceID": "PIN:",
|
||||
"dialInNotSupported": "Oih, sissehelistamine ei ole toetatud!",
|
||||
"dialInNumber": "Sissehelistamine:",
|
||||
"dialInSummaryError": "Sissehelistamise info pole kättesaadav. Proovi hiljem uuesti!",
|
||||
"dialInTollFree": "Maksuvaba",
|
||||
"genericError": "Oih, midagi läks valesti!",
|
||||
"inviteLiveStream": "Otseülekande nägemiseks vajuta lingile: {{url}}",
|
||||
"invitePhone": "Üks klikk heliga sissehelistamiseks: {{number}},,{{conferenceID}}#",
|
||||
"invitePhoneAlternatives": "Otsid teist sissehelistamise numbrit?\nVaata sissehelistamise numbreid: {{url}}\n\n\nKui helistad läbi ruumi, ühine kõnega väljalülitatud mikrofoni režiimis: {{silentUrl}}",
|
||||
"inviteURLFirstPartGeneral": "Oled kõnesse kutsutud.",
|
||||
"inviteURLFirstPartPersonal": "{{name}} kutsub Sind kõnesse.\n",
|
||||
"inviteURLSecondPart": "\nÜhine kõnega:\n{{url}}\n",
|
||||
"liveStreamURL": "Otseülekanne:",
|
||||
"moreNumbers": "Rohkem numbreid",
|
||||
"noNumbers": "Sissehelistamise numbrid puuduvad.",
|
||||
"noPassword": "Andmed puuduvad",
|
||||
"noRoom": "Sissehelistamise ruum pole täpsustatud.",
|
||||
"numbers": "Sissehelistamise numbrid",
|
||||
"password": "Parool:",
|
||||
"title": "Jaga",
|
||||
"tooltip": "Jaga linki ja helista, et kõnega ühineda",
|
||||
"label": "Kõne info"
|
||||
},
|
||||
"inviteDialog": {
|
||||
"alertText": "Osade kasutajate kutsumine ebaõnnestus.",
|
||||
"header": "Kutsu",
|
||||
"searchCallOnlyPlaceholder": "Sisesta telefoninumber",
|
||||
"searchPeopleOnlyPlaceholder": "Otsi kasutajaid",
|
||||
"searchPlaceholder": "Kasutaja telefoninumber",
|
||||
"send": "Saada"
|
||||
},
|
||||
"inlineDialogFailure": {
|
||||
"msg": "Midagi läks valesti.",
|
||||
"retry": "Proovi uuesti",
|
||||
"support": "Kasutajatugi",
|
||||
"supportMsg": "Kui see juhtub uuesti, võta ühendust"
|
||||
},
|
||||
"keyboardShortcuts": {
|
||||
"focusLocal": "Keskendu videole",
|
||||
"focusRemote": "Keskendu teise kasutaja videole",
|
||||
"fullScreen": "Ava/sulge täisekraani vaade",
|
||||
"keyboardShortcuts": "Klaviatuuri kiirvalikud",
|
||||
"localRecording": "Näita/peida salvestamise võimalused",
|
||||
"mute": "Lülita mikrofon sisse/välja",
|
||||
"pushToTalk": "Vajuta, et rääkida",
|
||||
"raiseHand": "Tõsta/langeta kätt",
|
||||
"showSpeakerStats": "Näita kõnelejate statistikat",
|
||||
"toggleChat": "Ava/sulge vestluse aken",
|
||||
"toggleFilmstrip": "Näita/peida video eelvaade",
|
||||
"toggleScreensharing": "Vaheta kaamera ja ekraanijagamise vahel",
|
||||
"toggleShortcuts": "Näita/peida klaviatuuri kiirvalikud",
|
||||
"videoMute": "Lülita kaamera sisse/välja",
|
||||
"videoQuality": "Halda kõne kvaliteeti"
|
||||
},
|
||||
"liveStreaming": {
|
||||
"busy": "Toimub ülekande ressursi vabastamine. Proovi mõne minuti pärast uuesti.",
|
||||
"busyTitle": "Kõik ülekandjad on hetkel hõivatud",
|
||||
"changeSignIn": "Vaheta kontot.",
|
||||
"choose": "Vali otseülekanne",
|
||||
"chooseCTA": "Vali ülekande viis. Oled sisse logitud e-mailiga {{email}}.",
|
||||
"enterStreamKey": "Sisesta siia oma YouTube’i ülekande võti.",
|
||||
"error": "Otseülekanne ebaõnnestus. Proovi uuesti.",
|
||||
"errorAPI": "YouTube’i kanaliga ühendumisel tekkis viga. Palun logi uuesti sisse.",
|
||||
"errorLiveStreamNotEnabled": "Otseülekanne ei ole e-mailiga {{email}} sisse lülitatud. Luba kasutajaga otseülekanded või vaheta kontot.",
|
||||
"expandedOff": "Otseülekanne on peatatud",
|
||||
"expandedOn": "Kõnest tehakse otseülekanne YouTube’i.",
|
||||
"expandedPending": "Otseülekanne algab...",
|
||||
"failedToStart": "Otseülekandega alustamine ebaõnnestus.",
|
||||
"getStreamKeyManually": "Ülekandjaid ei leitud. Leia YouTube’st otseülekande võti.",
|
||||
"invalidStreamKey": "Otseülekande võti võib olla vale.",
|
||||
"off": "Otseülekanne on peatatud",
|
||||
"offBy": "{{name}} lõpetas otseülekande",
|
||||
"on": "Otseülekanne",
|
||||
"onBy": "{{name}} alustas otseülekandega",
|
||||
"pending": "Otseülekande alustamine...",
|
||||
"serviceName": "Otseülekande teenus",
|
||||
"signedInAs": "Oled sisse logitud kasutajana:",
|
||||
"signIn": "Google’ga sisselogimine",
|
||||
"signInCTA": "Logi sisse või sisesta otseülekande võti YouTube’st.",
|
||||
"signOut": "Logi välja",
|
||||
"start": "Alusta otseülekannet.",
|
||||
"streamIdHelp": "Mis see on?",
|
||||
"unavailableTitle": "Otseülekanne pole kättesaadav."
|
||||
},
|
||||
"localRecording": {
|
||||
"clientState": {
|
||||
"off": "Väljas",
|
||||
"on": "Sees",
|
||||
"unknown": "Teadmata"
|
||||
},
|
||||
"dialogTitle": "Kohalikud salvestamise nupud",
|
||||
"duration": "Kestvus",
|
||||
"durationNA": "N/A",
|
||||
"encoding": "Kodeerimine",
|
||||
"label": "LOR",
|
||||
"labelToolTip": "Kohalik salvestamine on alustatud",
|
||||
"localRecording": "Kohalik salvestamine",
|
||||
"me": "Mina",
|
||||
"messages": {
|
||||
"engaged": "Local recording engaged.",
|
||||
"finished": "Salvestamise sessioon {{token}} on lõppenud. Palun saada salvestatud fail moderaatorile.",
|
||||
"finishedModerator": "Salvestamise sessioon {{token}} on lõppenud ja salvestatud. Küsi teistelt kontaktidelt nende koopiaid.",
|
||||
"notModerator": "Sa ei ole moderaator. Sa ei saa alustada ega lõpetada kohalikku salvestamist."
|
||||
},
|
||||
"moderator": "Moderaator",
|
||||
"no": "Ei",
|
||||
"participant": "Osaleja",
|
||||
"participantStats": "Osaleja andmed",
|
||||
"sessionToken": "Sessiooni token",
|
||||
"start": "Alusta salvestamist",
|
||||
"stop": "Lõpeta salvestamine",
|
||||
"yes": "Jah"
|
||||
},
|
||||
"lockRoomPassword": "parool",
|
||||
"lockRoomPasswordUppercase": "Parool",
|
||||
"me": "mina",
|
||||
"notify": {
|
||||
"connectedOneMember": "{{name}} ühines kõnega",
|
||||
"connectedThreePlusMembers": "{{name}} ja {{count}} teist kasutajat ühines kõnega",
|
||||
"connectedTwoMembers": "{{first}} ja {{second}} ühinesid kõnega",
|
||||
"disconnected": "lahti ühendatud",
|
||||
"focus": "Konverentsi fookus",
|
||||
"focusFail": "{{component}} pole kättesaadav - proovi uuesti {{ms}} sekundi pärast.",
|
||||
"grantedTo": "Moderaatori õigused on antud kasutajale {{to}}!",
|
||||
"invitedOneMember": "{{name}} on kutsutud",
|
||||
"invitedThreePlusMembers": "{{name}} ja {{count}} teist kasutajat on kutsutud",
|
||||
"invitedTwoMembers": "{{first}} ja {{second}} on kutsutud",
|
||||
"kickParticipant": "{{kicked}} eemaldati kõnest kasutaja {{kicker}} poolt",
|
||||
"me": "Mina",
|
||||
"moderator": "Moderaatori õigused jagatud!",
|
||||
"muted": "Alustasid kõnet väljalülitatud mikrofoniga.",
|
||||
"mutedTitle": "Mikrofon on välja lülitatud!",
|
||||
"mutedRemotelyTitle": "Sinu mikrofon lülitati välja kasutaja {{participantDisplayName}} poolt!",
|
||||
"mutedRemotelyDescription": "Saad alati oma mikrofoni sisse lülitada, kui soovid rääkida. Lülita mikrofon peale rääkimist uuesti välja liigse müra ja kaja vältimiseks.",
|
||||
"passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) eemaldatud teise kasutaja poolt",
|
||||
"passwordSetRemotely": "$t(lockRoomPasswordUppercase) lisatud teise kasutaja poolt",
|
||||
"raisedHand": "{{name}} soovib rääkida.",
|
||||
"somebody": "Keegi",
|
||||
"startSilentTitle": "Ühinesid ilma mikrofonita!",
|
||||
"startSilentDescription": "Mikrofoni kasutamiseks ühine kõnega uuesti",
|
||||
"suboptimalExperienceDescription": "Rakenduse {{appName}} parima kvaliteedi tagamiseks palun kasuta <a href='static/recommendedBrowsers.html' target='_blank'>ühte nendest veebilehitsejatest</a>.",
|
||||
"suboptimalExperienceTitle": "Veebilehitseja hoiatus",
|
||||
"unmute": "Lülita mikrofon sisse",
|
||||
"newDeviceCameraTitle": "Leitud uus kaamera",
|
||||
"newDeviceAudioTitle": "Leitud uus heliseadeldis",
|
||||
"newDeviceAction": "Kasuta"
|
||||
},
|
||||
"passwordSetRemotely": "määratud teise kasutaja poolt",
|
||||
"passwordDigitsOnly": "Kuni {{number}} tähemärki",
|
||||
"poweredby": "teieni toodud",
|
||||
"presenceStatus": {
|
||||
"busy": "Hõivatud",
|
||||
"calling": "Helistamine...",
|
||||
"connected": "Ühendatud",
|
||||
"connecting": "Ühendamine...",
|
||||
"connecting2": "Ühendamine*...",
|
||||
"disconnected": "Lahti ühendatud",
|
||||
"expired": "Aegunud",
|
||||
"ignored": "Eiratud",
|
||||
"initializingCall": "Kõne alustamine...",
|
||||
"invited": "Kutsutud",
|
||||
"rejected": "Tagasi lükatud",
|
||||
"ringing": "Kutsumine..."
|
||||
},
|
||||
"profile": {
|
||||
"setDisplayNameLabel": "Sisesta nimi",
|
||||
"setEmailInput": "Sisesta e-mail",
|
||||
"setEmailLabel": "Sisesta gravatar email",
|
||||
"title": "Profiil"
|
||||
},
|
||||
"raisedHand": "Soovin rääkida",
|
||||
"recording": {
|
||||
"authDropboxText": "Lisa Dropbox’i",
|
||||
"availableSpace": "Vaba ruum: {{spaceLeft}} MB (ca {{duration}} minutit salvestamist)",
|
||||
"beta": "BETA",
|
||||
"busy": "Salvestamise ressursi vabastamine... Proovi mõne minuti pärast uuesti.",
|
||||
"busyTitle": "Kõik salvestajad on praegu kinni",
|
||||
"error": "Salvestamine ebaõnnestus. Proovi uuesti.",
|
||||
"expandedOff": "Salvestamine peatatud",
|
||||
"expandedOn": "Kõne salvestatakse.",
|
||||
"expandedPending": "Salvestamine on alustatud...",
|
||||
"failedToStart": "Salvestamine ebaõnnestus",
|
||||
"fileSharingdescription": "Jaga salvestust kõnelejatega",
|
||||
"live": "Otse",
|
||||
"loggedIn": "Sisseloginud kasutajana {{userName}}",
|
||||
"off": "Salvestamine on lõpetatud",
|
||||
"offBy": "{{name}} lõpetas salvestamise",
|
||||
"on": "Salvestatakse",
|
||||
"onBy": "{{name}} alustas salvestamist",
|
||||
"pending": "Kõne salvestamise ettevalmistus...",
|
||||
"rec": "REC",
|
||||
"serviceDescription": "Salvestus toimub teenuse kaudu",
|
||||
"serviceName": "Salvestamise teenus",
|
||||
"signIn": "Logi sisse",
|
||||
"signOut": "Logi välja",
|
||||
"unavailable": "Oih! {{serviceName}} ei ole hetkel kättesaadav! Proovi hiljem uuesti.",
|
||||
"unavailableTitle": "Salvestamine ei ole võimalik."
|
||||
},
|
||||
"sectionList": {
|
||||
"pullToRefresh": "Tõmba uuendamiseks"
|
||||
},
|
||||
"settings": {
|
||||
"calendar": {
|
||||
"about": "Rakenduse {{appName}} kalender kasutab turvalist ühendust ning näeb eesolevaid kõnesid.",
|
||||
"disconnect": "Ühenda lahti",
|
||||
"microsoftSignIn": "Logi sisse Microsoft’i kontoga",
|
||||
"signedIn": "Hetkel nähakse kasutaja {{email}} kalendrit. Kalendrikutsete peitmiseks vajuta “Ühenda lahti” nupule.",
|
||||
"title": "Kalender"
|
||||
},
|
||||
"devices": "Seaded",
|
||||
"followMe": "Kõik jälgivad mind",
|
||||
"language": "Keel",
|
||||
"loggedIn": "Logitud sisse nimega: {{name}}",
|
||||
"moderator": "Moderaator",
|
||||
"more": "Rohkem",
|
||||
"name": "Nimi",
|
||||
"noDevice": "Andmed puuduvad",
|
||||
"selectAudioOutput": "Heli väljund",
|
||||
"selectCamera": "Kaamera",
|
||||
"selectMic": "Mikrofon",
|
||||
"startAudioMuted": "Kõik alustavad väljalülitatud mikrofoniga",
|
||||
"startVideoMuted": "Kõik alustavad väljalülitatud kaameraga",
|
||||
"title": "Seaded"
|
||||
},
|
||||
"settingsView": {
|
||||
"advanced": "Täpsem",
|
||||
"alertOk": "OK",
|
||||
"alertTitle": "Hoiatus",
|
||||
"alertURLText": "Sisestatud link ei ole õige",
|
||||
"buildInfoSection": "Versioon",
|
||||
"conferenceSection": "Kõne",
|
||||
"disableCallIntegration": "Lülita kohaliku kõne integratsioon välja",
|
||||
"disableP2P": "Lülita otseühendus välja",
|
||||
"displayName": "Kasutatav nimi",
|
||||
"email": "E-mail",
|
||||
"header": "Seaded",
|
||||
"profileSection": "Profiil",
|
||||
"serverURL": "Serveri link",
|
||||
"showAdvanced": "Näita täpsemaid seadistusi",
|
||||
"startWithAudioMuted": "Alusta väljalülitatud heliga",
|
||||
"startWithVideoMuted": "Alusta väljalülitatud videoga",
|
||||
"version": "Versioon"
|
||||
},
|
||||
"share": {
|
||||
"dialInfoText": "\n\n=====\n\nSoovid sisse helistada oma telefonilt?\n\n{{defaultDialInNumber}}Vajuta lingile, et näha telefoninumbreid sisse helistamiseks\n{{dialInfoPageUrl}}",
|
||||
"mainText": "Vajuta lingile, et kõnega ühineda:\n{{roomUrl}}"
|
||||
},
|
||||
"speaker": "Kõneleja",
|
||||
"speakerStats": {
|
||||
"hours": "{{count}}t",
|
||||
"minutes": "{{count}}m",
|
||||
"name": "Nimi",
|
||||
"seconds": "{{count}}s",
|
||||
"speakerStats": "Kõneleja andmed",
|
||||
"speakerTime": "Kõnelemise aeg"
|
||||
},
|
||||
"startupoverlay": {
|
||||
"policyText": " ",
|
||||
"title": "{{app}} vajab ligipääsu mikrofonile ja kaamerale."
|
||||
},
|
||||
"suspendedoverlay": {
|
||||
"rejoinKeyTitle": "Ühine uuesti",
|
||||
"text": "Vajuta <i>Ühine uuesti</i> nupule, et uuesti ühineda.",
|
||||
"title": "Kõne katkestati, sest arvuti läks magama."
|
||||
},
|
||||
"toolbar": {
|
||||
"accessibilityLabel": {
|
||||
"audioOnly": "Kasuta ainult heli",
|
||||
"audioRoute": "Vali heli vahend",
|
||||
"callQuality": "Halda kõne kvaliteeti",
|
||||
"cc": "Kasuta subtiitreid",
|
||||
"chat": "Kasuta vestluse akent",
|
||||
"document": "Kasuta jagatud dokumente",
|
||||
"download": "Laadi rakendus alla",
|
||||
"feedback": "Jäta tagasiside",
|
||||
"fullScreen": "Kasuta täisekraani",
|
||||
"hangup": "Lahku kõnest",
|
||||
"help": "Abi",
|
||||
"invite": "Kutsu inimesi",
|
||||
"kick": "Eemalda kõneleja",
|
||||
"localRecording": "Näita salvestamise paneeli",
|
||||
"lockRoom": "Kasuta kõne parooli",
|
||||
"moreActions": "Kasuta toimingute menüüd",
|
||||
"moreActionsMenu": "Toimingute menüü",
|
||||
"moreOptions": "Näita rohkem valikuid",
|
||||
"mute": "Lülita heli välja",
|
||||
"muteEveryone": "Vaigista kõikide mikrofonid",
|
||||
"pip": "Kasuta pilt-pildis vaadet",
|
||||
"privateMessage": "Saada privaatsõnum",
|
||||
"profile": "Muuda profiili",
|
||||
"raiseHand": "Käe tõstmine",
|
||||
"recording": "Salvestamine",
|
||||
"remoteMute": "Lülita kasutaja mikrofon välja",
|
||||
"Settings": "Seadistused",
|
||||
"sharedvideo": "Kasuta Youtube’i video jagamist",
|
||||
"shareRoom": "Kutsu",
|
||||
"shareYourScreen": "Jaga ekraani",
|
||||
"shortcuts": "Kasuta kiirvalikuid",
|
||||
"show": "Näita laval",
|
||||
"speakerStats": "Kõnelejate statistika",
|
||||
"tileView": "Paneelvaade",
|
||||
"toggleCamera": "Kasuta kaamerat",
|
||||
"videomute": "Video väljalülitamine",
|
||||
"videoblur": "Video hägustamine"
|
||||
},
|
||||
"addPeople": "Lisa kõnesse inimesi",
|
||||
"audioOnlyOff": "Lülita “ainult heli” valik välja",
|
||||
"audioOnlyOn": "Lülita “ainult heli” valik sisse",
|
||||
"audioRoute": "Vali heli vahend",
|
||||
"authenticate": "Autendi",
|
||||
"callQuality": "Halda kõne kvaliteeti",
|
||||
"chat": "Ava/sulge vestlus",
|
||||
"closeChat": "Sulge vestlus",
|
||||
"documentClose": "Sulge jagatud dokument",
|
||||
"documentOpen": "Ava jagatud dokument",
|
||||
"download": "Laadi rakendus alla",
|
||||
"enterFullScreen": "Vaata täisekraanil",
|
||||
"enterTileView": "Vaata paneelvaates",
|
||||
"exitFullScreen": "Välju täisekraani vaatest",
|
||||
"exitTileView": "Välju paneelvaatest",
|
||||
"feedback": "Jäta tagasiside",
|
||||
"hangup": "Lahku",
|
||||
"help": "Abi",
|
||||
"invite": "Kutsu",
|
||||
"login": "Logi sisse",
|
||||
"logout": "Logi välja",
|
||||
"lowerYourHand": "Langeta kätt",
|
||||
"moreActions": "Rohkem tegevusi",
|
||||
"moreOptions": "Rohkem valikuid",
|
||||
"mute": "Mikrofon sisse/välja",
|
||||
"muteEveryone": "Vaigista kõikide mikrofonid",
|
||||
"noAudioSignalTitle": "Mikrofon ei püüa sisendit kinni!",
|
||||
"noAudioSignalDesc": "Kui Sa ei lülitanud mikrofoni seadistustest tahtlikult välja, kaalu seadme vahetamist.",
|
||||
"noAudioSignalDescSuggestion": "Kui Sa ei lülitanud mikrofoni seadistustest tahtlikult välja, kaalu seadme vahetamist.",
|
||||
"noAudioSignalDialInDesc": "Võid sisse helistada valides:",
|
||||
"noAudioSignalDialInLinkDesc" : "Sissehelistamise numbrid",
|
||||
"noisyAudioInputTitle": "Mikrofonis on müra! Tundub, et läbi mikrofoni kostub palju helisid. Kaalu mikrofoni välja lülitamist või seadme vahetamist.",
|
||||
"noisyAudioInputDesc": "Tundub, et läbi mikrofoni kostub palju helisid. Kaalu mikrofoni välja lülitamist või seadme vahetamist.",
|
||||
"openChat": "Ava vestlus",
|
||||
"pip": "Ava pilt-pildis vaade",
|
||||
"privateMessage": "Saada privaatsõnum",
|
||||
"profile": "Muuda profiili",
|
||||
"raiseHand": "Tõsta/langeta kätt",
|
||||
"raiseYourHand": "Tõsta kätt",
|
||||
"Settings": "Seaded",
|
||||
"sharedvideo": "Jaga YouTube’i videot",
|
||||
"shareRoom": "Kutsu",
|
||||
"shortcuts": "Vaata kiirvalikuid",
|
||||
"speakerStats": "Kõneleja andmed",
|
||||
"startScreenSharing": "Alust ekraani jagamist",
|
||||
"startSubtitles": "Alusta subtiitrite näitamist",
|
||||
"stopScreenSharing": "Lõpeta ekraani jagamine",
|
||||
"stopSubtitles": "Lõpeta subtiitrite näitamine",
|
||||
"stopSharedVideo": "Lõpeta YouTube’i video",
|
||||
"talkWhileMutedPopup": "Soovid rääkida? Mikrofon on välja lülitatud.",
|
||||
"tileViewToggle": "Näita paneelvaadet",
|
||||
"toggleCamera": "Kasuta kaamerat",
|
||||
"videomute": "Kaamera sisse/välja",
|
||||
"startvideoblur": "Tausta hägustamine",
|
||||
"stopvideoblur": "Lülita tausta hägustamine välja"
|
||||
},
|
||||
"transcribing": {
|
||||
"ccButtonTooltip": "Subtiitrid sisse/välja",
|
||||
"error": "Transkribeerimine ebaõnnestus. Proovi uuesti.",
|
||||
"expandedLabel": "Transkribeerimine on sisse lülitatud",
|
||||
"failedToStart": "Transkribeerimise alustamine ebaõnnestus",
|
||||
"labelToolTip": "Kõne transkribeeritakse",
|
||||
"off": "Transkribeerimine peatatud",
|
||||
"pending": "Transkribeerimise ettevalmistus...",
|
||||
"start": "Alusta subtiitrite kuvamist",
|
||||
"stop": "Lõpeta subtiitrite kuvamine",
|
||||
"tr": "TR"
|
||||
},
|
||||
"userMedia": {
|
||||
"androidGrantPermissions": "Vali <b><i>Luba</i></b>, kui veebilehitseja küsib nõusolekut.",
|
||||
"chromeGrantPermissions": "Vali <b><i>Luba</i></b>, kui veebilehitseja küsib nõusolekut.",
|
||||
"edgeGrantPermissions": "Vali <b><i>Jah</i></b>, kui veebilehitseja küsib nõusolekut.",
|
||||
"electronGrantPermissions": "Luba kasutada kaamerat ja mikrofoni",
|
||||
"firefoxGrantPermissions": "Vali <b><i>Jaga valitud vahendit</i></b>, kui veebilehitseja küsib nõusolekut.",
|
||||
"iexplorerGrantPermissions": "Vali <b><i>OK</i></b>, kui veebilehitseja küsib nõusolekut.",
|
||||
"nwjsGrantPermissions": "Luba kasutada kaamerat ja mikrofoni",
|
||||
"operaGrantPermissions": "Vali <b><i>Luba</i></b>, kui veebilehitseja küsib nõusolekut.",
|
||||
"react-nativeGrantPermissions": "Vali <b><i>Luba</i></b>, kui veebilehitseja küsib nõusolekut.",
|
||||
"safariGrantPermissions": "Vali <b><i>OK</i></b>, kui veebilehitseja küsib nõusolekut."
|
||||
},
|
||||
"videoSIPGW": {
|
||||
"busy": "Vabastatakse ressurssi... Proovi mõne minuti pärast uuesti.",
|
||||
"busyTitle": "Ruumi teenus on hetkel hõivatud",
|
||||
"errorAlreadyInvited": "{{displayName}} on juba kutsutud",
|
||||
"errorInvite": "Ühendus ei ole veel saavutatud. Proovi hiljem uuesti.",
|
||||
"errorInviteFailed": "Probleemi lahendatakse. Proovi hiljem uuesti.",
|
||||
"errorInviteFailedTitle": "Kasutaja {{displayName}} kutsumine ebaõnnestus",
|
||||
"errorInviteTitle": "Ruumi kutsumine ebaõnnestus",
|
||||
"pending": "{{displayName}} on kutsutud"
|
||||
},
|
||||
"videoStatus": {
|
||||
"audioOnly": "AUD",
|
||||
"audioOnlyExpanded": "Kasutad kõnes ainult heli. See hõivab ülekandekiirust vähem, aga video jagamine on välja lülitatud.",
|
||||
"callQuality": "Kõne kvaliteet",
|
||||
"hd": "HD",
|
||||
"hdTooltip": "Video vaatamine kõrgkvaliteediga",
|
||||
"highDefinition": "Kõrgresolutsioon",
|
||||
"labelTooiltipNoVideo": "Video puudub",
|
||||
"labelTooltipAudioOnly": "Valitud on “ainult heli” seadistus",
|
||||
"ld": "LD",
|
||||
"ldTooltip": "Video vaatamine madala kvaliteediga",
|
||||
"lowDefinition": "Madal",
|
||||
"onlyAudioAvailable": "Saab kasutada ainult heli",
|
||||
"onlyAudioSupported": "Selles veebilehitsejas on toetatud ainult heli.",
|
||||
"p2pEnabled": "Otseühendus on sisse lülitatud",
|
||||
"p2pVideoQualityDescription": "Otseühenduse režiimis saab vastuvõetava kõne heli olla “ainult heli“, või kõrge. Teisi seadistusi ei saa valida.",
|
||||
"recHighDefinitionOnly": "Eelistan kõrgresolutsiooni.",
|
||||
"sd": "SD",
|
||||
"sdTooltip": "Video vaatamine vaikekvaliteediga",
|
||||
"standardDefinition": "Vaike resolutsioon"
|
||||
},
|
||||
"videothumbnail": {
|
||||
"domute": "Lülita mikrofon välja",
|
||||
"domuteOthers": "Vaigista teiste mikrofonid",
|
||||
"flip": "Pööra",
|
||||
"kick": "Eemalda kõnest",
|
||||
"moderator": "Moderaator",
|
||||
"mute": "Kasutaja mikrofon välja lülitatud",
|
||||
"muted": "Mikrofon välja lülitatud",
|
||||
"remoteControl": "Kaugjuhtimine",
|
||||
"show": "Näita laval",
|
||||
"videomute": "Kasutaja on kaamera peatanud"
|
||||
},
|
||||
"welcomepage": {
|
||||
"accessibilityLabel": {
|
||||
"join": "Vajuta, et ühineda",
|
||||
"roomname": "Sisesta ruumi nimi"
|
||||
},
|
||||
"appDescription": "Lase käia, tee videoülekanne kogu meeskonnaga! Kutsu kõik, keda soovid. Rakendus {{app}} on krüpteeritud. 100% vabavara ülekannete tegemiseks, mida saab kasutada iga päev tasuta - ilma konto loomiseta.",
|
||||
"audioVideoSwitch": {
|
||||
"audio": "Heli",
|
||||
"video": "Video"
|
||||
},
|
||||
"calendar": "Kalender",
|
||||
"connectCalendarButton": "Ühenda kalender",
|
||||
"connectCalendarText": "Ühenda oma kalender, et kõiki kohtumisi näha rakenduses {{app}}. Lisa {{provider}} kohtumised kalendrisse ja alusta kõnesid ühe klikiga.",
|
||||
"enterRoomTitle": "Alusta uut kõnet",
|
||||
"roomNameAllowedChars": "Televastuvõtu nimi ei tohi sisaldada sümboleid: ?, &, :, ', \", %, #.",
|
||||
"go": "Mine",
|
||||
"goSmall": "Mine",
|
||||
"join": "Ühine",
|
||||
"info": "Info",
|
||||
"privacy": "Privaatsus",
|
||||
"recentList": "Hiljutised",
|
||||
"recentListDelete": "Kustuta",
|
||||
"recentListEmpty": "Hiljutiste valikute nimekiri on tühi. Vestle kasutajatega ja leia oma hiljutised kõned siit.",
|
||||
"reducedUIText": "Tere tulemast rakendusse {{app}}!",
|
||||
"roomname": "Sisesta ruumi nimi",
|
||||
"roomnameHint": "Sisesta ruumi nimi või link, millega soovid ühinega. Võid nime välja mõelda, aga anna osalejatele sellest teada, et nad saaksid ruumiga ühineda.",
|
||||
"sendFeedback": "Saada tagasiside",
|
||||
"terms": "Tingimused",
|
||||
"title": "Turvaline, võimalusi täis ja tasuta keskkond videokõnede jaoks."
|
||||
},
|
||||
"lonelyMeetingExperience": {
|
||||
"button": "Kutsu teisi",
|
||||
"youAreAlone": "Asud hetkel ruumis üksi"
|
||||
}
|
||||
}
|
||||
@@ -601,7 +601,7 @@
|
||||
"show": "Afficher en premier plan",
|
||||
"speakerStats": "Afficher/cacher les statistiques de parole",
|
||||
"tileView": "Activer/désactiver la vue mosaïque",
|
||||
"toggleCamera": "Activer/désactiver la caméra",
|
||||
"toggleCamera": "Changer de caméra",
|
||||
"videomute": "Activer/désactiver la vidéo",
|
||||
"videoblur": "Activer/désactiver le flou de la vidéo"
|
||||
},
|
||||
@@ -728,7 +728,7 @@
|
||||
"join": "Touchez pour rejoindre",
|
||||
"roomname": "Saisissez un nom de salle"
|
||||
},
|
||||
"appDescription": "Allez-y, chat vidéo avec toute l'équipe. En fait, invitez tout le monde que vous connaissez. {{app}} est une solution de visioconférence entièrement cryptée et 100% open source que vous pouvez utiliser toute la journée, tous les jours, gratuitement— aucun compte requis.",
|
||||
"appDescription": "Allez-y, chat vidéo avec toute l'équipe. En fait, invitez tout le monde que vous connaissez. {{app}} est une solution de visioconférence entièrement chiffrée et 100% open source que vous pouvez utiliser toute la journée, tous les jours, gratuitement— aucun compte requis.",
|
||||
"audioVideoSwitch": {
|
||||
"audio": "Voix",
|
||||
"video": "Vidéo"
|
||||
@@ -753,4 +753,4 @@
|
||||
"terms": "Termes",
|
||||
"title": "Vidéoconférence Sécurisée, entièrement en vedette et gratuite"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"addPeople": {
|
||||
"add": "Invita",
|
||||
"countryNotSupported": "Non supportiamo ancora questa destinazione.",
|
||||
"countryReminder": "Stai chiamando fuori dagli Stati Uniti? Assicurati di iniziare inserendo il codice paese!",
|
||||
"countryReminder": "Stai chiamando fuori dagli Stati Uniti? Assicurati d'inserire il prefisso internazionale!",
|
||||
"disabled": "Non puoi invitare persone.",
|
||||
"failedToAdd": "",
|
||||
"footerText": "La chiamata dall'esterno è disabilitata.",
|
||||
@@ -21,7 +21,7 @@
|
||||
"bluetooth": "Bluetooth",
|
||||
"headphones": "Cuffie",
|
||||
"phone": "Telefono",
|
||||
"speaker": "Relatore"
|
||||
"speaker": "Vivavoce"
|
||||
},
|
||||
"audioOnly": {
|
||||
"audioOnly": "Solo audio"
|
||||
@@ -131,7 +131,7 @@
|
||||
"liveStreaming": "Diretta"
|
||||
},
|
||||
"allow": "Consenti",
|
||||
"alreadySharedVideoMsg": "",
|
||||
"alreadySharedVideoMsg": "Un altro utente sta condividendo un video. Questa conferenza permette di condividere un solo video alla volta.",
|
||||
"alreadySharedVideoTitle": "È permesso un solo video alla volta",
|
||||
"applicationWindow": "Finestra applicazione",
|
||||
"Back": "Indietro",
|
||||
@@ -157,9 +157,9 @@
|
||||
"contactSupport": "Contatta il supporto",
|
||||
"copy": "Copia",
|
||||
"dismiss": "Scarta",
|
||||
"displayNameRequired": "",
|
||||
"displayNameRequired": "Tutti devono avere un nome",
|
||||
"done": "Fatto",
|
||||
"enterDisplayName": "",
|
||||
"enterDisplayName": "Inserisci il nome da visualizzare",
|
||||
"error": "Errore",
|
||||
"externalInstallationMsg": "Devi installare la nostra estensione per la condivisione desktop.",
|
||||
"externalInstallationTitle": "Richiesta estensione",
|
||||
@@ -172,31 +172,31 @@
|
||||
"inlineInstallExtension": "Installa adesso",
|
||||
"internalError": "Ops! Qualcosa è andato storto. Questo è l'errore: {{error}}",
|
||||
"internalErrorTitle": "Errore interno",
|
||||
"kickMessage": "",
|
||||
"kickMessage": "Acc! Sei stato espulso dal meeting!",
|
||||
"kickParticipantButton": "Espelli",
|
||||
"kickParticipantDialog": "Espellere questo partecipante?",
|
||||
"kickParticipantTitle": "",
|
||||
"kickTitle": "",
|
||||
"kickParticipantDialog": "Sei sicuro di voler espellere questo partecipante?",
|
||||
"kickParticipantTitle": "Espellere questi partecipante?",
|
||||
"kickTitle": "Espulso dal meeting",
|
||||
"liveStreaming": "Live Streaming",
|
||||
"liveStreamingDisabledForGuestTooltip": "Gli ospiti non possono avviare una diretta.",
|
||||
"liveStreamingDisabledTooltip": "Trasmissioni in diretta disabilitate.",
|
||||
"lockMessage": "Impossibile bloccare la conferenza.",
|
||||
"lockRoom": "",
|
||||
"lockRoom": "Aggiungi una password al meeting",
|
||||
"lockTitle": "Blocco fallito",
|
||||
"logoutQuestion": "Vuoi disconnetterti e interrompere la conferenza ?",
|
||||
"logoutTitle": "Logout",
|
||||
"maxUsersLimitReached": "",
|
||||
"maxUsersLimitReachedTitle": "",
|
||||
"maxUsersLimitReached": "E' stato raggiunto il numero massimo di partecipanti. La conferenza è al completo. Contatta l'organizzatore, o riprova più tardi!",
|
||||
"maxUsersLimitReachedTitle": "Raggiunto limite partecipanti",
|
||||
"micConstraintFailedError": "Il tuo microfono non soddisfa alcuni dei requisiti richiesti.",
|
||||
"micNotFoundError": "Microfono non trovato.",
|
||||
"micNotSendingData": "",
|
||||
"micNotSendingDataTitle": "",
|
||||
"micNotSendingData": "Non riusciamo a ricevere suoni dal microfono scelto. Prova a selezionare nelle impostazioni un microfono diverso, o a riavvare l'applicazione.",
|
||||
"micNotSendingDataTitle": "Impossibile accedere al microfono",
|
||||
"micPermissionDeniedError": "Non hai concesso il permesso di usare il microfono. Puoi comunque partecipare alla conferenza ma gli altri non potranno sentirti. Usa il bottone a forma di telecamera nella barra degli indirizzi per cambiare impostazioni.",
|
||||
"micUnknownError": "Impossibile usare il microfono per un motivo sconosciuto.",
|
||||
"muteParticipantBody": "Tu non sarai in grado di riattivare il loro audio, ma loro potranno riattivarlo in qualsiasi momento.",
|
||||
"muteParticipantButton": "Disattiva audio",
|
||||
"muteParticipantDialog": "",
|
||||
"muteParticipantTitle": "",
|
||||
"muteParticipantButton": "Silenzia partecipante",
|
||||
"muteParticipantDialog": "Sei sicuro di voler disattivare l'audio di questo partecipante? Saranno loro a doversi riattivare l'audio, per parlare.",
|
||||
"muteParticipantTitle": "Silenzio questo partecipante?",
|
||||
"Ok": "Ok",
|
||||
"passwordLabel": "",
|
||||
"passwordNotSupported": "Le password per le videoconferenze non sono supportate.",
|
||||
@@ -216,7 +216,7 @@
|
||||
"remoteControlStopMessage": "Sessione di controllo remoto terminata!",
|
||||
"remoteControlTitle": "Connessione desktop remoto",
|
||||
"Remove": "Rimuovi",
|
||||
"removePassword": "",
|
||||
"removePassword": "Togli la password",
|
||||
"removeSharedVideoMsg": "Sei sicuro di voler rimuovere il tuo video condiviso?",
|
||||
"removeSharedVideoTitle": "Rimuovi video condiviso",
|
||||
"reservationError": "Errore di sistema in prenotazione",
|
||||
@@ -249,10 +249,10 @@
|
||||
"tokenAuthFailed": "Ci dispiace ma non sei autorizzato a partecipare a questa chiamata.",
|
||||
"tokenAuthFailedTitle": "Autenticazione fallita",
|
||||
"transcribing": "Trascrizione",
|
||||
"unlockRoom": "",
|
||||
"unlockRoom": "Togli la password al meeting",
|
||||
"userPassword": "password utente",
|
||||
"WaitForHostMsg": "",
|
||||
"WaitForHostMsgWOk": "",
|
||||
"WaitForHostMsg": "La conferenza <b>{{room}}</b> non è ancora cominciata. Se sei l'organizzatore, per favore autenticati. Altrimenti, aspetta l'arrivo dell'organizzatore.",
|
||||
"WaitForHostMsgWOk": "La conferenza <b>{{room}}</b> non è ancora cominciata. Se sei l'organizzatore, allora premi OK per autenticarti. Altrimenti, aspetta l'arrivo dell'organizzatore.",
|
||||
"WaitingForHost": "In attesa dell'organizzatore ...",
|
||||
"Yes": "Sì",
|
||||
"yourEntireScreen": "Schermo intero"
|
||||
@@ -270,41 +270,41 @@
|
||||
"veryGood": "Molto Buona"
|
||||
},
|
||||
"incomingCall": {
|
||||
"answer": "Risposta",
|
||||
"answer": "Rispondi",
|
||||
"audioCallTitle": "Chiamata in arrivo",
|
||||
"decline": "Scarta",
|
||||
"productLabel": "da ANDI Conference",
|
||||
"productLabel": "da Jitsi Meet",
|
||||
"videoCallTitle": "Videochiamata in arrivo"
|
||||
},
|
||||
"info": {
|
||||
"accessibilityLabel": "Mostra informazioni",
|
||||
"addPassword": "",
|
||||
"cancelPassword": "",
|
||||
"addPassword": "Aggiungi password",
|
||||
"cancelPassword": "Togli password",
|
||||
"conferenceURL": "Collegamento:",
|
||||
"country": "Paese",
|
||||
"dialANumber": "",
|
||||
"dialANumber": "Per collegarti telefonicamente al meeting, chiama uno di questi numeri e metti il pin.",
|
||||
"dialInConferenceID": "PIN:",
|
||||
"dialInNotSupported": "Spiacenti, la chiamata per partecipare attualmente non è supportata",
|
||||
"dialInNotSupported": "Spiacenti, la partecipazionne solo telefonica non è supportata attualmente",
|
||||
"dialInNumber": "Componi:",
|
||||
"dialInSummaryError": "",
|
||||
"dialInTollFree": "",
|
||||
"dialInSummaryError": "Errore nella ricerca dei numeri telefonici. Riprova più tardi.",
|
||||
"dialInTollFree": "Numero verde",
|
||||
"genericError": "Ops, qualcosa è andato storto.",
|
||||
"inviteLiveStream": "Per visualizzare la trasmissione in diretta di questo meeting, clicca su questo link: {{url}}",
|
||||
"invitePhone": "",
|
||||
"inviteLiveStream": "Per vedere la diretta di questo meeting, clicca su questo link: {{url}}",
|
||||
"invitePhone": "Per seguire solo telefonicamente, clicca: {{number}},,{{conferenceID}}#",
|
||||
"invitePhoneAlternatives": "",
|
||||
"inviteURLFirstPartGeneral": "",
|
||||
"inviteURLFirstPartPersonal": "",
|
||||
"inviteURLSecondPart": "",
|
||||
"inviteURLFirstPartGeneral": "Invito a connettersi ad una conferenza.",
|
||||
"inviteURLFirstPartPersonal": "{{name}} ti sta invitando ad un meeting.\n",
|
||||
"inviteURLSecondPart": "\nPartecipa al meeting:\n{{url}}\n",
|
||||
"liveStreamURL": "Trasmissione in diretta:",
|
||||
"moreNumbers": "Più numeri",
|
||||
"noNumbers": "Nessun numero da chiamare.",
|
||||
"noPassword": "Nessuno",
|
||||
"noPassword": "Nessuna",
|
||||
"noRoom": "Non è stata specificata nessuna stanza da chiamare.",
|
||||
"numbers": "Numeri da chiamare",
|
||||
"password": "",
|
||||
"password": "Password",
|
||||
"title": "Condividi",
|
||||
"tooltip": "Condividi collegamento e informazioni di chiamata per questa conferenza",
|
||||
"label": ""
|
||||
"tooltip": "Invia il collegamento e i numeri telefonici di questa conferenza",
|
||||
"label": "Informazioni meeting"
|
||||
},
|
||||
"inviteDialog": {
|
||||
"alertText": "",
|
||||
@@ -328,13 +328,13 @@
|
||||
"localRecording": "Mostra o nascondi i controlli per la registrazione",
|
||||
"mute": "Attiva o disattiva il microfono",
|
||||
"pushToTalk": "Premi per parlare",
|
||||
"raiseHand": "Mostra / Nascondi i video",
|
||||
"showSpeakerStats": "Mostra statistiche conversanti",
|
||||
"raiseHand": "Alza o abbassa la mano",
|
||||
"showSpeakerStats": "Mostra statistiche",
|
||||
"toggleChat": "Apri o chiudi la chat",
|
||||
"toggleFilmstrip": "Mostra o nascondi anteprime video",
|
||||
"toggleScreensharing": "Cambia modalità tra videocamera e condivisione schermo",
|
||||
"toggleShortcuts": "Mostra o nascondi le scorciatoie",
|
||||
"videoMute": "Attiva / disattiva videocamera"
|
||||
"videoMute": "Accendo o spegni la videocamera"
|
||||
},
|
||||
"liveStreaming": {
|
||||
"busy": "Stiamo cercando di liberare risorse per lo streaming. Riprova tra qualche minuto.",
|
||||
@@ -349,11 +349,11 @@
|
||||
"expandedOff": "La diretta è stata interrotta",
|
||||
"expandedOn": "La conferenza è attualmente in diretta su YouTube.",
|
||||
"expandedPending": "La diretta è in fase di avvio...",
|
||||
"failedToStart": "Avvio live streaming fallito",
|
||||
"getStreamKeyManually": "",
|
||||
"invalidStreamKey": "",
|
||||
"off": "Il live streaming si è interrotto",
|
||||
"on": "Live Streaming",
|
||||
"failedToStart": "Avvio trasmissione in diretta fallito",
|
||||
"getStreamKeyManually": "Non siamo stati in grado di trovare nessuna trasmissione dal vivo. Prova ad ottenere una chiave stream da Youtube",
|
||||
"invalidStreamKey": "La chiave stream potrebbe non essere corretta.",
|
||||
"off": "La diretta si è interrotta",
|
||||
"on": "Trasmissione in diretta",
|
||||
"pending": "Avvio live stream...",
|
||||
"serviceName": "Servizio live streaming",
|
||||
"signedInAs": "Sei attualmente collegato come:",
|
||||
@@ -397,38 +397,38 @@
|
||||
"lockRoomPasswordUppercase": "Password",
|
||||
"me": "io",
|
||||
"notify": {
|
||||
"connectedOneMember": "",
|
||||
"connectedThreePlusMembers": "",
|
||||
"connectedTwoMembers": "",
|
||||
"connectedOneMember": "{{name}} si è connesso",
|
||||
"connectedThreePlusMembers": "{{name}} e altri {{count}} si sono connessi",
|
||||
"connectedTwoMembers": "{{first}} e {{second}} si sono connessi",
|
||||
"disconnected": "disconnesso",
|
||||
"focus": "Focus su conferenza",
|
||||
"focusFail": "{{component}} non disponibile - riprova in {{ms}} sec",
|
||||
"grantedTo": "Permessi di moderatore garantiti a {{to}}!",
|
||||
"invitedOneMember": "{{displayName}} è stato invitato",
|
||||
"invitedThreePlusMembers": "",
|
||||
"invitedTwoMembers": "",
|
||||
"kickParticipant": "",
|
||||
"me": "io",
|
||||
"invitedThreePlusMembers": "Hai invitato {{name}} e altri {{count}}",
|
||||
"invitedTwoMembers": "Hai invitato {{first}} e {{second}}",
|
||||
"kickParticipant": "{{kicked}} è stato espulso da {{kicker}}",
|
||||
"me": "Io",
|
||||
"moderator": "Impostati i permessi di moderatore!",
|
||||
"muted": "Hai iniziato la conversazione con l'audio disattivato.",
|
||||
"mutedTitle": "Hai l'audio disattivato!",
|
||||
"mutedRemotelyTitle": "",
|
||||
"mutedRemotelyTitle": "Ti è stato disattivato l'audio da {{participantDisplayName}}!",
|
||||
"mutedRemotelyDescription": "",
|
||||
"passwordRemovedRemotely": "",
|
||||
"passwordSetRemotely": "",
|
||||
"raisedHand": "",
|
||||
"raisedHand": "{{name}} vorrebbe intervenire.",
|
||||
"somebody": "Qualcuno",
|
||||
"startSilentTitle": "",
|
||||
"startSilentDescription": "",
|
||||
"suboptimalExperienceDescription": "Ehm... temiamo che la tua esperienza con {{appName}} non sarà granché su questo browser. Stiamo cercando di migliorare la situazione ma, per il momento, prova ad utilizzare uno di questi <a href='static/recommendedBrowsers.html' target='_blank'>browser supportati</a>.",
|
||||
"suboptimalExperienceTitle": "Problemi con il browser",
|
||||
"unmute": "",
|
||||
"newDeviceCameraTitle": "",
|
||||
"newDeviceAudioTitle": "",
|
||||
"newDeviceAction": ""
|
||||
"newDeviceCameraTitle": "Trovata nuova videocamera",
|
||||
"newDeviceAudioTitle": "Trovata nuova origine audio",
|
||||
"newDeviceAction": "Usala"
|
||||
},
|
||||
"passwordSetRemotely": "",
|
||||
"passwordDigitsOnly": "",
|
||||
"passwordSetRemotely": "definita da altro utente",
|
||||
"passwordDigitsOnly": "Fino a {{number}} cifre",
|
||||
"poweredby": "powered by",
|
||||
"presenceStatus": {
|
||||
"busy": "Occupato",
|
||||
@@ -498,26 +498,26 @@
|
||||
"selectCamera": "Videocamera",
|
||||
"selectMic": "Microfono",
|
||||
"startAudioMuted": "Tutti cominciano con il microfono disattivato",
|
||||
"startVideoMuted": "Tutti cominciano nascosti",
|
||||
"startVideoMuted": "Tutti cominciano con il video video",
|
||||
"title": "Impostazioni"
|
||||
},
|
||||
"settingsView": {
|
||||
"alertOk": "OK",
|
||||
"alertTitle": "Attenzione",
|
||||
"alertURLText": "L'URL del server inserito non è valido",
|
||||
"buildInfoSection": "",
|
||||
"buildInfoSection": "Versione",
|
||||
"conferenceSection": "Conferenza",
|
||||
"displayName": "Nome visualizzato",
|
||||
"email": "Email",
|
||||
"header": "Impostazioni",
|
||||
"profileSection": "Profilo",
|
||||
"serverURL": "URL del server",
|
||||
"startWithAudioMuted": "Inizia con l'audio mutato",
|
||||
"startWithVideoMuted": "Avvia con video mutato",
|
||||
"version": ""
|
||||
"startWithAudioMuted": "Inizia con l'audio disattivato",
|
||||
"startWithVideoMuted": "Avvia con il video disattivato",
|
||||
"version": "Versione"
|
||||
},
|
||||
"share": {
|
||||
"dialInfoText": "",
|
||||
"dialInfoText": "\n\n=====\n\nVuoi solo ascoltare la conferenza da un telefono?\n\n{{defaultDialInNumber}}Clicca questo link per vedere i numeri telefonici di questo meeting\n{{dialInfoPageUrl}}",
|
||||
"mainText": "Clicca sul link seguente per partecipare alla conferenza:\n{{roomUrl}}"
|
||||
},
|
||||
"speaker": "Relatore",
|
||||
@@ -526,8 +526,8 @@
|
||||
"minutes": "{{count}}m",
|
||||
"name": "Nome",
|
||||
"seconds": "{{count}}s",
|
||||
"speakerStats": "Statistiche del parlante",
|
||||
"speakerTime": "Tempo del conversante"
|
||||
"speakerStats": "Statistiche del relatore",
|
||||
"speakerTime": "Tempo del relatore"
|
||||
},
|
||||
"startupoverlay": {
|
||||
"policyText": " ",
|
||||
@@ -550,75 +550,75 @@
|
||||
"fullScreen": "Attiva/disattiva schermo intero",
|
||||
"hangup": "Lascia la conferenza",
|
||||
"invite": "Invita persone",
|
||||
"kick": "",
|
||||
"kick": "Espelli partecipante",
|
||||
"localRecording": "Abilita controlli di registrazione locale",
|
||||
"lockRoom": "",
|
||||
"moreActions": "Attiva/disattiva Menu avanzato",
|
||||
"lockRoom": "Attiva o disattiva password",
|
||||
"moreActions": "Attiva o disattiva menu avanzato",
|
||||
"moreActionsMenu": "Menu avanzato",
|
||||
"mute": "Attiva/disattiva audio muto",
|
||||
"mute": "Attiva/disattiva audio",
|
||||
"pip": "Attiva/disattiva immagine nell’immagine",
|
||||
"profile": "Modifica profilo",
|
||||
"raiseHand": "Attiva/disattiva alzata di mano",
|
||||
"recording": "Attiva/disattiva registrazione",
|
||||
"remoteMute": "",
|
||||
"remoteMute": "Disattiva audio partecipante",
|
||||
"Settings": "Attiva/disattiva impostazioni",
|
||||
"sharedvideo": "Attiva/disattiva condivisione YouTube",
|
||||
"shareRoom": "Invita partecipante",
|
||||
"shareRoom": "Invita qualcuno",
|
||||
"shareYourScreen": "Attiva/disattiva condivisione schermo",
|
||||
"shortcuts": "Attiva/disattiva scorciatoie",
|
||||
"show": "",
|
||||
"speakerStats": "Attiva/disattiva statistiche relatore",
|
||||
"tileView": "Attiva/disattiva visualizzazione griglia",
|
||||
"toggleCamera": "Attiva/disattiva webcam",
|
||||
"videomute": "Attiva/disattiva silenziamento video",
|
||||
"videoblur": ""
|
||||
"tileView": "Attiva/disattiva visualizzazione a tessere",
|
||||
"toggleCamera": "Cambia videocamera",
|
||||
"videomute": "Attiva/disattiva videocamera",
|
||||
"videoblur": "Attiva/disattiva offuscamento video"
|
||||
},
|
||||
"addPeople": "Aggiungi persone alla chiamata",
|
||||
"audioOnlyOff": "Disattiva modalità solo audio",
|
||||
"audioOnlyOn": "Disattiva modalità solo audio",
|
||||
"audioOnlyOn": "Attiva modalità solo audio",
|
||||
"audioRoute": "Seleziona la periferica audio",
|
||||
"authenticate": "Autenticazione",
|
||||
"callQuality": "Gestisci qualità della chiamata",
|
||||
"chat": "Apri / Chiudi chat",
|
||||
"closeChat": "",
|
||||
"closeChat": "Chiudi chat",
|
||||
"documentClose": "Chiudi documento condiviso",
|
||||
"documentOpen": "Apri documento condiviso",
|
||||
"enterFullScreen": "Visualizza a schermo intero",
|
||||
"enterTileView": "",
|
||||
"enterTileView": "Vista a tessere",
|
||||
"exitFullScreen": "Esci da schermo intero",
|
||||
"exitTileView": "",
|
||||
"exitTileView": "Vista utente singolo",
|
||||
"feedback": "Lascia un feedback",
|
||||
"hangup": "Esci",
|
||||
"invite": "Invita persone",
|
||||
"login": "Login",
|
||||
"logout": "Logout",
|
||||
"lowerYourHand": "",
|
||||
"lowerYourHand": "Abbassa la mano",
|
||||
"moreActions": "Più azioni",
|
||||
"mute": "Microfono Attiva / Disattiva",
|
||||
"openChat": "",
|
||||
"openChat": "Apri una chat",
|
||||
"pip": "Abilita visualizzazione immagine nell’immagine",
|
||||
"profile": "Modifica profilo",
|
||||
"raiseHand": "Alza / Abbassa la mano",
|
||||
"raiseYourHand": "",
|
||||
"raiseYourHand": "Alza la mano",
|
||||
"Settings": "Impostazioni",
|
||||
"sharedvideo": "Condividi un video Youtube",
|
||||
"shareRoom": "Invita partecipante",
|
||||
"shortcuts": "Visualizza scorciatoie",
|
||||
"speakerStats": "Statistiche dell'interlocutore",
|
||||
"startScreenSharing": "",
|
||||
"startSubtitles": "",
|
||||
"stopScreenSharing": "",
|
||||
"stopSubtitles": "",
|
||||
"startScreenSharing": "Inizia la condivisione dello schermo",
|
||||
"startSubtitles": "Avvia sottotitoli",
|
||||
"stopScreenSharing": "Ferma la condivisione dello schermo",
|
||||
"stopSubtitles": "Ferma sottotitoli",
|
||||
"stopSharedVideo": "Ferma video YouTube",
|
||||
"talkWhileMutedPopup": "Stai provando a parlare? Il microfono è disattivato.",
|
||||
"tileViewToggle": "Attiva/disattiva visualizzazione griglia",
|
||||
"toggleCamera": "Attiva/disattiva webcam",
|
||||
"toggleCamera": "Cambia videocamera",
|
||||
"videomute": "Attiva / Disattiva videocamera",
|
||||
"startvideoblur": "",
|
||||
"stopvideoblur": ""
|
||||
"startvideoblur": "Offusca il video",
|
||||
"stopvideoblur": "Non offuscare il video"
|
||||
},
|
||||
"transcribing": {
|
||||
"ccButtonTooltip": "",
|
||||
"ccButtonTooltip": "Inizia / Ferma i sottotitoli",
|
||||
"error": "Registrazione fallita. Prova di nuovo.",
|
||||
"expandedLabel": "La trascrizione della conferenza è attiva",
|
||||
"failedToStart": "C’è stato un errore nell’avvio del servizio di trascrizione.",
|
||||
@@ -654,7 +654,7 @@
|
||||
"videoStatus": {
|
||||
"audioOnly": "AUD",
|
||||
"audioOnlyExpanded": "Modalita' solo audio attiva. Questa modalità permette di rispamiare banda ma non vedrai gli altri partecipanti.",
|
||||
"callQuality": "",
|
||||
"callQuality": "Qualità video",
|
||||
"hd": "HD",
|
||||
"highDefinition": "Alta definizione",
|
||||
"labelTooiltipNoVideo": "Nessun video",
|
||||
@@ -678,14 +678,14 @@
|
||||
"muted": "Audio disattivato",
|
||||
"remoteControl": "Controllo remoto",
|
||||
"show": "",
|
||||
"videomute": ""
|
||||
"videomute": "Silenzia il video"
|
||||
},
|
||||
"welcomepage": {
|
||||
"accessibilityLabel": {
|
||||
"join": "Tap per accedere",
|
||||
"roomname": "Inserisci Nome Stanza"
|
||||
},
|
||||
"appDescription": "Via avanti, video chatta con l'intero team. In effetti, invita tutti quelli che conosci. {{app}} è una soluzione di video conference totalmente crittografata, 100% open cource, che puoi utilizzare tutto il giorno, ogni giorno, gratuitamente - senza bisogno di un account.",
|
||||
"appDescription": "Via avanti, video chatta con l'intero team. In effetti, invita tutti quelli che conosci. {{app}} è una soluzione di video conference totalmente crittografata, 100% open source, che puoi utilizzare tutto il giorno, ogni giorno, gratuitamente - senza bisogno di un account.",
|
||||
"audioVideoSwitch": {
|
||||
"audio": "Voce",
|
||||
"video": "Video"
|
||||
@@ -696,7 +696,7 @@
|
||||
"enterRoomTitle": "Avvia una nuova conferenza",
|
||||
"go": "VAI",
|
||||
"join": "UNISCITI",
|
||||
"info": "",
|
||||
"info": "Informazioni",
|
||||
"privacy": "Privacy",
|
||||
"recentList": "Recente",
|
||||
"recentListDelete": "Cancella",
|
||||
@@ -708,4 +708,4 @@
|
||||
"terms": "Termini di utilizzo",
|
||||
"title": "Il sistema di conferenza sicuro, funzionale e completamente gratuito."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,16 +21,16 @@
|
||||
"bluetooth": "Bluetooth",
|
||||
"headphones": "Hoofdtelefoon",
|
||||
"phone": "Telefoon",
|
||||
"speaker": "Spreker"
|
||||
"speaker": "Speaker"
|
||||
},
|
||||
"audioOnly": {
|
||||
"audioOnly": "Alleen audio"
|
||||
},
|
||||
"calendarSync": {
|
||||
"addMeetingURL": "Een link naar de vergadering toevoegen",
|
||||
"confirmAddLink": "Wilt u een Jitsi-link naar deze gebeurtenis toevoegen?",
|
||||
"confirmAddLink": "Wilt u een Jitsi-link aan deze gebeurtenis toevoegen?",
|
||||
"error": {
|
||||
"appConfiguration": "De Agenda-integratie is niet naar behoren geconfigureerd.",
|
||||
"appConfiguration": "De agenda-integratie is niet juist ingesteld.",
|
||||
"generic": "Er is een fout opgetreden. Controleer de agenda-instellingen of vernieuw de agenda.",
|
||||
"notSignedIn": "Er is een fout opgetreden tijdens de verificatie voor het weergeven van agendagebeurtenissen. Controleer de agenda-instellingen en probeer u opnieuw aan te melden."
|
||||
},
|
||||
@@ -40,18 +40,23 @@
|
||||
"noEvents": "Er zijn geen gebeurtenissen gepland.",
|
||||
"ongoingMeeting": "actieve vergadering",
|
||||
"permissionButton": "Instellingen openen",
|
||||
"permissionMessage": "U hebt een machtiging voor Agenda nodig om uw vergaderingen weer te geven in de app.",
|
||||
"permissionMessage": "U hebt een machtiging voor Agenda nodig om uw afspraken weer te geven in de app.",
|
||||
"refresh": "Agenda vernieuwen",
|
||||
"today": "Vandaag"
|
||||
},
|
||||
"chat": {
|
||||
"error": "Fout: uw bericht \"{{originalText}}\" is niet verzonden. Reden: {{error}}",
|
||||
"fieldPlaceHolder": "Type hier je bericht",
|
||||
"messagebox": "Typ een bericht",
|
||||
"messageTo": "Privébericht aan {{recipient}}",
|
||||
"noMessagesMessage": "Er zijn nog geen berichten in deze bijkeenkomst. Begin een gesprek!",
|
||||
"nickname": {
|
||||
"popover": "Kies een bijnaam",
|
||||
"title": "Voer een bijnaam in om de chatfunctie te gebruiken"
|
||||
},
|
||||
"title": "Chat"
|
||||
"privateNotice": "Privébericht aan {{recipient}}",
|
||||
"title": "Chat",
|
||||
"you": "jij"
|
||||
},
|
||||
"connectingOverlay": {
|
||||
"joiningRoom": "Er wordt verbinding gemaakt met de vergadering..."
|
||||
@@ -503,16 +508,18 @@
|
||||
"title": "Instellingen"
|
||||
},
|
||||
"settingsView": {
|
||||
"advanced": "Geavanceerd",
|
||||
"alertOk": "OK",
|
||||
"alertTitle": "Waarschuwing",
|
||||
"alertURLText": "De ingevoerde server-URL is ongeldig",
|
||||
"buildInfoSection": "Buildgegevens",
|
||||
"conferenceSection": "Conferentie",
|
||||
"conferenceSection": "Bijeenkomsten",
|
||||
"displayName": "Weergavenaam",
|
||||
"email": "E‑mail",
|
||||
"header": "Instellingen",
|
||||
"profileSection": "Profiel",
|
||||
"serverURL": "Server-URL",
|
||||
"showAdvanced": "Toon geavanceerde instellingen",
|
||||
"startWithAudioMuted": "Starten met audio gedempt",
|
||||
"startWithVideoMuted": "Starten met video gedempt",
|
||||
"version": "Versie"
|
||||
@@ -595,6 +602,7 @@
|
||||
"logout": "Afmelden",
|
||||
"lowerYourHand": "Uw hand laten zakken",
|
||||
"moreActions": "Meer acties",
|
||||
"moreOptions": "Meer opties",
|
||||
"mute": "Dempen/dempen opheffen",
|
||||
"openChat": "Chat openen",
|
||||
"pip": "Beeld-in-beeld-modus activeren",
|
||||
@@ -705,8 +713,12 @@
|
||||
"reducedUIText": "",
|
||||
"roomname": "Naam van ruimte invoeren",
|
||||
"roomnameHint": "Voer de naam of URL in van de ruimte die u wilt betreden. U kunt een naam verzinnen, maar geef de naam wel door aan de andere deelnemers, zodat zij dezelfde naam kunnen invoeren.",
|
||||
"sendFeedback": "Feedback verzenden",
|
||||
"sendFeedback": "Feedback sturen",
|
||||
"terms": "Voorwaarden",
|
||||
"title": "Veilige, volledig uitgeruste en geheel gratis videovergaderingen"
|
||||
},
|
||||
"lonelyMeetingExperience": {
|
||||
"button": "Anderen uitnodigen",
|
||||
"youAreAlone": "Je bent de enige in dit gesprek"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
"noMessagesMessage": "",
|
||||
"nickname": {
|
||||
"popover": "Wybierz swój nick",
|
||||
"title": "Wpisz swoje imię i nazwisko, aby użyć rozmowy"
|
||||
"title": "Wpisz swoją nazwę, aby użyć rozmowy"
|
||||
},
|
||||
"privateNotice": "Prywatna wiadomość do {{recipient}}",
|
||||
"title": "Rozmowa",
|
||||
@@ -76,38 +76,38 @@
|
||||
},
|
||||
"connectionindicator": {
|
||||
"address": "Adres:",
|
||||
"bandwidth": "Zakładana przepustowość:",
|
||||
"bandwidth": "Szacowana przepustowość:",
|
||||
"bitrate": "Szybkość transmisji:",
|
||||
"bridgeCount": "Liczba serwerów: ",
|
||||
"connectedTo": "Podłączone do:",
|
||||
"framerate": "Częstotliwość wyświetlania klatek:",
|
||||
"framerate": "Klatek na sekundę:",
|
||||
"less": "Pokaż mniej",
|
||||
"localaddress_0": "Adres lokalny:",
|
||||
"localaddress_1": "Adresy lokalne:",
|
||||
"localaddress_2": "Adresów lokalnych:",
|
||||
"localaddress_2": "Adresy lokalne:",
|
||||
"localport_0": "Port lokalny:",
|
||||
"localport_1": "Porty lokalne:",
|
||||
"localport_2": "Portów lokalnych:",
|
||||
"localport_2": "Porty lokalne:",
|
||||
"more": "Pokaż więcej",
|
||||
"packetloss": "Strata pakietów:",
|
||||
"packetloss": "Utrata pakietów:",
|
||||
"quality": {
|
||||
"good": "Prawdziwy",
|
||||
"inactive": "Nieaktywny",
|
||||
"lost": "Zaginiony",
|
||||
"good": "Dobre",
|
||||
"inactive": "Nieaktywne",
|
||||
"lost": "Utracone",
|
||||
"nonoptimal": "Nieoptymalne",
|
||||
"poor": "Słaby"
|
||||
"poor": "Słabe"
|
||||
},
|
||||
"remoteaddress_0": "Adres zdalny:",
|
||||
"remoteaddress_1": "Adresy zdalne:",
|
||||
"remoteaddress_2": "Adresów zdalnych:",
|
||||
"remoteaddress_2": "Adresy zdalne:",
|
||||
"remoteport_0": "Port zdalny:",
|
||||
"remoteport_1": "Porty zdalne:",
|
||||
"remoteport_2": "Portów zdalnych:",
|
||||
"remoteport_2": "Porty zdalne:",
|
||||
"resolution": "Rozdzielczość:",
|
||||
"status": "Połączenie:",
|
||||
"transport_0": "Przekazywanie:",
|
||||
"transport_1": "Przekazywania:",
|
||||
"transport_2": "Przekazywań:"
|
||||
"transport_0": "Transport:",
|
||||
"transport_1": "Transporty:",
|
||||
"transport_2": "Transporty:"
|
||||
},
|
||||
"dateUtils": {
|
||||
"earlier": "Wcześniej",
|
||||
@@ -128,7 +128,7 @@
|
||||
"defaultNickname": "np. Ziutek Kowalski",
|
||||
"deviceError": {
|
||||
"cameraError": "Błąd dostępu do Twojej kamery",
|
||||
"cameraPermission": "Błąd podczas przetwarzania uprawnień do kamery",
|
||||
"cameraPermission": "Błąd podczas otrzymywania uprawnień do kamery",
|
||||
"microphoneError": "Błąd dostępu do Twojego mikrofonu",
|
||||
"microphonePermission": "Błąd podczas otrzymywania uprawnień do mikrofonu"
|
||||
},
|
||||
@@ -209,7 +209,7 @@
|
||||
"muteParticipantButton": "Wyciszenie",
|
||||
"muteParticipantDialog": "Czy na pewno wyciszyć tego uczestnika? Nie będziesz mógł wyłączyć wyciszenia uczestników, ale oni mogą samodzielnie wyłączyć wyciszenie w dowolnym momencie.",
|
||||
"muteParticipantTitle": "Wyciszyć tego uczestnika?",
|
||||
"Ok": "Ok",
|
||||
"Ok": "OK",
|
||||
"passwordLabel": "$t(lockRoomPasswordUppercase)",
|
||||
"passwordNotSupported": "Ustanowienie spotkania $t(lockRoomPassword) nie jest obsługiwane.",
|
||||
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) nie jest obsługiwane",
|
||||
@@ -280,16 +280,16 @@
|
||||
"title": "Współdzielony dokument"
|
||||
},
|
||||
"feedback": {
|
||||
"average": "Średni",
|
||||
"bad": "Źle",
|
||||
"average": "Średnio",
|
||||
"bad": "Źle",
|
||||
"detailsLabel": "Powiedz nam o tym więcej.",
|
||||
"good": "Prawdziwy",
|
||||
"rateExperience": "Oceń proszę swoje doświadczenia z konferencji",
|
||||
"good": "Dobrze",
|
||||
"rateExperience": "Jak oceniasz tę konferencję?",
|
||||
"veryBad": "Bardzo źle",
|
||||
"veryGood": "1: Bardzo dobrze"
|
||||
"veryGood": "Bardzo dobrze"
|
||||
},
|
||||
"incomingCall": {
|
||||
"answer": "Odpowiedz",
|
||||
"answer": "Odbierz",
|
||||
"audioCallTitle": "Przychodzące połączenie",
|
||||
"decline": "Odrzuć",
|
||||
"productLabel": "z Jitsi Meet",
|
||||
@@ -512,18 +512,18 @@
|
||||
"title": "Kalendarz"
|
||||
},
|
||||
"devices": "Urządzenia",
|
||||
"followMe": "Wszyscy za mną",
|
||||
"followMe": "Wszyscy widzą mnie",
|
||||
"language": "Język",
|
||||
"loggedIn": "Zalogowano jako {{name}}",
|
||||
"moderator": "Moderujący",
|
||||
"moderator": "Moderacja",
|
||||
"more": "Więcej",
|
||||
"name": "Nazwa",
|
||||
"noDevice": "Brak",
|
||||
"selectAudioOutput": "Wyjście audio",
|
||||
"selectCamera": "Kamera",
|
||||
"selectMic": "Mikrofon",
|
||||
"startAudioMuted": "Wszyscy się wyciszyli",
|
||||
"startVideoMuted": "Wszyscy się ukryli",
|
||||
"startAudioMuted": "Wycisz wszystkich dołączających",
|
||||
"startVideoMuted": "Ukryj wszystkich dołączających",
|
||||
"title": "Ustawienia"
|
||||
},
|
||||
"settingsView": {
|
||||
@@ -600,7 +600,7 @@
|
||||
"shortcuts": "Przełączanie skrótów klawiszowych",
|
||||
"show": "",
|
||||
"speakerStats": "Przełączanie statystyk dotyczących mówców",
|
||||
"tileView": "Przełączanie kafelkowego widoku",
|
||||
"tileView": "Przełącz widok kafelkowy",
|
||||
"toggleCamera": "Przełączanie kamery",
|
||||
"videomute": "Przełączanie wyciszonego filmu wideo",
|
||||
"videoblur": "Przełącz rozmazanie obrazu"
|
||||
@@ -626,9 +626,9 @@
|
||||
"invite": "Zapraszaj ludzi",
|
||||
"login": "Zaloguj",
|
||||
"logout": "Wyloguj",
|
||||
"lowerYourHand": "Opuść swą rękę",
|
||||
"lowerYourHand": "Opuść rękę",
|
||||
"moreActions": "Więcej działań",
|
||||
"mute": "Wycisz / Pogłośnij",
|
||||
"mute": "Włącz / Wyłącz mikrofon",
|
||||
"noAudioSignalTitle": "",
|
||||
"noAudioSignalDesc": "",
|
||||
"noAudioSignalDescSuggestion": "",
|
||||
@@ -636,13 +636,13 @@
|
||||
"pip": "Wprowadź tryb obrazu w obrazie",
|
||||
"privateMessage": "Wyślij wiadomość prywatną",
|
||||
"profile": "Edytuj swój profil",
|
||||
"raiseHand": "Podnieś / Opuść swą rękę",
|
||||
"raiseYourHand": "Podnieś swą rękę",
|
||||
"raiseHand": "Podnieś / Opuść rękę",
|
||||
"raiseYourHand": "Podnieś rękę",
|
||||
"Settings": "Ustawienia",
|
||||
"sharedvideo": "Udostępniaj wideo w Youtube",
|
||||
"sharedvideo": "Udostępnij wideo w Youtube",
|
||||
"shareRoom": "Zaproś kogoś",
|
||||
"shortcuts": "Wyświetlanie skrótów",
|
||||
"speakerStats": "Statystyki głośników",
|
||||
"shortcuts": "Wyświetl skróty",
|
||||
"speakerStats": "Statystyki mówców",
|
||||
"startScreenSharing": "Zacznij współdzielenie ekranu",
|
||||
"startSubtitles": "Uruchom napisy",
|
||||
"stopScreenSharing": "Zatrzymaj współdzielenie ekranu",
|
||||
|
||||
@@ -571,7 +571,7 @@
|
||||
"show": "",
|
||||
"speakerStats": "Stäng eller öppna högstalarstatistik",
|
||||
"tileView": "Öppna eller stäng panelvyn",
|
||||
"toggleCamera": "Öppna eller stäng kamera",
|
||||
"toggleCamera": "Byta kamera",
|
||||
"videomute": "Sätt på eller stäng av mikrofonen",
|
||||
"videoblur": ""
|
||||
},
|
||||
@@ -614,7 +614,7 @@
|
||||
"stopSharedVideo": "Pausa YouTube-video",
|
||||
"talkWhileMutedPopup": "Försöker du tala? Din mikrofon är tystad.",
|
||||
"tileViewToggle": "Öppna eller stäng panelvyn",
|
||||
"toggleCamera": "Öppna eller stäng kamera",
|
||||
"toggleCamera": "Byta kamera",
|
||||
"videomute": "Aktivera / avaktivera kameran",
|
||||
"startvideoblur": "",
|
||||
"stopvideoblur": ""
|
||||
@@ -710,4 +710,4 @@
|
||||
"terms": "Termer",
|
||||
"title": "Säkra, välutrustade och helt kostnadsfria videokonferenser"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -614,6 +614,7 @@
|
||||
"speakerStats": "Toggle speaker statistics",
|
||||
"tileView": "Toggle tile view",
|
||||
"toggleCamera": "Toggle camera",
|
||||
"toggleFilmstrip": "Toggle filmstrip",
|
||||
"videomute": "Toggle mute video",
|
||||
"videoblur": "Toggle video blur"
|
||||
},
|
||||
@@ -769,5 +770,9 @@
|
||||
"sendFeedback": "Send feedback",
|
||||
"terms": "Terms",
|
||||
"title": "Secure, fully featured, and completely free video conferencing"
|
||||
},
|
||||
"lonelyMeetingExperience": {
|
||||
"button": "Invite others",
|
||||
"youAreAlone": "You are the only one in the meeting"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ import { invite } from '../../react/features/invite';
|
||||
import { toggleTileView } from '../../react/features/video-layout';
|
||||
import { getJitsiMeetTransport } from '../transport';
|
||||
|
||||
import { API_ID } from './constants';
|
||||
import { API_ID, ENDPOINT_TEXT_MESSAGE_NAME } from './constants';
|
||||
import {
|
||||
processExternalDeviceRequest
|
||||
} from '../../react/features/device-selection/functions';
|
||||
@@ -155,6 +155,17 @@ function initCommands() {
|
||||
'avatar-url': avatarUrl => {
|
||||
sendAnalytics(createApiEvent('avatar.url.changed'));
|
||||
APP.conference.changeLocalAvatarUrl(avatarUrl);
|
||||
},
|
||||
'send-endpoint-text-message': (to, text) => {
|
||||
logger.debug('Send endpoint message command received');
|
||||
try {
|
||||
APP.conference.sendEndpointMessage(to, {
|
||||
name: ENDPOINT_TEXT_MESSAGE_NAME,
|
||||
text
|
||||
});
|
||||
} catch (err) {
|
||||
logger.error('Failed sending endpoint text message', err);
|
||||
}
|
||||
}
|
||||
};
|
||||
transport.on('event', ({ data, name }) => {
|
||||
@@ -358,12 +369,14 @@ class API {
|
||||
* Notify external application (if API is enabled) that message was sent.
|
||||
*
|
||||
* @param {string} message - Message body.
|
||||
* @param {boolean} privateMessage - True if the message was a private message.
|
||||
* @returns {void}
|
||||
*/
|
||||
notifySendingChatMessage(message: string) {
|
||||
notifySendingChatMessage(message: string, privateMessage: boolean) {
|
||||
this._sendEvent({
|
||||
name: 'outgoing-message',
|
||||
message
|
||||
message,
|
||||
privateMessage
|
||||
});
|
||||
}
|
||||
|
||||
@@ -437,6 +450,20 @@ class API {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify external application (if API is enabled) that user received
|
||||
* a text message through datachannels.
|
||||
*
|
||||
* @param {Object} data - The event data.
|
||||
* @returns {void}
|
||||
*/
|
||||
notifyEndpointTextMessageReceived(data: Object) {
|
||||
this._sendEvent({
|
||||
name: 'endpoint-text-message-received',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify external application (if API is enabled) that the device list has
|
||||
* changed.
|
||||
|
||||
@@ -9,5 +9,9 @@ import parseURLParams from '../../react/features/base/config/parseURLParams';
|
||||
/**
|
||||
* JitsiMeetExternalAPI id - unique for a webpage.
|
||||
*/
|
||||
export const API_ID
|
||||
= parseURLParams(window.location).jitsi_meet_external_api_id;
|
||||
export const API_ID = parseURLParams(window.location).jitsi_meet_external_api_id;
|
||||
|
||||
/**
|
||||
* The payload name for the datachannel/endpoint text message event
|
||||
*/
|
||||
export const ENDPOINT_TEXT_MESSAGE_NAME = 'endpoint-text-message';
|
||||
|
||||
4
modules/API/external/external_api.js
vendored
4
modules/API/external/external_api.js
vendored
@@ -32,6 +32,7 @@ const commands = {
|
||||
email: 'email',
|
||||
hangup: 'video-hangup',
|
||||
password: 'password',
|
||||
sendEndpointTextMessage: 'send-endpoint-text-message',
|
||||
sendTones: 'send-tones',
|
||||
subject: 'subject',
|
||||
submitFeedback: 'submit-feedback',
|
||||
@@ -55,6 +56,7 @@ const events = {
|
||||
'device-list-changed': 'deviceListChanged',
|
||||
'display-name-change': 'displayNameChange',
|
||||
'email-change': 'emailChange',
|
||||
'endpoint-text-message-received': 'endpointTextMessageReceived',
|
||||
'feedback-submitted': 'feedbackSubmitted',
|
||||
'feedback-prompt-displayed': 'feedbackPromptDisplayed',
|
||||
'filmstrip-display-changed': 'filmstripDisplayChanged',
|
||||
@@ -300,7 +302,7 @@ export default class JitsiMeetExternalAPI extends EventEmitter {
|
||||
const frameName = `jitsiConferenceFrame${id}`;
|
||||
|
||||
this._frame = document.createElement('iframe');
|
||||
this._frame.allow = 'camera; microphone';
|
||||
this._frame.allow = 'camera; microphone; display-capture';
|
||||
this._frame.src = this._url;
|
||||
this._frame.name = frameName;
|
||||
this._frame.id = frameName;
|
||||
|
||||
@@ -751,7 +751,7 @@ const VideoLayout = {
|
||||
APP.remoteControl.checkUserRemoteControlSupport(user)
|
||||
.then(result => remoteVideo.setRemoteControlSupport(result))
|
||||
.catch(error =>
|
||||
logger.warn('could not get remote control properties', error));
|
||||
logger.warn(`could not get remote control properties for: ${user.getJid()}`, error));
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
37
package-lock.json
generated
37
package-lock.json
generated
@@ -10653,8 +10653,8 @@
|
||||
"integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
|
||||
},
|
||||
"js-utils": {
|
||||
"version": "github:jitsi/js-utils#8567f86ec2774ae1d1c47b22e3435928cf5d9771",
|
||||
"from": "github:jitsi/js-utils#8567f86ec2774ae1d1c47b22e3435928cf5d9771",
|
||||
"version": "github:jitsi/js-utils#91c5e53ca5fa42907c88d56bc78254e6e56e058d",
|
||||
"from": "github:jitsi/js-utils#91c5e53ca5fa42907c88d56bc78254e6e56e058d",
|
||||
"requires": {
|
||||
"bowser": "2.7.0",
|
||||
"js-md5": "0.7.3",
|
||||
@@ -10883,8 +10883,8 @@
|
||||
}
|
||||
},
|
||||
"lib-jitsi-meet": {
|
||||
"version": "github:jitsi/lib-jitsi-meet#47c2bc65457b0cd1620e171cf79ffe4d49d071c5",
|
||||
"from": "github:jitsi/lib-jitsi-meet#47c2bc65457b0cd1620e171cf79ffe4d49d071c5",
|
||||
"version": "github:jitsi/lib-jitsi-meet#a7950f8ebb489225c2e8bf41fe65f330b3de0874",
|
||||
"from": "github:jitsi/lib-jitsi-meet#a7950f8ebb489225c2e8bf41fe65f330b3de0874",
|
||||
"requires": {
|
||||
"@jitsi/sdp-interop": "0.1.14",
|
||||
"@jitsi/sdp-simulcast": "0.2.2",
|
||||
@@ -10894,9 +10894,26 @@
|
||||
"js-utils": "github:jitsi/js-utils#8567f86ec2774ae1d1c47b22e3435928cf5d9771",
|
||||
"lodash.isequal": "4.5.0",
|
||||
"sdp-transform": "2.3.0",
|
||||
"strophe.js": "1.2.16",
|
||||
"strophe.js": "1.3.4",
|
||||
"strophejs-plugin-disco": "0.0.2",
|
||||
"strophejs-plugin-stream-management": "github:jitsi/strophejs-plugin-stream-management#cec7608601c1bc098543823fc658e3ddf758c009",
|
||||
"webrtc-adapter": "github:webrtc/adapter#1eec19782b4058d186341263e7d049cea3e3290a"
|
||||
},
|
||||
"dependencies": {
|
||||
"js-md5": {
|
||||
"version": "0.7.3",
|
||||
"resolved": "https://registry.npmjs.org/js-md5/-/js-md5-0.7.3.tgz",
|
||||
"integrity": "sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ=="
|
||||
},
|
||||
"js-utils": {
|
||||
"version": "github:jitsi/js-utils#8567f86ec2774ae1d1c47b22e3435928cf5d9771",
|
||||
"from": "github:jitsi/js-utils#8567f86ec2774ae1d1c47b22e3435928cf5d9771",
|
||||
"requires": {
|
||||
"bowser": "2.7.0",
|
||||
"js-md5": "0.7.3",
|
||||
"postis": "2.2.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libflacjs": {
|
||||
@@ -16852,15 +16869,19 @@
|
||||
"dev": true
|
||||
},
|
||||
"strophe.js": {
|
||||
"version": "1.2.16",
|
||||
"resolved": "https://registry.npmjs.org/strophe.js/-/strophe.js-1.2.16.tgz",
|
||||
"integrity": "sha512-r/Uq7aqrusg25Y0qHwV48cFnMY6K/CuZdGt3EggRx3kY4sMv8lG+AFoMlrmTcYVMG1BaJvQfv9Cthw4Ll8z7fQ=="
|
||||
"version": "1.3.4",
|
||||
"resolved": "https://registry.npmjs.org/strophe.js/-/strophe.js-1.3.4.tgz",
|
||||
"integrity": "sha512-jSLDG8jolhAwGOSgiJ7DTMSYK3wVoEJHKtpVRyEacQZ6CWA6z2WRPJpcFMjsIweq5aP9/XIvKUQqHBu/ZhvESA=="
|
||||
},
|
||||
"strophejs-plugin-disco": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmjs.org/strophejs-plugin-disco/-/strophejs-plugin-disco-0.0.2.tgz",
|
||||
"integrity": "sha512-T9pJFzn1ZUqZ/we9+OvI5pFdrjeb4IBMbEjK+ZWEZV036wEl8l8GOtF8AJ3sIqOMtdIiFLdFu99JiGWd7yapAQ=="
|
||||
},
|
||||
"strophejs-plugin-stream-management": {
|
||||
"version": "github:jitsi/strophejs-plugin-stream-management#cec7608601c1bc098543823fc658e3ddf758c009",
|
||||
"from": "github:jitsi/strophejs-plugin-stream-management#cec7608601c1bc098543823fc658e3ddf758c009"
|
||||
},
|
||||
"style-loader": {
|
||||
"version": "0.19.0",
|
||||
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.19.0.tgz",
|
||||
|
||||
@@ -53,10 +53,10 @@
|
||||
"jquery-contextmenu": "2.4.5",
|
||||
"jquery-i18next": "1.2.1",
|
||||
"js-md5": "0.6.1",
|
||||
"js-utils": "github:jitsi/js-utils#8567f86ec2774ae1d1c47b22e3435928cf5d9771",
|
||||
"js-utils": "github:jitsi/js-utils#0b2cef90613a74777fefd98d4ee3eda3879809ab",
|
||||
"jsrsasign": "8.0.12",
|
||||
"jwt-decode": "2.2.0",
|
||||
"lib-jitsi-meet": "github:jitsi/lib-jitsi-meet#b24bbdee4ecd8d42bc047743a5b13f8b14f98b23",
|
||||
"lib-jitsi-meet": "github:jitsi/lib-jitsi-meet#a7950f8ebb489225c2e8bf41fe65f330b3de0874",
|
||||
"libflacjs": "github:mmig/libflac.js#93d37e7f811f01cf7d8b6a603e38bd3c3810907d",
|
||||
"lodash": "4.17.13",
|
||||
"moment": "2.19.4",
|
||||
|
||||
@@ -18,7 +18,7 @@ export default class AbstractHandler {
|
||||
this._blackListedEvents = [
|
||||
...(options.blackListedEvents || []), // eslint-disable-line no-extra-parens
|
||||
'e2e_rtt', 'rtp.stats', 'rtt.by.region', 'available.device', 'stream.switch.delay', 'ice.state.changed',
|
||||
'ice.duration'
|
||||
'ice.duration', 'peer.conn.status.duration'
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -30,6 +30,8 @@ import {
|
||||
import logger from './logger';
|
||||
|
||||
declare var APP: Object;
|
||||
declare var interfaceConfig: Object;
|
||||
|
||||
|
||||
/**
|
||||
* Triggers an in-app navigation to a specific route. Allows navigation to be
|
||||
@@ -171,7 +173,7 @@ export function redirectToStaticPage(pathname: string) {
|
||||
// fine but pointless to include it because contextRoot is the current
|
||||
// directory.
|
||||
newPathname.startsWith('./')
|
||||
&& (newPathname = newPathname.substring(2));
|
||||
&& (newPathname = newPathname.substring(2));
|
||||
newPathname = getLocationContextRoot(windowLocation) + newPathname;
|
||||
}
|
||||
|
||||
@@ -215,7 +217,7 @@ export function reloadWithStoredParams() {
|
||||
windowLocation.replace(locationURL.toString());
|
||||
|
||||
if (window.self !== window.top
|
||||
&& locationURL.search === oldSearchString) {
|
||||
&& locationURL.search === oldSearchString) {
|
||||
// NOTE: Assuming that only the hash or search part of the URL will
|
||||
// be changed!
|
||||
// location.reload will not trigger redirect/reload for iframe when
|
||||
@@ -254,8 +256,15 @@ export function maybeRedirectToWelcomePage(options: Object = {}) {
|
||||
// to close page
|
||||
window.sessionStorage.setItem('guest', isGuest);
|
||||
|
||||
dispatch(redirectToStaticPage(`static/${
|
||||
options.feedbackSubmitted ? 'close.html' : 'close2.html'}`));
|
||||
let path = 'close.html';
|
||||
|
||||
if (interfaceConfig.SHOW_PROMOTIONAL_CLOSE_PAGE) {
|
||||
path = 'close3.html';
|
||||
} else if (!options.feedbackSubmitted) {
|
||||
path = 'close2.html';
|
||||
}
|
||||
|
||||
dispatch(redirectToStaticPage(`static/${path}`));
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -279,4 +288,3 @@ export function maybeRedirectToWelcomePage(options: Object = {}) {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,10 @@ export default {
|
||||
replyBorder: 'rgb(219, 197, 200)',
|
||||
replyIcon: 'rgb(94, 109, 121)'
|
||||
},
|
||||
'Conference': {
|
||||
inviteButtonBackground: 'rgb(0, 119, 225)',
|
||||
onVideoText: 'white'
|
||||
},
|
||||
'Dialog': {
|
||||
border: 'rgba(0, 3, 6, 0.6)',
|
||||
buttonBackground: ColorPalette.blue,
|
||||
|
||||
@@ -164,7 +164,7 @@ export function getConferenceName(stateful: Function | Object): string {
|
||||
|| subject
|
||||
|| callDisplayName
|
||||
|| (callee && callee.name)
|
||||
|| _.startCase(safeDecodeURIComponent(room));
|
||||
|| safeStartCase(safeDecodeURIComponent(room));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -351,3 +351,19 @@ export function sendLocalParticipant(
|
||||
|
||||
conference.setDisplayName(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* A safe implementation of lodash#startCase that doesn't deburr the string.
|
||||
*
|
||||
* NOTE: According to lodash roadmap, lodash v5 will have this function.
|
||||
*
|
||||
* Code based on https://github.com/lodash/lodash/blob/master/startCase.js.
|
||||
*
|
||||
* @param {string} s - The string to do start case on.
|
||||
* @returns {string}
|
||||
*/
|
||||
function safeStartCase(s = '') {
|
||||
return _.words(`${s}`.replace(/['\u2019]/g, '')).reduce(
|
||||
(result, word, index) => result + (index ? ' ' : '') + _.upperFirst(word)
|
||||
, '');
|
||||
}
|
||||
|
||||
@@ -88,8 +88,10 @@ export default [
|
||||
'disableLocalVideoFlip',
|
||||
'disableNS',
|
||||
'disableRemoteControl',
|
||||
'disableRemoteMute',
|
||||
'disableRtx',
|
||||
'disableSuspendVideo',
|
||||
'disableThirdPartyRequests',
|
||||
'displayJids',
|
||||
'e2eping',
|
||||
'enableDisplayNameInStats',
|
||||
@@ -125,6 +127,7 @@ export default [
|
||||
'pcStatsInterval',
|
||||
'preferH264',
|
||||
'requireDisplayName',
|
||||
'remoteVideoMenu',
|
||||
'resolution',
|
||||
'startAudioMuted',
|
||||
'startAudioOnly',
|
||||
|
||||
@@ -43,7 +43,9 @@ const INITIAL_RN_STATE = {
|
||||
p2p: {
|
||||
disableH264: false,
|
||||
preferH264: true
|
||||
}
|
||||
},
|
||||
|
||||
remoteVideoMenu: {}
|
||||
};
|
||||
|
||||
ReducerRegistry.register('features/base/config', (state = _getInitialState(), action) => {
|
||||
|
||||
@@ -4,6 +4,8 @@ import { parseURLParams } from '../config';
|
||||
import JitsiMeetJS from '../lib-jitsi-meet';
|
||||
import { updateSettings } from '../settings';
|
||||
|
||||
import logger from './logger';
|
||||
|
||||
declare var APP: Object;
|
||||
|
||||
/**
|
||||
@@ -187,6 +189,9 @@ export function setAudioOutputDeviceId(
|
||||
dispatch: Function,
|
||||
userSelection: boolean = false,
|
||||
newLabel: ?string): Promise<*> {
|
||||
|
||||
logger.debug(`setAudioOutputDevice: ${String(newLabel)}[${newId}]`);
|
||||
|
||||
return JitsiMeetJS.mediaDevices.setAudioOutputDevice(newId)
|
||||
.then(() => {
|
||||
const newSettings = {
|
||||
|
||||
@@ -9,6 +9,8 @@ import { groupDevicesByKind } from './functions';
|
||||
|
||||
import { ReducerRegistry } from '../redux';
|
||||
|
||||
import logger from './logger';
|
||||
|
||||
const DEFAULT_STATE = {
|
||||
availableDevices: {
|
||||
audioInput: [],
|
||||
@@ -18,6 +20,24 @@ const DEFAULT_STATE = {
|
||||
pendingRequests: []
|
||||
};
|
||||
|
||||
/**
|
||||
* Logs the current device list.
|
||||
*
|
||||
* @param {Object} deviceList - Whatever is returned by {@link groupDevicesByKind}.
|
||||
* @returns {string}
|
||||
*/
|
||||
function logDeviceList(deviceList) {
|
||||
const devicesToStr = list => list.map(device => `\t\t${device.label}[${device.deviceId}]`).join('\n');
|
||||
const audioInputs = devicesToStr(deviceList.audioInput);
|
||||
const audioOutputs = devicesToStr(deviceList.audioOutput);
|
||||
const videoInputs = devicesToStr(deviceList.videoInput);
|
||||
|
||||
logger.debug('Device list updated:\n'
|
||||
+ `audioInput:\n${audioInputs}\n`
|
||||
+ `audioOutput:\n${audioOutputs}\n`
|
||||
+ `videoInput:\n${videoInputs}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Listen for actions which changes the state of known and used devices.
|
||||
*
|
||||
@@ -35,6 +55,8 @@ ReducerRegistry.register(
|
||||
case UPDATE_DEVICE_LIST: {
|
||||
const deviceList = groupDevicesByKind(action.devices);
|
||||
|
||||
logDeviceList(deviceList);
|
||||
|
||||
return {
|
||||
...state,
|
||||
availableDevices: deviceList
|
||||
@@ -56,11 +78,17 @@ ReducerRegistry.register(
|
||||
pendingRequests: [ ]
|
||||
};
|
||||
|
||||
// TODO: Changing of current audio and video device id is currently
|
||||
// handled outside of react/redux. Fall through to default logic for
|
||||
// now.
|
||||
case SET_AUDIO_INPUT_DEVICE:
|
||||
case SET_VIDEO_INPUT_DEVICE:
|
||||
// TODO: Changing of current audio and video device id is currently handled outside of react/redux.
|
||||
case SET_AUDIO_INPUT_DEVICE: {
|
||||
logger.debug(`set audio input device: ${action.deviceId}`);
|
||||
|
||||
return state;
|
||||
}
|
||||
case SET_VIDEO_INPUT_DEVICE: {
|
||||
logger.debug(`set video input device: ${action.deviceId}`);
|
||||
|
||||
return state;
|
||||
}
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
|
||||
@@ -44,7 +44,12 @@ type Props = {
|
||||
/**
|
||||
* Callback to be attached to the custom swipe event of the BottomSheet.
|
||||
*/
|
||||
onSwipe?: Function
|
||||
onSwipe?: Function,
|
||||
|
||||
/**
|
||||
* Function to render a bottom sheet header element, if necessary.
|
||||
*/
|
||||
renderHeader: ?Function
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -75,7 +80,7 @@ class BottomSheet extends PureComponent<Props> {
|
||||
* @returns {ReactElement}
|
||||
*/
|
||||
render() {
|
||||
const { _styles } = this.props;
|
||||
const { _styles, renderHeader } = this.props;
|
||||
|
||||
return (
|
||||
<SlidingView
|
||||
@@ -88,6 +93,7 @@ class BottomSheet extends PureComponent<Props> {
|
||||
<View
|
||||
pointerEvents = 'box-none'
|
||||
style = { styles.sheetAreaCover } />
|
||||
{ renderHeader && renderHeader() }
|
||||
<SafeAreaView
|
||||
style = { [
|
||||
styles.sheetItemContainer,
|
||||
|
||||
@@ -172,6 +172,12 @@ ColorSchemeRegistry.register('BottomSheet', {
|
||||
underlayColor: ColorPalette.overflowMenuItemUnderlay
|
||||
},
|
||||
|
||||
expandIcon: {
|
||||
color: schemeColor('icon'),
|
||||
fontSize: 48,
|
||||
opacity: 0.8
|
||||
},
|
||||
|
||||
/**
|
||||
* Bottom sheet's base style.
|
||||
*/
|
||||
|
||||
@@ -13,6 +13,12 @@ export const CALENDAR_ENABLED = 'calendar.enabled';
|
||||
*/
|
||||
export const CALL_INTEGRATION_ENABLED = 'call-integration.enabled';
|
||||
|
||||
/**
|
||||
* Flag indicating if chat should be enabled.
|
||||
* Default: enabled (true).
|
||||
*/
|
||||
export const CLOSE_CAPTIONS_ENABLED = 'close-captions.enabled';
|
||||
|
||||
/**
|
||||
* Flag indicating if chat should be enabled.
|
||||
* Default: enabled (true).
|
||||
|
||||
@@ -49,6 +49,12 @@ const _LANGUAGES = {
|
||||
main: require('../../../../lang/main-esUS')
|
||||
},
|
||||
|
||||
// Estonian
|
||||
'et': {
|
||||
languages: require('../../../../lang/languages-et'),
|
||||
main: require('../../../../lang/main-et')
|
||||
},
|
||||
|
||||
// Finnish
|
||||
'fi': {
|
||||
languages: require('../../../../lang/languages-fi'),
|
||||
|
||||
11
react/features/base/icons/svg/drag-handle.svg
Normal file
11
react/features/base/icons/svg/drag-handle.svg
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24">
|
||||
<path
|
||||
d="m 5.6875,10.59375 h 12.625 c 0.779062,0 1.40625,0.627187 1.40625,1.40625 0,0.779062 -0.627188,1.40625 -1.40625,1.40625 H 5.6875 c -0.7790625,0 -1.40625,-0.627188 -1.40625,-1.40625 0,-0.779063 0.6271875,-1.40625 1.40625,-1.40625 z"
|
||||
id="rect3711" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 474 B |
@@ -25,6 +25,7 @@ export { default as IconDeviceHeadphone } from './headset.svg';
|
||||
export { default as IconDeviceSpeaker } from './volume.svg';
|
||||
export { default as IconDominantSpeaker } from './dominant-speaker.svg';
|
||||
export { default as IconDownload } from './download.svg';
|
||||
export { default as IconDragHandle } from './drag-handle.svg';
|
||||
export { default as IconEventNote } from './event_note.svg';
|
||||
export { default as IconExitFullScreen } from './exit-full-screen.svg';
|
||||
export { default as IconFeedback } from './feedback.svg';
|
||||
@@ -43,6 +44,8 @@ export { default as IconMessage } from './message.svg';
|
||||
export { default as IconMicDisabled } from './mic-disabled.svg';
|
||||
export { default as IconMicrophone } from './microphone.svg';
|
||||
export { default as IconModerator } from './star.svg';
|
||||
export { default as IconMuteEveryone } from './mute-everyone.svg';
|
||||
export { default as IconMuteEveryoneElse } from './mute-everyone-else.svg';
|
||||
export { default as IconNotificationJoin } from './navigate_next.svg';
|
||||
export { default as IconOpenInNew } from './open_in_new.svg';
|
||||
export { default as IconPhone } from './phone.svg';
|
||||
@@ -61,6 +64,7 @@ export { default as IconSettings } from './settings.svg';
|
||||
export { default as IconSignalLevel0 } from './signal_cellular_0.svg';
|
||||
export { default as IconSignalLevel1 } from './signal_cellular_1.svg';
|
||||
export { default as IconSignalLevel2 } from './signal_cellular_2.svg';
|
||||
export { default as IconShare } from './share.svg';
|
||||
export { default as IconShareDesktop } from './share-desktop.svg';
|
||||
export { default as IconShareDoc } from './share-doc.svg';
|
||||
export { default as IconShareVideo } from './shared-video.svg';
|
||||
|
||||
11
react/features/base/icons/svg/mute-everyone-else.svg
Normal file
11
react/features/base/icons/svg/mute-everyone-else.svg
Normal file
@@ -0,0 +1,11 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 13.078V15C6 16.3999 6.9589 17.5759 8.25572 17.907C8.25195 17.9374 8.25 17.9685 8.25 18V19.4378C6.12171 19.0807 4.5 17.2297 4.5 15C4.5 14.5858 4.16421 14.25 3.75 14.25C3.33579 14.25 3 14.5858 3 15C3 18.0597 5.29027 20.5845 8.25 20.9536V21.75C8.25 22.1642 8.58579 22.5 9 22.5C9.41421 22.5 9.75 22.1642 9.75 21.75V20.9536C10.8412 20.8175 11.8415 20.3884 12.6694 19.7475L15.1986 22.2766C15.4964 22.5744 15.9791 22.5745 16.2768 22.2768C16.5745 21.9791 16.5744 21.4964 16.2766 21.1986L13.7475 18.6694C13.7502 18.6659 13.753 18.6623 13.7557 18.6588L12.6831 17.5861C12.6805 17.5898 12.6779 17.5935 12.6753 17.5972L11.5911 16.513C11.5934 16.5091 11.5957 16.5051 11.598 16.5011L10.4566 15.3596C10.4554 15.3647 10.4541 15.3697 10.4528 15.3748L7.5 12.422V12.403L6 10.903V10.922L2.80143 7.72339C2.50364 7.4256 2.02091 7.42553 1.72322 7.72322C1.42553 8.02091 1.4256 8.50364 1.72339 8.80143L6 13.078ZM7.5 14.578V15C7.5 15.8284 8.17157 16.5 9 16.5C9.1294 16.5 9.25498 16.4836 9.37476 16.4528L7.5 14.578ZM10.513 17.5911C10.2756 17.73 10.0175 17.8372 9.74428 17.907C9.74805 17.9374 9.75 17.9685 9.75 18V19.4378C10.4295 19.3238 11.0573 19.0575 11.5972 18.6753L10.513 17.5911ZM12 14.747L10.5 13.247V10.5C10.5 9.67157 9.82843 9 9 9C8.25144 9 7.63095 9.54832 7.51827 10.2652L6.34845 9.09541C6.85223 8.14635 7.85064 7.5 9 7.5C10.6569 7.5 12 8.84315 12 10.5V14.747ZM13.3623 16.1092L14.5462 17.2932C14.8386 16.5867 15 15.8122 15 15C15 14.5858 14.6642 14.25 14.25 14.25C13.8358 14.25 13.5 14.5858 13.5 15C13.5 15.3828 13.4522 15.7544 13.3623 16.1092Z" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16 4.71869V6C16 6.93329 16.6393 7.71727 17.5038 7.93797C17.5013 7.95829 17.5 7.97899 17.5 8V8.95852C16.0811 8.72048 15 7.4865 15 6C15 5.72386 14.7761 5.5 14.5 5.5C14.2239 5.5 14 5.72386 14 6C14 8.03981 15.5268 9.723 17.5 9.96905V10.5C17.5 10.7761 17.7239 11 18 11C18.2761 11 18.5 10.7761 18.5 10.5V9.96905C19.2275 9.87834 19.8943 9.59227 20.4463 9.16499L22.1324 10.8511C22.3309 11.0496 22.6527 11.0496 22.8512 10.8512C23.0496 10.6527 23.0496 10.3309 22.8511 10.1324L21.165 8.4463C21.1668 8.44393 21.1687 8.44155 21.1705 8.43918L20.4554 7.7241C20.4537 7.72656 20.4519 7.72903 20.4502 7.73149L19.7274 7.00869C19.7289 7.00603 19.7305 7.00338 19.732 7.00072L18.9711 6.23977C18.9702 6.24313 18.9694 6.24649 18.9685 6.24984L17 4.28131V4.26869L16 3.26869V3.28131L13.8676 1.14893C13.6691 0.950402 13.3473 0.950351 13.1488 1.14881C12.9504 1.34727 12.9504 1.6691 13.1489 1.86762L16 4.71869ZM17 5.71869V6C17 6.55228 17.4477 7 18 7C18.0863 7 18.17 6.98908 18.2498 6.96854L17 5.71869ZM19.0087 7.72738C18.8504 7.81999 18.6783 7.89148 18.4962 7.93797C18.4987 7.95829 18.5 7.97899 18.5 8V8.95852C18.953 8.88252 19.3715 8.70502 19.7315 8.45019L19.0087 7.72738ZM20 5.83131L19 4.83131V3C19 2.44772 18.5523 2 18 2C17.501 2 17.0873 2.36555 17.0122 2.84348L16.2323 2.06361C16.5682 1.4309 17.2338 1 18 1C19.1046 1 20 1.89543 20 3V5.83131ZM20.9082 6.73948L21.6975 7.52877C21.8924 7.05778 22 6.54145 22 6C22 5.72386 21.7761 5.5 21.5 5.5C21.2239 5.5 21 5.72386 21 6C21 6.25519 20.9681 6.50294 20.9082 6.73948Z" fill="white"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0">
|
||||
<rect width="24" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.3 KiB |
11
react/features/base/icons/svg/mute-everyone.svg
Normal file
11
react/features/base/icons/svg/mute-everyone.svg
Normal file
@@ -0,0 +1,11 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 13.078V15C6 16.3999 6.9589 17.5759 8.25572 17.907C8.25195 17.9374 8.25 17.9685 8.25 18V19.4378C6.12171 19.0807 4.5 17.2297 4.5 15C4.5 14.5858 4.16421 14.25 3.75 14.25C3.33579 14.25 3 14.5858 3 15C3 18.0597 5.29027 20.5845 8.25 20.9536V21.75C8.25 22.1642 8.58579 22.5 9 22.5C9.41421 22.5 9.75 22.1642 9.75 21.75V20.9536C10.8412 20.8175 11.8415 20.3884 12.6694 19.7475L15.1986 22.2766C15.4964 22.5744 15.9791 22.5745 16.2768 22.2768C16.5745 21.9791 16.5744 21.4964 16.2766 21.1986L13.7475 18.6694C13.7502 18.6659 13.753 18.6623 13.7557 18.6588L12.6831 17.5861C12.6805 17.5898 12.6779 17.5935 12.6753 17.5972L11.5911 16.513C11.5934 16.5091 11.5957 16.5051 11.598 16.5011L10.4566 15.3596C10.4554 15.3647 10.4541 15.3697 10.4528 15.3748L7.5 12.422V12.403L6 10.903V10.922L2.80143 7.72339C2.50364 7.4256 2.02091 7.42553 1.72322 7.72322C1.42553 8.02091 1.4256 8.50364 1.72339 8.80143L6 13.078ZM7.5 14.578V15C7.5 15.8284 8.17157 16.5 9 16.5C9.1294 16.5 9.25498 16.4836 9.37476 16.4528L7.5 14.578ZM10.513 17.5911C10.2756 17.73 10.0175 17.8372 9.74428 17.907C9.74805 17.9374 9.75 17.9685 9.75 18V19.4378C10.4295 19.3238 11.0573 19.0575 11.5972 18.6753L10.513 17.5911ZM12 14.747L10.5 13.247V10.5C10.5 9.67157 9.82843 9 9 9C8.25144 9 7.63095 9.54832 7.51827 10.2652L6.34845 9.09541C6.85223 8.14635 7.85064 7.5 9 7.5C10.6569 7.5 12 8.84315 12 10.5V14.747ZM13.3623 16.1092L14.5462 17.2932C14.8386 16.5867 15 15.8122 15 15C15 14.5858 14.6642 14.25 14.25 14.25C13.8358 14.25 13.5 14.5858 13.5 15C13.5 15.3828 13.4522 15.7544 13.3623 16.1092Z" fill="#A4B8D1"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16 4.71869V6C16 6.93329 16.6393 7.71727 17.5038 7.93797C17.5013 7.95829 17.5 7.97899 17.5 8V8.95852C16.0811 8.72048 15 7.4865 15 6C15 5.72386 14.7761 5.5 14.5 5.5C14.2239 5.5 14 5.72386 14 6C14 8.03981 15.5268 9.723 17.5 9.96905V10.5C17.5 10.7761 17.7239 11 18 11C18.2761 11 18.5 10.7761 18.5 10.5V9.96905C19.2275 9.87834 19.8943 9.59227 20.4463 9.16499L22.1324 10.8511C22.3309 11.0496 22.6527 11.0496 22.8512 10.8512C23.0496 10.6527 23.0496 10.3309 22.8511 10.1324L21.165 8.4463C21.1668 8.44393 21.1687 8.44155 21.1705 8.43918L20.4554 7.7241C20.4537 7.72656 20.4519 7.72903 20.4502 7.73149L19.7274 7.00869C19.7289 7.00603 19.7305 7.00338 19.732 7.00072L18.9711 6.23977C18.9702 6.24313 18.9694 6.24649 18.9685 6.24984L17 4.28131V4.26869L16 3.26869V3.28131L13.8676 1.14893C13.6691 0.950402 13.3473 0.950351 13.1488 1.14881C12.9504 1.34727 12.9504 1.6691 13.1489 1.86762L16 4.71869ZM17 5.71869V6C17 6.55228 17.4477 7 18 7C18.0863 7 18.17 6.98908 18.2498 6.96854L17 5.71869ZM19.0087 7.72738C18.8504 7.81999 18.6783 7.89148 18.4962 7.93797C18.4987 7.95829 18.5 7.97899 18.5 8V8.95852C18.953 8.88252 19.3715 8.70502 19.7315 8.45019L19.0087 7.72738ZM20 5.83131L19 4.83131V3C19 2.44772 18.5523 2 18 2C17.501 2 17.0873 2.36555 17.0122 2.84348L16.2323 2.06361C16.5682 1.4309 17.2338 1 18 1C19.1046 1 20 1.89543 20 3V5.83131ZM20.9082 6.73948L21.6975 7.52877C21.8924 7.05778 22 6.54145 22 6C22 5.72386 21.7761 5.5 21.5 5.5C21.2239 5.5 21 5.72386 21 6C21 6.25519 20.9681 6.50294 20.9082 6.73948Z" fill="#A4B8D1"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0">
|
||||
<rect width="24" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.3 KiB |
1
react/features/base/icons/svg/share.svg
Normal file
1
react/features/base/icons/svg/share.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" enable-background="new 0 0 50 50"><path d="M30.3 13.7L25 8.4l-5.3 5.3-1.4-1.4L25 5.6l6.7 6.7z"/><path d="M24 7h2v21h-2z"/><path d="M35 40H15c-1.7 0-3-1.3-3-3V19c0-1.7 1.3-3 3-3h7v2h-7c-.6 0-1 .4-1 1v18c0 .6.4 1 1 1h20c.6 0 1-.4 1-1V19c0-.6-.4-1-1-1h-7v-2h7c1.7 0 3 1.3 3 3v18c0 1.7-1.3 3-3 3z"/></svg>
|
||||
|
After Width: | Height: | Size: 361 B |
@@ -39,7 +39,7 @@ export function createLocalTrack(type: string, deviceId: string) {
|
||||
export function isAnalyticsEnabled(stateful: Function | Object) {
|
||||
const { disableThirdPartyRequests, analytics = {} } = toState(stateful)['features/base/config'];
|
||||
|
||||
return !disableThirdPartyRequests && !analytics.disabled;
|
||||
return !(disableThirdPartyRequests || analytics.disabled);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -343,7 +343,9 @@ function _participantJoinedOrUpdated({ dispatch, getState }, next, action) {
|
||||
// to the new avatar and emit out change events if necessary.
|
||||
const result = next(action);
|
||||
|
||||
if (avatarURL || email || id || name) {
|
||||
const { disableThirdPartyRequests } = getState()['features/base/config'];
|
||||
|
||||
if (!disableThirdPartyRequests && (avatarURL || email || id || name)) {
|
||||
const participantId = !id && local ? getLocalParticipant(getState()).id : id;
|
||||
const updatedParticipant = getParticipantById(getState(), participantId);
|
||||
|
||||
|
||||
@@ -3,8 +3,6 @@
|
||||
|
||||
import { isIconUrl } from './functions';
|
||||
|
||||
declare var config: Object;
|
||||
|
||||
/**
|
||||
* Tries to preload an image.
|
||||
*
|
||||
@@ -16,10 +14,6 @@ export function preloadImage(src: string | Object): Promise<string> {
|
||||
return Promise.resolve(src);
|
||||
}
|
||||
|
||||
if (typeof config === 'object' && config.disableThirdPartyRequests) {
|
||||
return Promise.reject();
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
const image = document.createElement('img');
|
||||
|
||||
|
||||
@@ -1,13 +1,9 @@
|
||||
// @flow
|
||||
|
||||
import { ReducerRegistry } from '../base/redux';
|
||||
import { PersistenceRegistry } from '../base/storage';
|
||||
|
||||
import { BLUR_ENABLED, BLUR_DISABLED } from './actionTypes';
|
||||
|
||||
PersistenceRegistry.register('features/blur', true, {
|
||||
blurEnabled: false
|
||||
});
|
||||
|
||||
ReducerRegistry.register('features/blur', (state = {}, action) => {
|
||||
|
||||
|
||||
@@ -76,12 +76,12 @@ MiddlewareRegistry.register(store => next => action => {
|
||||
} else {
|
||||
// Sending the message if privacy notice doesn't need to be shown.
|
||||
|
||||
if (typeof APP !== 'undefined') {
|
||||
APP.API.notifySendingChatMessage(action.message);
|
||||
}
|
||||
|
||||
const { privateMessageRecipient } = state['features/chat'];
|
||||
|
||||
if (typeof APP !== 'undefined') {
|
||||
APP.API.notifySendingChatMessage(action.message, Boolean(privateMessageRecipient));
|
||||
}
|
||||
|
||||
if (privateMessageRecipient) {
|
||||
conference.sendPrivateTextMessage(privateMessageRecipient.id, action.message);
|
||||
_persistSentPrivateMessage(store, privateMessageRecipient.id, action.message);
|
||||
|
||||
@@ -34,6 +34,7 @@ import {
|
||||
abstractMapStateToProps
|
||||
} from '../AbstractConference';
|
||||
import Labels from './Labels';
|
||||
import LonelyMeetingExperience from './LonelyMeetingExperience';
|
||||
import NavigationBar from './NavigationBar';
|
||||
import styles, { NAVBAR_GRADIENT_COLORS } from './styles';
|
||||
|
||||
@@ -305,6 +306,8 @@ class Conference extends AbstractConference<Props, *> {
|
||||
|
||||
{ _shouldDisplayTileView || <DisplayNameLabel participantId = { _largeVideoParticipantId } /> }
|
||||
|
||||
<LonelyMeetingExperience />
|
||||
|
||||
{/*
|
||||
* The Toolbox is in a stacking layer below the Filmstrip.
|
||||
*/}
|
||||
|
||||
@@ -0,0 +1,126 @@
|
||||
// @flow
|
||||
|
||||
import React, { PureComponent } from 'react';
|
||||
import { Text, TouchableOpacity, View } from 'react-native';
|
||||
|
||||
import { ColorSchemeRegistry } from '../../../base/color-scheme';
|
||||
import { connect } from '../../../base/redux';
|
||||
import { StyleType } from '../../../base/styles';
|
||||
import { translate } from '../../../base/i18n';
|
||||
import { getParticipantCount } from '../../../base/participants';
|
||||
import { doInvitePeople } from '../../../invite/actions.native';
|
||||
|
||||
import styles from './styles';
|
||||
import { Icon, IconAddPeople } from '../../../base/icons';
|
||||
|
||||
/**
|
||||
* Props type of the component.
|
||||
*/
|
||||
type Props = {
|
||||
|
||||
/**
|
||||
* True if it's a lonely meeting (participant count excluding fakes is 1).
|
||||
*/
|
||||
_isLonelyMeeting: boolean,
|
||||
|
||||
/**
|
||||
* Color schemed styles of the component.
|
||||
*/
|
||||
_styles: StyleType,
|
||||
|
||||
/**
|
||||
* The Redux Dispatch function.
|
||||
*/
|
||||
dispatch: Function,
|
||||
|
||||
/**
|
||||
* Function to be used to translate i18n labels.
|
||||
*/
|
||||
t: Function
|
||||
};
|
||||
|
||||
/**
|
||||
* Implements the UI elements to be displayed in the lonely meeting experience.
|
||||
*/
|
||||
class LonelyMeetingExperience extends PureComponent<Props> {
|
||||
/**
|
||||
* Instantiates a new component.
|
||||
*
|
||||
* @inheritdoc
|
||||
*/
|
||||
constructor(props: Props) {
|
||||
super(props);
|
||||
|
||||
this._onPress = this._onPress.bind(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements {@code PureComponent#render}.
|
||||
*
|
||||
* @inheritdoc
|
||||
*/
|
||||
render() {
|
||||
const { _isLonelyMeeting, _styles, t } = this.props;
|
||||
|
||||
if (!_isLonelyMeeting) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<View style = { styles.lonelyMeetingContainer }>
|
||||
<Text
|
||||
style = { [
|
||||
styles.lonelyMessage,
|
||||
_styles.lonelyMessage
|
||||
] }>
|
||||
{ t('lonelyMeetingExperience.youAreAlone') }
|
||||
</Text>
|
||||
<TouchableOpacity
|
||||
onPress = { this._onPress }
|
||||
style = { [
|
||||
styles.lonelyButton,
|
||||
_styles.lonelyButton
|
||||
] }>
|
||||
<Icon
|
||||
size = { 24 }
|
||||
src = { IconAddPeople }
|
||||
style = { styles.lonelyButtonComponents } />
|
||||
<Text
|
||||
style = { [
|
||||
styles.lonelyButtonComponents,
|
||||
_styles.lonelyMessage
|
||||
] }>
|
||||
{ t('lonelyMeetingExperience.button') }
|
||||
</Text>
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
_onPress: () => void;
|
||||
|
||||
/**
|
||||
* Callback for the onPress function of the button.
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
_onPress() {
|
||||
this.props.dispatch(doInvitePeople());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Maps parts of the Redux state to the props of this Component.
|
||||
*
|
||||
* @param {Object} state - The redux state.
|
||||
* @private
|
||||
* @returns {Props}
|
||||
*/
|
||||
function _mapStateToProps(state): $Shape<Props> {
|
||||
return {
|
||||
_isLonelyMeeting: getParticipantCount(state) === 1,
|
||||
_styles: ColorSchemeRegistry.get(state, 'Conference')
|
||||
};
|
||||
}
|
||||
|
||||
export default connect(_mapStateToProps)(translate(LonelyMeetingExperience));
|
||||
@@ -1,5 +1,5 @@
|
||||
import { BoxModel, ColorPalette, fixAndroidViewClipping } from '../../../base/styles';
|
||||
|
||||
import { ColorSchemeRegistry, schemeColor } from '../../../base/color-scheme';
|
||||
import { FILMSTRIP_SIZE } from '../../../filmstrip';
|
||||
|
||||
export const NAVBAR_GRADIENT_COLORS = [ '#000000FF', '#00000000' ];
|
||||
@@ -72,6 +72,29 @@ export default {
|
||||
top: 0
|
||||
},
|
||||
|
||||
lonelyButton: {
|
||||
alignItems: 'center',
|
||||
borderRadius: 24,
|
||||
flexDirection: 'row',
|
||||
height: 48,
|
||||
justifyContent: 'space-around',
|
||||
paddingHorizontal: 12
|
||||
},
|
||||
|
||||
lonelyButtonComponents: {
|
||||
marginHorizontal: 6
|
||||
},
|
||||
|
||||
lonelyMeetingContainer: {
|
||||
alignSelf: 'stretch',
|
||||
alignItems: 'center',
|
||||
padding: BoxModel.padding * 2
|
||||
},
|
||||
|
||||
lonelyMessage: {
|
||||
paddingVertical: 12
|
||||
},
|
||||
|
||||
navBarButton: {
|
||||
iconStyle: {
|
||||
color: ColorPalette.white,
|
||||
@@ -146,3 +169,13 @@ export default {
|
||||
top: BoxModel.margin * 3
|
||||
}
|
||||
};
|
||||
|
||||
ColorSchemeRegistry.register('Conference', {
|
||||
lonelyButton: {
|
||||
backgroundColor: schemeColor('inviteButtonBackground')
|
||||
},
|
||||
|
||||
lonelyMessage: {
|
||||
color: schemeColor('onVideoText')
|
||||
}
|
||||
});
|
||||
|
||||
@@ -10,6 +10,7 @@ import {
|
||||
sendAnalytics
|
||||
} from '../../../analytics';
|
||||
import { Icon, IconMenuDown, IconMenuUp } from '../../../base/icons';
|
||||
import { translate } from '../../../base/i18n';
|
||||
import { connect } from '../../../base/redux';
|
||||
import { dockToolbox } from '../../../toolbox';
|
||||
|
||||
@@ -87,7 +88,12 @@ type Props = {
|
||||
/**
|
||||
* The redux {@code dispatch} function.
|
||||
*/
|
||||
dispatch: Dispatch<any>
|
||||
dispatch: Dispatch<any>,
|
||||
|
||||
/**
|
||||
* Invoked to obtain translated strings.
|
||||
*/
|
||||
t: Function
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -338,10 +344,12 @@ class Filmstrip extends Component <Props> {
|
||||
*/
|
||||
_renderToggleButton() {
|
||||
const icon = this.props._visible ? IconMenuDown : IconMenuUp;
|
||||
const { t } = this.props;
|
||||
|
||||
return (
|
||||
<div className = 'filmstrip__toolbar'>
|
||||
<button
|
||||
aria-label = { t('toolbar.accessibilityLabel.toggleFilmstrip') }
|
||||
id = 'toggleFilmstripButton'
|
||||
onClick = { this._onToolbarToggleFilmstrip }>
|
||||
<Icon src = { icon } />
|
||||
@@ -387,4 +395,4 @@ function _mapStateToProps(state) {
|
||||
};
|
||||
}
|
||||
|
||||
export default connect(_mapStateToProps)(Filmstrip);
|
||||
export default translate(connect(_mapStateToProps)(Filmstrip));
|
||||
|
||||
@@ -15,7 +15,7 @@ StateListenerRegistry.register(
|
||||
const state = store.getState();
|
||||
|
||||
if (shouldDisplayTileView(state)) {
|
||||
const gridDimensions = getTileViewGridDimensions(state['features/base/participants'].length);
|
||||
const gridDimensions = getTileViewGridDimensions(state);
|
||||
const oldGridDimensions = state['features/filmstrip'].tileViewDimensions.gridDimensions;
|
||||
const { clientHeight, clientWidth } = state['features/base/responsive-ui'];
|
||||
|
||||
@@ -41,7 +41,7 @@ StateListenerRegistry.register(
|
||||
const { clientHeight, clientWidth } = state['features/base/responsive-ui'];
|
||||
|
||||
store.dispatch(setTileViewDimensions(
|
||||
getTileViewGridDimensions(state['features/base/participants'].length), {
|
||||
getTileViewGridDimensions(state), {
|
||||
clientHeight,
|
||||
clientWidth
|
||||
}));
|
||||
|
||||
31
react/features/invite/actions.native.js
Normal file
31
react/features/invite/actions.native.js
Normal file
@@ -0,0 +1,31 @@
|
||||
// @flow
|
||||
|
||||
import type { Dispatch } from 'redux';
|
||||
|
||||
import { getFeatureFlag, INVITE_ENABLED } from '../base/flags';
|
||||
import { beginShareRoom } from '../share-room';
|
||||
|
||||
import { setAddPeopleDialogVisible } from './actions.any';
|
||||
import { isAddPeopleEnabled, isDialOutEnabled } from './functions';
|
||||
|
||||
export * from './actions.any';
|
||||
|
||||
/**
|
||||
* Starts the process for inviting people. Dpending on the sysstem config it
|
||||
* may use the system share sheet or the invite peoplee dialog.
|
||||
*
|
||||
* @returns {Function}
|
||||
*/
|
||||
export function doInvitePeople() {
|
||||
return (dispatch: Dispatch<any>, getState: Function) => {
|
||||
const state = getState();
|
||||
const addPeopleEnabled = getFeatureFlag(state, INVITE_ENABLED, true)
|
||||
&& (isAddPeopleEnabled(state) || isDialOutEnabled(state));
|
||||
|
||||
if (addPeopleEnabled) {
|
||||
return dispatch(setAddPeopleDialogVisible(true));
|
||||
}
|
||||
|
||||
return dispatch(beginShareRoom());
|
||||
};
|
||||
}
|
||||
1
react/features/invite/actions.web.js
Normal file
1
react/features/invite/actions.web.js
Normal file
@@ -0,0 +1 @@
|
||||
export * from './actions.any';
|
||||
@@ -13,9 +13,18 @@ import {
|
||||
View
|
||||
} from 'react-native';
|
||||
|
||||
import { ColorSchemeRegistry } from '../../../../base/color-scheme';
|
||||
import { AlertDialog, openDialog } from '../../../../base/dialog';
|
||||
import { translate } from '../../../../base/i18n';
|
||||
import { Icon, IconCancelSelection, IconCheck, IconClose, IconPhone, IconSearch } from '../../../../base/icons';
|
||||
import {
|
||||
Icon,
|
||||
IconCancelSelection,
|
||||
IconCheck,
|
||||
IconClose,
|
||||
IconPhone,
|
||||
IconSearch,
|
||||
IconShare
|
||||
} from '../../../../base/icons';
|
||||
import {
|
||||
AvatarListItem,
|
||||
HeaderWithNavigation,
|
||||
@@ -23,8 +32,9 @@ import {
|
||||
type Item
|
||||
} from '../../../../base/react';
|
||||
import { connect } from '../../../../base/redux';
|
||||
import { beginShareRoom } from '../../../../share-room';
|
||||
|
||||
import { setAddPeopleDialogVisible } from '../../../actions';
|
||||
import { setAddPeopleDialogVisible } from '../../../actions.native';
|
||||
|
||||
import AbstractAddPeopleDialog, {
|
||||
type Props as AbstractProps,
|
||||
@@ -39,6 +49,11 @@ import styles, {
|
||||
|
||||
type Props = AbstractProps & {
|
||||
|
||||
/**
|
||||
* The color schemed style of the Header.
|
||||
*/
|
||||
_headerStyles: Object,
|
||||
|
||||
/**
|
||||
* True if the invite dialog should be open, false otherwise.
|
||||
*/
|
||||
@@ -113,6 +128,7 @@ class AddPeopleDialog extends AbstractAddPeopleDialog<Props, State> {
|
||||
this._onCloseAddPeopleDialog = this._onCloseAddPeopleDialog.bind(this);
|
||||
this._onInvite = this._onInvite.bind(this);
|
||||
this._onPressItem = this._onPressItem.bind(this);
|
||||
this._onShareMeeting = this._onShareMeeting.bind(this);
|
||||
this._onTypeQuery = this._onTypeQuery.bind(this);
|
||||
this._setFieldRef = this._setFieldRef.bind(this);
|
||||
}
|
||||
@@ -137,7 +153,8 @@ class AddPeopleDialog extends AbstractAddPeopleDialog<Props, State> {
|
||||
render() {
|
||||
const {
|
||||
_addPeopleEnabled,
|
||||
_dialOutEnabled
|
||||
_dialOutEnabled,
|
||||
_headerStyles
|
||||
} = this.props;
|
||||
const { inviteItems, selectableItems } = this.state;
|
||||
|
||||
@@ -206,6 +223,9 @@ class AddPeopleDialog extends AbstractAddPeopleDialog<Props, State> {
|
||||
renderItem = { this._renderItem } />
|
||||
</View>
|
||||
</SafeAreaView>
|
||||
<SafeAreaView style = { [ styles.bottomBar, _headerStyles.headerOverlay ] }>
|
||||
{ this._renderShareMeetingButton() }
|
||||
</SafeAreaView>
|
||||
</KeyboardAvoidingView>
|
||||
</SlidingView>
|
||||
);
|
||||
@@ -349,6 +369,22 @@ class AddPeopleDialog extends AbstractAddPeopleDialog<Props, State> {
|
||||
};
|
||||
}
|
||||
|
||||
_onShareMeeting: () => void
|
||||
|
||||
/**
|
||||
* Shows the system share sheet to share the meeting information.
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
_onShareMeeting() {
|
||||
if (this.state.inviteItems.length > 0) {
|
||||
// The use probably intended to invite people.
|
||||
this._onInvite();
|
||||
} else {
|
||||
this.props.dispatch(beginShareRoom());
|
||||
}
|
||||
}
|
||||
|
||||
_onTypeQuery: string => void
|
||||
|
||||
/**
|
||||
@@ -526,6 +562,24 @@ class AddPeopleDialog extends AbstractAddPeopleDialog<Props, State> {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders a button to share the meeting info.
|
||||
*
|
||||
* @returns {React#Element<*>}
|
||||
*/
|
||||
_renderShareMeetingButton() {
|
||||
const { _headerStyles } = this.props;
|
||||
|
||||
return (
|
||||
<TouchableOpacity
|
||||
onPress = { this._onShareMeeting }>
|
||||
<Icon
|
||||
src = { IconShare }
|
||||
style = { [ _headerStyles.headerButtonText, styles.shareIcon ] } />
|
||||
</TouchableOpacity>
|
||||
);
|
||||
}
|
||||
|
||||
_setFieldRef: ?TextInput => void
|
||||
|
||||
/**
|
||||
@@ -567,6 +621,7 @@ class AddPeopleDialog extends AbstractAddPeopleDialog<Props, State> {
|
||||
function _mapStateToProps(state: Object) {
|
||||
return {
|
||||
..._abstractMapStateToProps(state),
|
||||
_headerStyles: ColorSchemeRegistry.get(state, 'Header'),
|
||||
_isVisible: state['features/invite'].inviteDialogVisible
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,15 +2,13 @@
|
||||
|
||||
import type { Dispatch } from 'redux';
|
||||
|
||||
import { getFeatureFlag, INVITE_ENABLED } from '../../../../base/flags';
|
||||
import { translate } from '../../../../base/i18n';
|
||||
import { IconAddPeople } from '../../../../base/icons';
|
||||
import { connect } from '../../../../base/redux';
|
||||
import { AbstractButton } from '../../../../base/toolbox';
|
||||
import type { AbstractButtonProps } from '../../../../base/toolbox';
|
||||
|
||||
import { setAddPeopleDialogVisible } from '../../../actions';
|
||||
import { isAddPeopleEnabled, isDialOutEnabled } from '../../../functions';
|
||||
import { doInvitePeople } from '../../../actions.native';
|
||||
|
||||
type Props = AbstractButtonProps & {
|
||||
|
||||
@@ -36,28 +34,9 @@ class InviteButton extends AbstractButton<Props, *> {
|
||||
* @returns {void}
|
||||
*/
|
||||
_handleClick() {
|
||||
this.props.dispatch(setAddPeopleDialogVisible(true));
|
||||
this.props.dispatch(doInvitePeople());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Maps (parts of) the redux state to {@link InviteButton}'s React {@code Component}
|
||||
* props.
|
||||
*
|
||||
* @param {Object} state - The redux store/state.
|
||||
* @param {Object} ownProps - The properties explicitly passed to the component
|
||||
* instance.
|
||||
* @private
|
||||
* @returns {Object}
|
||||
*/
|
||||
function _mapStateToProps(state: Object, ownProps: Object) {
|
||||
const addPeopleEnabled = getFeatureFlag(state, INVITE_ENABLED, true)
|
||||
&& (isAddPeopleEnabled(state) || isDialOutEnabled(state));
|
||||
const { visible = Boolean(addPeopleEnabled) } = ownProps;
|
||||
|
||||
return {
|
||||
visible
|
||||
};
|
||||
}
|
||||
|
||||
export default translate(connect(_mapStateToProps)(InviteButton));
|
||||
export default translate(connect()(InviteButton));
|
||||
|
||||
@@ -23,6 +23,12 @@ export default {
|
||||
flex: 1
|
||||
},
|
||||
|
||||
bottomBar: {
|
||||
alignItems: 'center',
|
||||
flexDirection: 'row',
|
||||
justifyContent: 'space-around'
|
||||
},
|
||||
|
||||
clearButton: {
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
@@ -124,6 +130,10 @@ export default {
|
||||
width: ICON_SIZE + 16
|
||||
},
|
||||
|
||||
shareIcon: {
|
||||
fontSize: 42
|
||||
},
|
||||
|
||||
unselectIcon: {
|
||||
color: LIGHT_GREY,
|
||||
fontSize: 16,
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
// @flow
|
||||
|
||||
export * from './native';
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
// @flow
|
||||
|
||||
import type { Dispatch } from 'redux';
|
||||
|
||||
import { translate } from '../../../../base/i18n';
|
||||
import { IconInfo } from '../../../../base/icons';
|
||||
import { connect } from '../../../../base/redux';
|
||||
import { AbstractButton } from '../../../../base/toolbox';
|
||||
import type { AbstractButtonProps } from '../../../../base/toolbox';
|
||||
import { beginShareRoom } from '../../../../share-room';
|
||||
|
||||
type Props = AbstractButtonProps & {
|
||||
|
||||
/**
|
||||
* The Redux dispatch function.
|
||||
*/
|
||||
dispatch: Dispatch<any>
|
||||
};
|
||||
|
||||
/**
|
||||
* Implements an {@link AbstractButton} to open the info dialog of the meeting.
|
||||
*/
|
||||
class InfoDialogButton extends AbstractButton<Props, *> {
|
||||
accessibilityLabel = 'info.accessibilityLabel';
|
||||
icon = IconInfo;
|
||||
label = 'info.label';
|
||||
|
||||
/**
|
||||
* Handles clicking / pressing the button, and opens the appropriate dialog.
|
||||
*
|
||||
* @private
|
||||
* @returns {void}
|
||||
*/
|
||||
_handleClick() {
|
||||
this.props.dispatch(beginShareRoom());
|
||||
}
|
||||
}
|
||||
|
||||
export default translate(connect()(InfoDialogButton));
|
||||
@@ -1,3 +0,0 @@
|
||||
// @flow
|
||||
|
||||
export { default as InfoDialogButton } from './InfoDialogButton';
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user