mirror of
https://gitcode.com/GitHub_Trending/ji/jitsi-meet.git
synced 2026-05-23 02:37:46 +00:00
Compare commits
21 Commits
5587
...
new-update
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
63754f01a5 | ||
|
|
dcf677bdf0 | ||
|
|
eaea2cdef0 | ||
|
|
bcad87e894 | ||
|
|
d500493649 | ||
|
|
8ad3ef0022 | ||
|
|
d0664d9ea0 | ||
|
|
45c40d7afc | ||
|
|
e33edfd2a5 | ||
|
|
96b2a07172 | ||
|
|
0e8c01af75 | ||
|
|
3049ad6dbf | ||
|
|
9a30ad87a7 | ||
|
|
11c05560c4 | ||
|
|
d92fa59c74 | ||
|
|
4eb1d16faa | ||
|
|
91adc70724 | ||
|
|
15b083c182 | ||
|
|
26fdaf7b8d | ||
|
|
64a9874d63 | ||
|
|
753cffc458 |
@@ -8,12 +8,8 @@ libs/*
|
||||
resources/*
|
||||
react/features/stream-effects/virtual-background/vendor/*
|
||||
load-test/*
|
||||
react/features/facial-recognition/resources/*
|
||||
|
||||
# ESLint will by default ignore its own configuration file. However, there does
|
||||
# not seem to be a reason why we will want to risk being inconsistent with our
|
||||
# remaining JavaScript source code.
|
||||
!.eslintrc.js
|
||||
|
||||
# Not worth it.
|
||||
actionTypes.js
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
module.exports = {
|
||||
'extends': [
|
||||
'@jitsi/eslint-config'
|
||||
'eslint-config-jitsi'
|
||||
]
|
||||
};
|
||||
|
||||
6
.github/workflows/ci.yml
vendored
6
.github/workflows/ci.yml
vendored
@@ -10,12 +10,8 @@ jobs:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: '16.x'
|
||||
node-version: '12.x'
|
||||
- run: npm install
|
||||
- name: Check git status
|
||||
run: git status
|
||||
- name: Check git diff
|
||||
run: git diff
|
||||
- name: Check if the git repository is clean
|
||||
run: exit $( git status --porcelain --untracked-files=no | head -255 | wc -l )
|
||||
- run: npm run lint
|
||||
|
||||
2
.npmrc
2
.npmrc
@@ -1,3 +1 @@
|
||||
package-lock=true
|
||||
; FIXME Set legacy-peer-deps=false when we upgrade RN.
|
||||
legacy-peer-deps=true
|
||||
|
||||
42
Makefile
42
Makefile
@@ -7,7 +7,6 @@ OLM_DIR = node_modules/@matrix-org/olm
|
||||
RNNOISE_WASM_DIR = node_modules/rnnoise-wasm/dist/
|
||||
TFLITE_WASM = react/features/stream-effects/virtual-background/vendor/tflite
|
||||
MEET_MODELS_DIR = react/features/stream-effects/virtual-background/vendor/models/
|
||||
FACIAL_MODELS_DIR = react/features/facial-recognition/resources
|
||||
NODE_SASS = ./node_modules/.bin/sass
|
||||
NPM = npm
|
||||
OUTPUT_DIR = .
|
||||
@@ -15,12 +14,12 @@ STYLES_BUNDLE = css/all.bundle.css
|
||||
STYLES_DESTINATION = css/all.css
|
||||
STYLES_MAIN = css/main.scss
|
||||
WEBPACK = ./node_modules/.bin/webpack
|
||||
WEBPACK_DEV_SERVER = ./node_modules/.bin/webpack serve --mode development
|
||||
WEBPACK_DEV_SERVER = ./node_modules/.bin/webpack-dev-server
|
||||
|
||||
all: compile deploy clean
|
||||
|
||||
compile: compile-load-test
|
||||
$(WEBPACK)
|
||||
$(WEBPACK) -p
|
||||
|
||||
compile-load-test:
|
||||
${NPM} install --prefix resources/load-test && ${NPM} run build --prefix resources/load-test
|
||||
@@ -29,7 +28,7 @@ clean:
|
||||
rm -fr $(BUILD_DIR)
|
||||
|
||||
.NOTPARALLEL:
|
||||
deploy: deploy-init deploy-appbundle deploy-rnnoise-binary deploy-tflite deploy-meet-models deploy-lib-jitsi-meet deploy-libflac deploy-olm deploy-css deploy-local deploy-facial-expressions
|
||||
deploy: deploy-init deploy-appbundle deploy-rnnoise-binary deploy-tflite deploy-meet-models deploy-lib-jitsi-meet deploy-libflac deploy-olm deploy-css deploy-local
|
||||
|
||||
deploy-init:
|
||||
rm -fr $(DEPLOY_DIR)
|
||||
@@ -38,27 +37,23 @@ deploy-init:
|
||||
deploy-appbundle:
|
||||
cp \
|
||||
$(BUILD_DIR)/app.bundle.min.js \
|
||||
$(BUILD_DIR)/app.bundle.min.js.map \
|
||||
$(BUILD_DIR)/app.bundle.min.map \
|
||||
$(BUILD_DIR)/do_external_connect.min.js \
|
||||
$(BUILD_DIR)/do_external_connect.min.js.map \
|
||||
$(BUILD_DIR)/do_external_connect.min.map \
|
||||
$(BUILD_DIR)/external_api.min.js \
|
||||
$(BUILD_DIR)/external_api.min.js.map \
|
||||
$(BUILD_DIR)/external_api.min.map \
|
||||
$(BUILD_DIR)/flacEncodeWorker.min.js \
|
||||
$(BUILD_DIR)/flacEncodeWorker.min.js.map \
|
||||
$(BUILD_DIR)/flacEncodeWorker.min.map \
|
||||
$(BUILD_DIR)/dial_in_info_bundle.min.js \
|
||||
$(BUILD_DIR)/dial_in_info_bundle.min.js.map \
|
||||
$(BUILD_DIR)/dial_in_info_bundle.min.map \
|
||||
$(BUILD_DIR)/alwaysontop.min.js \
|
||||
$(BUILD_DIR)/alwaysontop.min.js.map \
|
||||
$(BUILD_DIR)/alwaysontop.min.map \
|
||||
$(OUTPUT_DIR)/analytics-ga.js \
|
||||
$(BUILD_DIR)/analytics-ga.min.js \
|
||||
$(BUILD_DIR)/analytics-ga.min.js.map \
|
||||
$(BUILD_DIR)/facial-expressions-worker.min.js \
|
||||
$(BUILD_DIR)/facial-expressions-worker.min.js.map \
|
||||
$(DEPLOY_DIR)
|
||||
cp \
|
||||
$(BUILD_DIR)/analytics-ga.min.map \
|
||||
$(BUILD_DIR)/close3.min.js \
|
||||
$(BUILD_DIR)/close3.min.js.map \
|
||||
$(DEPLOY_DIR) || true
|
||||
$(BUILD_DIR)/close3.min.map \
|
||||
$(DEPLOY_DIR)
|
||||
|
||||
deploy-lib-jitsi-meet:
|
||||
cp \
|
||||
@@ -88,17 +83,12 @@ deploy-rnnoise-binary:
|
||||
deploy-tflite:
|
||||
cp \
|
||||
$(TFLITE_WASM)/*.wasm \
|
||||
$(DEPLOY_DIR)
|
||||
$(DEPLOY_DIR)
|
||||
|
||||
deploy-meet-models:
|
||||
cp \
|
||||
$(MEET_MODELS_DIR)/*.tflite \
|
||||
$(DEPLOY_DIR)
|
||||
|
||||
deploy-facial-expressions:
|
||||
cp \
|
||||
$(FACIAL_MODELS_DIR)/* \
|
||||
$(DEPLOY_DIR)
|
||||
$(DEPLOY_DIR)
|
||||
|
||||
deploy-css:
|
||||
$(NODE_SASS) $(STYLES_MAIN) $(STYLES_BUNDLE) && \
|
||||
@@ -109,8 +99,8 @@ deploy-local:
|
||||
([ ! -x deploy-local.sh ] || ./deploy-local.sh)
|
||||
|
||||
.NOTPARALLEL:
|
||||
dev: deploy-init deploy-css deploy-rnnoise-binary deploy-tflite deploy-meet-models deploy-lib-jitsi-meet deploy-libflac deploy-olm deploy-facial-expressions
|
||||
$(WEBPACK_DEV_SERVER)
|
||||
dev: deploy-init deploy-css deploy-rnnoise-binary deploy-tflite deploy-meet-models deploy-lib-jitsi-meet deploy-libflac deploy-olm
|
||||
$(WEBPACK_DEV_SERVER) --detect-circular-deps
|
||||
|
||||
source-package:
|
||||
mkdir -p source_package/jitsi-meet/css && \
|
||||
|
||||
@@ -50,7 +50,7 @@ If you'd like to run your own Jitsi Meet installation head over to the [handbook
|
||||
We provide Debian packages and a comprehensive Docker setup to make deployments as simple as possible.
|
||||
Advanced users also have the possibility of building all the components from source.
|
||||
|
||||
You can check the latest releases [here](https://jitsi.github.io/handbook/docs/releases).
|
||||
You can check the latest releases [[here](https://jitsi.github.io/handbook/docs/releases).
|
||||
|
||||
## Jitsi as a Service
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ public class MainActivity extends JitsiMeetActivity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
JitsiMeet.showSplashScreen(this);
|
||||
super.onCreate(null);
|
||||
super.onCreate(savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -150,8 +150,8 @@ public class MainActivity extends JitsiMeetActivity {
|
||||
// Set default options
|
||||
JitsiMeetConferenceOptions defaultOptions
|
||||
= new JitsiMeetConferenceOptions.Builder()
|
||||
.setWelcomePageEnabled(true)
|
||||
.setServerURL(buildURL(defaultURL))
|
||||
.setFeatureFlag("welcomepage.enabled", true)
|
||||
.setFeatureFlag("call-integration.enabled", false)
|
||||
.setFeatureFlag("resolution", 360)
|
||||
.setFeatureFlag("server-url-change.enabled", !configurationByRestrictions)
|
||||
|
||||
@@ -110,7 +110,7 @@ allprojects {
|
||||
|
||||
project.version = "${json.version}-jitsi-${versionQualifierNumber}"
|
||||
|
||||
task jitsiAndroidSourcesJar(type: Jar) {
|
||||
task androidSourcesJar(type: Jar) {
|
||||
classifier = 'sources'
|
||||
from android.sourceSets.main.java.source
|
||||
}
|
||||
@@ -124,7 +124,7 @@ allprojects {
|
||||
artifact("${project.buildDir}/outputs/aar/${project.name}-release.aar") {
|
||||
extension "aar"
|
||||
}
|
||||
artifact(jitsiAndroidSourcesJar)
|
||||
artifact(androidSourcesJar)
|
||||
pom.withXml {
|
||||
def pomXml = asNode()
|
||||
pomXml.appendNode('name', project.name)
|
||||
|
||||
@@ -26,5 +26,5 @@ android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
android.bundle.enableUncompressedNativeLibs=false
|
||||
|
||||
appVersion=21.5.0
|
||||
sdkVersion=4.0.0
|
||||
appVersion=21.4.1
|
||||
sdkVersion=3.10.2
|
||||
|
||||
@@ -48,7 +48,6 @@ dependencies {
|
||||
implementation 'com.jakewharton.timber:timber:4.7.1'
|
||||
implementation 'com.squareup.duktape:duktape-android:1.3.0'
|
||||
implementation 'com.google.code.gson:gson:2.8.6'
|
||||
implementation "androidx.startup:startup-runtime:1.1.0"
|
||||
|
||||
if (rootProject.ext.libreBuild) {
|
||||
implementation(project(':react-native-device-info')) {
|
||||
@@ -70,15 +69,9 @@ dependencies {
|
||||
implementation project(':react-native-calendar-events')
|
||||
implementation project(':react-native-community_netinfo')
|
||||
implementation project(':react-native-default-preference')
|
||||
implementation project(':react-native-gesture-handler')
|
||||
implementation project(':react-native-get-random-values')
|
||||
implementation project(':react-native-immersive')
|
||||
implementation project(':react-native-keep-awake')
|
||||
implementation project(':react-native-masked-view_masked-view')
|
||||
implementation project(':react-native-performance')
|
||||
implementation project(':react-native-reanimated')
|
||||
implementation project(':react-native-safe-area-context')
|
||||
implementation project(':react-native-screens')
|
||||
implementation project(':react-native-slider')
|
||||
implementation project(':react-native-sound')
|
||||
implementation project(':react-native-splash-screen')
|
||||
|
||||
@@ -57,14 +57,6 @@
|
||||
android:enabled="false"
|
||||
tools:replace="android:authorities">
|
||||
</provider>
|
||||
<provider
|
||||
android:name="androidx.startup.InitializationProvider"
|
||||
android:authorities="${applicationId}.androidx-startup"
|
||||
android:exported="false">
|
||||
<meta-data android:name="org.jitsi.meet.sdk.JitsiInitializer"
|
||||
android:value="androidx.startup" />
|
||||
</provider>
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -1,42 +0,0 @@
|
||||
/*
|
||||
* Copyright @ 2021-present 8x8, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.jitsi.meet.sdk;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.startup.Initializer;
|
||||
|
||||
import com.facebook.soloader.SoLoader;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class JitsiInitializer implements Initializer<Boolean> {
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Boolean create(@NonNull Context context) {
|
||||
SoLoader.init(context, /* native exopackage */ false);
|
||||
return true;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public List<Class<? extends Initializer<?>>> dependencies() {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,7 @@ import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
|
||||
import com.facebook.react.modules.core.PermissionListener;
|
||||
@@ -38,7 +38,7 @@ import android.app.Activity;
|
||||
* A base activity for SDK users to embed. It uses {@link JitsiMeetFragment} to do the heavy
|
||||
* lifting and wires the remaining Activity lifecycle methods so it works out of the box.
|
||||
*/
|
||||
public class JitsiMeetActivity extends AppCompatActivity
|
||||
public class JitsiMeetActivity extends FragmentActivity
|
||||
implements JitsiMeetActivityInterface {
|
||||
|
||||
protected static final String TAG = JitsiMeetActivity.class.getSimpleName();
|
||||
|
||||
@@ -45,6 +45,11 @@ public class JitsiMeetConferenceOptions implements Parcelable {
|
||||
*/
|
||||
private String token;
|
||||
|
||||
/**
|
||||
* Color scheme override, see: https://github.com/jitsi/jitsi-meet/blob/dbedee5e22e5dcf9c92db96ef5bb3c9982fc526d/react/features/base/color-scheme/defaultScheme.js
|
||||
*/
|
||||
private Bundle colorScheme;
|
||||
|
||||
/**
|
||||
* Config. See: https://github.com/jitsi/jitsi-meet/blob/master/config.js
|
||||
*/
|
||||
@@ -72,6 +77,10 @@ public class JitsiMeetConferenceOptions implements Parcelable {
|
||||
return token;
|
||||
}
|
||||
|
||||
public Bundle getColorScheme() {
|
||||
return colorScheme;
|
||||
}
|
||||
|
||||
public Bundle getFeatureFlags() {
|
||||
return featureFlags;
|
||||
}
|
||||
@@ -88,6 +97,7 @@ public class JitsiMeetConferenceOptions implements Parcelable {
|
||||
private String room;
|
||||
private String token;
|
||||
|
||||
private Bundle colorScheme;
|
||||
private Bundle config;
|
||||
private Bundle featureFlags;
|
||||
|
||||
@@ -142,6 +152,19 @@ public class JitsiMeetConferenceOptions implements Parcelable {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the color scheme override so the app is themed. See:
|
||||
* https://github.com/jitsi/jitsi-meet/blob/master/react/features/base/color-scheme/defaultScheme.js
|
||||
* for the structure.
|
||||
* @param colorScheme - A color scheme to be applied to the app.
|
||||
* @return - The {@link Builder} object itself so the method calls can be chained.
|
||||
*/
|
||||
public Builder setColorScheme(Bundle colorScheme) {
|
||||
this.colorScheme = colorScheme;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates the conference will be joined with the microphone muted.
|
||||
* @param audioMuted - Muted indication.
|
||||
@@ -175,6 +198,19 @@ public class JitsiMeetConferenceOptions implements Parcelable {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the welcome page enabled / disabled. The welcome page lists recent meetings and
|
||||
* calendar appointments and it's meant to be used by standalone applications. Defaults to
|
||||
* false.
|
||||
* @param enabled - Whether the welcome page should be enabled or not.
|
||||
* @return - The {@link Builder} object itself so the method calls can be chained.
|
||||
*/
|
||||
public Builder setWelcomePageEnabled(boolean enabled) {
|
||||
this.featureFlags.putBoolean("welcomepage.enabled", enabled);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setFeatureFlag(String flag, boolean value) {
|
||||
this.featureFlags.putBoolean(flag, value);
|
||||
|
||||
@@ -240,6 +276,7 @@ public class JitsiMeetConferenceOptions implements Parcelable {
|
||||
options.serverURL = this.serverURL;
|
||||
options.room = this.room;
|
||||
options.token = this.token;
|
||||
options.colorScheme = this.colorScheme;
|
||||
options.config = this.config;
|
||||
options.featureFlags = this.featureFlags;
|
||||
options.userInfo = this.userInfo;
|
||||
@@ -255,9 +292,11 @@ public class JitsiMeetConferenceOptions implements Parcelable {
|
||||
serverURL = (URL) in.readSerializable();
|
||||
room = in.readString();
|
||||
token = in.readString();
|
||||
colorScheme = in.readBundle();
|
||||
config = in.readBundle();
|
||||
featureFlags = in.readBundle();
|
||||
userInfo = new JitsiMeetUserInfo(in.readBundle());
|
||||
byte tmpAudioMuted = in.readByte();
|
||||
}
|
||||
|
||||
Bundle asProps() {
|
||||
@@ -270,6 +309,10 @@ public class JitsiMeetConferenceOptions implements Parcelable {
|
||||
|
||||
props.putBundle("flags", featureFlags);
|
||||
|
||||
if (colorScheme != null) {
|
||||
props.putBundle("colorScheme", colorScheme);
|
||||
}
|
||||
|
||||
Bundle urlProps = new Bundle();
|
||||
|
||||
// The room is fully qualified
|
||||
@@ -318,6 +361,7 @@ public class JitsiMeetConferenceOptions implements Parcelable {
|
||||
dest.writeSerializable(serverURL);
|
||||
dest.writeString(room);
|
||||
dest.writeString(token);
|
||||
dest.writeBundle(colorScheme);
|
||||
dest.writeBundle(config);
|
||||
dest.writeBundle(featureFlags);
|
||||
dest.writeBundle(userInfo != null ? userInfo.asBundle() : new Bundle());
|
||||
|
||||
@@ -5,6 +5,7 @@ import java.util.List;
|
||||
|
||||
public class NotificationChannels {
|
||||
static final String ONGOING_CONFERENCE_CHANNEL_ID = "JitsiOngoingConferenceChannel";
|
||||
static final String ONGOING_CONFERNCE_CHANNEL_NAME = "Ongoing Conference Notifications";
|
||||
|
||||
public static List<String> allIds = new ArrayList<String>() {{ add(ONGOING_CONFERENCE_CHANNEL_ID); }};
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package org.jitsi.meet.sdk;
|
||||
|
||||
import static org.jitsi.meet.sdk.NotificationChannels.ONGOING_CONFERENCE_CHANNEL_ID;
|
||||
import static org.jitsi.meet.sdk.NotificationChannels.ONGOING_CONFERNCE_CHANNEL_NAME;
|
||||
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationChannel;
|
||||
@@ -65,7 +66,7 @@ class OngoingNotification {
|
||||
return;
|
||||
}
|
||||
|
||||
channel = new NotificationChannel(ONGOING_CONFERENCE_CHANNEL_ID, context.getString(R.string.ongoing_notification_action_unmute), NotificationManager.IMPORTANCE_DEFAULT);
|
||||
channel = new NotificationChannel(ONGOING_CONFERENCE_CHANNEL_ID, ONGOING_CONFERNCE_CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT);
|
||||
channel.enableLights(false);
|
||||
channel.enableVibration(false);
|
||||
channel.setShowBadge(false);
|
||||
|
||||
@@ -30,6 +30,7 @@ import com.facebook.react.devsupport.DevInternalSettings;
|
||||
import com.facebook.react.jscexecutor.JSCExecutorFactory;
|
||||
import com.facebook.react.modules.core.DeviceEventManagerModule;
|
||||
import com.facebook.react.uimanager.ViewManager;
|
||||
import com.facebook.soloader.SoLoader;
|
||||
import com.oney.WebRTCModule.RTCVideoViewManager;
|
||||
import com.oney.WebRTCModule.WebRTCModule;
|
||||
|
||||
@@ -173,29 +174,25 @@ class ReactInstanceManagerHolder {
|
||||
return;
|
||||
}
|
||||
|
||||
SoLoader.init(activity.getApplication(), /* native exopackage */ false);
|
||||
|
||||
List<ReactPackage> packages
|
||||
= new ArrayList<>(Arrays.asList(
|
||||
new com.reactnativecommunity.asyncstorage.AsyncStoragePackage(),
|
||||
new com.ocetnik.timer.BackgroundTimerPackage(),
|
||||
new com.calendarevents.CalendarEventsPackage(),
|
||||
new com.corbt.keepawake.KCKeepAwakePackage(),
|
||||
new com.facebook.react.shell.MainReactPackage(),
|
||||
new com.reactnativecommunity.netinfo.NetInfoPackage(),
|
||||
new com.oblador.performance.PerformancePackage(),
|
||||
new com.reactnativecommunity.slider.ReactSliderPackage(),
|
||||
new com.brentvatne.react.ReactVideoPackage(),
|
||||
new com.swmansion.reanimated.ReanimatedPackage(),
|
||||
new org.reactnative.maskedview.RNCMaskedViewPackage(),
|
||||
new com.reactnativecommunity.webview.RNCWebViewPackage(),
|
||||
new com.horcrux.svg.SvgPackage(),
|
||||
new com.kevinresol.react_native_default_preference.RNDefaultPreferencePackage(),
|
||||
new com.learnium.RNDeviceInfo.RNDeviceInfo(),
|
||||
new com.swmansion.gesturehandler.react.RNGestureHandlerPackage(),
|
||||
new org.linusu.RNGetRandomValuesPackage(),
|
||||
new com.oblador.performance.PerformancePackage(),
|
||||
new com.ocetnik.timer.BackgroundTimerPackage(),
|
||||
new com.reactnativecommunity.asyncstorage.AsyncStoragePackage(),
|
||||
new com.reactnativecommunity.netinfo.NetInfoPackage(),
|
||||
new com.reactnativecommunity.slider.ReactSliderPackage(),
|
||||
new com.reactnativecommunity.webview.RNCWebViewPackage(),
|
||||
new com.rnimmersive.RNImmersivePackage(),
|
||||
new com.swmansion.rnscreens.RNScreensPackage(),
|
||||
new com.zmxv.RNSound.RNSoundPackage(),
|
||||
new com.th3rdwave.safeareacontext.SafeAreaContextPackage(),
|
||||
new com.horcrux.svg.SvgPackage(),
|
||||
new com.brentvatne.react.ReactVideoPackage(),
|
||||
new ReactPackageAdapter() {
|
||||
@Override
|
||||
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
|
||||
|
||||
@@ -6,5 +6,4 @@
|
||||
<string name="ongoing_notification_action_hang_up">Hang up</string>
|
||||
<string name="ongoing_notification_action_mute">Mute</string>
|
||||
<string name="ongoing_notification_action_unmute">Unmute</string>
|
||||
<string name="ongoing_notification_channel_name">Ongoing Conference Notifications</string>
|
||||
</resources>
|
||||
|
||||
@@ -15,26 +15,14 @@ include ':react-native-default-preference'
|
||||
project(':react-native-default-preference').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-default-preference/android')
|
||||
include ':react-native-device-info'
|
||||
project(':react-native-device-info').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-device-info/android')
|
||||
include ':react-native-gesture-handler'
|
||||
project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/android')
|
||||
include ':react-native-get-random-values'
|
||||
project(':react-native-get-random-values').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-get-random-values/android')
|
||||
include ':react-native-google-signin'
|
||||
project(':react-native-google-signin').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/google-signin/android')
|
||||
include ':react-native-immersive'
|
||||
project(':react-native-immersive').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-immersive/android')
|
||||
include ':react-native-keep-awake'
|
||||
project(':react-native-keep-awake').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-keep-awake/android')
|
||||
include ':react-native-masked-view_masked-view'
|
||||
project(':react-native-masked-view_masked-view').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-masked-view/masked-view/android')
|
||||
include ':react-native-performance'
|
||||
project(':react-native-performance').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-performance/android')
|
||||
include ':react-native-reanimated'
|
||||
project(':react-native-reanimated').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-reanimated/android')
|
||||
include ':react-native-safe-area-context'
|
||||
project(':react-native-safe-area-context').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-safe-area-context/android')
|
||||
include ':react-native-screens'
|
||||
project(':react-native-screens').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-screens/android')
|
||||
include ':react-native-slider'
|
||||
project(':react-native-slider').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/slider/android')
|
||||
include ':react-native-sound'
|
||||
|
||||
177
conference.js
177
conference.js
@@ -1,8 +1,8 @@
|
||||
/* global APP, JitsiMeetJS, config, interfaceConfig */
|
||||
|
||||
import { jitsiLocalStorage } from '@jitsi/js-utils';
|
||||
import Logger from '@jitsi/logger';
|
||||
import EventEmitter from 'events';
|
||||
import Logger from 'jitsi-meet-logger';
|
||||
|
||||
import { openConnection } from './connection';
|
||||
import { ENDPOINT_TEXT_MESSAGE_NAME } from './modules/API/constants';
|
||||
@@ -29,7 +29,6 @@ import { shouldShowModeratedNotification } from './react/features/av-moderation/
|
||||
import {
|
||||
AVATAR_URL_COMMAND,
|
||||
EMAIL_COMMAND,
|
||||
_conferenceWillJoin,
|
||||
authStatusChanged,
|
||||
commonUserJoinedHandling,
|
||||
commonUserLeftHandling,
|
||||
@@ -48,7 +47,7 @@ import {
|
||||
onStartMutedPolicyChanged,
|
||||
p2pStatusChanged,
|
||||
sendLocalParticipant,
|
||||
nonParticipantMessageReceived
|
||||
_conferenceWillJoin
|
||||
} from './react/features/base/conference';
|
||||
import { getReplaceParticipant } from './react/features/base/config/functions';
|
||||
import {
|
||||
@@ -60,6 +59,7 @@ import {
|
||||
setAudioOutputDeviceId,
|
||||
updateDeviceList
|
||||
} from './react/features/base/devices';
|
||||
import { isIosMobileBrowser } from './react/features/base/environment/utils';
|
||||
import {
|
||||
browser,
|
||||
isFatalJitsiConnectionError,
|
||||
@@ -108,7 +108,6 @@ import {
|
||||
getLocalJitsiAudioTrack,
|
||||
getLocalJitsiVideoTrack,
|
||||
getLocalTracks,
|
||||
getLocalVideoTrack,
|
||||
isLocalCameraTrackMuted,
|
||||
isLocalTrackMuted,
|
||||
isUserInteractionRequiredForUnmute,
|
||||
@@ -130,13 +129,11 @@ import {
|
||||
initPrejoin,
|
||||
isPrejoinPageEnabled,
|
||||
isPrejoinPageVisible,
|
||||
makePrecallTest,
|
||||
setJoiningInProgress,
|
||||
setPrejoinPageVisibility
|
||||
makePrecallTest
|
||||
} from './react/features/prejoin';
|
||||
import { disableReceiver, stopReceiver } from './react/features/remote-control';
|
||||
import { setScreenAudioShareState, isScreenAudioShared } from './react/features/screen-share/';
|
||||
import { toggleScreenshotCaptureSummary } from './react/features/screenshot-capture';
|
||||
import { toggleScreenshotCaptureEffect } from './react/features/screenshot-capture';
|
||||
import { AudioMixerEffect } from './react/features/stream-effects/audio-mixer/AudioMixerEffect';
|
||||
import { createPresenterEffect } from './react/features/stream-effects/presenter';
|
||||
import { createRnnoiseProcessor } from './react/features/stream-effects/rnnoise';
|
||||
@@ -159,15 +156,6 @@ let connection;
|
||||
*/
|
||||
let _connectionPromise;
|
||||
|
||||
/**
|
||||
* We are storing the resolve function of a Promise that waits for the _connectionPromise to be created. This is needed
|
||||
* when the prejoin button was pressed before the conference object was initialized and the _connectionPromise has not
|
||||
* been initialized when we tried to execute prejoinStart. In this case in prejoinStart we create a new Promise, assign
|
||||
* the resolve function to this variable and wait for the promise to resolve before we continue. The
|
||||
* _onConnectionPromiseCreated will be called once the _connectionPromise is created.
|
||||
*/
|
||||
let _onConnectionPromiseCreated;
|
||||
|
||||
/**
|
||||
* This promise is used for chaining mutePresenterVideo calls in order to avoid calling GUM multiple times if it takes
|
||||
* a while to finish.
|
||||
@@ -761,7 +749,7 @@ export default {
|
||||
// XXX The API will take care of disconnecting from the XMPP
|
||||
// server (and, thus, leaving the room) on unload.
|
||||
return new Promise((resolve, reject) => {
|
||||
new ConferenceConnector(resolve, reject).connect();
|
||||
(new ConferenceConnector(resolve, reject)).connect();
|
||||
});
|
||||
},
|
||||
|
||||
@@ -806,10 +794,6 @@ export default {
|
||||
return c;
|
||||
});
|
||||
|
||||
if (_onConnectionPromiseCreated) {
|
||||
_onConnectionPromiseCreated();
|
||||
}
|
||||
|
||||
APP.store.dispatch(makePrecallTest(this._getConferenceOptions()));
|
||||
|
||||
const { tryCreateLocalTracks, errors } = this.createInitialLocalTracks(initialOptions);
|
||||
@@ -837,9 +821,9 @@ export default {
|
||||
this._initDeviceList(true);
|
||||
|
||||
if (initialOptions.startWithAudioMuted) {
|
||||
// Always add the track on Safari because of a known issue where audio playout doesn't happen
|
||||
// if the user joins audio and video muted, i.e., if there is no local media capture.
|
||||
if (browser.isWebKitBased()) {
|
||||
// Always add the audio track to the peer connection and then mute the track on mobile Safari
|
||||
// because of a known issue where audio playout doesn't happen if the user joins audio and video muted.
|
||||
if (isIosMobileBrowser()) {
|
||||
this.muteAudio(true, true);
|
||||
} else {
|
||||
localTracks = localTracks.filter(track => track.getType() !== MEDIA_TYPE.AUDIO);
|
||||
@@ -853,26 +837,12 @@ export default {
|
||||
* Joins conference after the tracks have been configured in the prejoin screen.
|
||||
*
|
||||
* @param {Object[]} tracks - An array with the configured tracks
|
||||
* @returns {void}
|
||||
* @returns {Promise}
|
||||
*/
|
||||
async prejoinStart(tracks) {
|
||||
if (!_connectionPromise) {
|
||||
// The conference object isn't initialized yet. Wait for the promise to initialise.
|
||||
await new Promise(resolve => {
|
||||
_onConnectionPromiseCreated = resolve;
|
||||
});
|
||||
_onConnectionPromiseCreated = undefined;
|
||||
}
|
||||
const con = await _connectionPromise;
|
||||
|
||||
let con;
|
||||
|
||||
try {
|
||||
con = await _connectionPromise;
|
||||
this.startConference(con, tracks);
|
||||
} catch (error) {
|
||||
logger.error(`An error occurred while trying to join a meeting from the prejoin screen: ${error}`);
|
||||
APP.store.dispatch(setJoiningInProgress(false));
|
||||
}
|
||||
return this.startConference(con, tracks);
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -1016,14 +986,6 @@ export default {
|
||||
* dialogs in case of media permissions error.
|
||||
*/
|
||||
muteVideo(mute, showUI = true) {
|
||||
if (this.videoSwitchInProgress) {
|
||||
// Turning the camera on while the screen sharing mode is being turned off is causing issues around
|
||||
// the presenter mode handling. It should be okay for the user to click the button again once that's done.
|
||||
console.warn('muteVideo - unable to perform operations while video switch is in progress');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mute
|
||||
&& isUserInteractionRequiredForUnmute(APP.store.getState())) {
|
||||
logger.error('Unmuting video requires user interaction');
|
||||
@@ -1361,52 +1323,14 @@ export default {
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Used by the Breakout Rooms feature to join a breakout room or go back to the main room.
|
||||
*/
|
||||
async joinRoom(roomName, isBreakoutRoom = false) {
|
||||
this.roomName = roomName;
|
||||
|
||||
const { tryCreateLocalTracks, errors } = this.createInitialLocalTracks();
|
||||
const localTracks = await tryCreateLocalTracks;
|
||||
|
||||
this._displayErrorsForCreateInitialLocalTracks(errors);
|
||||
localTracks.forEach(track => {
|
||||
if ((track.isAudioTrack() && this.isLocalAudioMuted())
|
||||
|| (track.isVideoTrack() && this.isLocalVideoMuted())) {
|
||||
track.mute();
|
||||
}
|
||||
});
|
||||
this._createRoom(localTracks, isBreakoutRoom);
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
new ConferenceConnector(resolve, reject).connect();
|
||||
});
|
||||
},
|
||||
|
||||
_createRoom(localTracks, isBreakoutRoom = false) {
|
||||
const extraOptions = {};
|
||||
|
||||
if (isBreakoutRoom) {
|
||||
// We must be in a room already.
|
||||
if (!room?.xmpp?.breakoutRoomsComponentAddress) {
|
||||
throw new Error('Breakout Rooms not enabled');
|
||||
}
|
||||
|
||||
// TODO: re-evaluate this. -saghul
|
||||
extraOptions.customDomain = room.xmpp.breakoutRoomsComponentAddress;
|
||||
}
|
||||
|
||||
_createRoom(localTracks) {
|
||||
room
|
||||
= connection.initJitsiConference(
|
||||
APP.conference.roomName,
|
||||
{
|
||||
...this._getConferenceOptions(),
|
||||
...extraOptions
|
||||
});
|
||||
this._getConferenceOptions());
|
||||
|
||||
// Filter out the tracks that are muted (except on Safari).
|
||||
const tracks = browser.isWebKitBased() ? localTracks : localTracks.filter(track => !track.isMuted());
|
||||
// Filter out the tracks that are muted (except on mobile Safari).
|
||||
const tracks = isIosMobileBrowser() ? localTracks : localTracks.filter(track => !track.isMuted());
|
||||
|
||||
this._setLocalAudioVideoStreams(tracks);
|
||||
this._room = room; // FIXME do not use this
|
||||
@@ -1579,26 +1503,23 @@ export default {
|
||||
*
|
||||
* @param {boolean} didHaveVideo indicates if there was a camera video being
|
||||
* used, before switching to screen sharing.
|
||||
* @param {boolean} ignoreDidHaveVideo indicates if the camera video should be
|
||||
* ignored when switching screen sharing off.
|
||||
* @param {boolean} wasVideoMuted indicates if the video was muted, before
|
||||
* switching to screen sharing.
|
||||
* @return {Promise} resolved after the screen sharing is turned off, or
|
||||
* rejected with some error (no idea what kind of error, possible GUM error)
|
||||
* in case it fails.
|
||||
* @private
|
||||
*/
|
||||
async _turnScreenSharingOff(didHaveVideo, ignoreDidHaveVideo) {
|
||||
async _turnScreenSharingOff(didHaveVideo) {
|
||||
this._untoggleScreenSharing = null;
|
||||
this.videoSwitchInProgress = true;
|
||||
|
||||
APP.store.dispatch(stopReceiver());
|
||||
|
||||
this._stopProxyConnection();
|
||||
|
||||
if (config.enableScreenshotCapture) {
|
||||
APP.store.dispatch(toggleScreenshotCaptureSummary(false));
|
||||
APP.store.dispatch(toggleScreenshotCaptureEffect(false));
|
||||
}
|
||||
const tracks = APP.store.getState()['features/base/tracks'];
|
||||
const duration = getLocalVideoTrack(tracks)?.jitsiTrack.getDuration() ?? 0;
|
||||
|
||||
// It can happen that presenter GUM is in progress while screensharing is being turned off. Here it needs to
|
||||
// wait for that GUM to be resolved in order to prevent leaking the presenter track(this.localPresenterVideo
|
||||
@@ -1633,7 +1554,7 @@ export default {
|
||||
|
||||
APP.store.dispatch(setScreenAudioShareState(false));
|
||||
|
||||
if (didHaveVideo && !ignoreDidHaveVideo) {
|
||||
if (didHaveVideo) {
|
||||
promise = promise.then(() => createLocalTracksF({ devices: [ 'video' ] }))
|
||||
.then(([ stream ]) => {
|
||||
logger.debug(`_turnScreenSharingOff using ${stream} for useVideoStream`);
|
||||
@@ -1660,8 +1581,7 @@ export default {
|
||||
return promise.then(
|
||||
() => {
|
||||
this.videoSwitchInProgress = false;
|
||||
sendAnalytics(createScreenSharingEvent('stopped',
|
||||
duration === 0 ? null : duration));
|
||||
sendAnalytics(createScreenSharingEvent('stopped'));
|
||||
logger.info('Screen sharing stopped.');
|
||||
},
|
||||
error => {
|
||||
@@ -1685,13 +1605,12 @@ export default {
|
||||
* @param {Array<string>} [options.desktopSharingSources] - Array with the
|
||||
* sources that have to be displayed in the desktop picker window ('screen',
|
||||
* 'window', etc.).
|
||||
* @param {boolean} ignoreDidHaveVideo - if true ignore if video was on when sharing started.
|
||||
* @return {Promise.<T>}
|
||||
*/
|
||||
async toggleScreenSharing(toggle = !this._untoggleScreenSharing, options = {}, ignoreDidHaveVideo) {
|
||||
async toggleScreenSharing(toggle = !this._untoggleScreenSharing, options = {}) {
|
||||
logger.debug(`toggleScreenSharing: ${toggle}`);
|
||||
if (this.videoSwitchInProgress) {
|
||||
return Promise.reject(`toggleScreenSharing: ${toggle} aborted - video switch in progress.`);
|
||||
return Promise.reject('Switch in progress.');
|
||||
}
|
||||
if (!JitsiMeetJS.isDesktopSharingEnabled()) {
|
||||
return Promise.reject('Cannot toggle screen sharing: not supported.');
|
||||
@@ -1714,7 +1633,7 @@ export default {
|
||||
}
|
||||
|
||||
return this._untoggleScreenSharing
|
||||
? this._untoggleScreenSharing(ignoreDidHaveVideo)
|
||||
? this._untoggleScreenSharing()
|
||||
: Promise.resolve();
|
||||
},
|
||||
|
||||
@@ -1976,7 +1895,7 @@ export default {
|
||||
.then(() => {
|
||||
this.videoSwitchInProgress = false;
|
||||
if (config.enableScreenshotCapture) {
|
||||
APP.store.dispatch(toggleScreenshotCaptureSummary(true));
|
||||
APP.store.dispatch(toggleScreenshotCaptureEffect(true));
|
||||
}
|
||||
sendAnalytics(createScreenSharingEvent('started'));
|
||||
logger.log('Screen sharing started');
|
||||
@@ -2057,9 +1976,6 @@ export default {
|
||||
room.on(JitsiConferenceEvents.CONFERENCE_JOINED, () => {
|
||||
this._onConferenceJoined();
|
||||
});
|
||||
room.on(JitsiConferenceEvents.CONFERENCE_JOIN_IN_PROGRESS, () => {
|
||||
APP.store.dispatch(setPrejoinPageVisibility(false));
|
||||
});
|
||||
|
||||
room.on(
|
||||
JitsiConferenceEvents.CONFERENCE_LEFT,
|
||||
@@ -2261,10 +2177,6 @@ export default {
|
||||
}
|
||||
});
|
||||
|
||||
room.on(
|
||||
JitsiConferenceEvents.NON_PARTICIPANT_MESSAGE_RECEIVED,
|
||||
(...args) => APP.store.dispatch(nonParticipantMessageReceived(...args)));
|
||||
|
||||
room.on(
|
||||
JitsiConferenceEvents.LOCK_STATE_CHANGED,
|
||||
(...args) => APP.store.dispatch(lockStateChanged(room, ...args)));
|
||||
@@ -2353,9 +2265,9 @@ export default {
|
||||
|
||||
// Remove the tracks from the peerconnection.
|
||||
for (const track of localTracks) {
|
||||
// Always add the track on Safari because of a known issue where audio playout doesn't happen
|
||||
// if the user joins audio and video muted, i.e., if there is no local media capture.
|
||||
if (audioMuted && track.jitsiTrack?.getType() === MEDIA_TYPE.AUDIO && !browser.isWebKitBased()) {
|
||||
// Always add the track on mobile Safari because of a known issue where audio playout doesn't happen
|
||||
// if the user joins audio and video muted.
|
||||
if (audioMuted && track.jitsiTrack?.getType() === MEDIA_TYPE.AUDIO && !isIosMobileBrowser()) {
|
||||
promises.push(this.useAudioStream(null));
|
||||
}
|
||||
if (videoMuted && track.jitsiTrack?.getType() === MEDIA_TYPE.VIDEO) {
|
||||
@@ -2564,8 +2476,8 @@ export default {
|
||||
});
|
||||
|
||||
APP.UI.addListener(
|
||||
UIEvents.TOGGLE_SCREENSHARING, ({ enabled, audioOnly, ignoreDidHaveVideo }) => {
|
||||
this.toggleScreenSharing(enabled, { audioOnly }, ignoreDidHaveVideo);
|
||||
UIEvents.TOGGLE_SCREENSHARING, ({ enabled, audioOnly }) => {
|
||||
this.toggleScreenSharing(enabled, { audioOnly });
|
||||
}
|
||||
);
|
||||
},
|
||||
@@ -2693,17 +2605,12 @@ export default {
|
||||
|
||||
APP.store.dispatch(updateDeviceList(devices));
|
||||
|
||||
// Firefox users can choose their preferred device in the gUM prompt. In that case
|
||||
// we should respect that and not attempt to switch to the preferred device from
|
||||
// our settings.
|
||||
const newLabelsOnly = mediaDeviceHelper.newDeviceListAddedLabelsOnly(oldDevices, devices);
|
||||
const newDevices
|
||||
= mediaDeviceHelper.getNewMediaDevicesAfterDeviceListChanged(
|
||||
devices,
|
||||
this.isSharingScreen,
|
||||
localVideo,
|
||||
localAudio,
|
||||
newLabelsOnly);
|
||||
localAudio);
|
||||
const promises = [];
|
||||
const audioWasMuted = this.isLocalAudioMuted();
|
||||
const videoWasMuted = this.isLocalVideoMuted();
|
||||
@@ -2947,17 +2854,6 @@ export default {
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Leaves the room.
|
||||
*
|
||||
* @returns {Promise}
|
||||
*/
|
||||
leaveRoom() {
|
||||
if (room && room.isJoined()) {
|
||||
return room.leave();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Leaves the room and calls JitsiConnection.disconnect.
|
||||
*
|
||||
@@ -3052,15 +2948,6 @@ export default {
|
||||
room.sendEndpointMessage(to, payload);
|
||||
},
|
||||
|
||||
/**
|
||||
* Sends a facial expression as a string and its duration as a number
|
||||
* @param {object} payload - Object containing the {string} facialExpression
|
||||
* and {number} duration
|
||||
*/
|
||||
sendFacialExpression(payload) {
|
||||
room.sendFacialExpression(payload);
|
||||
},
|
||||
|
||||
/**
|
||||
* Adds new listener.
|
||||
* @param {String} eventName the name of the event
|
||||
|
||||
109
config.js
109
config.js
@@ -279,7 +279,6 @@ var config = {
|
||||
// autoHide: true,
|
||||
// autoHideTimeout: 5000,
|
||||
// disabled: false,
|
||||
// disableDetails: false,
|
||||
// inactiveDisabled: false
|
||||
// },
|
||||
|
||||
@@ -430,12 +429,6 @@ var config = {
|
||||
// Hides lobby button
|
||||
// hideLobbyButton: false,
|
||||
|
||||
// If Lobby is enabled starts knocking automatically.
|
||||
// autoKnockLobby: false,
|
||||
|
||||
// Hides add breakout room button
|
||||
// hideAddRoomButton: false,
|
||||
|
||||
// Require users to always specify a display name.
|
||||
// requireDisplayName: true,
|
||||
|
||||
@@ -483,10 +476,6 @@ var config = {
|
||||
// When 'true', it shows an intermediate page before joining, where the user can configure their devices.
|
||||
// prejoinPageEnabled: false,
|
||||
|
||||
// When 'true', the user cannot edit the display name.
|
||||
// (Mainly useful when used in conjuction with the JWT so the JWT name becomes read only.)
|
||||
// readOnlyName: false,
|
||||
|
||||
// If etherpad integration is enabled, setting this to true will
|
||||
// automatically open the etherpad when a participant joins. This
|
||||
// does not affect the mobile app since opening an etherpad
|
||||
@@ -556,19 +545,6 @@ var config = {
|
||||
// '__end'
|
||||
// ],
|
||||
|
||||
// Holds values related to toolbar visibility control.
|
||||
// toolbarConfig: {
|
||||
// // Moved from interfaceConfig.INITIAL_TOOLBAR_TIMEOUT
|
||||
// // The initial numer of miliseconds for the toolbar buttons to be visible on screen.
|
||||
// initialTimeout: 20000,
|
||||
// // Moved from interfaceConfig.TOOLBAR_TIMEOUT
|
||||
// // Number of miliseconds for the toolbar buttons to be visible on screen.
|
||||
// timeout: 4000,
|
||||
// // Moved from interfaceConfig.TOOLBAR_ALWAYS_VISIBLE
|
||||
// // Whether toolbar should be always visible or should hide after x miliseconds.
|
||||
// alwaysVisible: false
|
||||
// },
|
||||
|
||||
// Toolbar buttons which have their click event exposed through the API on
|
||||
// `toolbarButtonClicked` event instead of executing the normal click routine.
|
||||
// buttonsWithNotifyClick: [
|
||||
@@ -655,9 +631,6 @@ var config = {
|
||||
// Enables sending participants' emails (if available) to callstats and other analytics
|
||||
// enableEmailInStats: false,
|
||||
|
||||
// Enables detecting faces of participants and get their expression and send it to other participants
|
||||
// enableFacialRecognition: true,
|
||||
|
||||
// Controls the percentage of automatic feedback shown to participants when callstats is enabled.
|
||||
// The default value is 100%. If set to 0, no automatic feedback will be requested
|
||||
// feedbackPercentage: 100,
|
||||
@@ -786,7 +759,6 @@ var config = {
|
||||
// - 'PARTICIPANT_JOINED_SOUND'
|
||||
// - 'PARTICIPANT_LEFT_SOUND'
|
||||
// - 'RAISE_HAND_SOUND'
|
||||
// - 'REACTION_SOUND'
|
||||
// - 'RECORDING_OFF_SOUND'
|
||||
// - 'RECORDING_ON_SOUND'
|
||||
// - 'TALK_WHILE_MUTED_SOUND'
|
||||
@@ -835,10 +807,6 @@ var config = {
|
||||
// format: 'flac'
|
||||
//
|
||||
|
||||
// },
|
||||
// e2ee: {
|
||||
// labels,
|
||||
// externallyManagedKey: false
|
||||
// },
|
||||
|
||||
// Options related to end-to-end (participant to participant) ping.
|
||||
@@ -909,65 +877,25 @@ var config = {
|
||||
If there is no url set or there are missing fields, the defaults are applied.
|
||||
The config file should be in JSON.
|
||||
None of the fields are mandatory and the response must have the shape:
|
||||
{
|
||||
// The domain url to apply (will replace the domain in the sharing conference link/embed section)
|
||||
inviteDomain: 'example-company.org,
|
||||
// The hex value for the colour used as background
|
||||
backgroundColor: '#fff',
|
||||
// The url for the image used as background
|
||||
backgroundImageUrl: 'https://example.com/background-img.png',
|
||||
// The anchor url used when clicking the logo image
|
||||
logoClickUrl: 'https://example-company.org',
|
||||
// The url used for the image used as logo
|
||||
logoImageUrl: 'https://example.com/logo-img.png',
|
||||
// Overwrite for pool of background images for avatars
|
||||
avatarBackgrounds: ['url(https://example.com/avatar-background-1.png)', '#FFF'],
|
||||
// The lobby/prejoin screen background
|
||||
premeetingBackground: 'url(https://example.com/premeeting-background.png)',
|
||||
// A list of images that can be used as video backgrounds.
|
||||
// When this field is present, the default images will be replaced with those provided.
|
||||
virtualBackgrounds: ['https://example.com/img.jpg'],
|
||||
// Object containing a theme's properties. It also supports partial overwrites of the main theme.
|
||||
// For a list of all possible theme tokens and their current defaults, please check:
|
||||
// https://github.com/jitsi/jitsi-meet/tree/master/resources/custom-theme/custom-theme.json
|
||||
// For a short explanations on each of the tokens, please check:
|
||||
// https://github.com/jitsi/jitsi-meet/blob/master/react/features/base/ui/Tokens.js
|
||||
// IMPORTANT!: This is work in progress so many of the various tokens are not yet applied in code
|
||||
// or they are partially applied.
|
||||
customTheme: {
|
||||
palette: {
|
||||
ui01: "orange !important",
|
||||
ui02: "maroon",
|
||||
surface02: 'darkgreen',
|
||||
ui03: "violet",
|
||||
ui04: "magenta",
|
||||
ui05: "blueviolet",
|
||||
field02Hover: 'red',
|
||||
action01: 'green',
|
||||
action01Hover: 'lightgreen',
|
||||
action02Disabled: 'beige',
|
||||
success02: 'cadetblue',
|
||||
action02Hover: 'aliceblue'
|
||||
},
|
||||
typography: {
|
||||
labelRegular: {
|
||||
fontSize: 25,
|
||||
lineHeight: 30,
|
||||
fontWeight: 500
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
// The domain url to apply (will replace the domain in the sharing conference link/embed section)
|
||||
inviteDomain: 'example-company.org,
|
||||
// The hex value for the colour used as background
|
||||
backgroundColor: '#fff',
|
||||
// The url for the image used as background
|
||||
backgroundImageUrl: 'https://example.com/background-img.png',
|
||||
// The anchor url used when clicking the logo image
|
||||
logoClickUrl: 'https://example-company.org',
|
||||
// The url used for the image used as logo
|
||||
logoImageUrl: 'https://example.com/logo-img.png',
|
||||
// Overwrite for pool of background images for avatars
|
||||
avatarBackgrounds: ['url(https://example.com/avatar-background-1.png)', '#FFF'],
|
||||
// The lobby/prejoin screen background
|
||||
premeetingBackground: 'url(https://example.com/premeeting-background.png)'
|
||||
}
|
||||
*/
|
||||
// dynamicBrandingUrl: '',
|
||||
|
||||
// When true the user cannot add more images to be used as virtual background.
|
||||
// Only the default ones from will be available.
|
||||
// disableAddingBackgroundImages: false,
|
||||
|
||||
// Disables using screensharing as virtual background.
|
||||
// disableScreensharingVirtualBackground: false,
|
||||
|
||||
// Sets the background transparency level. '0' is fully transparent, '1' is opaque.
|
||||
// backgroundAlpha: 1,
|
||||
|
||||
@@ -1023,6 +951,11 @@ var config = {
|
||||
// will open an etherpad document.
|
||||
// etherpad_base: 'https://your-etherpad-installati.on/p/',
|
||||
|
||||
// If etherpad_base is set, and useRoomAsSharedDocumentName is set to true,
|
||||
// open a pad with the name of the room (lowercased) instead of a pad with a
|
||||
// random UUID.
|
||||
// useRoomAsSharedDocumentName: true,
|
||||
|
||||
// List of undocumented settings used in jitsi-meet
|
||||
/**
|
||||
_immediateReloadThreshold
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* global APP, JitsiMeetJS, config */
|
||||
|
||||
import { jitsiLocalStorage } from '@jitsi/js-utils';
|
||||
import Logger from '@jitsi/logger';
|
||||
import Logger from 'jitsi-meet-logger';
|
||||
|
||||
import { redirectToTokenAuthService } from './modules/UI/authentication/AuthHandler';
|
||||
import { LoginDialog } from './react/features/authentication/components';
|
||||
|
||||
@@ -24,6 +24,61 @@
|
||||
bottom: calc(#{$newToolbarSizeWithPadding}) !important;
|
||||
}
|
||||
|
||||
.modal-dialog-form {
|
||||
/**
|
||||
* Override @atlaskit/dropdown-menu styling when in a modal because the
|
||||
* dropdown backgrounds clash with the modal backgrounds.
|
||||
*/
|
||||
.dropdown-menu div[style*="transform"] {
|
||||
outline: 1px solid #455166;
|
||||
}
|
||||
.dropdown-menu button:not(:active):not(:hover) > span {
|
||||
color: #B8C7E0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Override @atlaskit/tab styling when in a modal because the
|
||||
* tab text color clash with the modal backgrounds.
|
||||
*/
|
||||
div[role="tablist"] > div:not([data-selected]):not(:hover),
|
||||
label > div > span {
|
||||
color: #B8C7E0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Override @atlaskit/modal-dialog header styling
|
||||
*/
|
||||
.atlaskit-portal [role="dialog"] header {
|
||||
box-shadow: none;
|
||||
.jitsi-icon {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.jitsi-icon svg {
|
||||
fill: #B8C7E0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Override @atlaskit/modal-dialog footer styling.
|
||||
*/
|
||||
.atlaskit-portal [role="dialog"] footer {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make header close button more easily tappable on mobile.
|
||||
*/
|
||||
.mobile-browser .atlaskit-portal [role="dialog"] header .jitsi-icon {
|
||||
display: grid;
|
||||
place-items: center;
|
||||
height: 48px;
|
||||
width: 48px;
|
||||
background: #2a3a4b;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
/**
|
||||
* Override @atlaskit/theme styling for the top toolbar so it displays over
|
||||
* the video thumbnail while obscuring as little as possible.
|
||||
@@ -103,20 +158,3 @@ div.Tooltip {
|
||||
line-height: 14px;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
// make modal full screen on landscape orientation
|
||||
@media (max-height: 420px) {
|
||||
.atlaskit-portal {
|
||||
.css-1oc7v0j {
|
||||
height: 100%;
|
||||
padding: 0;
|
||||
max-width: 100%;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
|
||||
&> div {
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,39 +2,34 @@
|
||||
background-color: $chatBackgroundColor;
|
||||
box-sizing: border-box;
|
||||
color: #FFF;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
left: -$sidebarWidth;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: $sidebarWidth;
|
||||
z-index: $sideToolbarContainerZ;
|
||||
|
||||
@media (max-width: 580px) {
|
||||
width: 100%;
|
||||
/**
|
||||
* The sidebar (chat) is off-screen when hidden. Move it flush to the left
|
||||
* side of the window when it should be visible.
|
||||
*/
|
||||
&.slideInExt {
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.chat-panel {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
// extract header + tabs height
|
||||
height: calc(100% - 102px);
|
||||
}
|
||||
|
||||
.chat-panel-no-tabs {
|
||||
// extract header height
|
||||
height: calc(100% - 70px);
|
||||
}
|
||||
|
||||
#chatconversation {
|
||||
box-sizing: border-box;
|
||||
flex: 1;
|
||||
font-size: 10pt;
|
||||
// extract message input height
|
||||
height: calc(100% - 68px);
|
||||
line-height: 20px;
|
||||
overflow: auto;
|
||||
padding: 16px;
|
||||
text-align: left;
|
||||
width: $sidebarWidth;
|
||||
word-wrap: break-word;
|
||||
|
||||
display: flex;
|
||||
@@ -63,6 +58,28 @@
|
||||
a:active {
|
||||
color: black;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar {
|
||||
background: #06a5df;
|
||||
width: 7px;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-button {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-track {
|
||||
background: black;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-track-piece {
|
||||
background: black;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-thumb {
|
||||
background: #06a5df;
|
||||
border-radius: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
#chat-recipient {
|
||||
@@ -196,7 +213,6 @@
|
||||
}
|
||||
|
||||
#usermsg {
|
||||
-ms-overflow-style: none;
|
||||
border: 0px none;
|
||||
border-radius:0;
|
||||
box-shadow: none;
|
||||
@@ -205,13 +221,8 @@
|
||||
padding: 10px;
|
||||
overflow-y: auto;
|
||||
resize: none;
|
||||
scrollbar-width: none;
|
||||
width: 100%;
|
||||
word-break: break-word;
|
||||
|
||||
&::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
#usermsg:hover {
|
||||
@@ -302,6 +313,10 @@
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
@media (max-width: 580px) {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
.sr-only {
|
||||
@@ -542,6 +557,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
.touchmove-hack {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make header close button more easily tappable on mobile.
|
||||
|
||||
@@ -11,6 +11,12 @@
|
||||
{
|
||||
@extend %connection-info;
|
||||
|
||||
/**
|
||||
* Apply negative margin to reduce the appearance of padding in AtlasKit
|
||||
* InlineDialog.
|
||||
*/
|
||||
margin: -15px;
|
||||
|
||||
> table {
|
||||
white-space: nowrap;
|
||||
@extend %connection-info;
|
||||
|
||||
@@ -5,10 +5,6 @@
|
||||
bottom: 0;
|
||||
z-index: $drawerZ;
|
||||
border-radius: 16px 16px 0 0;
|
||||
|
||||
&.notification-portal {
|
||||
z-index: $dropdownZ;
|
||||
}
|
||||
}
|
||||
|
||||
.drawer-portal::after {
|
||||
|
||||
37
css/_labels.scss
Normal file
37
css/_labels.scss
Normal file
@@ -0,0 +1,37 @@
|
||||
.label {
|
||||
align-items: center;
|
||||
background: #36383C;
|
||||
border-radius: 3px;
|
||||
color: #fff;
|
||||
display: flex;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
height: 28px;
|
||||
margin: 0 0 4px 4px;
|
||||
padding: 0 8px;
|
||||
|
||||
&--green {
|
||||
background: #31B76A;
|
||||
}
|
||||
|
||||
&--red {
|
||||
background: #E34F56
|
||||
}
|
||||
|
||||
&--white {
|
||||
background: #fff;
|
||||
color: #5e6d7a;
|
||||
|
||||
svg {
|
||||
fill: #5e6d7a;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.label-text-with-icon {
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.participants-count {
|
||||
cursor: pointer;
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
.notification-appear, .notification-enter {
|
||||
opacity: 0;
|
||||
position: relative;
|
||||
left: -200px;
|
||||
transition: all .2s !important; // !important needed to overwrite atlaskit default style
|
||||
|
||||
&-active {
|
||||
opacity: 1;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.notification-exit {
|
||||
opacity: 1;
|
||||
position: relative;
|
||||
left: 0;
|
||||
transition: all .2s !important; // !important needed to overwrite atlaskit default style
|
||||
|
||||
&-active {
|
||||
opacity: 0;
|
||||
left: -200px;
|
||||
}
|
||||
}
|
||||
@@ -56,9 +56,3 @@
|
||||
border-radius: 3px;
|
||||
}
|
||||
}
|
||||
|
||||
.mobile-browser.shift-right {
|
||||
.participants_pane {
|
||||
z-index: -1;
|
||||
}
|
||||
}
|
||||
|
||||
282
css/_polls.scss
282
css/_polls.scss
@@ -1,7 +1,5 @@
|
||||
.poll-dialog {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
line-height: 20px;
|
||||
font-size: 1rem;
|
||||
|
||||
h1, span, li, strong {
|
||||
color: #bce;
|
||||
@@ -18,50 +16,20 @@
|
||||
}
|
||||
|
||||
.poll-header {
|
||||
margin-bottom: 8px;
|
||||
padding: 8px 16px;
|
||||
}
|
||||
|
||||
.poll-creator {
|
||||
color: #C2C2C2;
|
||||
font-weight: 600;
|
||||
margin: 4px 0 16px 0;
|
||||
}
|
||||
|
||||
.poll-answer-container {
|
||||
.poll-answer-container{
|
||||
padding: 8px;
|
||||
background: #3D3D3D;
|
||||
border-radius: 3px;
|
||||
margin-bottom: 8px;
|
||||
|
||||
@media (max-width: 580px) {
|
||||
&> span {
|
||||
padding: 8px 0;
|
||||
}
|
||||
|
||||
svg {
|
||||
margin-top: 6px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.poll-answer-option {
|
||||
font-weight: 400;
|
||||
display: block;
|
||||
margin: 4px;
|
||||
|
||||
@media (max-width: 580px) {
|
||||
font-size: 16px;
|
||||
margin: 11px 8px
|
||||
}
|
||||
}
|
||||
|
||||
.poll-answer-field-list, .poll-answer-list, .poll-result-list {
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.poll-answer-field-list {
|
||||
padding: 0 16px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
ol.poll-result-list {
|
||||
@@ -69,7 +37,7 @@ ol.poll-result-list {
|
||||
}
|
||||
|
||||
.poll-result-list > li {
|
||||
margin-bottom: 16px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.poll-answer-field {
|
||||
@@ -92,7 +60,7 @@ ol.poll-result-list {
|
||||
.poll-create-container .jsYMHu {
|
||||
background: #292929;
|
||||
border-color: #808090;
|
||||
color: #fff // #808090
|
||||
color: white // #808090
|
||||
}
|
||||
|
||||
.poll-add-button {
|
||||
@@ -104,7 +72,7 @@ ol.poll-result-list {
|
||||
.poll-remove-option-button {
|
||||
background: 0 0;
|
||||
border: none;
|
||||
color: #E04757;
|
||||
color: #8B8B8B;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
@@ -117,7 +85,7 @@ ol.poll-result-list {
|
||||
|
||||
.poll-icon-button, .poll-drag-handle {
|
||||
.jitsi-icon svg {
|
||||
fill: #929292;
|
||||
fill: #bce;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,7 +94,6 @@ ol.poll-result-list {
|
||||
border: none;
|
||||
cursor: grab;
|
||||
padding-left: 8;
|
||||
padding-top: 8px;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
@@ -138,12 +105,13 @@ ol.poll-result-list {
|
||||
}
|
||||
|
||||
.poll-question {
|
||||
font-size: 16px;
|
||||
font-size: 1.2em;
|
||||
font-weight: 600;
|
||||
line-height: 26px;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
.poll-answer-voters {
|
||||
font-size: 1em;
|
||||
font-weight: lighter;
|
||||
list-style-type: none;
|
||||
border: #616161 solid 1px;
|
||||
@@ -223,36 +191,29 @@ ol.poll-result-list {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
|
||||
a.poll-detail-link, a.poll-change-vote-link {
|
||||
color: #669AEC;
|
||||
cursor: pointer;
|
||||
font-weight: 600;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
color: #669AEC;
|
||||
}
|
||||
|
||||
&:visited {
|
||||
color: #669AEC;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a.poll-detail-link, a.poll-change-vote-link {
|
||||
color: #246FE5;
|
||||
cursor: pointer;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.polls-pane-content {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
font-weight: 600;
|
||||
height: 85%;
|
||||
align-items: stretch;
|
||||
}
|
||||
|
||||
.pane-content{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.empty-pane-icon {
|
||||
@@ -267,41 +228,36 @@ ol.poll-result-list {
|
||||
}
|
||||
|
||||
.empty-pane-message {
|
||||
color: #fff;
|
||||
padding: 0 16px;
|
||||
text-align: center;
|
||||
|
||||
}
|
||||
|
||||
.poll-results, .poll-answer {
|
||||
background: #292929;
|
||||
border-radius: 8px;
|
||||
border: 1px solid #666666;
|
||||
margin: 16px;
|
||||
padding: 16px;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
.poll-results {
|
||||
color: #fff;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.poll-answer {
|
||||
|
||||
h1, strong ,span {
|
||||
color: #fff;
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
|
||||
.poll-results, .poll-answer {
|
||||
margin-bottom: 16px;
|
||||
background: #292929;
|
||||
border-radius: 8px;
|
||||
padding: 12px 8px;
|
||||
border-width: thin;
|
||||
border-style: solid;
|
||||
border-color: #616161;
|
||||
}
|
||||
|
||||
.poll-create-label {
|
||||
color: #C2C2C2;
|
||||
display: flex;
|
||||
font-weight: 400;
|
||||
color: white;
|
||||
margin-bottom: 4;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.expandable-input{
|
||||
line-height: 18px;
|
||||
resize: none;
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
@@ -314,31 +270,24 @@ ol.poll-result-list {
|
||||
padding: 10px 16px;
|
||||
}
|
||||
|
||||
#polls-panel {
|
||||
height: calc(100% - 102px);
|
||||
}
|
||||
|
||||
.poll-container {
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
height: calc(100% - 88px);
|
||||
line-height: 20px;
|
||||
box-sizing: border-box;
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
position: relative;
|
||||
padding: 16px;
|
||||
|
||||
& > * + *:not(.ignore-child) {
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
@media (max-width: 580px) {
|
||||
height: calc(100% - 102px);
|
||||
&::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.poll-create-header {
|
||||
color: #fff;
|
||||
font-size: 20px;
|
||||
line-height: 28px;
|
||||
margin: 20px 16px;
|
||||
font-weight: 600;
|
||||
}
|
||||
@@ -347,45 +296,28 @@ ol.poll-result-list {
|
||||
padding: 8px 0;
|
||||
}
|
||||
|
||||
.poll-create-footer {
|
||||
background-color: #141414;
|
||||
bottom: 0;
|
||||
position: absolute;
|
||||
width: calc(100% - 32px);
|
||||
}
|
||||
|
||||
.poll-footer {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 0 16px 16px 16px;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
padding: 8px 16px;
|
||||
height: 40px;
|
||||
align-items: stretch;
|
||||
|
||||
& > *:not(:last-child) {
|
||||
margin-right: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
.poll-answer-footer {
|
||||
padding: 8px 0 0 0;
|
||||
}
|
||||
|
||||
.poll-button {
|
||||
align-items: center;
|
||||
border: 0;
|
||||
border-radius: 6px;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
min-height: 40px;
|
||||
width: 100%;
|
||||
|
||||
&:disabled {
|
||||
cursor: initial;
|
||||
}
|
||||
|
||||
@media (max-width: 580px) {
|
||||
min-height: 48px;
|
||||
}
|
||||
}
|
||||
|
||||
.poll-button-primary {
|
||||
.poll-primary-button {
|
||||
align-items: center;
|
||||
background-color: #0056E0;
|
||||
border: 0;
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
font-weight: unset;
|
||||
justify-content: center;
|
||||
font-size: 15px;
|
||||
flex: 1;
|
||||
|
||||
&:hover {
|
||||
background-color: #246FE5;
|
||||
@@ -404,10 +336,23 @@ ol.poll-result-list {
|
||||
background-color: #00225A;
|
||||
color: #858585;
|
||||
}
|
||||
|
||||
& > *:not(:last-child) {
|
||||
margin-right: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.poll-button-secondary {
|
||||
.poll-secondary-button {
|
||||
align-items: center;
|
||||
background-color: #3D3D3D;
|
||||
border: 0;
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
font-weight: unset;
|
||||
justify-content: center;
|
||||
font-size: 15px;
|
||||
height: 40px;
|
||||
width: 100%;
|
||||
|
||||
&:hover {
|
||||
background-color: #525252;
|
||||
@@ -426,19 +371,78 @@ ol.poll-result-list {
|
||||
background-color: #141414;
|
||||
color: #858585;
|
||||
}
|
||||
|
||||
& > *:not(:last-child) {
|
||||
margin-right: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.poll-button-short {
|
||||
max-width: 132px;
|
||||
.poll-small-primary-button {
|
||||
align-items: center;
|
||||
background-color: #0056E0;
|
||||
border: 0;
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
font-weight: unset;
|
||||
justify-content: center;
|
||||
font-size: 15px;
|
||||
height: 40px;
|
||||
width: 50%;
|
||||
|
||||
&:hover {
|
||||
background-color: #246FE5;
|
||||
}
|
||||
|
||||
&:active {
|
||||
background-color: #0045B3;
|
||||
}
|
||||
|
||||
&:focus {
|
||||
background-color: #0045B3;
|
||||
border: 3px solid #99BBF3;
|
||||
}
|
||||
|
||||
&:disabled {
|
||||
background-color: #00225A;
|
||||
color: #858585;
|
||||
}
|
||||
|
||||
& > *:not(:last-child) {
|
||||
margin-right: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.poll-button-shortest {
|
||||
max-width: 117px;
|
||||
}
|
||||
.poll-small-secondary-button {
|
||||
align-items: center;
|
||||
background-color: #3D3D3D;
|
||||
border: 0;
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
font-weight: unset;
|
||||
justify-content: center;
|
||||
font-size: 15px;
|
||||
height: 40px;
|
||||
width: 50%;
|
||||
|
||||
.poll-button-short,
|
||||
.poll-button-shortest {
|
||||
@media (max-width: 580px) {
|
||||
min-width: 49%;
|
||||
}
|
||||
&:hover {
|
||||
background-color: #525252;
|
||||
}
|
||||
|
||||
&:active {
|
||||
background-color: #292929;
|
||||
}
|
||||
|
||||
&:focus {
|
||||
background-color: #292929;
|
||||
border: 3px solid #858585;
|
||||
}
|
||||
|
||||
&:disabled {
|
||||
background-color: #141414;
|
||||
color: #858585;
|
||||
}
|
||||
|
||||
& > *:not(:last-child) {
|
||||
margin-right: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,50 +3,49 @@
|
||||
* to allow mouse movement from the popover trigger to the popover itself
|
||||
* without triggering a mouseleave event.
|
||||
*/
|
||||
.popover-mousemove-padding-bottom {
|
||||
bottom: -15px;
|
||||
height: 20px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
%vertical-popover-padding {
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 20px;
|
||||
padding: 20px 0;
|
||||
top: -20px;
|
||||
}
|
||||
|
||||
%horizontal-popover-padding {
|
||||
height: 25px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
width: 100%;
|
||||
padding: 0 35px;
|
||||
left: -35px;
|
||||
width: 40px;
|
||||
}
|
||||
|
||||
.popover-mousemove-padding-left {
|
||||
@extend %vertical-popover-padding;
|
||||
left: -35px;
|
||||
left: -20px;
|
||||
}
|
||||
|
||||
.popover-mousemove-padding-right {
|
||||
@extend %vertical-popover-padding;
|
||||
right: -35px;
|
||||
right: -20px;
|
||||
}
|
||||
|
||||
.popover-mousemove-padding-bottom {
|
||||
@extend %horizontal-popover-padding;
|
||||
bottom: -40px;
|
||||
}
|
||||
|
||||
.popover-mousemove-padding-top {
|
||||
@extend %horizontal-popover-padding;
|
||||
top: -40px;
|
||||
/**
|
||||
* An invisible element is added to the top of the popover to ensure the mouse
|
||||
* stays over the popover when the popover's height is shrunk, which would then
|
||||
* normally leave the mouse outside of the popover itself and cause a mouseleave
|
||||
* event.
|
||||
*/
|
||||
.popover-mouse-padding-top {
|
||||
height: 30px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: -25px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.popover {
|
||||
background-color: $popoverBg;
|
||||
border-radius: 3px;
|
||||
margin: -16px -24px;
|
||||
padding: 16px 24px;
|
||||
z-index: $popoverZ;
|
||||
}
|
||||
|
||||
.padded-content {
|
||||
padding: 4px 8px;
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
.popupmenu {
|
||||
background-color: $menuBG;
|
||||
border-radius: 3px;
|
||||
list-style-type: none;
|
||||
min-width: 150px;
|
||||
text-align: left;
|
||||
padding: 0px;
|
||||
@@ -39,11 +38,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
&__list {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
&__text {
|
||||
display: inline-block;
|
||||
margin-left: 8px;
|
||||
|
||||
@@ -75,7 +75,3 @@
|
||||
top: 0;
|
||||
height: 48px;
|
||||
}
|
||||
|
||||
.shift-right .details-container {
|
||||
margin-left: calc(#{$sidebarWidth} / 2);
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
right: 0;
|
||||
transition: bottom .3s ease-in;
|
||||
width: 100%;
|
||||
pointer-events: none;
|
||||
|
||||
|
||||
&.visible {
|
||||
@@ -77,6 +76,14 @@
|
||||
}
|
||||
}
|
||||
|
||||
.toolbox-button {
|
||||
color: $toolbarButtonColor;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
line-height: $newToolbarSize;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.toolbar-button-with-badge {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
@@ -107,6 +114,86 @@
|
||||
padding-bottom: env(safe-area-inset-bottom, 0);
|
||||
}
|
||||
|
||||
.toolbox-content-items {
|
||||
background: $newToolbarBackgroundColor;
|
||||
border-radius: 6px;
|
||||
margin: 0 auto;
|
||||
padding: 6px;
|
||||
text-align: center;
|
||||
pointer-events: all;
|
||||
box-shadow: 0px 2px 8px 4px rgba(0, 0, 0, 0.25), 0px 0px 0px 1px rgba(0, 0, 0, 0.15);
|
||||
|
||||
>div {
|
||||
margin-left: 8px;
|
||||
|
||||
&:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.overflow-menu {
|
||||
font-size: 14px;
|
||||
list-style-type: none;
|
||||
padding: 8px 0;
|
||||
background-color: $menuBG;
|
||||
|
||||
.profile-text {
|
||||
max-width: 150px;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
.overflow-menu-item {
|
||||
align-items: center;
|
||||
color: $overflowMenuItemColor;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
height: 40px;
|
||||
line-height: 24px;
|
||||
padding: 8px 16px;
|
||||
box-sizing: border-box;
|
||||
|
||||
@media (hover: hover) and (pointer: fine) {
|
||||
&:hover {
|
||||
background: $overflowMenuItemBackground;
|
||||
}
|
||||
}
|
||||
|
||||
div {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
&.unclickable {
|
||||
cursor: default;
|
||||
}
|
||||
&.disabled {
|
||||
cursor: initial;
|
||||
color: #929292;
|
||||
|
||||
&:hover {
|
||||
background: none;
|
||||
}
|
||||
|
||||
svg {
|
||||
fill: #929292;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media (hover: hover) and (pointer: fine) {
|
||||
&.unclickable:hover {
|
||||
background: inherit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.beta-tag {
|
||||
background: #36383C;
|
||||
border-radius: 3px;
|
||||
@@ -117,12 +204,73 @@
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.overflow-menu-item-icon {
|
||||
margin-right: 16px;
|
||||
|
||||
i {
|
||||
display: inline;
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
@media (hover: hover) and (pointer: fine) {
|
||||
i:hover {
|
||||
background-color: initial;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 24px;
|
||||
max-height: 24px;
|
||||
}
|
||||
|
||||
svg {
|
||||
fill: #fff;
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.overflow-menu-hr {
|
||||
border-top: 1px solid #4C4D50;
|
||||
border-bottom: 0;
|
||||
margin: 8px 0;
|
||||
}
|
||||
|
||||
.toolbox-icon {
|
||||
display: flex;
|
||||
border-radius: 3px;
|
||||
flex-direction: column;
|
||||
font-size: 24px;
|
||||
height: $newToolbarSize;
|
||||
justify-content: center;
|
||||
width: $newToolbarSize;
|
||||
|
||||
@media (hover: hover) and (pointer: fine) {
|
||||
&:hover {
|
||||
background: $newToolbarButtonHoverColor;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 320px) {
|
||||
height: 36px;
|
||||
width: 36px;
|
||||
}
|
||||
|
||||
&.toggled {
|
||||
background: $newToolbarButtonToggleColor;
|
||||
}
|
||||
|
||||
&.disabled {
|
||||
cursor: initial !important;
|
||||
background-color: #36383c !important;
|
||||
|
||||
svg {
|
||||
fill: #929292 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.hangup-button {
|
||||
background-color: $hangupColor;
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ $videoThumbnailSelected: #165ECC;
|
||||
$participantNameColor: #fff;
|
||||
$thumbnailPictogramColor: #fff;
|
||||
$dominantSpeakerBg: #165ecc;
|
||||
$raiseHandBg: #F8AE1A;
|
||||
$raiseHandBg: #D6D61E;
|
||||
$audioLevelBg: #44A5FF;
|
||||
$connectionIndicatorBg: #165ecc;
|
||||
$audioLevelShadow: rgba(9, 36, 77, 0.9);
|
||||
@@ -122,7 +122,7 @@ $zindex10: 10;
|
||||
$reloadZ: 20;
|
||||
$poweredByZ: 100;
|
||||
$ringingZ: 300;
|
||||
$sideToolbarContainerZ: 300;
|
||||
$sideToolbarContainerZ: 200;
|
||||
$toolbarZ: 250;
|
||||
$drawerZ: 351;
|
||||
$tooltipsZ: 401;
|
||||
@@ -269,4 +269,4 @@ $verySmallScreen: 500px;
|
||||
* Prejoin / premeeting screen
|
||||
*/
|
||||
|
||||
$prejoinDefaultContentWidth: 336px;
|
||||
$prejoinDefaultContentWidth: 336px;
|
||||
@@ -87,6 +87,7 @@
|
||||
|
||||
&__toolbar {
|
||||
bottom: 0;
|
||||
height: $thumbnailToolbarHeight;
|
||||
padding: 0 5px 0 5px;
|
||||
}
|
||||
|
||||
@@ -189,20 +190,6 @@
|
||||
z-index: $zindex2;
|
||||
}
|
||||
|
||||
&__participant-name {
|
||||
color: #fff;
|
||||
background-color: rgba(0,0,0,.4);
|
||||
padding: 3px 7px;
|
||||
border-radius: 3px;
|
||||
max-width: calc(100% - 32px);
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
height: 16px;
|
||||
display: inline-block;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
@media (min-width: 581px) {
|
||||
&.shift-right {
|
||||
&#largeVideoContainer {
|
||||
@@ -294,8 +281,21 @@
|
||||
#alwaysOnTop .displayname,
|
||||
.videocontainer .displayname,
|
||||
.videocontainer .editdisplayname {
|
||||
font-weight: 100;
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
left: 10%;
|
||||
width: 80%;
|
||||
top: 50%;
|
||||
@include transform(translateY(-40%));
|
||||
color: $participantNameColor;
|
||||
text-align: center;
|
||||
text-overflow: ellipsis;
|
||||
font-size: 12px;
|
||||
font-weight: 100;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
line-height: $thumbnailToolbarHeight;
|
||||
z-index: $zindex2;
|
||||
}
|
||||
|
||||
#alwaysOnTop .displayname {
|
||||
@@ -390,7 +390,7 @@
|
||||
}
|
||||
|
||||
.raisehandindicator {
|
||||
background: $raiseHandBg !important;
|
||||
background: $raiseHandBg;
|
||||
}
|
||||
|
||||
.connection-indicator {
|
||||
@@ -415,11 +415,6 @@
|
||||
&.status-other {
|
||||
background: $connectionIndicatorBg;
|
||||
}
|
||||
|
||||
&.status-disabled {
|
||||
background: transparent;
|
||||
border: none
|
||||
}
|
||||
}
|
||||
|
||||
.local-video-menu-trigger,
|
||||
|
||||
38
css/buttons/copy.scss
Normal file
38
css/buttons/copy.scss
Normal file
@@ -0,0 +1,38 @@
|
||||
.copy-button {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 8px 8px 8px 16px;
|
||||
margin-top: 5px;
|
||||
width: calc(100% - 24px);
|
||||
height: 24px;
|
||||
|
||||
background: #0376DA;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
background: #278ADF;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
&-content {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
max-width: 292px;
|
||||
margin-right: 16px;
|
||||
|
||||
&.selected {
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
|
||||
&.clicked {
|
||||
background: #31B76A;
|
||||
}
|
||||
|
||||
& > div > svg > path {
|
||||
fill: #fff;
|
||||
}
|
||||
}
|
||||
@@ -63,8 +63,6 @@
|
||||
}
|
||||
|
||||
.remote-videos {
|
||||
overscroll-behavior: contain;
|
||||
|
||||
& > div {
|
||||
transition: opacity 1s;
|
||||
position: absolute;
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overscroll-behavior: contain;
|
||||
}
|
||||
|
||||
.filmstrip__videos .videocontainer {
|
||||
|
||||
@@ -114,7 +114,6 @@
|
||||
.remote-videos {
|
||||
display: flex;
|
||||
transition: height .3s ease-in;
|
||||
overscroll-behavior: contain;
|
||||
|
||||
& > div {
|
||||
position: absolute;
|
||||
|
||||
@@ -33,6 +33,7 @@ $flagsImagePath: "../images/";
|
||||
@import 'inlay';
|
||||
@import 'reload_overlay/reload_overlay';
|
||||
@import 'mini_toolbox';
|
||||
@import 'buttons/copy.scss';
|
||||
@import 'modals/desktop-picker/desktop-picker';
|
||||
@import 'modals/device-selection/device-selection';
|
||||
@import 'modals/dialog';
|
||||
@@ -43,6 +44,7 @@ $flagsImagePath: "../images/";
|
||||
@import 'modals/screen-share/share-audio';
|
||||
@import 'modals/screen-share/share-screen-warning';
|
||||
@import 'modals/speaker_stats/speaker_stats';
|
||||
@import 'modals/video-quality/video-quality';
|
||||
@import 'modals/virtual-background/virtual-background';
|
||||
@import 'modals/local-recording/local-recording';
|
||||
@import 'videolayout_default';
|
||||
@@ -76,6 +78,7 @@ $flagsImagePath: "../images/";
|
||||
@import 'filmstrip/tile_view_overrides';
|
||||
@import 'filmstrip/vertical_filmstrip';
|
||||
@import 'filmstrip/vertical_filmstrip_overrides';
|
||||
@import 'labels';
|
||||
@import 'unsupported-browser/main';
|
||||
@import 'modals/invite/add-people';
|
||||
@import 'deep-linking/main';
|
||||
@@ -103,6 +106,5 @@ $flagsImagePath: "../images/";
|
||||
@import 'reactions-menu';
|
||||
@import 'plan-limit';
|
||||
@import 'polls';
|
||||
@import 'notifications';
|
||||
|
||||
/* Modules END */
|
||||
|
||||
@@ -122,6 +122,9 @@
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
}
|
||||
.modal-dialog-footer {
|
||||
font-size: $modalButtonFontSize;
|
||||
}
|
||||
|
||||
/**
|
||||
* Styling inline dialog errors.
|
||||
|
||||
@@ -27,10 +27,7 @@
|
||||
|
||||
.speaker-stats-item__status,
|
||||
.speaker-stats-item__name,
|
||||
.speaker-stats-item__time,
|
||||
.speaker-stats-item__name_expressions_on,
|
||||
.speaker-stats-item__time_expressions_on,
|
||||
.speaker-stats-item__expression {
|
||||
.speaker-stats-item__time {
|
||||
display: inline-block;
|
||||
margin: 5px 0;
|
||||
vertical-align: middle;
|
||||
@@ -44,35 +41,9 @@
|
||||
.speaker-stats-item__time {
|
||||
width: 55%;
|
||||
}
|
||||
.speaker-stats-item__name_expressions_on {
|
||||
width: 20%;
|
||||
}
|
||||
.speaker-stats-item__time_expressions_on {
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.speaker-stats-item__expression {
|
||||
width: 7%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
@media(max-width: 750px) {
|
||||
.speaker-stats-item__name_expressions_on {
|
||||
width: 25%;
|
||||
}
|
||||
.speaker-stats-item__time_expressions_on {
|
||||
width: 30%;
|
||||
}
|
||||
.speaker-stats-item__expression {
|
||||
width: 10%;
|
||||
}
|
||||
}
|
||||
|
||||
.speaker-stats-item__name,
|
||||
.speaker-stats-item__time,
|
||||
.speaker-stats-item__name_expressions_on,
|
||||
.speaker-stats-item__time_expressions_on,
|
||||
.speaker-stats-item__expression {
|
||||
.speaker-stats-item__time {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
|
||||
114
css/modals/video-quality/_video-quality.scss
Normal file
114
css/modals/video-quality/_video-quality.scss
Normal file
@@ -0,0 +1,114 @@
|
||||
.video-quality-dialog {
|
||||
.video-quality-dialog-title {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.video-quality-dialog-contents {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 10px;
|
||||
min-width: 250px;
|
||||
|
||||
.video-quality-dialog-slider-container {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.video-quality-dialog-slider {
|
||||
width: calc(100% - 5px);
|
||||
|
||||
@mixin sliderTrackStyles() {
|
||||
height: 15px;
|
||||
border-radius: 10px;
|
||||
background: rgb(14, 22, 36);
|
||||
}
|
||||
|
||||
&::-ms-track {
|
||||
@include sliderTrackStyles();
|
||||
}
|
||||
|
||||
&::-moz-range-track {
|
||||
@include sliderTrackStyles();
|
||||
}
|
||||
|
||||
&::-webkit-slider-runnable-track {
|
||||
@include sliderTrackStyles();
|
||||
}
|
||||
|
||||
@mixin sliderThumbStyles() {
|
||||
top: 50%;
|
||||
border: none;
|
||||
position: relative;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
&::-ms-thumb {
|
||||
@include sliderThumbStyles();
|
||||
}
|
||||
|
||||
&::-moz-range-thumb {
|
||||
@include sliderThumbStyles();
|
||||
|
||||
}
|
||||
|
||||
&::-webkit-slider-thumb {
|
||||
@include sliderThumbStyles();
|
||||
}
|
||||
}
|
||||
|
||||
.video-quality-dialog-labels {
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
margin-top: 5px;
|
||||
position: relative;
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
.video-quality-dialog-label-container {
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
transform: translate(-50%, 0%);
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
border-radius: 50%;
|
||||
left: 0;
|
||||
height: 6px;
|
||||
margin: 0 auto;
|
||||
pointer-events: none;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: -16px;
|
||||
width: 6px;
|
||||
}
|
||||
}
|
||||
|
||||
.video-quality-dialog-label-container.active {
|
||||
color: $videoQualityActive;
|
||||
font-weight: bold;
|
||||
|
||||
&::before {
|
||||
background: $videoQualityActive;
|
||||
height: 12px;
|
||||
top: -19px;
|
||||
width: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
.video-quality-dialog-label-container:first-child {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.video-quality-dialog-label {
|
||||
display: table-caption;
|
||||
word-spacing: unset;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.modal-dialog-form {
|
||||
.video-quality-dialog-title {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@@ -21,6 +21,7 @@
|
||||
.prejoin-preview {
|
||||
&-dropdown-btns {
|
||||
padding: 8px 0;
|
||||
width: calc(100% - 48px);
|
||||
}
|
||||
|
||||
&-dropdown-btn {
|
||||
@@ -58,6 +59,8 @@
|
||||
background: #fff;
|
||||
padding: 0;
|
||||
position: absolute !important;
|
||||
top: 48px !important;
|
||||
transform: none !important;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -138,6 +138,7 @@
|
||||
|
||||
.toolbox-content-items {
|
||||
background: transparent;
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
display: flex;
|
||||
justify-content: space-evenly;
|
||||
@@ -170,19 +171,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
// mobile phone landscape
|
||||
@media (max-height: 420px) {
|
||||
flex-direction: row;
|
||||
|
||||
div.content {
|
||||
padding: 16px 16px 0 16px;
|
||||
}
|
||||
|
||||
.con-status {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 400px) {
|
||||
.content {
|
||||
padding: 16px;
|
||||
@@ -238,6 +226,8 @@
|
||||
.avatar {
|
||||
text {
|
||||
fill: white;
|
||||
font-size: 26px;
|
||||
font-weight: 400;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
2
debian/jitsi-meet-prosody.postinst
vendored
2
debian/jitsi-meet-prosody.postinst
vendored
@@ -130,8 +130,6 @@ case "$1" in
|
||||
echo -e " storage = \"memory\"" >> $PROSODY_HOST_CONFIG
|
||||
echo -e " modules_enabled = { \"ping\"; }" >> $PROSODY_HOST_CONFIG
|
||||
echo -e " admins = { \"$JICOFO_AUTH_USER@$JICOFO_AUTH_DOMAIN\", \"jvb@$JICOFO_AUTH_DOMAIN\" }" >> $PROSODY_HOST_CONFIG
|
||||
echo -e " muc_room_locking = false" >> $PROSODY_HOST_CONFIG
|
||||
echo -e " muc_room_default_public_jids = true" >> $PROSODY_HOST_CONFIG
|
||||
fi
|
||||
|
||||
# Convert the old focus component config to the new one.
|
||||
|
||||
2
debian/jitsi-meet-tokens.postinst
vendored
2
debian/jitsi-meet-tokens.postinst
vendored
@@ -61,7 +61,7 @@ case "$1" in
|
||||
sed -i '/^\s*--\s*"token_verification"/ s/--\s*//' $PROSODY_HOST_CONFIG
|
||||
|
||||
# Install luajwt
|
||||
if ! luarocks install luajwtjitsi 2.0-0; then
|
||||
if ! luarocks install luajwtjitsi; then
|
||||
echo "Failed to install luajwtjitsi - try installing it manually"
|
||||
fi
|
||||
|
||||
|
||||
@@ -52,12 +52,10 @@ VirtualHost "jitmeet.example.com"
|
||||
"external_services";
|
||||
"conference_duration";
|
||||
"muc_lobby_rooms";
|
||||
"muc_breakout_rooms";
|
||||
"av_moderation";
|
||||
}
|
||||
c2s_require_encryption = false
|
||||
lobby_muc = "lobby.jitmeet.example.com"
|
||||
breakout_rooms_muc = "breakout.jitmeet.example.com"
|
||||
main_muc = "conference.jitmeet.example.com"
|
||||
-- muc_lobby_whitelist = { "recorder.jitmeet.example.com" } -- Here we can whitelist jibri to enter lobby enabled rooms
|
||||
|
||||
@@ -69,19 +67,6 @@ Component "conference.jitmeet.example.com" "muc"
|
||||
"muc_domain_mapper";
|
||||
"polls";
|
||||
--"token_verification";
|
||||
"muc_rate_limit";
|
||||
}
|
||||
admins = { "focusUser@auth.jitmeet.example.com" }
|
||||
muc_room_locking = false
|
||||
muc_room_default_public_jids = true
|
||||
|
||||
Component "breakout.jitmeet.example.com" "muc"
|
||||
restrict_room_creation = true
|
||||
storage = "memory"
|
||||
modules_enabled = {
|
||||
"muc_meeting_id";
|
||||
"muc_domain_mapper";
|
||||
--"token_verification";
|
||||
}
|
||||
admins = { "focusUser@auth.jitmeet.example.com" }
|
||||
muc_room_locking = false
|
||||
|
||||
8
doc/example-config-files/config.js.example
Executable file
8
doc/example-config-files/config.js.example
Executable file
@@ -0,0 +1,8 @@
|
||||
var config = {
|
||||
hosts: {
|
||||
domain: 'jitsi.example.com',
|
||||
muc: 'conference.jitsi.example.com', // FIXME: use XEP-0030
|
||||
bridge: 'jitsi-videobridge.jitsi.example.com' // FIXME: use XEP-0030
|
||||
},
|
||||
bosh: '//jitsi.example.com/http-bind' // FIXME: use xep-0156 for that
|
||||
};
|
||||
39
doc/example-config-files/jitsi.example.com.example
Executable file
39
doc/example-config-files/jitsi.example.com.example
Executable file
@@ -0,0 +1,39 @@
|
||||
server {
|
||||
listen 80;
|
||||
|
||||
server_name jitsi.example.com;
|
||||
# set the root
|
||||
root /srv/jitsi.example.com;
|
||||
index index.html;
|
||||
|
||||
location ~ ^/([a-zA-Z0-9=\?]+)$ {
|
||||
rewrite ^/(.*)$ / break;
|
||||
}
|
||||
|
||||
location / {
|
||||
ssi on;
|
||||
}
|
||||
|
||||
gzip on;
|
||||
gzip_types text/plain text/css application/javascript application/json image/x-icon application/octet-stream application/wasm;
|
||||
gzip_vary on;
|
||||
gzip_proxied no-cache no-store private expired auth;
|
||||
gzip_min_length 512;
|
||||
|
||||
# BOSH
|
||||
location /http-bind {
|
||||
proxy_pass http://localhost:5280/http-bind;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header Host $http_host;
|
||||
}
|
||||
|
||||
# xmpp websockets
|
||||
location /xmpp-websocket {
|
||||
proxy_pass http://localhost:5280/xmpp-websocket;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_set_header Host $host;
|
||||
tcp_nodelay on;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
var subdomain = "<!--# echo var="subdomain" default="" -->";
|
||||
if (subdomain) {
|
||||
subdomain = subdomain.substr(0,subdomain.length-1).split('.').join('_').toLowerCase() + '.';
|
||||
}
|
||||
|
||||
var config = {
|
||||
hosts: {
|
||||
domain: 'jitsi.example.com',
|
||||
muc: 'conference.'+subdomain+'jitsi.example.com', // FIXME: use XEP-0030
|
||||
focus: 'focus.jitsi.example.com',
|
||||
},
|
||||
bosh: '//jitsi.example.com/http-bind', // FIXME: use xep-0156 for that
|
||||
websocket: 'wss://jitsi.example.com/xmpp-websocket'
|
||||
};
|
||||
@@ -0,0 +1,76 @@
|
||||
server {
|
||||
listen 80;
|
||||
|
||||
server_name jitsi.example.com;
|
||||
# set the root
|
||||
root /srv/jitsi.example.com;
|
||||
# ssi on with javascript for multidomain variables in config.js
|
||||
ssi on;
|
||||
ssi_types application/x-javascript application/javascript;
|
||||
index index.html;
|
||||
set $prefix "";
|
||||
|
||||
# BOSH
|
||||
location /http-bind {
|
||||
proxy_pass http://localhost:5280/http-bind;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header Host $http_host;
|
||||
}
|
||||
|
||||
# xmpp websockets
|
||||
location /xmpp-websocket {
|
||||
proxy_pass http://localhost:5280/xmpp-websocket;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_set_header Host $host;
|
||||
tcp_nodelay on;
|
||||
}
|
||||
|
||||
gzip on;
|
||||
gzip_types text/plain text/css application/javascript application/json image/x-icon application/octet-stream application/wasm;
|
||||
gzip_vary on;
|
||||
gzip_proxied no-cache no-store private expired auth;
|
||||
gzip_min_length 512;
|
||||
|
||||
location ~ ^/([^/?&:'"]+)$ {
|
||||
try_files $uri @root_path;
|
||||
}
|
||||
|
||||
location @root_path {
|
||||
rewrite ^/(.*)$ / break;
|
||||
}
|
||||
|
||||
location ~ ^/([^/?&:'"]+)/config.js$
|
||||
{
|
||||
set $subdomain "$1.";
|
||||
set $subdir "$1/";
|
||||
|
||||
alias /etc/jitsi/meet/{{jitsi_meet_domain_name}}-config.js;
|
||||
}
|
||||
|
||||
# Anything that didn't match above, and isn't a real file, assume it's a room name and redirect to /
|
||||
location ~ ^/([^/?&:'"]+)/(.*)$ {
|
||||
set $subdomain "$1.";
|
||||
set $subdir "$1/";
|
||||
rewrite ^/([^/?&:'"]+)/(.*)$ /$2;
|
||||
}
|
||||
|
||||
# BOSH for subdomains
|
||||
location ~ ^/([^/?&:'"]+)/http-bind {
|
||||
set $subdomain "$1.";
|
||||
set $subdir "$1/";
|
||||
set $prefix "$1";
|
||||
|
||||
rewrite ^/(.*)$ /http-bind;
|
||||
}
|
||||
|
||||
# websockets for subdomains
|
||||
location ~ ^/([^/?&:'"]+)/xmpp-websocket {
|
||||
set $subdomain "$1.";
|
||||
set $subdir "$1/";
|
||||
set $prefix "$1";
|
||||
|
||||
rewrite ^/(.*)$ /xmpp-websocket;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,218 @@
|
||||
-- Prosody XMPP Server Configuration
|
||||
--
|
||||
-- Information on configuring Prosody can be found on our
|
||||
-- website at http://prosody.im/doc/configure
|
||||
--
|
||||
-- Tip: You can check that the syntax of this file is correct
|
||||
-- when you have finished by running: prosodyctl check config
|
||||
-- If there are any errors, it will let you know what and where
|
||||
-- they are, otherwise it will keep quiet.
|
||||
--
|
||||
-- Good luck, and happy Jabbering!
|
||||
|
||||
|
||||
---------- Server-wide settings ----------
|
||||
-- Settings in this section apply to the whole server and are the default settings
|
||||
-- for any virtual hosts
|
||||
|
||||
-- This is a (by default, empty) list of accounts that are admins
|
||||
-- for the server. Note that you must create the accounts separately
|
||||
-- (see http://prosody.im/doc/creating_accounts for info)
|
||||
-- Example: admins = { "user1@example.com", "user2@example.net" }
|
||||
admins = { }
|
||||
daemonize = true
|
||||
cross_domain_bosh = true;
|
||||
component_ports = { 5347 }
|
||||
--component_interface = "192.168.0.10"
|
||||
|
||||
-- Enable use of libevent for better performance under high load
|
||||
-- For more information see: http://prosody.im/doc/libevent
|
||||
--use_libevent = true
|
||||
|
||||
-- This is the list of modules Prosody will load on startup.
|
||||
-- It looks for mod_modulename.lua in the plugins folder, so make sure that exists too.
|
||||
-- Documentation on modules can be found at: http://prosody.im/doc/modules
|
||||
modules_enabled = {
|
||||
|
||||
-- Generally required
|
||||
"roster"; -- Allow users to have a roster. Recommended ;)
|
||||
"saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
|
||||
"tls"; -- Add support for secure TLS on c2s/s2s connections
|
||||
"dialback"; -- s2s dialback support
|
||||
"disco"; -- Service discovery
|
||||
"posix"; -- POSIX functionality, sends server to background, enables syslog, etc.
|
||||
|
||||
-- Not essential, but recommended
|
||||
"private"; -- Private XML storage (for room bookmarks, etc.)
|
||||
"vcard"; -- Allow users to set vCards
|
||||
|
||||
-- These are commented by default as they have a performance impact
|
||||
--"privacy"; -- Support privacy lists
|
||||
"compression"; -- Stream compression (requires the lua-zlib package installed)
|
||||
|
||||
-- Nice to have
|
||||
"version"; -- Replies to server version requests
|
||||
"uptime"; -- Report how long server has been running
|
||||
"time"; -- Let others know the time here on this server
|
||||
"ping"; -- Replies to XMPP pings with pongs
|
||||
"pep"; -- Enables users to publish their mood, activity, playing music and more
|
||||
"register"; -- Allow users to register on this server using a client and change passwords
|
||||
|
||||
-- Admin interfaces
|
||||
"admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands
|
||||
--"admin_telnet"; -- Opens telnet console interface on localhost port 5582
|
||||
|
||||
-- HTTP modules
|
||||
"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP"
|
||||
--"http_files"; -- Serve static files from a directory over HTTP
|
||||
|
||||
-- Other specific functionality
|
||||
--"groups"; -- Shared roster support
|
||||
--"announce"; -- Send announcement to all online users
|
||||
--"welcome"; -- Welcome users who register accounts
|
||||
--"watchregistrations"; -- Alert admins of registrations
|
||||
--"motd"; -- Send a message to users when they log in
|
||||
--"legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
|
||||
|
||||
-- jitsi
|
||||
"smacks";
|
||||
"carbons";
|
||||
"mam";
|
||||
"lastactivity";
|
||||
"offline";
|
||||
"pubsub";
|
||||
"adhoc";
|
||||
"websocket";
|
||||
"http_altconnect";
|
||||
}
|
||||
|
||||
-- domain mapper options, must at least have domain base set to use the mapper
|
||||
muc_mapper_domain_base = "jitsi.example.com";
|
||||
|
||||
-- These modules are auto-loaded, but should you want
|
||||
-- to disable them then uncomment them here:
|
||||
modules_disabled = {
|
||||
--"offline"; -- Store offline messages
|
||||
--"c2s"; -- Handle client connections
|
||||
--"s2s"; -- Handle server-to-server connections
|
||||
}
|
||||
|
||||
-- Disable account creation by default, for security
|
||||
-- For more information see http://prosody.im/doc/creating_accounts
|
||||
allow_registration = false
|
||||
|
||||
-- These are the SSL/TLS-related settings. If you don't want
|
||||
-- to use SSL/TLS, you may comment or remove this
|
||||
ssl = {
|
||||
key = "/etc/prosody/certs/localhost.key";
|
||||
certificate = "/etc/prosody/certs/localhost.crt";
|
||||
}
|
||||
|
||||
-- Force clients to use encrypted connections? This option will
|
||||
-- prevent clients from authenticating unless they are using encryption.
|
||||
|
||||
--c2s_require_encryption = true
|
||||
|
||||
-- Force certificate authentication for server-to-server connections?
|
||||
-- This provides ideal security, but requires servers you communicate
|
||||
-- with to support encryption AND present valid, trusted certificates.
|
||||
-- NOTE: Your version of LuaSec must support certificate verification!
|
||||
-- For more information see http://prosody.im/doc/s2s#security
|
||||
|
||||
--s2s_secure_auth = false
|
||||
|
||||
-- Many servers don't support encryption or have invalid or self-signed
|
||||
-- certificates. You can list domains here that will not be required to
|
||||
-- authenticate using certificates. They will be authenticated using DNS.
|
||||
|
||||
--s2s_insecure_domains = { "gmail.com" }
|
||||
|
||||
-- Even if you leave s2s_secure_auth disabled, you can still require valid
|
||||
-- certificates for some domains by specifying a list here.
|
||||
|
||||
--s2s_secure_domains = { "jabber.org" }
|
||||
|
||||
-- Required for init scripts and prosodyctl
|
||||
pidfile = "/var/run/prosody/prosody.pid"
|
||||
|
||||
-- Select the authentication backend to use. The 'internal' providers
|
||||
-- use Prosody's configured data storage to store the authentication data.
|
||||
-- To allow Prosody to offer secure authentication mechanisms to clients, the
|
||||
-- default provider stores passwords in plaintext. If you do not trust your
|
||||
-- server please see http://prosody.im/doc/modules/mod_auth_internal_hashed
|
||||
-- for information about using the hashed backend.
|
||||
|
||||
authentication = "internal_hashed"
|
||||
|
||||
-- Select the storage backend to use. By default Prosody uses flat files
|
||||
-- in its configured data directory, but it also supports more backends
|
||||
-- through modules. An "sql" backend is included by default, but requires
|
||||
-- additional dependencies. See http://prosody.im/doc/storage for more info.
|
||||
|
||||
--storage = "sql" -- Default is "internal"
|
||||
|
||||
-- For the "sql" backend, you can uncomment *one* of the below to configure:
|
||||
--sql = { driver = "SQLite3", database = "prosody.sqlite" } -- Default. 'database' is the filename.
|
||||
--sql = { driver = "MySQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" }
|
||||
--sql = { driver = "PostgreSQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" }
|
||||
|
||||
-- Logging configuration
|
||||
-- For advanced logging see http://prosody.im/doc/logging
|
||||
log = {
|
||||
info = "/var/log/prosody/prosody.log"; -- Change 'info' to 'debug' for verbose logging
|
||||
error = "/var/log/prosody/prosody.err";
|
||||
"*syslog";
|
||||
}
|
||||
|
||||
----------- Virtual hosts -----------
|
||||
-- You need to add a VirtualHost entry for each domain you wish Prosody to serve.
|
||||
-- Settings under each VirtualHost entry apply *only* to that host.
|
||||
|
||||
--VirtualHost "localhost"
|
||||
|
||||
VirtualHost "jitsi.example.com"
|
||||
-- enabled = false -- Remove this line to enable this host
|
||||
authentication = "anonymous"
|
||||
-- Assign this host a certificate for TLS, otherwise it would use the one
|
||||
-- set in the global section (if any).
|
||||
-- Note that old-style SSL on port 5223 only supports one certificate, and will always
|
||||
-- use the global one.
|
||||
ssl = {
|
||||
key = "/var/lib/prosody/jitsi.example.com.key";
|
||||
certificate = "/var/lib/prosody/jitsi.example.com.crt";
|
||||
}
|
||||
|
||||
c2s_require_encryption = false
|
||||
|
||||
VirtualHost "auth.jitsi.example.com"
|
||||
ssl = {
|
||||
key = "/var/lib/prosody/auth.jitsi.example.com.key";
|
||||
certificate = "/var/lib/prosody/auth.jitsi.example.com.crt";
|
||||
}
|
||||
authentication = "internal_hashed"
|
||||
|
||||
------ Components ------
|
||||
-- You can specify components to add hosts that provide special services,
|
||||
-- like multi-user conferences, and transports.
|
||||
-- For more information on components, see http://prosody.im/doc/components
|
||||
|
||||
---Set up a MUC (multi-user chat) room server on conference.example.com:
|
||||
--Component "conference.example.com" "muc"
|
||||
|
||||
-- Set up a SOCKS5 bytestream proxy for server-proxied file transfers:
|
||||
--Component "proxy.example.com" "proxy65"
|
||||
|
||||
---Set up an external component (default component port is 5347)
|
||||
--
|
||||
-- External components allow adding various services, such as gateways/
|
||||
-- transports to other networks like ICQ, MSN and Yahoo. For more info
|
||||
-- see: http://prosody.im/doc/components#adding_an_external_component
|
||||
--
|
||||
--Component "gateway.example.com"
|
||||
-- component_secret = "password"
|
||||
|
||||
Component "conference.jitsi.example.com" "muc"
|
||||
modules_enabled = { "muc_domain_mapper" }
|
||||
|
||||
Component "jitsi-videobridge.jitsi.example.com"
|
||||
component_secret = "IfGaish6"
|
||||
54
doc/example-config-files/nginx.conf.example
Executable file
54
doc/example-config-files/nginx.conf.example
Executable file
@@ -0,0 +1,54 @@
|
||||
user www-data;
|
||||
worker_processes 1;
|
||||
|
||||
error_log /var/log/nginx/error.log;
|
||||
pid /var/run/nginx.pid;
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
# multi_accept on;
|
||||
}
|
||||
|
||||
http {
|
||||
include /etc/nginx/mime.types;
|
||||
|
||||
access_log /var/log/nginx/access.log;
|
||||
|
||||
sendfile on;
|
||||
#tcp_nopush on;
|
||||
|
||||
#keepalive_timeout 0;
|
||||
keepalive_timeout 65;
|
||||
tcp_nodelay on;
|
||||
|
||||
tcp_nopush on;
|
||||
types_hash_max_size 2048;
|
||||
server_names_hash_bucket_size 64;
|
||||
|
||||
gzip on;
|
||||
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
|
||||
|
||||
include /etc/nginx/conf.d/*.conf;
|
||||
include /etc/nginx/sites-enabled/*;
|
||||
}
|
||||
|
||||
# mail {
|
||||
# # See sample authentication script at:
|
||||
# # http://wiki.nginx.org/NginxImapAuthenticateWithApachePhpScript
|
||||
#
|
||||
# # auth_http localhost/auth.php;
|
||||
# # pop3_capabilities "TOP" "USER";
|
||||
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
|
||||
#
|
||||
# server {
|
||||
# listen localhost:110;
|
||||
# protocol pop3;
|
||||
# proxy on;
|
||||
# }
|
||||
#
|
||||
# server {
|
||||
# listen localhost:143;
|
||||
# protocol imap;
|
||||
# proxy on;
|
||||
# }
|
||||
# }
|
||||
214
doc/example-config-files/prosody.cfg.lua.example
Executable file
214
doc/example-config-files/prosody.cfg.lua.example
Executable file
@@ -0,0 +1,214 @@
|
||||
-- Prosody XMPP Server Configuration
|
||||
--
|
||||
-- Information on configuring Prosody can be found on our
|
||||
-- website at http://prosody.im/doc/configure
|
||||
--
|
||||
-- Tip: You can check that the syntax of this file is correct
|
||||
-- when you have finished by running: prosodyctl check config
|
||||
-- If there are any errors, it will let you know what and where
|
||||
-- they are, otherwise it will keep quiet.
|
||||
--
|
||||
-- Good luck, and happy Jabbering!
|
||||
|
||||
|
||||
---------- Server-wide settings ----------
|
||||
-- Settings in this section apply to the whole server and are the default settings
|
||||
-- for any virtual hosts
|
||||
|
||||
-- This is a (by default, empty) list of accounts that are admins
|
||||
-- for the server. Note that you must create the accounts separately
|
||||
-- (see http://prosody.im/doc/creating_accounts for info)
|
||||
-- Example: admins = { "user1@example.com", "user2@example.net" }
|
||||
admins = { }
|
||||
daemonize = true
|
||||
cross_domain_bosh = true;
|
||||
component_ports = { 5347 }
|
||||
--component_interface = "192.168.0.10"
|
||||
|
||||
-- Enable use of libevent for better performance under high load
|
||||
-- For more information see: http://prosody.im/doc/libevent
|
||||
--use_libevent = true
|
||||
|
||||
-- This is the list of modules Prosody will load on startup.
|
||||
-- It looks for mod_modulename.lua in the plugins folder, so make sure that exists too.
|
||||
-- Documentation on modules can be found at: http://prosody.im/doc/modules
|
||||
modules_enabled = {
|
||||
|
||||
-- Generally required
|
||||
"roster"; -- Allow users to have a roster. Recommended ;)
|
||||
"saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
|
||||
"tls"; -- Add support for secure TLS on c2s/s2s connections
|
||||
"dialback"; -- s2s dialback support
|
||||
"disco"; -- Service discovery
|
||||
"posix"; -- POSIX functionality, sends server to background, enables syslog, etc.
|
||||
|
||||
-- Not essential, but recommended
|
||||
"private"; -- Private XML storage (for room bookmarks, etc.)
|
||||
"vcard"; -- Allow users to set vCards
|
||||
|
||||
-- These are commented by default as they have a performance impact
|
||||
--"privacy"; -- Support privacy lists
|
||||
"compression"; -- Stream compression (requires the lua-zlib package installed)
|
||||
|
||||
-- Nice to have
|
||||
"version"; -- Replies to server version requests
|
||||
"uptime"; -- Report how long server has been running
|
||||
"time"; -- Let others know the time here on this server
|
||||
"ping"; -- Replies to XMPP pings with pongs
|
||||
"pep"; -- Enables users to publish their mood, activity, playing music and more
|
||||
"register"; -- Allow users to register on this server using a client and change passwords
|
||||
|
||||
-- Admin interfaces
|
||||
"admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands
|
||||
--"admin_telnet"; -- Opens telnet console interface on localhost port 5582
|
||||
|
||||
-- HTTP modules
|
||||
"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP"
|
||||
--"http_files"; -- Serve static files from a directory over HTTP
|
||||
|
||||
-- Other specific functionality
|
||||
--"groups"; -- Shared roster support
|
||||
--"announce"; -- Send announcement to all online users
|
||||
--"welcome"; -- Welcome users who register accounts
|
||||
--"watchregistrations"; -- Alert admins of registrations
|
||||
--"motd"; -- Send a message to users when they log in
|
||||
--"legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
|
||||
|
||||
-- jitsi
|
||||
"smacks";
|
||||
"carbons";
|
||||
"mam";
|
||||
"lastactivity";
|
||||
"offline";
|
||||
"pubsub";
|
||||
"adhoc";
|
||||
"websocket";
|
||||
"http_altconnect";
|
||||
}
|
||||
|
||||
-- These modules are auto-loaded, but should you want
|
||||
-- to disable them then uncomment them here:
|
||||
modules_disabled = {
|
||||
--"offline"; -- Store offline messages
|
||||
--"c2s"; -- Handle client connections
|
||||
--"s2s"; -- Handle server-to-server connections
|
||||
}
|
||||
|
||||
-- Disable account creation by default, for security
|
||||
-- For more information see http://prosody.im/doc/creating_accounts
|
||||
allow_registration = false
|
||||
|
||||
-- These are the SSL/TLS-related settings. If you don't want
|
||||
-- to use SSL/TLS, you may comment or remove this
|
||||
ssl = {
|
||||
key = "/etc/prosody/certs/localhost.key";
|
||||
certificate = "/etc/prosody/certs/localhost.crt";
|
||||
}
|
||||
|
||||
-- Force clients to use encrypted connections? This option will
|
||||
-- prevent clients from authenticating unless they are using encryption.
|
||||
|
||||
--c2s_require_encryption = true
|
||||
|
||||
-- Force certificate authentication for server-to-server connections?
|
||||
-- This provides ideal security, but requires servers you communicate
|
||||
-- with to support encryption AND present valid, trusted certificates.
|
||||
-- NOTE: Your version of LuaSec must support certificate verification!
|
||||
-- For more information see http://prosody.im/doc/s2s#security
|
||||
|
||||
--s2s_secure_auth = false
|
||||
|
||||
-- Many servers don't support encryption or have invalid or self-signed
|
||||
-- certificates. You can list domains here that will not be required to
|
||||
-- authenticate using certificates. They will be authenticated using DNS.
|
||||
|
||||
--s2s_insecure_domains = { "gmail.com" }
|
||||
|
||||
-- Even if you leave s2s_secure_auth disabled, you can still require valid
|
||||
-- certificates for some domains by specifying a list here.
|
||||
|
||||
--s2s_secure_domains = { "jabber.org" }
|
||||
|
||||
-- Required for init scripts and prosodyctl
|
||||
pidfile = "/var/run/prosody/prosody.pid"
|
||||
|
||||
-- Select the authentication backend to use. The 'internal' providers
|
||||
-- use Prosody's configured data storage to store the authentication data.
|
||||
-- To allow Prosody to offer secure authentication mechanisms to clients, the
|
||||
-- default provider stores passwords in plaintext. If you do not trust your
|
||||
-- server please see http://prosody.im/doc/modules/mod_auth_internal_hashed
|
||||
-- for information about using the hashed backend.
|
||||
|
||||
authentication = "internal_hashed"
|
||||
|
||||
-- Select the storage backend to use. By default Prosody uses flat files
|
||||
-- in its configured data directory, but it also supports more backends
|
||||
-- through modules. An "sql" backend is included by default, but requires
|
||||
-- additional dependencies. See http://prosody.im/doc/storage for more info.
|
||||
|
||||
--storage = "sql" -- Default is "internal"
|
||||
|
||||
-- For the "sql" backend, you can uncomment *one* of the below to configure:
|
||||
--sql = { driver = "SQLite3", database = "prosody.sqlite" } -- Default. 'database' is the filename.
|
||||
--sql = { driver = "MySQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" }
|
||||
--sql = { driver = "PostgreSQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" }
|
||||
|
||||
-- Logging configuration
|
||||
-- For advanced logging see http://prosody.im/doc/logging
|
||||
log = {
|
||||
info = "/var/log/prosody/prosody.log"; -- Change 'info' to 'debug' for verbose logging
|
||||
error = "/var/log/prosody/prosody.err";
|
||||
"*syslog";
|
||||
}
|
||||
|
||||
----------- Virtual hosts -----------
|
||||
-- You need to add a VirtualHost entry for each domain you wish Prosody to serve.
|
||||
-- Settings under each VirtualHost entry apply *only* to that host.
|
||||
|
||||
--VirtualHost "localhost"
|
||||
|
||||
VirtualHost "jitsi.example.com"
|
||||
-- enabled = false -- Remove this line to enable this host
|
||||
authentication = "anonymous"
|
||||
-- Assign this host a certificate for TLS, otherwise it would use the one
|
||||
-- set in the global section (if any).
|
||||
-- Note that old-style SSL on port 5223 only supports one certificate, and will always
|
||||
-- use the global one.
|
||||
ssl = {
|
||||
key = "/var/lib/prosody/jitsi.example.com.key";
|
||||
certificate = "/var/lib/prosody/jitsi.example.com.crt";
|
||||
}
|
||||
|
||||
c2s_require_encryption = false
|
||||
|
||||
VirtualHost "auth.jitsi.example.com"
|
||||
ssl = {
|
||||
key = "/var/lib/prosody/auth.jitsi.example.com.key";
|
||||
certificate = "/var/lib/prosody/auth.jitsi.example.com.crt";
|
||||
}
|
||||
authentication = "internal_hashed"
|
||||
|
||||
------ Components ------
|
||||
-- You can specify components to add hosts that provide special services,
|
||||
-- like multi-user conferences, and transports.
|
||||
-- For more information on components, see http://prosody.im/doc/components
|
||||
|
||||
---Set up a MUC (multi-user chat) room server on conference.example.com:
|
||||
--Component "conference.example.com" "muc"
|
||||
|
||||
-- Set up a SOCKS5 bytestream proxy for server-proxied file transfers:
|
||||
--Component "proxy.example.com" "proxy65"
|
||||
|
||||
---Set up an external component (default component port is 5347)
|
||||
--
|
||||
-- External components allow adding various services, such as gateways/
|
||||
-- transports to other networks like ICQ, MSN and Yahoo. For more info
|
||||
-- see: http://prosody.im/doc/components#adding_an_external_component
|
||||
--
|
||||
--Component "gateway.example.com"
|
||||
-- component_secret = "password"
|
||||
|
||||
Component "conference.jitsi.example.com" "muc"
|
||||
|
||||
Component "jitsi-videobridge.jitsi.example.com"
|
||||
component_secret = "IfGaish6"
|
||||
@@ -0,0 +1,32 @@
|
||||
# Jitsi Conference Focus settings
|
||||
# sets the host name of the XMPP server
|
||||
JICOFO_HOST=localhost
|
||||
|
||||
# sets the XMPP domain (default: none)
|
||||
JICOFO_HOSTNAME=meet.example.com
|
||||
|
||||
# sets the secret used to authenticate as an XMPP component
|
||||
JICOFO_SECRET=$JICOFO_SECRET
|
||||
|
||||
# sets the port to use for the XMPP component connection
|
||||
JICOFO_PORT=5347
|
||||
|
||||
# sets the XMPP domain name to use for XMPP user logins
|
||||
JICOFO_AUTH_DOMAIN=auth.meet.example.com
|
||||
|
||||
# sets the username to use for XMPP user logins
|
||||
JICOFO_AUTH_USER=focus
|
||||
|
||||
# sets the password to use for XMPP user logins
|
||||
JICOFO_AUTH_PASSWORD=$JICOFO_PASSWORD
|
||||
|
||||
# extra options to pass to the jicofo daemon
|
||||
JICOFO_OPTS=""
|
||||
|
||||
# adds java system props that are passed to jicofo (default are for home and logging config file)
|
||||
JAVA_SYS_PROPS=" \
|
||||
-Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/jitsi \
|
||||
-Dnet.java.sip.communicator.SC_HOME_DIR_NAME=jicofo \
|
||||
-Dnet.java.sip.communicator.SC_LOG_DIR_LOCATION=/var/log/jitsi \
|
||||
-Djava.util.logging.config.file=/etc/jitsi/jicofo/logging.properties \
|
||||
"
|
||||
@@ -0,0 +1,6 @@
|
||||
|
||||
org.jitsi.jicofo.BRIDGE_MUC=JvbBrewery@internal.auth.meet.example.com
|
||||
org.jitsi.jicofo.ALWAYS_TRUST_MODE_ENABLED=true
|
||||
|
||||
org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.auth.meet.example.com
|
||||
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90
|
||||
@@ -0,0 +1,87 @@
|
||||
plugin_paths = { "/usr/share/jitsi-meet/prosody-plugins/" }
|
||||
|
||||
-- domain mapper options, must at least have domain base set to use the mapper
|
||||
muc_mapper_domain_base = "meet.example.com";
|
||||
|
||||
turncredentials_secret = "turncredentials_secret_test";
|
||||
|
||||
turncredentials = {
|
||||
{ type = "stun", host = "meet.example.com", port = "443" },
|
||||
{ type = "turn", host = "meet.example.com", port = "443", transport = "udp" },
|
||||
{ type = "turns", host = "meet.example.com", port = "443", transport = "tcp" }
|
||||
};
|
||||
|
||||
cross_domain_bosh = false;
|
||||
consider_bosh_secure = true;
|
||||
|
||||
VirtualHost "meet.example.com"
|
||||
-- enabled = false -- Remove this line to enable this host
|
||||
authentication = "anonymous"
|
||||
-- Properties below are modified by jitsi-meet-tokens package config
|
||||
-- and authentication above is switched to "token"
|
||||
--app_id="example_app_id"
|
||||
--app_secret="example_app_secret"
|
||||
-- Assign this host a certificate for TLS, otherwise it would use the one
|
||||
-- set in the global section (if any).
|
||||
-- Note that old-style SSL on port 5223 only supports one certificate, and will always
|
||||
-- use the global one.
|
||||
ssl = {
|
||||
key = "/etc/prosody/certs/meet.example.com.key";
|
||||
certificate = "/etc/prosody/certs/meet.example.com.crt";
|
||||
}
|
||||
speakerstats_component = "speakerstats.meet.example.com"
|
||||
conference_duration_component = "conferenceduration.meet.example.com"
|
||||
-- we need bosh
|
||||
modules_enabled = {
|
||||
"bosh";
|
||||
"pubsub";
|
||||
"ping"; -- Enable mod_ping
|
||||
"speakerstats";
|
||||
"turncredentials";
|
||||
"conference_duration";
|
||||
}
|
||||
c2s_require_encryption = false
|
||||
|
||||
Component "conference.meet.example.com" "muc"
|
||||
storage = "memory"
|
||||
modules_enabled = {
|
||||
"muc_meeting_id";
|
||||
"muc_domain_mapper";
|
||||
--"token_verification";
|
||||
}
|
||||
admins = { "focus@auth.meet.example.com" }
|
||||
muc_room_locking = false
|
||||
muc_room_default_public_jids = true
|
||||
|
||||
-- internal muc component
|
||||
-- Note: This is also used from jibris
|
||||
Component "internal.auth.meet.example.com" "muc"
|
||||
storage = "memory"
|
||||
modules_enabled = {
|
||||
"ping";
|
||||
}
|
||||
admins = { "focus@auth.meet.example.com", "jvb@auth.meet.example.com" }
|
||||
|
||||
VirtualHost "auth.meet.example.com"
|
||||
ssl = {
|
||||
key = "/etc/prosody/certs/auth.meet.example.com.key";
|
||||
certificate = "/etc/prosody/certs/auth.meet.example.com.crt";
|
||||
}
|
||||
authentication = "internal_hashed"
|
||||
|
||||
Component "focus.meet.example.com"
|
||||
component_secret = "jicofo_secret_test"
|
||||
|
||||
Component "speakerstats.meet.example.com" "speakerstats_component"
|
||||
muc_component = "conference.meet.example.com"
|
||||
|
||||
Component "conferenceduration.meet.example.com" "conference_duration_component"
|
||||
muc_component = "conference.meet.example.com"
|
||||
|
||||
-- for Jibri
|
||||
VirtualHost "recorder.meet.example.com"
|
||||
modules_enabled = {
|
||||
"ping";
|
||||
}
|
||||
authentication = "internal_hashed"
|
||||
c2s_require_encryption = false
|
||||
@@ -0,0 +1,112 @@
|
||||
-- Prosody XMPP Server Configuration
|
||||
|
||||
---------- Server-wide settings ----------
|
||||
-- Settings in this section apply to the whole server and are the default settings
|
||||
-- for any virtual hosts
|
||||
|
||||
admins = { }
|
||||
|
||||
network_backend = "epoll"
|
||||
|
||||
-- This is the list of modules Prosody will load on startup.
|
||||
-- It looks for mod_modulename.lua in the plugins folder, so make sure that exists too.
|
||||
-- Documentation for bundled modules can be found at: https://prosody.im/doc/modules
|
||||
modules_enabled = {
|
||||
|
||||
-- Generally required
|
||||
"roster"; -- Allow users to have a roster. Recommended ;)
|
||||
"saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
|
||||
"tls"; -- Add support for secure TLS on c2s/s2s connections
|
||||
"dialback"; -- s2s dialback support
|
||||
"disco"; -- Service discovery
|
||||
|
||||
-- Not essential, but recommended
|
||||
"carbons"; -- Keep multiple clients in sync
|
||||
"pep"; -- Enables users to publish their avatar, mood, activity, playing music and more
|
||||
"private"; -- Private XML storage (for room bookmarks, etc.)
|
||||
"blocklist"; -- Allow users to block communications with other users
|
||||
"vcard4"; -- User profiles (stored in PEP)
|
||||
"vcard_legacy"; -- Conversion between legacy vCard and PEP Avatar, vcard
|
||||
|
||||
-- Nice to have
|
||||
"version"; -- Replies to server version requests
|
||||
"uptime"; -- Report how long server has been running
|
||||
"time"; -- Let others know the time here on this server
|
||||
"ping"; -- Replies to XMPP pings with pongs
|
||||
"register"; -- Allow users to register on this server using a client and change passwords
|
||||
--"mam"; -- Store messages in an archive and allow users to access it
|
||||
--"csi_simple"; -- Simple Mobile optimizations
|
||||
|
||||
-- Admin interfaces
|
||||
"admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands
|
||||
--"admin_telnet"; -- Opens telnet console interface on localhost port 5582
|
||||
|
||||
-- HTTP modules
|
||||
--"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP"
|
||||
--"websocket"; -- XMPP over WebSockets
|
||||
--"http_files"; -- Serve static files from a directory over HTTP
|
||||
|
||||
-- Other specific functionality
|
||||
--"limits"; -- Enable bandwidth limiting for XMPP connections
|
||||
--"groups"; -- Shared roster support
|
||||
--"server_contact_info"; -- Publish contact information for this service
|
||||
--"announce"; -- Send announcement to all online users
|
||||
--"welcome"; -- Welcome users who register accounts
|
||||
--"watchregistrations"; -- Alert admins of registrations
|
||||
--"motd"; -- Send a message to users when they log in
|
||||
--"legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
|
||||
--"proxy65"; -- Enables a file transfer proxy service which clients behind NAT can use
|
||||
}
|
||||
|
||||
-- These modules are auto-loaded, but should you want
|
||||
-- to disable them then uncomment them here:
|
||||
modules_disabled = {
|
||||
--"offline"; -- Store offline messages
|
||||
--"c2s"; -- Handle client connections
|
||||
--"s2s"; -- Handle server-to-server connections
|
||||
--"posix"; -- POSIX functionality, sends server to background, enables syslog, etc.
|
||||
}
|
||||
|
||||
-- Disable account creation by default, for security
|
||||
-- For more information see https://prosody.im/doc/creating_accounts
|
||||
allow_registration = false
|
||||
|
||||
-- Force clients to use encrypted connections? This option will
|
||||
-- prevent clients from authenticating unless they are using encryption.
|
||||
|
||||
c2s_require_encryption = true
|
||||
|
||||
-- Force servers to use encrypted connections? This option will
|
||||
-- prevent servers from authenticating unless they are using encryption.
|
||||
|
||||
s2s_require_encryption = true
|
||||
|
||||
-- Force certificate authentication for server-to-server connections?
|
||||
|
||||
s2s_secure_auth = false
|
||||
|
||||
-- Required for init scripts and prosodyctl
|
||||
pidfile = "/var/run/prosody/prosody.pid"
|
||||
|
||||
-- Select the authentication backend to use. The 'internal' providers
|
||||
-- use Prosody's configured data storage to store the authentication data.
|
||||
|
||||
authentication = "internal_hashed"
|
||||
|
||||
archive_expires_after = "1w" -- Remove archived messages after 1 week
|
||||
|
||||
-- Logging configuration
|
||||
-- For advanced logging see https://prosody.im/doc/logging
|
||||
log = {
|
||||
info = "/var/log/prosody/prosody.log"; -- Change 'info' to 'debug' for verbose logging
|
||||
error = "/var/log/prosody/prosody.err";
|
||||
--"*syslog"; -- Uncomment this for logging to syslog
|
||||
--"*console"; -- Log to the console, useful for debugging with daemonize=false
|
||||
}
|
||||
|
||||
-- Location of directory to find certificates in (relative to main config file):
|
||||
certificates = "certs"
|
||||
|
||||
VirtualHost "localhost"
|
||||
|
||||
Include "conf.d/*.cfg.lua"
|
||||
@@ -0,0 +1,24 @@
|
||||
# Jitsi Videobridge settings
|
||||
|
||||
# sets the XMPP domain (default: none)
|
||||
JVB_HOSTNAME=meet.example.com
|
||||
|
||||
# sets the hostname of the XMPP server (default: domain if set, localhost otherwise)
|
||||
JVB_HOST=
|
||||
|
||||
# sets the port of the XMPP server (default: 5275)
|
||||
JVB_PORT=5347
|
||||
|
||||
# sets the shared secret used to authenticate to the XMPP server
|
||||
JVB_SECRET=$VP_SECRET
|
||||
|
||||
# extra options to pass to the JVB daemon
|
||||
JVB_OPTS="--apis=rest,"
|
||||
|
||||
# adds java system props that are passed to jvb (default are for home and logging config file)
|
||||
JAVA_SYS_PROPS=" \
|
||||
-Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/jitsi \
|
||||
-Dnet.java.sip.communicator.SC_HOME_DIR_NAME=videobridge \
|
||||
-Dnet.java.sip.communicator.SC_LOG_DIR_LOCATION=/var/log/jitsi \
|
||||
-Djava.util.logging.config.file=/etc/jitsi/videobridge/logging.properties \
|
||||
"
|
||||
@@ -0,0 +1,19 @@
|
||||
org.ice4j.ice.harvest.DISABLE_AWS_HARVESTER=true
|
||||
org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES=meet-jit-si-turnrelay.jitsi.net:443
|
||||
|
||||
org.jitsi.jicofo.ALWAYS_TRUST_MODE_ENABLED=true
|
||||
|
||||
org.jitsi.videobridge.ENABLE_REST_SHUTDOWN=true
|
||||
|
||||
# Enable broadcasting stats/presence in a MUC
|
||||
org.jitsi.videobridge.ENABLE_STATISTICS=true
|
||||
org.jitsi.videobridge.STATISTICS_TRANSPORT=muc,colibri,rest
|
||||
org.jitsi.videobridge.STATISTICS_INTERVAL=5000
|
||||
|
||||
org.jitsi.videobridge.xmpp.user.shard-1.HOSTNAME=meet.example.com
|
||||
org.jitsi.videobridge.xmpp.user.shard-1.DOMAIN=auth.meet.example.com
|
||||
org.jitsi.videobridge.xmpp.user.shard-1.USERNAME=jvb
|
||||
org.jitsi.videobridge.xmpp.user.shard-1.PASSWORD=$VB_PASSWORD
|
||||
org.jitsi.videobridge.xmpp.user.shard-1.MUC_JIDS=JvbBrewery@internal.auth.meet.example.com
|
||||
org.jitsi.videobridge.xmpp.user.shard-1.MUC_NICKNAME=$NICKNAME_OF_VB
|
||||
org.jitsi.videobridge.xmpp.user.shard-1.DISABLE_CERTIFICATE_VERIFICATION=true
|
||||
102
flow-typed/npm/uuid_v3.x.x.js
vendored
Normal file
102
flow-typed/npm/uuid_v3.x.x.js
vendored
Normal file
@@ -0,0 +1,102 @@
|
||||
// flow-typed signature: 609c1622fc97de96d59519934aa5ce87
|
||||
// flow-typed version: c6154227d1/uuid_v3.x.x/flow_>=v0.32.x <=v0.103.x
|
||||
|
||||
declare module "uuid" {
|
||||
declare class uuid {
|
||||
static (
|
||||
options?: {|
|
||||
random?: number[],
|
||||
rng?: () => number[] | Buffer
|
||||
|},
|
||||
buffer?: number[] | Buffer,
|
||||
offset?: number
|
||||
): string,
|
||||
|
||||
static v1(
|
||||
options?: {|
|
||||
node?: number[],
|
||||
clockseq?: number,
|
||||
msecs?: number | Date,
|
||||
nsecs?: number
|
||||
|},
|
||||
buffer?: number[] | Buffer,
|
||||
offset?: number
|
||||
): string,
|
||||
|
||||
static v4(
|
||||
options?: {|
|
||||
random?: number[],
|
||||
rng?: () => number[] | Buffer
|
||||
|},
|
||||
buffer?: number[] | Buffer,
|
||||
offset?: number
|
||||
): string
|
||||
}
|
||||
declare module.exports: Class<uuid>;
|
||||
}
|
||||
|
||||
declare module "uuid/v1" {
|
||||
declare class v1 {
|
||||
static (
|
||||
options?: {|
|
||||
node?: number[],
|
||||
clockseq?: number,
|
||||
msecs?: number | Date,
|
||||
nsecs?: number
|
||||
|},
|
||||
buffer?: number[] | Buffer,
|
||||
offset?: number
|
||||
): string
|
||||
}
|
||||
|
||||
declare module.exports: Class<v1>;
|
||||
}
|
||||
|
||||
declare module "uuid/v3" {
|
||||
declare class v3 {
|
||||
static (
|
||||
name?: string | number[],
|
||||
namespace?: string | number[],
|
||||
buffer?: number[] | Buffer,
|
||||
offset?: number
|
||||
): string,
|
||||
|
||||
static name: string,
|
||||
static DNS: string,
|
||||
static URL: string
|
||||
}
|
||||
|
||||
declare module.exports: Class<v3>;
|
||||
}
|
||||
|
||||
declare module "uuid/v4" {
|
||||
declare class v4 {
|
||||
static (
|
||||
options?: {|
|
||||
random?: number[],
|
||||
rng?: () => number[] | Buffer
|
||||
|},
|
||||
buffer?: number[] | Buffer,
|
||||
offset?: number
|
||||
): string
|
||||
}
|
||||
|
||||
declare module.exports: Class<v4>;
|
||||
}
|
||||
|
||||
declare module "uuid/v5" {
|
||||
declare class v5 {
|
||||
static (
|
||||
name?: string | number[],
|
||||
namespace?: string | number[],
|
||||
buffer?: number[] | Buffer,
|
||||
offset?: number
|
||||
): string,
|
||||
|
||||
static name: string,
|
||||
static DNS: string,
|
||||
static URL: string
|
||||
}
|
||||
|
||||
declare module.exports: Class<v5>;
|
||||
}
|
||||
71
flow-typed/npm/uuid_v8.x.x.js
vendored
71
flow-typed/npm/uuid_v8.x.x.js
vendored
@@ -1,71 +0,0 @@
|
||||
declare module 'uuid' {
|
||||
// v1 (Timestamp)
|
||||
declare type V1Options = {|
|
||||
node?: $ReadOnlyArray<number>,
|
||||
clockseq?: number,
|
||||
msecs?: number,
|
||||
nsecs?: number,
|
||||
random?: $ReadOnlyArray<number>,
|
||||
rng?: () => $ReadOnlyArray<number>,
|
||||
|};
|
||||
|
||||
declare export function v1(options?: V1Options): string;
|
||||
|
||||
declare export function v1(
|
||||
options: V1Options | null,
|
||||
buffer: Array<number>,
|
||||
offset?: number
|
||||
): Array<number>;
|
||||
|
||||
// v3 (Namespace)
|
||||
declare function v3Impl(
|
||||
name: string | $ReadOnlyArray<number>,
|
||||
namespace: string | $ReadOnlyArray<number>
|
||||
): string;
|
||||
|
||||
declare function v3Impl(
|
||||
name: string | $ReadOnlyArray<number>,
|
||||
namespace: string | $ReadOnlyArray<number>,
|
||||
buffer: Array<number>,
|
||||
offset?: number
|
||||
): Array<number>;
|
||||
|
||||
declare export var v3: {|
|
||||
[[call]]: typeof v3Impl,
|
||||
DNS: string,
|
||||
URL: string,
|
||||
|};
|
||||
|
||||
// v4 (Random)
|
||||
declare type V4Options = {|
|
||||
random?: $ReadOnlyArray<number>,
|
||||
rng?: () => $ReadOnlyArray<number>,
|
||||
|};
|
||||
|
||||
declare export function v4(options?: V4Options): string;
|
||||
|
||||
declare export function v4(
|
||||
options: V4Options | null,
|
||||
buffer: Array<number>,
|
||||
offset?: number
|
||||
): Array<number>;
|
||||
|
||||
// v5 (Namespace)
|
||||
declare function v5Impl(
|
||||
name: string | $ReadOnlyArray<number>,
|
||||
namespace: string | $ReadOnlyArray<number>
|
||||
): string;
|
||||
|
||||
declare function v5Impl(
|
||||
name: string | $ReadOnlyArray<number>,
|
||||
namespace: string | $ReadOnlyArray<number>,
|
||||
buffer: Array<number>,
|
||||
offset?: number
|
||||
): Array<number>;
|
||||
|
||||
declare export var v5: {|
|
||||
[[call]]: typeof v5Impl,
|
||||
DNS: string,
|
||||
URL: string,
|
||||
|};
|
||||
}
|
||||
@@ -26,6 +26,11 @@ var interfaceConfig = {
|
||||
|
||||
CLOSE_PAGE_GUEST_HINT: false, // A html text to be shown to guests on the close page, false disables it
|
||||
|
||||
// Connection indicators (
|
||||
// CONNECTION_INDICATOR_AUTO_HIDE_ENABLED,
|
||||
// CONNECTION_INDICATOR_AUTO_HIDE_TIMEOUT,
|
||||
// CONNECTION_INDICATOR_DISABLED) got moved to config.js.
|
||||
|
||||
DEFAULT_BACKGROUND: '#474747',
|
||||
DEFAULT_LOCAL_DISPLAY_NAME: 'me',
|
||||
DEFAULT_LOGO_URL: 'images/watermark.svg',
|
||||
@@ -34,6 +39,9 @@ var interfaceConfig = {
|
||||
|
||||
DISABLE_DOMINANT_SPEAKER_INDICATOR: false,
|
||||
|
||||
// Deprecated. Please use disableModeratorIndicator from config.js
|
||||
// DISABLE_FOCUS_INDICATOR: false,
|
||||
|
||||
/**
|
||||
* If true, notifications regarding joining/leaving are no longer displayed.
|
||||
*/
|
||||
@@ -89,6 +97,7 @@ var interfaceConfig = {
|
||||
*/
|
||||
HIDE_INVITE_MORE_HEADER: false,
|
||||
|
||||
INITIAL_TOOLBAR_TIMEOUT: 20000,
|
||||
JITSI_WATERMARK_LINK: 'https://jitsi.org',
|
||||
|
||||
LANG_DETECTION: true, // Allow i18n to detect the system language
|
||||
@@ -174,6 +183,16 @@ var interfaceConfig = {
|
||||
*/
|
||||
SUPPORT_URL: 'https://community.jitsi.org/',
|
||||
|
||||
TOOLBAR_ALWAYS_VISIBLE: false,
|
||||
|
||||
/**
|
||||
* DEPRECATED!
|
||||
* This config was moved to config.js as `toolbarButtons`.
|
||||
*/
|
||||
// TOOLBAR_BUTTONS: [],
|
||||
|
||||
TOOLBAR_TIMEOUT: 4000,
|
||||
|
||||
// Browsers, in addition to those which do not fully support WebRTC, that
|
||||
// are not supported and should show the unsupported browser page.
|
||||
UNSUPPORTED_BROWSERS: [],
|
||||
@@ -238,28 +257,6 @@ var interfaceConfig = {
|
||||
PHONE_NUMBER_REGEX
|
||||
*/
|
||||
|
||||
// -----------------DEPRECATED CONFIGS BELOW THIS LINE-----------------------------
|
||||
|
||||
// Connection indicators (
|
||||
// CONNECTION_INDICATOR_AUTO_HIDE_ENABLED,
|
||||
// CONNECTION_INDICATOR_AUTO_HIDE_TIMEOUT,
|
||||
// CONNECTION_INDICATOR_DISABLED) got moved to config.js.
|
||||
|
||||
// Please use disableModeratorIndicator from config.js
|
||||
// DISABLE_FOCUS_INDICATOR: false,
|
||||
|
||||
// Moved to config.js as `toolbarConfig.initialTimeout`.
|
||||
// INITIAL_TOOLBAR_TIMEOUT: 20000,
|
||||
|
||||
// Moved to config.js as `toolbarConfig.alwaysVisible`.
|
||||
// TOOLBAR_ALWAYS_VISIBLE: false,
|
||||
|
||||
// This config was moved to config.js as `toolbarButtons`.
|
||||
// TOOLBAR_BUTTONS: [],
|
||||
|
||||
// Moved to config.js as `toolbarConfig.timeout`.
|
||||
// TOOLBAR_TIMEOUT: 4000,
|
||||
|
||||
// Allow all above example options to include a trailing comma and
|
||||
// prevent fear when commenting out the last value.
|
||||
// eslint-disable-next-line sort-keys
|
||||
|
||||
10
ios/Podfile
10
ios/Podfile
@@ -1,4 +1,4 @@
|
||||
platform :ios, '12.0'
|
||||
platform :ios, '11.0'
|
||||
workspace 'jitsi-meet'
|
||||
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
|
||||
install! 'cocoapods', :deterministic_uuids => false
|
||||
@@ -57,7 +57,6 @@ target 'JitsiMeetSDK' do
|
||||
pod 'amplitude-react-native', :path => '../node_modules/@amplitude/react-native'
|
||||
pod 'react-native-background-timer', :path => '../node_modules/react-native-background-timer'
|
||||
pod 'react-native-calendar-events', :path => '../node_modules/react-native-calendar-events'
|
||||
pod 'react-native-get-random-values', :path => '../node_modules/react-native-get-random-values'
|
||||
pod 'react-native-keep-awake', :path => '../node_modules/react-native-keep-awake'
|
||||
pod 'react-native-netinfo', :path => '../node_modules/@react-native-community/netinfo'
|
||||
pod 'react-native-performance', :path => '../node_modules/react-native-performance/ios'
|
||||
@@ -73,11 +72,6 @@ target 'JitsiMeetSDK' do
|
||||
pod 'RNSVG', :path => '../node_modules/react-native-svg'
|
||||
pod 'RNWatch', :path => '../node_modules/react-native-watch-connectivity'
|
||||
pod 'RNDefaultPreference', :path => '../node_modules/react-native-default-preference'
|
||||
pod 'RNGestureHandler', :path => '../node_modules/react-native-gesture-handler'
|
||||
pod 'RNReanimated', :path => '../node_modules/react-native-reanimated'
|
||||
pod 'RNScreens', :path => '../node_modules/react-native-screens'
|
||||
pod 'react-native-safe-area-context', :path => '../node_modules/react-native-safe-area-context'
|
||||
pod 'RNCMaskedView', :path => '../node_modules/@react-native-masked-view/masked-view'
|
||||
|
||||
# Native pod dependencies
|
||||
#
|
||||
@@ -93,7 +87,7 @@ post_install do |installer|
|
||||
target.build_configurations.each do |config|
|
||||
config.build_settings['ENABLE_BITCODE'] = 'YES'
|
||||
config.build_settings['SUPPORTS_MACCATALYST'] = 'NO'
|
||||
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
|
||||
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -109,7 +109,7 @@ PODS:
|
||||
- GTMAppAuth (1.2.2):
|
||||
- AppAuth/Core (~> 1.4)
|
||||
- GTMSessionFetcher/Core (~> 1.5)
|
||||
- GTMSessionFetcher/Core (1.7.0)
|
||||
- GTMSessionFetcher/Core (1.6.1)
|
||||
- nanopb (1.30906.0):
|
||||
- nanopb/decode (= 1.30906.0)
|
||||
- nanopb/encode (= 1.30906.0)
|
||||
@@ -284,16 +284,12 @@ PODS:
|
||||
- React
|
||||
- react-native-calendar-events (2.0.0):
|
||||
- React
|
||||
- react-native-get-random-values (1.7.0):
|
||||
- React-Core
|
||||
- react-native-keep-awake (4.0.0):
|
||||
- React
|
||||
- react-native-netinfo (4.1.5):
|
||||
- React
|
||||
- react-native-performance (2.0.0):
|
||||
- React-Core
|
||||
- react-native-safe-area-context (3.3.2):
|
||||
- React-Core
|
||||
- react-native-slider (3.0.3):
|
||||
- React
|
||||
- react-native-splash-screen (3.2.0):
|
||||
@@ -363,21 +359,13 @@ PODS:
|
||||
- ReactCommon/turbomodule/core (= 0.61.5-jitsi.2)
|
||||
- RNCAsyncStorage (1.15.5):
|
||||
- React-Core
|
||||
- RNCMaskedView (0.2.6):
|
||||
- React-Core
|
||||
- RNDefaultPreference (1.4.2):
|
||||
- React
|
||||
- RNDeviceInfo (8.0.0):
|
||||
- React-Core
|
||||
- RNGestureHandler (1.10.3):
|
||||
- React-Core
|
||||
- RNGoogleSignin (3.0.1):
|
||||
- GoogleSignIn (~> 5.0.0)
|
||||
- React
|
||||
- RNReanimated (1.13.3):
|
||||
- React-Core
|
||||
- RNScreens (2.18.1):
|
||||
- React-Core
|
||||
- RNSound (0.11.0):
|
||||
- React
|
||||
- RNSound/Core (= 0.11.0)
|
||||
@@ -414,11 +402,9 @@ DEPENDENCIES:
|
||||
- React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
|
||||
- react-native-background-timer (from `../node_modules/react-native-background-timer`)
|
||||
- react-native-calendar-events (from `../node_modules/react-native-calendar-events`)
|
||||
- react-native-get-random-values (from `../node_modules/react-native-get-random-values`)
|
||||
- react-native-keep-awake (from `../node_modules/react-native-keep-awake`)
|
||||
- "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)"
|
||||
- react-native-performance (from `../node_modules/react-native-performance/ios`)
|
||||
- react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
|
||||
- "react-native-slider (from `../node_modules/@react-native-community/slider`)"
|
||||
- react-native-splash-screen (from `../node_modules/react-native-splash-screen`)
|
||||
- react-native-video (from `../node_modules/react-native-video/react-native-video.podspec`)
|
||||
@@ -435,13 +421,9 @@ DEPENDENCIES:
|
||||
- React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
|
||||
- ReactCommon/turbomodule (from `../node_modules/react-native/ReactCommon`)
|
||||
- "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)"
|
||||
- "RNCMaskedView (from `../node_modules/@react-native-masked-view/masked-view`)"
|
||||
- RNDefaultPreference (from `../node_modules/react-native-default-preference`)
|
||||
- RNDeviceInfo (from `../node_modules/react-native-device-info`)
|
||||
- RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
|
||||
- "RNGoogleSignin (from `../node_modules/@react-native-community/google-signin`)"
|
||||
- RNReanimated (from `../node_modules/react-native-reanimated`)
|
||||
- RNScreens (from `../node_modules/react-native-screens`)
|
||||
- RNSound (from `../node_modules/react-native-sound`)
|
||||
- RNSVG (from `../node_modules/react-native-svg`)
|
||||
- RNWatch (from `../node_modules/react-native-watch-connectivity`)
|
||||
@@ -505,16 +487,12 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/react-native-background-timer"
|
||||
react-native-calendar-events:
|
||||
:path: "../node_modules/react-native-calendar-events"
|
||||
react-native-get-random-values:
|
||||
:path: "../node_modules/react-native-get-random-values"
|
||||
react-native-keep-awake:
|
||||
:path: "../node_modules/react-native-keep-awake"
|
||||
react-native-netinfo:
|
||||
:path: "../node_modules/@react-native-community/netinfo"
|
||||
react-native-performance:
|
||||
:path: "../node_modules/react-native-performance/ios"
|
||||
react-native-safe-area-context:
|
||||
:path: "../node_modules/react-native-safe-area-context"
|
||||
react-native-slider:
|
||||
:path: "../node_modules/@react-native-community/slider"
|
||||
react-native-splash-screen:
|
||||
@@ -547,20 +525,12 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/react-native/ReactCommon"
|
||||
RNCAsyncStorage:
|
||||
:path: "../node_modules/@react-native-async-storage/async-storage"
|
||||
RNCMaskedView:
|
||||
:path: "../node_modules/@react-native-masked-view/masked-view"
|
||||
RNDefaultPreference:
|
||||
:path: "../node_modules/react-native-default-preference"
|
||||
RNDeviceInfo:
|
||||
:path: "../node_modules/react-native-device-info"
|
||||
RNGestureHandler:
|
||||
:path: "../node_modules/react-native-gesture-handler"
|
||||
RNGoogleSignin:
|
||||
:path: "../node_modules/@react-native-community/google-signin"
|
||||
RNReanimated:
|
||||
:path: "../node_modules/react-native-reanimated"
|
||||
RNScreens:
|
||||
:path: "../node_modules/react-native-screens"
|
||||
RNSound:
|
||||
:path: "../node_modules/react-native-sound"
|
||||
RNSVG:
|
||||
@@ -572,7 +542,7 @@ EXTERNAL SOURCES:
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
Amplitude: 263118b9e691e73a1c864b05bb08a3aff3636d16
|
||||
amplitude-react-native: 9369759dc6d01590aeb6261f714d53beaebc7e6f
|
||||
amplitude-react-native: 833a4bd7f656f826bda1de01a7b8593b58842209
|
||||
AppAuth: 31bcec809a638d7bd2f86ea8a52bd45f6e81e7c7
|
||||
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
|
||||
CocoaLumberjack: 2f44e60eb91c176d471fdba43b9e3eae6a721947
|
||||
@@ -593,7 +563,7 @@ SPEC CHECKSUMS:
|
||||
GoogleSignIn: 7137d297ddc022a7e0aa4619c86d72c909fa7213
|
||||
GoogleUtilities: 7f2f5a07f888cdb145101d6042bc4422f57e70b3
|
||||
GTMAppAuth: ad5c2b70b9a8689e1a04033c9369c4915bfcbe89
|
||||
GTMSessionFetcher: 43748f93435c2aa068b1cbe39655aaf600652e91
|
||||
GTMSessionFetcher: 36689134877faeb055b27dfa4ccc9ceaa42e029e
|
||||
nanopb: 59317e09cf1f1a0af72f12af412d54edf52603fc
|
||||
ObjectiveDropboxOfficial: b4765572e334d6fc6214b43a7595510324bbbbaa
|
||||
PromisesObjC: 3113f7f76903778cf4a0586bd1ab89329a0b7b97
|
||||
@@ -606,18 +576,16 @@ SPEC CHECKSUMS:
|
||||
React-jsi: ddb471a56185e4007835a1bba0882ecb5ce3dc0e
|
||||
React-jsiexecutor: 67106691c60030ec888d7cbbc4f48a3168e27a02
|
||||
React-jsinspector: 92ceee6c66dc19886289b52436ade7e020b89602
|
||||
react-native-background-timer: 029c606b3fd6dd476b153e177c518b6ade4c169f
|
||||
react-native-calendar-events: 82dc6c915653a1a8a266e43fdbbfdb3b1022ca99
|
||||
react-native-get-random-values: 237bffb1c7e05fb142092681531810a29ba53015
|
||||
react-native-keep-awake: afad8a51dfef9fe9655a6344771be32c8596d774
|
||||
react-native-netinfo: 0e563248a4b9a99c33ec29bd03c2d50767db22a6
|
||||
react-native-performance: 6bd6cfac80594775fb782405fceaaf206becf53b
|
||||
react-native-safe-area-context: 584dc04881deb49474363f3be89e4ca0e854c057
|
||||
react-native-slider: e99fc201cefe81270fc9d81714a7a0f5e566b168
|
||||
react-native-background-timer: e0384ea2fa5a98f67f84f9c4dc274260ddd674ed
|
||||
react-native-calendar-events: 1442fad71a00388f933cfa25512588fec300fcf8
|
||||
react-native-keep-awake: eba3137546b10003361b37c761f6c429b59814ae
|
||||
react-native-netinfo: 8d8db463bcc5db66a8ac5c48a7d86beb3b92f61a
|
||||
react-native-performance: 8edfa2bbc9a2af4a02f01d342118e413a95145e0
|
||||
react-native-slider: b733e17fdd31186707146debf1f04b5d94aa1a93
|
||||
react-native-splash-screen: 200d11d188e2e78cea3ad319964f6142b6384865
|
||||
react-native-video: 0bb76b6d6b77da3009611586c7dbf817b947f30e
|
||||
react-native-video: 1574074179ecaf6a9dd067116c8f31bf9fec15c8
|
||||
react-native-webrtc: 41526e4060dac373c18676f866962d4180ee47b9
|
||||
react-native-webview: dfd7202ff115c44d3ea401c2f36122fb3ac79f07
|
||||
react-native-webview: b2542d6fd424bcc3e3b2ec5f854f0abb4ec86c87
|
||||
React-RCTActionSheet: bcbc311dc3b47bc8efb2737ff0940239a45789a9
|
||||
React-RCTAnimation: 65f61080ce632f6dea23d52e354ffac9948396c6
|
||||
React-RCTBlob: 70d88f7b68b5c44953cdb286ac2e36a7a509a97e
|
||||
@@ -628,19 +596,15 @@ SPEC CHECKSUMS:
|
||||
React-RCTText: 4f1b99f228278d2a5e9008eced8dc9c974c4a270
|
||||
React-RCTVibration: c1041024893fdfdb8371e7c720c437751b711676
|
||||
ReactCommon: 18014e1d98dbeb9141e935cfe35fc93bd511ffb6
|
||||
RNCAsyncStorage: 56a3355a10b5d660c48c6e37325ac85ebfd09885
|
||||
RNCMaskedView: c298b644a10c0c142055b3ae24d83879ecb13ccd
|
||||
RNDefaultPreference: 1f8133ec0bc0f9453cdada578564ba1ef551fb44
|
||||
RNDeviceInfo: 87d2d175c760f6bcf58acd036f887e8b2392802c
|
||||
RNGestureHandler: a479ebd5ed4221a810967000735517df0d2db211
|
||||
RNCAsyncStorage: 8324611026e8dc3706f829953aa6e3899f581589
|
||||
RNDefaultPreference: 56a405ce61033ac77b95004dccd7ac54c2eb50d1
|
||||
RNDeviceInfo: 72ded653ce636b3f03571e90bed99309a714944e
|
||||
RNGoogleSignin: 39336070b35fc4cea6a98cf111e00480317be0ae
|
||||
RNReanimated: 514a11da3a2bcc6c3dfd9de32b38e2b9bf101926
|
||||
RNScreens: f7ad633b2e0190b77b6a7aab7f914fad6f198d8d
|
||||
RNSound: da030221e6ac7e8290c6b43f2b5f2133a8e225b0
|
||||
RNSound: c980916b596cc15c8dcd2f6ecd3b13c4881dbe20
|
||||
RNSVG: ce9d996113475209013317e48b05c21ee988d42e
|
||||
RNWatch: a5320c959c75e72845c07985f3e935e58998f1d3
|
||||
Yoga: 96b469c5e81ff51b917b92e8c3390642d4ded30c
|
||||
|
||||
PODFILE CHECKSUM: 836d4804218c0608e1326471ec83fe31cfa9c86d
|
||||
PODFILE CHECKSUM: e830b1b5a46d340e22689b146b55dcf24664c6f1
|
||||
|
||||
COCOAPODS: 1.11.2
|
||||
COCOAPODS: 1.10.1
|
||||
|
||||
@@ -996,7 +996,7 @@
|
||||
"$(inherited)",
|
||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
||||
);
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
@@ -1049,7 +1049,7 @@
|
||||
"$(inherited)",
|
||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
||||
);
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>21.5.0</string>
|
||||
<string>21.4.3</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>NSExtension</key>
|
||||
|
||||
@@ -34,10 +34,10 @@
|
||||
jitsiMeet.universalLinkDomains = @[@"meet.jit.si", @"alpha.jitsi.net", @"beta.meet.jit.si"];
|
||||
|
||||
jitsiMeet.defaultConferenceOptions = [JitsiMeetConferenceOptions fromBuilder:^(JitsiMeetConferenceOptionsBuilder *builder) {
|
||||
[builder setFeatureFlag:@"welcomepage.enabled" withBoolean:YES];
|
||||
[builder setFeatureFlag:@"resolution" withValue:@(360)];
|
||||
[builder setFeatureFlag:@"ios.screensharing.enabled" withBoolean:YES];
|
||||
builder.serverURL = [NSURL URLWithString:@"https://meet.jit.si"];
|
||||
builder.welcomePageEnabled = YES;
|
||||
|
||||
// Apple rejected our app because they claim requiring a
|
||||
// Dropbox account for recording is not acceptable.
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>21.5.0</string>
|
||||
<string>21.4.3</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleURLTypes</key>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright @ 2017-present 8x8, Inc.
|
||||
* Copyright @ 2018-present 8x8, Inc.
|
||||
* Copyright @ 2017-2018 Atlassian Pty Ltd
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -14,6 +15,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#import <Availability.h>
|
||||
|
||||
@import CoreSpotlight;
|
||||
@import MobileCoreServices;
|
||||
@import Intents; // Needed for NSUserActivity suggestedInvocationPhrase
|
||||
@@ -55,29 +58,34 @@
|
||||
[self _onJitsiMeetViewDelegateEvent:@"CONFERENCE_JOINED" withData:data];
|
||||
|
||||
// Register a NSUserActivity for this conference so it can be invoked as a
|
||||
// Siri shortcut.
|
||||
NSUserActivity *userActivity
|
||||
= [[NSUserActivity alloc] initWithActivityType:JitsiMeetConferenceActivityType];
|
||||
// Siri shortcut. This is only supported in iOS >= 12.
|
||||
#ifdef __IPHONE_12_0
|
||||
if (@available(iOS 12.0, *)) {
|
||||
NSUserActivity *userActivity
|
||||
= [[NSUserActivity alloc] initWithActivityType:JitsiMeetConferenceActivityType];
|
||||
|
||||
NSString *urlStr = data[@"url"];
|
||||
NSURL *url = [NSURL URLWithString:urlStr];
|
||||
NSString *conference = [url.pathComponents lastObject];
|
||||
NSString *urlStr = data[@"url"];
|
||||
NSURL *url = [NSURL URLWithString:urlStr];
|
||||
NSString *conference = [url.pathComponents lastObject];
|
||||
|
||||
userActivity.title = [NSString stringWithFormat:@"Join %@", conference];
|
||||
userActivity.suggestedInvocationPhrase = @"Join my Jitsi meeting";
|
||||
userActivity.userInfo = @{@"url": urlStr};
|
||||
[userActivity setEligibleForSearch:YES];
|
||||
[userActivity setEligibleForPrediction:YES];
|
||||
[userActivity setPersistentIdentifier:urlStr];
|
||||
userActivity.title = [NSString stringWithFormat:@"Join %@", conference];
|
||||
userActivity.suggestedInvocationPhrase = @"Join my Jitsi meeting";
|
||||
userActivity.userInfo = @{@"url": urlStr};
|
||||
[userActivity setEligibleForSearch:YES];
|
||||
[userActivity setEligibleForPrediction:YES];
|
||||
[userActivity setPersistentIdentifier:urlStr];
|
||||
|
||||
// Subtitle
|
||||
CSSearchableItemAttributeSet *attributes
|
||||
= [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(NSString *)kUTTypeItem];
|
||||
attributes.contentDescription = urlStr;
|
||||
userActivity.contentAttributeSet = attributes;
|
||||
// Subtitle
|
||||
CSSearchableItemAttributeSet *attributes
|
||||
= [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(NSString *)kUTTypeItem];
|
||||
attributes.contentDescription = urlStr;
|
||||
userActivity.contentAttributeSet = attributes;
|
||||
|
||||
self.userActivity = userActivity;
|
||||
[userActivity becomeCurrent];
|
||||
}
|
||||
#endif
|
||||
|
||||
self.userActivity = userActivity;
|
||||
[userActivity becomeCurrent];
|
||||
}
|
||||
|
||||
- (void)conferenceTerminated:(NSDictionary *)data {
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>21.5.0</string>
|
||||
<string>21.4.3</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>21.5.0</string>
|
||||
<string>21.4.3</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>CLKComplicationPrincipalClass</key>
|
||||
|
||||
@@ -24,8 +24,6 @@
|
||||
0BD906EA1EC0C00300C8C18E /* JitsiMeet.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BD906E81EC0C00300C8C18E /* JitsiMeet.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
4E51B76425E5345E0038575A /* ScheenshareEventEmiter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E51B76225E5345E0038575A /* ScheenshareEventEmiter.h */; };
|
||||
4E51B76525E5345E0038575A /* ScheenshareEventEmiter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E51B76325E5345E0038575A /* ScheenshareEventEmiter.m */; };
|
||||
4ED4FFF32721B9B90074E620 /* JitsiAudioSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ED4FFF12721B9B90074E620 /* JitsiAudioSession.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
4ED4FFF42721B9B90074E620 /* JitsiAudioSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ED4FFF22721B9B90074E620 /* JitsiAudioSession.m */; };
|
||||
6F08DF7D4458EE3CF3F36F6D /* libPods-JitsiMeetSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4376CA6886DE68FD7A4294B /* libPods-JitsiMeetSDK.a */; };
|
||||
A4A934E9212F3ADB001E9388 /* Dropbox.m in Sources */ = {isa = PBXBuildFile; fileRef = A4A934E8212F3ADB001E9388 /* Dropbox.m */; };
|
||||
C6245F5D2053091D0040BE68 /* image-resize@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C6245F5B2053091D0040BE68 /* image-resize@2x.png */; };
|
||||
@@ -79,9 +77,6 @@
|
||||
0BD906E91EC0C00300C8C18E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
4E51B76225E5345E0038575A /* ScheenshareEventEmiter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScheenshareEventEmiter.h; sourceTree = "<group>"; };
|
||||
4E51B76325E5345E0038575A /* ScheenshareEventEmiter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ScheenshareEventEmiter.m; sourceTree = "<group>"; };
|
||||
4ED4FFF12721B9B90074E620 /* JitsiAudioSession.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JitsiAudioSession.h; sourceTree = "<group>"; };
|
||||
4ED4FFF22721B9B90074E620 /* JitsiAudioSession.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JitsiAudioSession.m; sourceTree = "<group>"; };
|
||||
4ED4FFF52721BAE10074E620 /* JitsiAudioSession+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "JitsiAudioSession+Private.h"; sourceTree = "<group>"; };
|
||||
891FE43DAD30BC8976683100 /* Pods-JitsiMeetSDK.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeetSDK.release.xcconfig"; path = "../Pods/Target Support Files/Pods-JitsiMeetSDK/Pods-JitsiMeetSDK.release.xcconfig"; sourceTree = "<group>"; };
|
||||
98E09B5C73D9036B4ED252FC /* Pods-JitsiMeet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeet.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-JitsiMeet/Pods-JitsiMeet.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
9C77CA3CC919B081F1A52982 /* Pods-JitsiMeet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeet.release.xcconfig"; path = "../Pods/Target Support Files/Pods-JitsiMeet/Pods-JitsiMeet.release.xcconfig"; sourceTree = "<group>"; };
|
||||
@@ -179,9 +174,6 @@
|
||||
DEFE535821FB311F00011A3A /* JitsiMeet+Private.h */,
|
||||
DEA9F283258A5D9900D4CD74 /* JitsiMeetSDK.h */,
|
||||
DEFE535321FB1BF800011A3A /* JitsiMeet.m */,
|
||||
4ED4FFF12721B9B90074E620 /* JitsiAudioSession.h */,
|
||||
4ED4FFF52721BAE10074E620 /* JitsiAudioSession+Private.h */,
|
||||
4ED4FFF22721B9B90074E620 /* JitsiAudioSession.m */,
|
||||
DEAD3224220C497000E93636 /* JitsiMeetConferenceOptions.h */,
|
||||
DEAD3228220C734300E93636 /* JitsiMeetConferenceOptions+Private.h */,
|
||||
DEAD3225220C497000E93636 /* JitsiMeetConferenceOptions.m */,
|
||||
@@ -285,7 +277,6 @@
|
||||
4E51B76425E5345E0038575A /* ScheenshareEventEmiter.h in Headers */,
|
||||
DE65AACC2318028300290BEC /* JitsiMeetBaseLogHandler+Private.h in Headers */,
|
||||
0B412F221EDEF6EA00B1A0A6 /* JitsiMeetViewDelegate.h in Headers */,
|
||||
4ED4FFF32721B9B90074E620 /* JitsiAudioSession.h in Headers */,
|
||||
0BD906EA1EC0C00300C8C18E /* JitsiMeet.h in Headers */,
|
||||
DE81A2D42316AC4D00AE1940 /* JitsiMeetLogger.h in Headers */,
|
||||
DE65AACA2317FFCD00290BEC /* LogUtils.h in Headers */,
|
||||
@@ -447,7 +438,6 @@
|
||||
files = (
|
||||
0BB9AD7B1F5EC8F4001C08DB /* CallKit.m in Sources */,
|
||||
DE81A2DF2317ED5400AE1940 /* JitsiMeetBaseLogHandler.m in Sources */,
|
||||
4ED4FFF42721B9B90074E620 /* JitsiAudioSession.m in Sources */,
|
||||
0BB9AD7D1F60356D001C08DB /* AppInfo.m in Sources */,
|
||||
DE81A2D92316AC7600AE1940 /* LogBridge.m in Sources */,
|
||||
DEAFA779229EAD520033A7FA /* RNRootView.m in Sources */,
|
||||
@@ -530,7 +520,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
@@ -586,7 +576,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
#import <React/RCTLog.h>
|
||||
#import <WebRTC/WebRTC.h>
|
||||
|
||||
#import "JitsiAudioSession+Private.h"
|
||||
#import "LogUtils.h"
|
||||
|
||||
|
||||
@@ -114,7 +113,7 @@ RCT_EXPORT_MODULE();
|
||||
isSpeakerOn = NO;
|
||||
isEarpieceOn = NO;
|
||||
|
||||
RTCAudioSession *session = JitsiAudioSession.rtcAudioSession;
|
||||
RTCAudioSession *session = [RTCAudioSession sharedInstance];
|
||||
[session addDelegate:self];
|
||||
}
|
||||
|
||||
@@ -128,7 +127,7 @@ RCT_EXPORT_MODULE();
|
||||
|
||||
- (BOOL)setConfigWithoutLock:(RTCAudioSessionConfiguration *)config
|
||||
error:(NSError * _Nullable *)outError {
|
||||
RTCAudioSession *session = JitsiAudioSession.rtcAudioSession;
|
||||
RTCAudioSession *session = [RTCAudioSession sharedInstance];
|
||||
|
||||
return [session setConfiguration:config error:outError];
|
||||
}
|
||||
@@ -136,7 +135,7 @@ RCT_EXPORT_MODULE();
|
||||
- (BOOL)setConfig:(RTCAudioSessionConfiguration *)config
|
||||
error:(NSError * _Nullable *)outError {
|
||||
|
||||
RTCAudioSession *session = JitsiAudioSession.rtcAudioSession;
|
||||
RTCAudioSession *session = [RTCAudioSession sharedInstance];
|
||||
[session lockForConfiguration];
|
||||
BOOL success = [self setConfigWithoutLock:config error:outError];
|
||||
[session unlockForConfiguration];
|
||||
@@ -179,7 +178,7 @@ RCT_EXPORT_METHOD(setAudioDevice:(NSString *)device
|
||||
reject:(RCTPromiseRejectBlock)reject) {
|
||||
DDLogInfo(@"[AudioMode] Selected device: %@", device);
|
||||
|
||||
RTCAudioSession *session = JitsiAudioSession.rtcAudioSession;
|
||||
RTCAudioSession *session = [RTCAudioSession sharedInstance];
|
||||
[session lockForConfiguration];
|
||||
BOOL success;
|
||||
NSError *error = nil;
|
||||
@@ -274,7 +273,7 @@ RCT_EXPORT_METHOD(updateDeviceList) {
|
||||
RTCAudioSessionConfiguration *config = [self configForMode:self->activeMode];
|
||||
[self setConfig:config error:nil];
|
||||
if (self->forceSpeaker && !self->isSpeakerOn) {
|
||||
RTCAudioSession *session = JitsiAudioSession.rtcAudioSession;
|
||||
RTCAudioSession *session = [RTCAudioSession sharedInstance];
|
||||
[session lockForConfiguration];
|
||||
[session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
|
||||
[session unlockForConfiguration];
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>4.0.0</string>
|
||||
<string>3.10.4</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
/*
|
||||
* Copyright @ 2017-present 8x8, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#import "JitsiAudioSession.h"
|
||||
#import <WebRTC/WebRTC.h>
|
||||
|
||||
@interface JitsiAudioSession (Private)
|
||||
|
||||
+ (RTCAudioSession *)rtcAudioSession;
|
||||
|
||||
@end
|
||||
@@ -1,26 +0,0 @@
|
||||
/*
|
||||
* Copyright @ 2017-present 8x8, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class AVAudioSession;
|
||||
|
||||
@interface JitsiAudioSession : NSObject
|
||||
|
||||
+ (void)activateWithAudioSession:(AVAudioSession *)session;
|
||||
+ (void)deactivateWithAudioSession:(AVAudioSession *)session;
|
||||
|
||||
@end
|
||||
@@ -1,34 +0,0 @@
|
||||
/*
|
||||
* Copyright @ 2017-present 8x8, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#import "JitsiAudioSession.h"
|
||||
#import "JitsiAudioSession+Private.h"
|
||||
|
||||
@implementation JitsiAudioSession
|
||||
|
||||
+ (RTCAudioSession *)rtcAudioSession {
|
||||
return [RTCAudioSession sharedInstance];
|
||||
}
|
||||
|
||||
+ (void)activateWithAudioSession:(AVAudioSession *)session {
|
||||
[self.rtcAudioSession audioSessionDidActivate:session];
|
||||
}
|
||||
|
||||
+ (void)deactivateWithAudioSession:(AVAudioSession *)session {
|
||||
[self.rtcAudioSession audioSessionDidDeactivate:session];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -34,6 +34,12 @@
|
||||
*/
|
||||
@property (nonatomic, copy, nullable) NSString *token;
|
||||
|
||||
/**
|
||||
* Color scheme override, see:
|
||||
* https://github.com/jitsi/jitsi-meet/blob/master/react/features/base/color-scheme/defaultScheme.js
|
||||
*/
|
||||
@property (nonatomic, copy, nullable) NSDictionary *colorScheme;
|
||||
|
||||
/**
|
||||
* Feature flags. See: https://github.com/jitsi/jitsi-meet/blob/master/react/features/base/flags/constants.js
|
||||
*/
|
||||
@@ -41,6 +47,12 @@
|
||||
|
||||
@property (nonatomic, readonly, nonnull) NSDictionary *config;
|
||||
|
||||
/**
|
||||
* Set to YES to enable the welcome page. Typically SDK users won't need this enabled
|
||||
* since the host application decides which meeting to join.
|
||||
*/
|
||||
@property (nonatomic) BOOL welcomePageEnabled;
|
||||
|
||||
/**
|
||||
* Information about the local user. It will be used in absence of a token.
|
||||
*/
|
||||
@@ -70,8 +82,11 @@
|
||||
@property (nonatomic, copy, nullable, readonly) NSString *room;
|
||||
@property (nonatomic, copy, nullable, readonly) NSString *token;
|
||||
|
||||
@property (nonatomic, copy, nullable) NSDictionary *colorScheme;
|
||||
@property (nonatomic, readonly, nonnull) NSDictionary *featureFlags;
|
||||
|
||||
@property (nonatomic, readonly) BOOL welcomePageEnabled;
|
||||
|
||||
@property (nonatomic, nullable) JitsiMeetUserInfo *userInfo;
|
||||
|
||||
+ (instancetype _Nonnull)fromBuilder:(void (^_Nonnull)(JitsiMeetConferenceOptionsBuilder *_Nonnull))initBlock;
|
||||
|
||||
@@ -19,17 +19,26 @@
|
||||
#import "JitsiMeetConferenceOptions+Private.h"
|
||||
#import "JitsiMeetUserInfo+Private.h"
|
||||
|
||||
/**
|
||||
* Backwards compatibility: turn the boolean property into a feature flag.
|
||||
*/
|
||||
static NSString *const WelcomePageEnabledFeatureFlag = @"welcomepage.enabled";
|
||||
|
||||
|
||||
@implementation JitsiMeetConferenceOptionsBuilder {
|
||||
NSMutableDictionary *_featureFlags;
|
||||
NSMutableDictionary *_config;
|
||||
}
|
||||
|
||||
@dynamic welcomePageEnabled;
|
||||
|
||||
- (instancetype)init {
|
||||
if (self = [super init]) {
|
||||
_serverURL = nil;
|
||||
_room = nil;
|
||||
_token = nil;
|
||||
|
||||
_colorScheme = nil;
|
||||
_config = [[NSMutableDictionary alloc] init];
|
||||
_featureFlags = [[NSMutableDictionary alloc] init];
|
||||
|
||||
@@ -87,6 +96,19 @@
|
||||
_config[config] = value;
|
||||
}
|
||||
|
||||
#pragma mark - Dynamic properties
|
||||
|
||||
- (void)setWelcomePageEnabled:(BOOL)welcomePageEnabled {
|
||||
[self setFeatureFlag:WelcomePageEnabledFeatureFlag
|
||||
withBoolean:welcomePageEnabled];
|
||||
}
|
||||
|
||||
- (BOOL)welcomePageEnabled {
|
||||
NSNumber *n = _featureFlags[WelcomePageEnabledFeatureFlag];
|
||||
|
||||
return n != nil ? [n boolValue] : NO;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation JitsiMeetConferenceOptions {
|
||||
@@ -94,6 +116,16 @@
|
||||
NSDictionary *_config;
|
||||
}
|
||||
|
||||
@dynamic welcomePageEnabled;
|
||||
|
||||
#pragma mark - Dynamic properties
|
||||
|
||||
- (BOOL)welcomePageEnabled {
|
||||
NSNumber *n = _featureFlags[WelcomePageEnabledFeatureFlag];
|
||||
|
||||
return n != nil ? [n boolValue] : NO;
|
||||
}
|
||||
|
||||
#pragma mark - Internal initializer
|
||||
|
||||
- (instancetype)initWithBuilder:(JitsiMeetConferenceOptionsBuilder *)builder {
|
||||
@@ -102,6 +134,8 @@
|
||||
_room = builder.room;
|
||||
_token = builder.token;
|
||||
|
||||
_colorScheme = builder.colorScheme;
|
||||
|
||||
_config = builder.config;
|
||||
|
||||
_featureFlags = [NSDictionary dictionaryWithDictionary:builder.featureFlags];
|
||||
@@ -127,6 +161,10 @@
|
||||
|
||||
props[@"flags"] = [NSMutableDictionary dictionaryWithDictionary:_featureFlags];
|
||||
|
||||
if (_colorScheme != nil) {
|
||||
props[@"colorScheme"] = self.colorScheme;
|
||||
}
|
||||
|
||||
NSMutableDictionary *urlProps = [[NSMutableDictionary alloc] init];
|
||||
|
||||
// The room is fully qualified.
|
||||
|
||||
@@ -20,5 +20,4 @@
|
||||
#import <JitsiMeetSDK/JitsiMeetConferenceOptions.h>
|
||||
#import <JitsiMeetSDK/JitsiMeetLogger.h>
|
||||
#import <JitsiMeetSDK/JitsiMeetBaseLogHandler.h>
|
||||
#import <JitsiMeetSDK/JitsiAudioSession.h>
|
||||
#import <JitsiMeetSDK/InfoPlistUtil.h>
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
*/
|
||||
@property (nonatomic, copy, nullable) NSString *displayName;
|
||||
/**
|
||||
* User email.
|
||||
* User e-mail.
|
||||
*/
|
||||
@property (nonatomic, copy, nullable) NSString *email;
|
||||
/**
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
#import <JitsiMeetSDK/JitsiMeetSDK-Swift.h>
|
||||
|
||||
#import "../LogUtils.h"
|
||||
#import "JitsiAudioSession.h"
|
||||
|
||||
|
||||
// The events emitted/supported by RNCallKit:
|
||||
@@ -320,13 +319,13 @@ RCT_EXPORT_METHOD(updateCall:(NSString *)callUUID
|
||||
- (void) providerDidActivateAudioSessionWithSession:(AVAudioSession *)session {
|
||||
DDLogInfo(@"[RNCallKit][CXProviderDelegate][provider:didActivateAudioSession:]");
|
||||
|
||||
[JitsiAudioSession activateWithAudioSession:session];
|
||||
[[RTCAudioSession sharedInstance] audioSessionDidActivate:session];
|
||||
}
|
||||
|
||||
- (void) providerDidDeactivateAudioSessionWithSession:(AVAudioSession *)session {
|
||||
DDLogInfo(@"[RNCallKit][CXProviderDelegate][provider:didDeactivateAudioSession:]");
|
||||
|
||||
[JitsiAudioSession deactivateWithAudioSession:session];
|
||||
[[RTCAudioSession sharedInstance] audioSessionDidDeactivate:session];
|
||||
}
|
||||
|
||||
- (void) providerTimedOutPerformingActionWithAction:(CXAction *)action {
|
||||
|
||||
@@ -44,14 +44,5 @@
|
||||
"esUS": "Taspanit (Temrikt Talatinit)",
|
||||
"enGB": "Tagnizit (Tagldit i ddukklen)",
|
||||
"da": "Tadanit",
|
||||
"ca": "Takaṭalant",
|
||||
"mr": "Tamratit",
|
||||
"ml": "Tamalayalamt",
|
||||
"lv": "Talatviant",
|
||||
"fa": "Tafarisit",
|
||||
"pt": "Taportugit",
|
||||
"sr": "Taserbit",
|
||||
"sq": "Talbanit",
|
||||
"hi": "Tahindit",
|
||||
"te": "Tatelugut"
|
||||
"ca": "Takaṭalant"
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
"copyInvite": "انسخ دعوةً للاجتماع",
|
||||
"copyLink": "انسخ رابط الاجتماع",
|
||||
"copyStream": "انسخ رابط البث المباشر",
|
||||
"contacts": "contacts",
|
||||
"countryNotSupported": "لا ندعم هذه الوجهة حاليًا.",
|
||||
"countryReminder": "أتريد الاتصال بمن هو خارج الولايات المتحدة؟ تأكد من الابتداء برمز الدولة أولًا!",
|
||||
"defaultEmail": "بريدك الافتراضي",
|
||||
@@ -17,14 +16,18 @@
|
||||
"inviteMoreMailSubject": "ضم {{appName}} للاجتماع",
|
||||
"inviteMorePrompt": "ادعُ أشخاصًا آخرين",
|
||||
"linkCopied": "نُسِخ الرابط",
|
||||
"loading": "البحث عن أشخاص وأرقام هواتف",
|
||||
"loadingNumber": "التحقق من رقم الهاتف",
|
||||
"loadingPeople": "البحث عن أشخاص لإضافتهم",
|
||||
"noResults": "لم يُعثَر على أي نتيجة بحث متطابقة",
|
||||
"noValidNumbers": "ادخل رقم هاتف، رجاءً",
|
||||
"outlookEmail": "بريد مايكروسوفت",
|
||||
"phoneNumbers": "أضف ارقام هواتف",
|
||||
"searching": "يبحث",
|
||||
"searchNumbers": "أضف ارقام هواتف",
|
||||
"searchPeople": "ابحث عن أشخاص",
|
||||
"searchPeopleAndNumbers": "ابحث عن أشخاص أو أضف أرقام هواتفهم",
|
||||
"shareInvite": "شارك دعوةً للاجتماع",
|
||||
"shareLink": "شارك رابط الاجتماع لدعوة الأخرين",
|
||||
"shareStream": "شارك رابط البث المباشر للاجتماع",
|
||||
"sipAddresses": "sip عنوان",
|
||||
"telephone": "رقم الهاتف: {{number}}",
|
||||
"title": "ادعُ أحدًا لهذا الاجتماع",
|
||||
"yahooEmail": "بريد ياهوو"
|
||||
@@ -39,20 +42,6 @@
|
||||
"audioOnly": {
|
||||
"audioOnly": "معدل تبادل البيانات منخفض"
|
||||
},
|
||||
"breakoutRooms": {
|
||||
"defaultName": "غرفة الاجتماعات الفرعية رقم {{index}}",
|
||||
"mainRoom": "الغرفة الرئيسية",
|
||||
"actions": {
|
||||
"add": "أضف غرفة جانبية",
|
||||
"autoAssign": "التخصيص التلقائي للغرف الجانبية",
|
||||
"close": "أغلق",
|
||||
"join": "انضم",
|
||||
"leaveBreakoutRoom": "اترك الغرفة الجانبية",
|
||||
"more": "أكثر",
|
||||
"remove": "إزالة",
|
||||
"sendToBreakoutRoom": "أرسل المشارك إلى:"
|
||||
}
|
||||
},
|
||||
"calendarSync": {
|
||||
"addMeetingURL": "أضف رابطًا لاجتماع",
|
||||
"confirmAddLink": "هل تريد إضافة رابط جيستسي لهذا الحدث؟",
|
||||
@@ -72,7 +61,6 @@
|
||||
"today": "اليوم"
|
||||
},
|
||||
"chat": {
|
||||
"enter": "أدخل الغرفة",
|
||||
"error": "خطأ: لم تُرسَل رسالتك. السبب: {{error}}",
|
||||
"fieldPlaceHolder": "اكتب رسالتك هنا",
|
||||
"messagebox": "اكتب رسالة",
|
||||
@@ -84,14 +72,6 @@
|
||||
"titleWithPolls": "اكتب لقبًا لاعتماده في المحادثة"
|
||||
},
|
||||
"privateNotice": "أرسل رسالة خاصة إلى {{recipient}}",
|
||||
"message": "رسالة",
|
||||
"messageAccessibleTitle": "{{user}} مقولة:",
|
||||
"messageAccessibleTitleMe": "أنا أقول:",
|
||||
"smileysPanel": "واجهة الإيموجي",
|
||||
"tabs": {
|
||||
"chat": "دردشة",
|
||||
"polls": "تصويت"
|
||||
},
|
||||
"title": "محادثة",
|
||||
"titleWithPolls": "محادثة",
|
||||
"you": "أنت"
|
||||
@@ -99,8 +79,7 @@
|
||||
"chromeExtensionBanner": {
|
||||
"installExtensionText": "نزِّل الإضافة للدمج مع رزنامة غوغل ورزنامة أوفيس 365",
|
||||
"buttonText": "نزِّل إضافة متصفح كروم",
|
||||
"dontShowAgain": "لا ترني هذه مرة أخرى",
|
||||
"close": "إغلق"
|
||||
"dontShowAgain": "لا ترني هذه مرة أخرى"
|
||||
},
|
||||
"connectingOverlay": {
|
||||
"joiningRoom": "قيد وصلك بالإجتماع..."
|
||||
@@ -122,7 +101,6 @@
|
||||
},
|
||||
"connectionindicator": {
|
||||
"address": "العنوان:",
|
||||
"audio_ssrc": "مصدر الصوت:",
|
||||
"bandwidth": "مُعدَّل البيانات المتبادلة:",
|
||||
"bitrate": "مُعدَّل البث:",
|
||||
"bridgeCount": "عدد المخدِّمات: ",
|
||||
@@ -150,12 +128,9 @@
|
||||
"remoteport": "المنفذ البعيد:",
|
||||
"remoteport_plural": "المنافذ البعيدة:",
|
||||
"resolution": "الدقة:",
|
||||
"savelogs": "خزن الوقوعات",
|
||||
"participant_id": "معرّف المشترك:",
|
||||
"status": "الاتصال:",
|
||||
"transport": "النقل:",
|
||||
"transport_plural": "النواقل:",
|
||||
"video_ssrc": "مصدر الصورة:"
|
||||
"transport_plural": "النواقل:"
|
||||
},
|
||||
"dateUtils": {
|
||||
"earlier": "سابقًا",
|
||||
@@ -197,14 +172,12 @@
|
||||
"alreadySharedVideoMsg": "يشارك أحد الحضور الفيديو حاليًا، ولا يسمح هذا الإجتماع سوى بمشاركة فيديو واحد في آن واحد",
|
||||
"alreadySharedVideoTitle": "لا يُسمَح سوى بفيديو مشارك واحد على الأكثر في آن واحد.",
|
||||
"applicationWindow": "نافذة التطبيق",
|
||||
"authenticationRequired": "يستلزم التوثيق",
|
||||
"Back": "عد للخلف",
|
||||
"cameraConstraintFailedError": "لا تتوافق كاميرتك مع بعض الشروط المطلوبة.",
|
||||
"cameraNotFoundError": "لم يُعثَر على اي كاميرا",
|
||||
"cameraNotSendingData": "لا نتمكن من الوصول إلى كاميرتك. تحقَّق رجاءً إن كان أي تطبيق آخر يستعملها، أو اختر جهازًا آخر من القائمة أو جرب تحميل التطبيق مجدَّدًا.",
|
||||
"cameraNotSendingDataTitle": "يصعب الوصول الوصول إلى كاميرتك",
|
||||
"cameraPermissionDeniedError": "لم تُمنَح إذن استعمال الكاميرا. لا يزال بإمكانك حضور المؤتمر ولكن لن يراك الآخرون. استعمال زر الكاميرا في شريط العنوان لمحاول إصلاح المشكلة.",
|
||||
"cameraTimeoutError": "تعذر بدء مصدر الفيديو. انتهت المهلة!",
|
||||
"cameraUnknownError": "يصعب استعمال الكاميرا لأسباب مجهولة.",
|
||||
"cameraUnsupportedResolutionError": "لا تدعم كاميرتك دقة الفيديو المطلوبة.",
|
||||
"Cancel": "ِألغ",
|
||||
@@ -223,20 +196,16 @@
|
||||
"copied": "نُسِخ!",
|
||||
"copy": "انسخ",
|
||||
"dismiss": "تجاهل",
|
||||
"displayNameRequired": "السلام عليكم! ما اسمك؟",
|
||||
"displayNameRequired": "السلام عليك! ما اسمك؟",
|
||||
"done": "اُنجِز",
|
||||
"e2eeDescription": "<p>عملية التعمية من طرف لطرف <strong>قيد التجريب</strong> حاليًا. زر رجاءً <a href='https://jitsi.org/blog/e2ee/' target='_blank'>هذا المنشور</a> لمزيد من التفاصيل.</p><br/><p>ضع في ذهنك أن تشغيل عملية التعمية من طرف لطرف ستعطل عمل بعض الخدمات التي يقدمها المُخدِّم مثل: التسجيل، والبث الحي، الاشتراك عبر الهاتف. أضف إلى ذلك أن الاجتماع سيعمل مع الأشخاص المنضمين من المتصفح التي تدعم قابلية الدخول إلى البث.</p>",
|
||||
"e2eeLabel": "المفتاح",
|
||||
"e2eeDisabledDueToMaxModeDescription": "لا يمكن تمكين التشفير من طرف إلى طرف بسبب العدد الكبير من المشاركين في المؤتمر.",
|
||||
"e2eeWarning": "تحذير: لا يبدو أن جميع المشاركين في هذا الاجتماع لديهم دعم للتشفير من طرف إلى طرف. إذا قمت بتمكينه فلن يتمكنوا من رؤيتك أو سماعك.",
|
||||
"e2eeWillDisableDueToMaxModeDescription": "تحذير: سيتم تعطيل التشفير من طرف إلى طرف تلقائيًا إذا انضم المزيد من المشاركين إلى المؤتمر.",
|
||||
"e2eeWarning": "<br /><p><strong>تحذير:</strong>لا يبدو أن جميع الحاضرين في هذا الاجتماع يدعمون عملية التعمية طرف لطرف. إن فعَّلت العملية، فلن يتمكنوا من رؤيتك ولا سماعك.</p>",
|
||||
"enterDisplayName": "أدخل اسمك هنا، رجاءً",
|
||||
"embedMeeting": "تضمين الاجتماع",
|
||||
"error": "خطأ",
|
||||
"gracefulShutdown": "خدمتنا متوقفة حاليًا لعمليات الصيانة. جرب مرة أخرى في وقت لاحق.",
|
||||
"grantModeratorDialog": "أما زلت راغب بجعل هذا المشارك رئيس الجلسة؟",
|
||||
"grantModeratorTitle": "اجعله رئيس الجلسة",
|
||||
"hideShareAudioHelper": "لا تظهر هذا الحوار مرة أخرى",
|
||||
"IamHost": "أنا المضيف",
|
||||
"incorrectRoomLockPassword": "كلمة مرور خطأ",
|
||||
"incorrectPassword": "اسم المستخدم أو كلمة المرور خطأ",
|
||||
@@ -246,15 +215,15 @@
|
||||
"kickParticipantButton": "اطرد",
|
||||
"kickParticipantDialog": "أمتأكد من طرد هذا المشارك؟",
|
||||
"kickParticipantTitle": "أتريد طرد هذا المشارك؟",
|
||||
"kickTitle": "عذرًا! تم طردك {{participantDisplayName}} من الاجتماع",
|
||||
"kickTitle": "عذرًا! طردك {{participantDisplayName}} من الاجتماع",
|
||||
"liveStreaming": "البث المباشر الحي",
|
||||
"liveStreamingDisabledBecauseOfActiveRecordingTooltip": "غير ممكن أثناء التسجيل",
|
||||
"liveStreamingDisabledForGuestTooltip": "لا يمكن للضيوف بدء بث حي مباشر.",
|
||||
"liveStreamingDisabledTooltip": "بدء بثٍ حيٍّ مُعطَّل",
|
||||
"lockMessage": "فشل جعل المؤتمر مغلقًا.",
|
||||
"lockRoom": "أضف الاجتماع $t(lockRoomPasswordUppercase)",
|
||||
"lockTitle": "فشلت عملية القفل والإغلاق",
|
||||
"logoutQuestion": "أمتأكد من رغبتك في الخروج وإيقاف المؤتمر؟",
|
||||
"login": "تسجيل الدخول",
|
||||
"logoutTitle": "الخروج",
|
||||
"maxUsersLimitReached": "وصل عدد المشاركين إلى الحد الأقصى. المؤتمر مكتمل الحضور. اتصل رجاءً براعي المؤتمر أو جرب مرة أخرى لاحقًا.",
|
||||
"maxUsersLimitReachedTitle": "وصل عدد المشاركين إلى الحد الأقصى",
|
||||
@@ -263,46 +232,28 @@
|
||||
"micNotSendingData": "اذهب إلى إعدادات حاسوبك لإلغاء كتم المجهار (المايكروفون) وضبط مستواه",
|
||||
"micNotSendingDataTitle": "كتم ضبط الإعدادات لديك المجهار (المايكروفون)",
|
||||
"micPermissionDeniedError": "لم تعط إذن استعمال المجهار (المايكروفون) الخاص بك. ما يزال بإمكانك الإنضمام إلى المؤتمر ولكن دون أن يسمعك الآخرون. جرب استعمال زر الكاميرا في شريط العنوان لإصلاح هذه المشكلة.",
|
||||
"micTimeoutError": "تعذر بدء مصدر الصوت. انقضت المهلة!",
|
||||
"micUnknownError": "لا يمكن استخدام الميكروفون لسبب غير معروف.",
|
||||
"moderationAudioLabel": "السماح للحاضرين بإعادة الصوت بأنفسهم",
|
||||
"moderationVideoLabel": "السماح للحاضرين ببدء الفيديو الخاص بهم",
|
||||
"micUnknownError": "يصعب استعمال المجهار (المايكروفون) الخاص بك لأسباب مجهولة.",
|
||||
"muteEveryoneElseDialog": "بمجرد أن تكتمهم، لن تتمكن نم إلغاء الكتم هذا، ولكن يمكنهم إلغاء كتم أنفسهم في أي وقت.",
|
||||
"muteEveryoneElseTitle": "أتريد كتم الجميع باستثناء {{whom}}?",
|
||||
"muteEveryoneDialog": "أمتأكد من رغبتك بكتم الجميع؟ لن تتمكن من إلغاء الكتم ولكن يمكنهم إلغاء كتم أنفسهم في أي وقت.",
|
||||
"muteEveryoneDialogModerationOn": "يمكن للمشاركين إرسال طلب للتحدث في أي وقت.",
|
||||
"muteEveryoneTitle": "أتريد كتم الجميع؟",
|
||||
"muteEveryoneElsesVideoDialog": "بمجرد تعطيل الكاميرا ، لن تتمكن من إعادة تشغيلها ، ولكن يمكنهم إعادة تشغيلها في أي وقت.",
|
||||
"muteEveryoneElsesVideoTitle": "وقف فيديو الجميع باستثناء {{whom}}?",
|
||||
"muteEveryonesVideoDialog": "يمكن للمشاركين تشغيل الفيديو الخاص بهم في أي وقت.",
|
||||
"muteEveryonesVideoDialogModerationOn": "يمكن للمشاركين إرسال طلب لتشغيل الفيديو الخاص بهم في أي وقت.",
|
||||
"muteEveryonesVideoDialogOk": "إبطال",
|
||||
"muteEveryonesVideoTitle": "وقف فيديو الجميع؟",
|
||||
"muteEveryoneSelf": "اكتم نفسك أيضًا",
|
||||
"muteEveryoneStartMuted": "البدء مع كتم الجميع من الآن فصاعدًا",
|
||||
"muteParticipantBody": "لن تتكمن من إلغاء كتمهم، ولكن يمكنهم إلغاء كتم أنفسهم في أي وقت.",
|
||||
"muteParticipantButton": "كتم",
|
||||
"muteParticipantsVideoDialog": "هل أنت متأكد أنك تريد إيقاف تشغيل كاميرا هذا المشارك؟ لن تتمكن من إعادة تشغيل الكاميرا ، ولكن يمكنهم إعادة تشغيلها في أي وقت.",
|
||||
"muteParticipantsVideoDialogModerationOn": "هل أنت متأكد أنك تريد إيقاف تشغيل كاميرا هذا المشارك؟ لن تكون قادرًا على إعادة تشغيل الكاميرا ولن يفعلوا ذلك أيضًا.",
|
||||
"muteParticipantsVideoButton": "وقف الكاميرا",
|
||||
"muteParticipantsVideoTitle": "تعطيل الكاميرا لهذا المشارك؟",
|
||||
"muteParticipantsVideoBody": "لن تتمكن من إعادة تشغيل الكاميرا ، ولكن يمكنهم إعادة تشغيلها في أي وقت.",
|
||||
"muteParticipantsVideoBodyModerationOn": "لن تكون قادرًا على إعادة تشغيل الكاميرا ولن يفعلوا ذلك أيضًا.",
|
||||
"noDropboxToken": "لا يوجد رمز مميز صالح لـ Dropbox",
|
||||
"muteParticipantDialog": "أمتأكد من رغبتك لهذا المشارك؟ لن تتمكن من إلغاء الكتم ولكن يمكنه إلغاء كتم أنفسهم في أي وقت.",
|
||||
"muteParticipantTitle": "أتريد كتم هذا المشارك؟",
|
||||
"Ok": "تمام",
|
||||
"password": "كلمه السر",
|
||||
"passwordLabel": "جعل عضو ما هذا الاجتماع مغلقًا. أدخل رجاءً $t(lockRoomPassword) للإنضمام.",
|
||||
"passwordNotSupported": "ضبط اجتماع $t(lockRoomPassword) غير مدعوم.",
|
||||
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) غير مدعوم",
|
||||
"passwordRequired": "يُطلَب $t(lockRoomPasswordUppercase)",
|
||||
"permissionErrorTitle": "الإذن مطلوب",
|
||||
"permissionCameraRequiredError": "مطلوب إذن الكاميرا للمشاركة في المؤتمرات بالفيديو. يرجى منحه في الإعدادات",
|
||||
"permissionMicRequiredError": "مطلوب إذن الميكروفون للمشاركة في المؤتمرات مع الصوت. يرجى منحه في الإعدادات",
|
||||
"popupError": "يمنع متصفحك النوافذ المنبثقة من هذا الموقع. فعِّل رجاءً النوافذ المنبثقة في المتصفح من إعدادات الحماية وحاول مرة أخرى.",
|
||||
"popupErrorTitle": "النوافذ المنبثقة محجوبة.",
|
||||
"readMore": "أكثر",
|
||||
"readMore": "more",
|
||||
"recording": "قيد التسجيل",
|
||||
"recordingDisabledBecauseOfActiveLiveStreamingTooltip": "ليس بالإمكان ما دمت قيد البث المباشر",
|
||||
"recordingDisabledForGuestTooltip": "لا يمكن للضيوف بدء عملية التسجيل.",
|
||||
"recordingDisabledTooltip": "عملية التسجيل معطلة.",
|
||||
"rejoinNow": "انضم مجدَّدًا الآن",
|
||||
"remoteControlAllowedMessage": "قبل {{user}} طلب إمكانية التحكم البعيد!",
|
||||
@@ -329,27 +280,15 @@
|
||||
"sendPrivateMessageTitle": "أترسل ردًا خاصًا؟",
|
||||
"serviceUnavailable": "الخدمة غير متاحة",
|
||||
"sessTerminated": "أُنهيَت المكالمة",
|
||||
"sessionRestarted": "إعادة الاتصال من الجسر",
|
||||
"Share": "شارك",
|
||||
"shareAudio": "استمر",
|
||||
"shareAudioTitle": "كيفية مشاركة الصوت",
|
||||
"shareAudioWarningTitle": "تحتاج إلى إيقاف مشاركة الشاشة قبل مشاركة الصوت",
|
||||
"shareAudioWarningH1": "إذا كنت تريد مشاركة الصوت فقط:",
|
||||
"shareAudioWarningD1": "تحتاج إلى إيقاف مشاركة الشاشة قبل مشاركة الصوت الخاص بك.",
|
||||
"shareAudioWarningD2": "تحتاج إلى إعادة تشغيل مشاركة الشاشة والتحقق من خيار مشاركة الصوت .",
|
||||
"shareMediaWarningGenericH2": "إذا كنت ترغب في مشاركة شاشتك والصوت",
|
||||
"shareVideoLinkError": "زودنا برابط يوتيوب صحيح",
|
||||
"shareVideoTitle": "شارك فيديو",
|
||||
"shareYourScreen": "شارك شاشتك",
|
||||
"shareYourScreenDisabled": "مشاركة الشاشة مُعطَّلة",
|
||||
"shareYourScreenDisabledForGuest": "لا يمكن للضيوف مشاركة شاشتهم",
|
||||
"startLiveStreaming": "ابدأ بثًا حيًا",
|
||||
"startRecording": "ابدأ التسجيل",
|
||||
"startRemoteControlErrorMessage": "حصل خطأٌ أثناء محاولة بدء جلسة تحكم بعيد!",
|
||||
"shareScreenWarningTitle": "تحتاج إلى إيقاف مشاركة الصوت قبل مشاركة شاشتك",
|
||||
"shareScreenWarningH1": "إذا كنت تريد مشاركة شاشتك فقط:",
|
||||
"shareScreenWarningD1": "تحتاج إلى إيقاف مشاركة الصوت قبل مشاركة شاشتك.",
|
||||
"shareScreenWarningD2": "تحتاج إلى إيقاف مشاركة الصوت وبدء مشاركة الشاشة وتحديد خيار مشاركة الصوت .",
|
||||
"sharedVideoLinkPlaceholder": "رابط اليوتيوب او رابط الفيديو المباشر",
|
||||
"stopLiveStreaming": "أوقف البث الحي",
|
||||
"stopRecording": "أوقف التسجيل",
|
||||
"stopRecordingWarning": "أمتأكد من رغبتك بإيقاف التسجيل؟",
|
||||
@@ -362,20 +301,12 @@
|
||||
"tokenAuthFailedTitle": "فشلت عملية الاستيثاق",
|
||||
"transcribing": "يذاع",
|
||||
"unlockRoom": "إزل الاجتماع $t(lockRoomPassword)",
|
||||
"user": "مستخدم",
|
||||
"userIdentifier": "معرف المستخدم",
|
||||
"userPassword": "كلمة مرور المستخدم",
|
||||
"videoLink": "رابط الفيديو",
|
||||
"viewUpgradeOptions": "عرض خيارات الترقية",
|
||||
"viewUpgradeOptionsContent": "للحصول على وصول غير محدود إلى الميزات المتميزة مثل التسجيل والنسخ وتدفق RTMP والمزيد ، ستحتاج إلى ترقية خطتك.",
|
||||
"viewUpgradeOptionsTitle": "لقد اكتشفت ميزة مميزة!",
|
||||
"WaitForHostMsg": "لم يبدأ المؤتمر <b>{{room}}</b> بعد. إن كنت المضيف والراعي، فنرجو تأكيد ذلك عبر الاستيثاق أو انتظر وصول المضيف رجاءً. ",
|
||||
"WaitForHostMsgWOk": "لم يبدأ المؤتمر <b>{{room}}</b> بعد. إن كنت المضيف والراعي، فاضغط على «تمام» للاستيثاق أو انتظر وصول المضيف رجاءً.",
|
||||
"WaitingForHostTitle": "في انتظار المضيف ...",
|
||||
"WaitingForHost": "ننتظر وصول المضيف ...",
|
||||
"Yes": "نعم",
|
||||
"yourEntireScreen": "شاشتك كاملةً",
|
||||
"remoteUserControls": "ضوابط المستخدم عن بعد لـ {{username}}",
|
||||
"localUserControls": "ضوابط المستخدم المحلي"
|
||||
"yourEntireScreen": "شاشتك كاملةً"
|
||||
},
|
||||
"dialOut": {
|
||||
"statusMessage": "{{status}} الآن"
|
||||
@@ -389,29 +320,6 @@
|
||||
"embedMeeting": {
|
||||
"title": "ضمِّن هذا الاجتماع"
|
||||
},
|
||||
"virtualBackground": {
|
||||
"apply": "تطبيق",
|
||||
"title": "خلفيات افتراضية",
|
||||
"blur": "ضبابية",
|
||||
"slightBlur": "طمس طفيف",
|
||||
"removeBackground": "إزالة خلفية",
|
||||
"addBackground": "أضف خلفية",
|
||||
"pleaseWait": "يرجى الانتظار...",
|
||||
"none": "بدون",
|
||||
"uploadedImage": "تحميل الصورة {{index}}",
|
||||
"deleteImage": "حذف صورة",
|
||||
"image1": "شاطئ",
|
||||
"image2": "جدار أبيض محايد",
|
||||
"image3": "غرفة بيضاء فارغة",
|
||||
"image4": "مصباح أرضي أسود",
|
||||
"image5": "جبل",
|
||||
"image6": "غابة",
|
||||
"image7": "شروق الشمس",
|
||||
"desktopShareError": "تعذر إنشاء مشاركة سطح المكتب",
|
||||
"desktopShare": "مشاركة سطح المكتب",
|
||||
"webAssemblyWarning": "WebAssembly غير مدعوم",
|
||||
"backgroundEffectError": "فشل تطبيق تأثير الخلفية."
|
||||
},
|
||||
"feedback": {
|
||||
"average": "المتوسط",
|
||||
"bad": "سيئة",
|
||||
@@ -419,8 +327,7 @@
|
||||
"good": "جيدة",
|
||||
"rateExperience": "قيِّم تجربتك مع هذا الإجتماع",
|
||||
"veryBad": "سيئة للغاية",
|
||||
"veryGood": "ممتازة",
|
||||
"star": "نجمة"
|
||||
"veryGood": "ممتازة"
|
||||
},
|
||||
"incomingCall": {
|
||||
"answer": "أجب",
|
||||
@@ -437,7 +344,6 @@
|
||||
"country": "البلد",
|
||||
"dialANumber": "إن أردت الإنضمام إلى الإجتماع، اتصل بأحد الأرقام التالية ثم أدخل رمز المرور",
|
||||
"dialInConferenceID": "رمز المرور (PIN):",
|
||||
"copyNumber": "إنسخ الرقم",
|
||||
"dialInNotSupported": "عذرًا، الاتصال غير مدعوم حاليًا.",
|
||||
"dialInNumber": "اتصل:",
|
||||
"dialInSummaryError": "خطأ في تحصيل معلومات الاتصال. جرب مرة أخرى لاحقًا.",
|
||||
@@ -446,11 +352,6 @@
|
||||
"inviteLiveStream": "لمشاهدة البث الحي لهذا الإجتماع، اضط على هذا الرابط: {{url}}",
|
||||
"invitePhone": "للإنضمام من الهاتف، استعمل: {{number}},,{{conferenceID}}#\n",
|
||||
"invitePhoneAlternatives": "أتبحث عن رقم اتصال مختلف؟\nأنظر أرقام الوصول إلى هذا الإجتماع: {{url}}\n\n\nإن كنت أيضًا تتصل عبر غرفة اتصال (room phone)، انضم دون الاتصال بالصوت: {{silentUrl}}",
|
||||
"inviteSipEndpoint": "للانضمام باستخدام عنوان SIP ، أدخل هذا: {{sipUri}}",
|
||||
"inviteTextiOSPersonal": "{{name}} يدعوك إلى اجتماع.",
|
||||
"inviteTextiOSJoinSilent": "إذا كنت تقوم بالاتصال من خلال هاتف الغرفة ، فاستخدم هذا الارتباط للانضمام دون الاتصال بالصوت: {{silentUrl}}.",
|
||||
"inviteTextiOSInviteUrl": "انقر فوق الرابط التالي للانضمام: {{inviteUrl}}.",
|
||||
"inviteTextiOSPhone": "للانضمام عبر الهاتف ، استخدم هذا الرقم: {{number}},,{{conferenceID}}#. إذا كنت تبحث عن رقم مختلف ، فهذه هي القائمة الكاملة: {{didUrl}}.",
|
||||
"inviteURLFirstPartGeneral": "دُعيِت للإنضمام إلى اجتماع",
|
||||
"inviteURLFirstPartPersonal": "دعاك {{name}} لاجتماع.\n",
|
||||
"inviteURLSecondPart": "\nانضم للاجتماع:\n{{url}}\n",
|
||||
@@ -461,7 +362,6 @@
|
||||
"noRoom": "لم تُخصَّص غرفة للاتصال إليها",
|
||||
"numbers": "أرقام الاتصال",
|
||||
"password": "$t(lockRoomPasswordUppercase):",
|
||||
"sip": "SIP عنوان",
|
||||
"title": "شارك",
|
||||
"tooltip": "شارك رابط وتفاصيل الاتصال لهذا الاجتماع",
|
||||
"label": "تفاصيل الاجتماع"
|
||||
@@ -480,7 +380,6 @@
|
||||
"support": "الدعم",
|
||||
"supportMsg": "إن تكرَّر حصول هذا، تواصل مع"
|
||||
},
|
||||
"jitsiHome": "{{logo}} الشعار ، رابط إلى الصفحة الرئيسية",
|
||||
"keyboardShortcuts": {
|
||||
"focusLocal": "ركز على الفيديو الخاص بك",
|
||||
"focusRemote": "ركز على فيديو مشارك آخر",
|
||||
@@ -493,10 +392,10 @@
|
||||
"showSpeakerStats": "اظهر حالة مكبر الصوت",
|
||||
"toggleChat": "افتح/أغلق المحادثة",
|
||||
"toggleFilmstrip": "أظهِر/اخفِ إطار الفيديو المُصغَّر",
|
||||
"toggleParticipantsPane": "إظهار أو إخفاء قائمة المشاركين",
|
||||
"toggleScreensharing": "بدِّل بين الكاميرا ومشاركة الشاشة",
|
||||
"toggleShortcuts": "أظهِر/اخفِ اختصارات لوحة المفاتيح",
|
||||
"videoMute": "ابدأ/أوقف كاميرتك"
|
||||
"videoMute": "ابدأ/أوقف كاميرتك",
|
||||
"videoQuality": "اضبط جودة المكالمة"
|
||||
},
|
||||
"liveStreaming": {
|
||||
"limitNotificationDescriptionWeb": "نظرًا للضغط الكبير، سيقيَّد البث إلى {{limit}} د، ولكن إن أردت إجراء عملية بث غير محدودة، جرِّب <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
@@ -515,7 +414,6 @@
|
||||
"expandedPending": "تبدأ عملية البث الحي...",
|
||||
"failedToStart": "فشلت عملية بدء البث الحي",
|
||||
"getStreamKeyManually": "لم نتمكن من الوصول إلى أي بث حي. جرب جلب مفتاح بث حي خاص بك من يوتيوب.",
|
||||
"inProgress": "البث المباشر غير ممكّن على {{email}}. يرجى تمكين البث المباشر أو تسجيل الدخول إلى حساب مع تمكين البث المباشر.",
|
||||
"invalidStreamKey": "يحتمل كون مفتاح البث الحي غير صحيح.",
|
||||
"off": "أُوقِف البث الحي",
|
||||
"offBy": "أوقف {{name}} البث الحي",
|
||||
@@ -523,7 +421,6 @@
|
||||
"onBy": "بدأ {{name}} بثًّا حيًّا",
|
||||
"pending": "بدء بثٍّ حيٍّ",
|
||||
"serviceName": "خدمة البث الحي",
|
||||
"sessionAlreadyActive": "هذه الجلسة قيد التسجيل أو البث المباشر.",
|
||||
"signedInAs": "أنت مسجل حاليًا بصفة:",
|
||||
"signIn": "سجل الدخول عبر حساب غوغل",
|
||||
"signInCTA": "سجل الدخول أو أدخل مفتاح البث الحي الخاص بك من يوتيوب",
|
||||
@@ -567,15 +464,13 @@
|
||||
"lockRoomPasswordUppercase": "كلمة المرور",
|
||||
"me": "أنا",
|
||||
"notify": {
|
||||
"allowAction": "يسمح",
|
||||
"allowedUnmute": "يمكنك إعادة صوت الميكروفون و بدء تشغيل الكاميرا أو مشاركة شاشتك.",
|
||||
"connectedOneMember": "انضم {{name}} للاجتماع",
|
||||
"connectedThreePlusMembers": "انضم {{name}} وعدد {{count}} غيره إلى الاجتماع",
|
||||
"connectedTwoMembers": "انضم {{first}} و {{second}} إلى الاجتماع",
|
||||
"disconnected": "انقطع الاتصال",
|
||||
"focus": "التركيز على المؤتمر",
|
||||
"focusFail": "إنَّ {{component}} غير متاح. ستعاد المحاولة مرة أخرى خلال {{ms}} ثانية.",
|
||||
"hostAskedUnmute": "The moderator would like you to speak",
|
||||
"grantedTo": "مُنِحت صلاحية رئيس الجلسة إلى {{to}}!",
|
||||
"invitedOneMember": "دُعِي {{name}}",
|
||||
"invitedThreePlusMembers": "دُعِي {{name}} وعدد {{count}} آخرين",
|
||||
"invitedTwoMembers": "دُعِي {{first}} و {{second}}",
|
||||
@@ -586,13 +481,9 @@
|
||||
"mutedTitle": "مكتوم!",
|
||||
"mutedRemotelyTitle": "كتم {{participantDisplayName}} الصوت لديك!",
|
||||
"mutedRemotelyDescription": "يمكنك إلغاء الكتم متى كنت جاهزًا للتحدث. اكتم الصوت بعد الانتهاء من التحدث لخفض الضجيج أثناء الاجتماع",
|
||||
"videoMutedRemotelyTitle": "Your video has been turned off by {{participantDisplayName}}",
|
||||
"videoMutedRemotelyDescription": "You can always turn it on again.",
|
||||
"passwordRemovedRemotely": "أزال أحد المشاركين {{participantDisplayName}}",
|
||||
"passwordSetRemotely": "ضبط أحد المشاركين $t(lockRoomPasswordUppercase)",
|
||||
"raisedHand": "يريد {{name}} التحدث",
|
||||
"screenShareNoAudio": "لم يتم تحديد مربع مشاركة الصوت في شاشة تحديد النافذة.",
|
||||
"screenShareNoAudioTitle": "تعذرت مشاركة صوت النظام!",
|
||||
"somebody": "شخص ما",
|
||||
"startSilentTitle": "انضممت دون مخرج للصوت!",
|
||||
"startSilentDescription": "أنضم مجدَّدًا للاجتماع لتفعيل الصوت",
|
||||
@@ -605,80 +496,10 @@
|
||||
"OldElectronAPPTitle": "ثغرة أمنية!",
|
||||
"oldElectronClientDescription1": "يبدو أنَّك تستعمل إصدارًا قديمًا من جيتسي يحوي ثغرة أمنية. تأكد رجاءً من أنَّك حدَّثته إلى ",
|
||||
"oldElectronClientDescription2": "أحدث إصدار",
|
||||
"oldElectronClientDescription3": " الآن!",
|
||||
"moderationInEffectDescription": "من فضلك ارفع يدك إذا كنت تريد التحدث.",
|
||||
"moderationInEffectCSDescription": "يرجى رفع اليد إذا كنت تريد مشاركة شاشتك.",
|
||||
"moderationInEffectVideoDescription": "يرجى رفع يدك إذا كنت تريد بدء تشغيل الكاميرا.",
|
||||
"moderationInEffectTitle": "تم كتم صوت الميكروفون الخاص بك بواسطة المشرف",
|
||||
"moderationInEffectCSTitle": "تم حظر مشاركة الشاشة من قبل المشرف",
|
||||
"moderationInEffectVideoTitle": "تم حظر الكاميرا الخاصة بك من قبل المشرف",
|
||||
"moderationRequestFromModerator": "المضيف يريد منك إلغاء كتم الصوت",
|
||||
"moderationRequestFromParticipant": "يريد التحدث",
|
||||
"moderationStartedTitle": "بدأ الاشراف",
|
||||
"moderationStoppedTitle": "توقف الاشراف",
|
||||
"moderationToggleDescription": "من {{participantDisplayName}}",
|
||||
"raiseHandAction": "رفع اليد",
|
||||
"reactionSounds": "تعطيل الأصوات",
|
||||
"groupTitle": "إشعارات"
|
||||
},
|
||||
"participantsPane": {
|
||||
"close": "غلق",
|
||||
"header": "مشاركون",
|
||||
"headings": {
|
||||
"lobby": "الردهة ({{count}})",
|
||||
"participantsList": "المشاركون في الاجتماع({{count}})",
|
||||
"waitingLobby": "منتظرون في الردهة ({{count}})"
|
||||
},
|
||||
"actions": {
|
||||
"allow": "السماح للحاضرين بـ:",
|
||||
"allowVideo": "السماح بالفيديو",
|
||||
"audioModeration": "إعادة صوت أنفسهم",
|
||||
"blockEveryoneMicCamera": "حظر ميكروفون وكاميرا الجميع",
|
||||
"invite": "قم بدعوة شخص ما",
|
||||
"askUnmute": "اطلب إعادة الصوت",
|
||||
"moreModerationActions": "المزيد من خيارات الاشراف",
|
||||
"moreParticipantOptions": "المزيد من خيارات المشاركين",
|
||||
"mute": "كتم الصوت",
|
||||
"muteAll": "كتم الكل",
|
||||
"muteEveryoneElse": "كتم صوت الآخرين",
|
||||
"stopEveryonesVideo": "أوقف فيديو الجميع",
|
||||
"stopVideo": "أوقف الفيديو",
|
||||
"unblockEveryoneMicCamera": "قم بإلغاء حظر ميكروفون وكاميرا الجميع",
|
||||
"videoModeration": "ابدأ الفيديو الخاص بهم"
|
||||
},
|
||||
"search": "بحث"
|
||||
"oldElectronClientDescription3": " الآن!"
|
||||
},
|
||||
"passwordSetRemotely": "ضبطها مشارك آخر",
|
||||
"passwordDigitsOnly": "حتى {{number}} عدد",
|
||||
"polls": {
|
||||
"by": "من",
|
||||
"create": {
|
||||
"addOption": "إضافة خيار",
|
||||
"answerPlaceholder": "خيار {{index}}",
|
||||
"create": "إنشاء استطلاع",
|
||||
"cancel": "إلغاء",
|
||||
"pollOption": "خيار الاستطلاع {{index}}",
|
||||
"pollQuestion": "سؤال الاستطلاع",
|
||||
"questionPlaceholder": "طرح سؤال",
|
||||
"removeOption": "إزالة خيار",
|
||||
"send": "أرسل"
|
||||
},
|
||||
"answer": {
|
||||
"skip": "تخطى",
|
||||
"submit": "يقدم"
|
||||
},
|
||||
"results": {
|
||||
"vote": "تصويت",
|
||||
"changeVote": "تغيير التصويت",
|
||||
"empty": "لا توجد استطلاعات للرأي في الاجتماع حتى الآن. ابدأ الاستطلاع هنا!",
|
||||
"hideDetailedResults": "أخفِ التفاصيل",
|
||||
"showDetailedResults": "اظهر التفاصيل"
|
||||
},
|
||||
"notification": {
|
||||
"title": "تمت إضافة اقتراع جديد إلى هذا الاجتماع",
|
||||
"description": "افتح علامة تبويب الاقتراع للتصويت"
|
||||
}
|
||||
},
|
||||
"poweredby": "مُشغَّل بوساطة",
|
||||
"prejoin": {
|
||||
"audioAndVideoError": "خطأ في الصوت أو الفيديو:",
|
||||
@@ -719,7 +540,6 @@
|
||||
"errorDialOutFailed": "فشلت عملية الاتصال، للأسف.",
|
||||
"errorDialOutStatus": "خطأ في معرفة حالة الاتصال",
|
||||
"errorMissingName": "أدخل اسمك للدخول للاجتماع",
|
||||
"errorNoPermissions": "تحتاج إلى تمكين الوصول إلى الميكروفون والكاميرا",
|
||||
"errorStatusCode": "فشل الاتصال برمز خطأ: {{status}}",
|
||||
"errorValidation": "فشل التحقق من الرقم",
|
||||
"iWantToDialIn": "أريد الاتصال",
|
||||
@@ -732,7 +552,6 @@
|
||||
"or": "أو",
|
||||
"premeeting": "ما قبل الاجتماع",
|
||||
"showScreen": "تفعيل واجهة ما قبل الاجتماع",
|
||||
"keyboardShortcuts": "تفعيل اختصارات لوحة المفاتيح",
|
||||
"startWithPhone": "البدء مع جهاز الصوت من الجوال",
|
||||
"screenSharingError": "خطأ في مشاركة الشاشة:",
|
||||
"videoOnlyError": "خطأ في الفيديو:",
|
||||
@@ -754,7 +573,6 @@
|
||||
"ringing": "يرن..."
|
||||
},
|
||||
"profile": {
|
||||
"avatar": "avatar",
|
||||
"setDisplayNameLabel": "حدد اسمك المراد عرضه",
|
||||
"setEmailInput": "أدخل بريدك الإلكتروني",
|
||||
"setEmailLabel": "حدد الصورة الرمزية (gravatar) لبريدك الإلكتروني",
|
||||
@@ -769,16 +587,12 @@
|
||||
"beta": "تجريبي",
|
||||
"busy": "نعمل على تحرير موارد التسجيل. حاول مرة أخرى بعد بضعة دقائق.",
|
||||
"busyTitle": "جميع المسجلين مشغولون حاليًا",
|
||||
"copyLink": "Copy Link",
|
||||
"error": "فشل التسجيل. حاول مرة أخرى.",
|
||||
"errorFetchingLink": "خطأ في جلب رابط التسجيل.",
|
||||
"expandedOff": "أوقٍف التسجيل",
|
||||
"expandedOn": "يُسجَّل الاجتماع الآن",
|
||||
"expandedPending": "بدء التسجيل...",
|
||||
"failedToStart": "فشل بدء التسجيل",
|
||||
"fileSharingdescription": "شارك التسجيل مع المشاركين للاجتماع",
|
||||
"inProgress": "التسجيل أو البث المباشر قيد التقدم",
|
||||
"linkGenerated": "لقد أنشأنا رابطًا لتسجيلك.",
|
||||
"live": "مباشر",
|
||||
"loggedIn": "مُسجَّل باسم {{userName}}",
|
||||
"off": "أوقِف التسجيل",
|
||||
@@ -788,14 +602,11 @@
|
||||
"pending": "التحضير لتسجيل الاجتماع...",
|
||||
"rec": "تسجيل",
|
||||
"serviceDescription": "ستحفظ خدمة التسجيل الفيديو المستجل",
|
||||
"serviceDescriptionCloud": "تسجيل سحابي",
|
||||
"serviceName": "خدمة التسجيل",
|
||||
"sessionAlreadyActive": "هذه الجلسة قيد التسجيل أو البث المباشر.",
|
||||
"signIn": "دخول",
|
||||
"signOut": "خروج",
|
||||
"unavailable": "عجبًا! {{serviceName}} غير متاحة حاليًا. نعمل على حل المشكلة. حاول مرة أخرى لاحقًا.",
|
||||
"unavailableTitle": "التسجيل غير متاح",
|
||||
"uploadToCloud": "تحميل إلى السحابة"
|
||||
"unavailableTitle": "التسجيل غير متاح"
|
||||
},
|
||||
"sectionList": {
|
||||
"pullToRefresh": "اسحب للتحديث"
|
||||
@@ -814,13 +625,8 @@
|
||||
"signedIn": "يجري الوصول إلى أحداث الرزنامة حاليًا التي تخص {{email}}. اضغط على زر قطع الاتصال بالأسفل لإيقاف الوصول إلى أحداث المسجلة في الرزنامة.",
|
||||
"title": "الرزنامة"
|
||||
},
|
||||
"desktopShareFramerate": "معدل إطارات مشاركة سطح المكتب",
|
||||
"desktopShareWarning": "تحتاج إلى إعادة تشغيل مشاركة الشاشة حتى تدخل الإعدادات الجديدة حيز التنفيذ. تحتاج إلى إعادة تشغيل مشاركة الشاشة حتى يتم تفعيل الإعدادات الجديدة.",
|
||||
"desktopShareHighFpsWarning": "قد يؤثر معدل الإطارات الأعلى لمشاركة سطح المكتب على النطاق الترددي الخاص بك. تحتاج إلى إعادة تشغيل مشاركة الشاشة حتى تدخل الإعدادات الجديدة حيز التنفيذ.",
|
||||
"devices": "الأجهزة",
|
||||
"followMe": "كل من يتابعني",
|
||||
"framesPerSecond": "إطار في الثانية",
|
||||
"incomingMessage": "رسالة واردة",
|
||||
"language": "اللغة",
|
||||
"loggedIn": "الدخول باسم {{name}}",
|
||||
"microphones": "المجهار (المايكروفون)",
|
||||
@@ -828,19 +634,12 @@
|
||||
"more": "المزيد",
|
||||
"name": "الاسم",
|
||||
"noDevice": "لا يوجد",
|
||||
"participantJoined": "انضم مشارك",
|
||||
"participantLeft": "غادر المشارك",
|
||||
"playSounds": "تشغيل الصوت عند:",
|
||||
"reactions": "ردود فعل الاجتماع",
|
||||
"sameAsSystem": "مثل النظام ({{label}})",
|
||||
"selectAudioOutput": "خرج الصوت",
|
||||
"selectCamera": "الكاميرا",
|
||||
"selectMic": "المجهار (المايكروفون)",
|
||||
"sounds": "اصوات",
|
||||
"speakers": "المذياع (مكبر الصوت)",
|
||||
"startAudioMuted": "بدء الجميع مكتومي الصوت",
|
||||
"startVideoMuted": "بدء الجميع دون فيديو",
|
||||
"talkWhileMuted": "تحدث أثناء كتم الصوت",
|
||||
"title": "الإعدادات"
|
||||
},
|
||||
"settingsView": {
|
||||
@@ -871,24 +670,15 @@
|
||||
},
|
||||
"speaker": "المتحدث",
|
||||
"speakerStats": {
|
||||
"search": "بحث",
|
||||
"hours": "{{count}}س",
|
||||
"minutes": "{{count}}د",
|
||||
"name": "الاسم",
|
||||
"seconds": "{{count}}ثا",
|
||||
"speakerStats": "حالة المتحدث",
|
||||
"speakerTime": "وقت المتحدث",
|
||||
"happy": "سعيد",
|
||||
"neutral": "حيادي",
|
||||
"sad": "حزين",
|
||||
"surprised": "مندهش",
|
||||
"angry": "غاضب",
|
||||
"fearful": "خائف",
|
||||
"disgusted": "مشمئز"
|
||||
"speakerTime": "وقت المتحدث"
|
||||
},
|
||||
"startupoverlay": {
|
||||
"policyText": " ",
|
||||
"genericTitle": "يحتاج الاجتماع إلى استخدام الميكروفون والكاميرا.",
|
||||
"title": "يريد {{app}} استعمال المجهار والكاميرا خاصَّتك."
|
||||
},
|
||||
"suspendedoverlay": {
|
||||
@@ -900,12 +690,9 @@
|
||||
"accessibilityLabel": {
|
||||
"audioOnly": "بدل الصوت فقط",
|
||||
"audioRoute": "اختر جهاز الصوت",
|
||||
"boo": "Boo",
|
||||
"breakoutRoom": "الانضمام / مغادرة غرفة فرعية",
|
||||
"callQuality": "اضبط دقة الفيديو",
|
||||
"cc": "اظهِر/اخفِ الترجمة",
|
||||
"chat": "اظهِر/اخفِ نافذة الدردشة",
|
||||
"clap": "تصفيق",
|
||||
"document": "اظهِر/اخفِ الملف المشارك",
|
||||
"download": "نزِّل التطبيق",
|
||||
"embedMeeting": "ضمِّن الاجتماع",
|
||||
@@ -916,8 +703,6 @@
|
||||
"help": "مساعدة",
|
||||
"invite": "ادعُ آخرين",
|
||||
"kick": "اطرد مشاركًا",
|
||||
"laugh": "يضحك",
|
||||
"like": "رفع الإبهام متمنيا النجاح",
|
||||
"lobbyButton": "فعِّل/عطِّل وضع غرفة الانتظار",
|
||||
"localRecording": "اظهِر/اخفِ التحكم بالتسجيل المحلي",
|
||||
"lockRoom": "اظهِر/اخفِ كلمة مرور الاجتماع",
|
||||
@@ -926,52 +711,34 @@
|
||||
"moreOptions": "اظهر المزيد من الخيارت",
|
||||
"mute": "اظهِر/اخفِ كتم الصوت",
|
||||
"muteEveryone": "كتم الجميع",
|
||||
"muteEveryoneElse": "كتم صوت الآخرين",
|
||||
"muteEveryonesVideo": "تعطيل كاميرا الجميع",
|
||||
"muteEveryoneElsesVideo": "تعطيل كاميرا الآخرين",
|
||||
"participants": "مشاركون",
|
||||
"pip": "استعمل/اخرج من وضع صورة-في-صورة",
|
||||
"privateMessage": "أرسل رسالة خاصة",
|
||||
"profile": "عدِّل ملفك الشخصي",
|
||||
"raiseHand": "اظهِر/اخفِ رفع اليد",
|
||||
"reactionsMenu": "فتح / إغلاق قائمة التفاعلات",
|
||||
"recording": "اظهِر/اخفِ التسجيل",
|
||||
"remoteMute": "اكتم مشاركًا",
|
||||
"remoteVideoMute": "تعطيل كاميرا المشارك",
|
||||
"security": "خيارات الحماية",
|
||||
"Settings": "اظهِر/اخفِ الإعدادات",
|
||||
"shareaudio": "مشاركة الصوت",
|
||||
"sharedvideo": "اظهِر/اخفِ مشاركة فيديو يوتيوب",
|
||||
"shareRoom": "ادعُ أحدًا",
|
||||
"shareYourScreen": "بدِّل وضع مشاركة الشاشة",
|
||||
"shortcuts": "اظهِر/اخفِ الاختصارات",
|
||||
"show": "اظهر على المنصة",
|
||||
"silence": "Silence",
|
||||
"speakerStats": "اظهِر/اخفِ حالة المتحدث",
|
||||
"surprised": "مندهش",
|
||||
"tileView": "اظهِر/اخفِ عرض العنوان",
|
||||
"toggleCamera": "بدِّل الكاميرا",
|
||||
"toggleFilmstrip": "بدِّل وضع الشريط السينمائي (filmstrip)",
|
||||
"videomute": "بدِّل وضع اخفاء الفيديو",
|
||||
"videoblur": "استعمل/اخرج من وضع تغبيش خلفية الفيديو",
|
||||
"selectBackground": "اختر الخلفية",
|
||||
"expand": "وسّع",
|
||||
"collapse": "قلّص"
|
||||
"videoblur": "استعمل/اخرج من وضع تغبيش خلفية الفيديو"
|
||||
},
|
||||
"addPeople": "اضف أحدًا إلى المكالمة",
|
||||
"audioSettings": "إعدادات الصوت",
|
||||
"videoSettings": "اعدادات الفيديو",
|
||||
"audioOnlyOff": "عطِّل وضع معدَّل نقل البيانات المنخفص",
|
||||
"audioOnlyOn": "فعِّل وضع نقل البيانات المنخفض",
|
||||
"audioRoute": "اختر جهاز الصوت",
|
||||
"authenticate": "اَجرِ عملية الاستيثاق",
|
||||
"boo": "Boo",
|
||||
"callQuality": "اضبط دقة الفيديو",
|
||||
"chat": "افتح / أغلق الشاشة",
|
||||
"clap": "تصفيق",
|
||||
"closeChat": "أغلق الدردشة",
|
||||
"closeReactionsMenu": "إغلاق قائمة ردود الفعل",
|
||||
"disableReactionSounds": "يمكنك تعطيل أصوات ردود الفعل لهذا الاجتماع",
|
||||
"documentClose": "أغلق الملف المشارك",
|
||||
"documentOpen": "افتح الملف المشارك",
|
||||
"download": "نزِّل التطبيق",
|
||||
@@ -985,10 +752,6 @@
|
||||
"hangup": "غادر",
|
||||
"help": "مساعدة",
|
||||
"invite": "ادعُ أحدًا",
|
||||
"joinBreakoutRoom": "انضم إلى غرفة الجانبية",
|
||||
"laugh": "يضحك",
|
||||
"leaveBreakoutRoom": "اترك إلى غرفة الجانبية",
|
||||
"like": "رفع الإبهام متمنيا النجاح",
|
||||
"lobbyButtonDisable": "عطِّل وضع غرفة الانتظار",
|
||||
"lobbyButtonEnable": "فعِّل وضع غرفة الانتظار",
|
||||
"login": "ادخل",
|
||||
@@ -998,7 +761,6 @@
|
||||
"moreOptions": "المزيد من الخيارات",
|
||||
"mute": "اكتم / ألغ الكتم",
|
||||
"muteEveryone": "اكتم الجميع",
|
||||
"muteEveryonesVideo": "تعطيل كاميرا الجميع",
|
||||
"noAudioSignalTitle": "لا يصلنا شيئًا من المجهار (المايكروفون) الخاص بك",
|
||||
"noAudioSignalDesc": "إن لم تكتمه عمدًا من إعدادات النظام لديك أو من الجهاز نفسه، بدِّله إلى جهاز آخر.",
|
||||
"noAudioSignalDescSuggestion": "إن لم تكتمه عمدًا من إعدادات النظام لديك أو من الجهاز نفسه، بدِّله إلى الجهاز الموصى به.",
|
||||
@@ -1007,39 +769,28 @@
|
||||
"noisyAudioInputTitle": "يبدو أنَّ المجهار (المايكروفون) لديك يصدر الكثير من الضجة!",
|
||||
"noisyAudioInputDesc": "يبدو أنَّ المجهار (المايكروفون) لديك يصدر الكثير من الضجة، اكتمه رجاءً أو استعمل مجهارًا آخر.",
|
||||
"openChat": "فتح الدرشة",
|
||||
"openReactionsMenu": "افتح قائمة التفاعلات",
|
||||
"participants": "مشاركون",
|
||||
"pip": "استعمل وضع صورة-في-صورة",
|
||||
"privateMessage": "أرسل رسالة خاصة",
|
||||
"profile": "عدِّل ملفك الشخصي",
|
||||
"raiseHand": "ارفع / اخفض يدك",
|
||||
"raiseYourHand": "ارفع يدك",
|
||||
"reactionBoo": "أرسل رد فعل بوو",
|
||||
"reactionClap": "أرسل رد فعل التصفيق",
|
||||
"reactionLaugh": "أرسل رد فعل يضحك",
|
||||
"reactionLike": "إرسال رد فعل ممتاز",
|
||||
"reactionSilence": "أرسل رد فعل الصمت",
|
||||
"reactionSurprised": "أرسل رد فعل متفاجئًا",
|
||||
"security": "خيارات الحماية",
|
||||
"Settings": "الإعدادات",
|
||||
"shareaudio": "مشاركة الصوت",
|
||||
"sharedvideo": "شارك فيديو يوتيوب",
|
||||
"shareRoom": "ادعُ أحدًا",
|
||||
"shortcuts": "اعرض الاختصارات",
|
||||
"silence": "سكوت",
|
||||
"speakerStats": "حالة المتحدث",
|
||||
"startScreenSharing": "ابدأ بمشاركة الشاشة",
|
||||
"startSubtitles": "أظهر الترجمة",
|
||||
"stopAudioSharing": "وقف مشاركة الصوت",
|
||||
"stopScreenSharing": "أوقف مشاركة الشاشة",
|
||||
"stopSubtitles": "أخفِ الترجمة",
|
||||
"stopSharedVideo": "أوقف فيديو يوتيوب المشارك",
|
||||
"surprised": "مندهش",
|
||||
"talkWhileMutedPopup": "أتحاول التحدث؟ المجهار مكتوم لديك.",
|
||||
"tileViewToggle": "بدِّل عنوان العرض",
|
||||
"toggleCamera": "بدِّل الكاميرا",
|
||||
"videomute": "استعمل / أوقف الكاميرا",
|
||||
"selectBackground": "اختر الخلفية"
|
||||
"startvideoblur": "غبِّش الخلفية",
|
||||
"stopvideoblur": "توقف عن تغبيش الخلفية"
|
||||
},
|
||||
"transcribing": {
|
||||
"ccButtonTooltip": "أظهر / أخف الترجمة",
|
||||
@@ -1065,7 +816,6 @@
|
||||
"react-nativeGrantPermissions": "اختر <b><i>السماح</i></b> عندما يطلب المتصفح الأذونات.",
|
||||
"safariGrantPermissions": "اختر <b><i>تمام</i></b> عندما يطلب المتصفح الأذونات."
|
||||
},
|
||||
"volumeSlider": "مستوى الصوت",
|
||||
"videoSIPGW": {
|
||||
"busy": "نعمل على تحرير الموارد. حاول مرة أخرى لاحقًا بعد بضعة دقائق.",
|
||||
"busyTitle": "خدمة الغرفة مشغولة حاليًا",
|
||||
@@ -1077,10 +827,7 @@
|
||||
"pending": "دعي {{displayName}} مسبقًا"
|
||||
},
|
||||
"videoStatus": {
|
||||
"adjustFor": "ضبط ل:",
|
||||
"audioOnly": "صوت",
|
||||
"bestPerformance": "أفضل أداء",
|
||||
"highestQuality": "اعلى جودة",
|
||||
"audioOnlyExpanded": "أنت في وضع معدَّل البيانات المتبادلة المنخفض. الصوت ومشاركة الشاشة هو المتاح فقط في هذا الوضع.",
|
||||
"callQuality": "جودة الفيديو",
|
||||
"hd": "دقة عالية",
|
||||
@@ -1091,30 +838,26 @@
|
||||
"ld": "دقة منخفضة",
|
||||
"ldTooltip": "عرض فيديو بدقة منخفضة",
|
||||
"lowDefinition": "دقة منخفضة",
|
||||
"performanceSettings": "إعدادات الأداء",
|
||||
"onlyAudioAvailable": "الصوت متاح فقط",
|
||||
"onlyAudioSupported": "الصوت مدعوم فقط في هذا المتصفح",
|
||||
"sd": "دقة قياسية",
|
||||
"sdTooltip": "عرض فيديو بدقة قياسية",
|
||||
"standardDefinition": "دقة قياسية"
|
||||
},
|
||||
"videothumbnail": {
|
||||
"connectionInfo": "معلومات الاتصال",
|
||||
"domute": "كتم",
|
||||
"domuteVideo": "تعطيل الكاميرا",
|
||||
"domuteOthers": "كتم الجميع",
|
||||
"domuteVideoOfOthers": "تعطيل الكاميرا للآخرين",
|
||||
"flip": "قلب",
|
||||
"grantModerator": "امنح صلاحيات رئيس الجلسة",
|
||||
"kick": "طرد خارجًا",
|
||||
"moderator": "رئيس الجلسة",
|
||||
"mute": "المشارك مكتوم الصوت",
|
||||
"muted": "مكتوم",
|
||||
"videoMuted": "الكاميرا معطلة",
|
||||
"remoteControl": "بدء / إيقاف التحكم البعيد",
|
||||
"show": "أظهر على المنصة",
|
||||
"videomute": "أوقف المشارك الكاميرا"
|
||||
},
|
||||
"welcomepage": {
|
||||
"addMeetingName": "أضف اسم الاجتماع",
|
||||
"accessibilityLabel": {
|
||||
"join": "انقر للمشاركة",
|
||||
"roomname": "أدخل اسم الغرفة"
|
||||
@@ -1131,14 +874,8 @@
|
||||
"getHelp": "أريد مساعدة",
|
||||
"go": "ابدأ",
|
||||
"goSmall": "ابدأ",
|
||||
"headerTitle": "حِـــوار جيتسي",
|
||||
"headerSubtitle": "آمــن وبنـوعيـة فـائقـة الجـودة",
|
||||
"info": "معلومات",
|
||||
"join": "أنشئ / انضم",
|
||||
"jitsiOnMobile": "جيتسي على الهاتف المحمول - حمّل تطبيقاتنا وابدأ اجتماعًا من أي مكان",
|
||||
"mobileDownLoadLinkIos": "قم بتنزيل تطبيق الهاتف لنظام iOS",
|
||||
"mobileDownLoadLinkAndroid": "قم بتنزيل تطبيق الهاتف لنظام أندرويد",
|
||||
"mobileDownLoadLinkFDroid": "قم بتنزيل تطبيق الجوال لـ F-Droid",
|
||||
"moderatedMessage": "أو a href=\"{{url}}\" rel=\"noopener noreferrer\" target=\"_blank\">احجز رابط لاجتماع</a> إن كنت رئيس الجلسة الوحيد فقط.",
|
||||
"privacy": "الخصوصية",
|
||||
"recentList": "الجديد",
|
||||
@@ -1149,34 +886,17 @@
|
||||
"roomname": "أدخل اسم الغرفة",
|
||||
"roomnameHint": "أدخل اسم أو رابط الغرفة التي تريد الانضمام إليها. يمكنك إنشاء اسم جديد لترسله إلى من تريد أن تجتمع معهم.",
|
||||
"sendFeedback": "أبدِ رأيك",
|
||||
"startMeeting": "إبدأ الحـِوار",
|
||||
"terms": "الشروط",
|
||||
"title": "منصة عقد مؤتمرات واجتماعات آمنة وكاملة المزايا ومجانية بالمطلق",
|
||||
"logo": {
|
||||
"calendar": "شعار التقويم",
|
||||
"microsoftLogo": "شعار مايكروسوفت",
|
||||
"logoDeepLinking": "شعار jitsi",
|
||||
"desktopPreviewThumbnail": "صورة مصغرة لمعاينة سطح المكتب",
|
||||
"googleLogo": "شعار كوكل",
|
||||
"policyLogo": "شعار السياسة"
|
||||
}
|
||||
"title": "منصة عقد مؤتمرات واجتماعات آمنة وكاملة المزايا ومجانية بالمطلق"
|
||||
},
|
||||
"lonelyMeetingExperience": {
|
||||
"button": "ادعُ آخرين",
|
||||
"youAreAlone": "أنت بمفردك في الاجتماع"
|
||||
},
|
||||
"termsView": {
|
||||
"header": "مصطلحات"
|
||||
},
|
||||
"privacyView": {
|
||||
"header": "خصوصية"
|
||||
},
|
||||
"helpView": {
|
||||
"header": "مركز المساعدة"
|
||||
},
|
||||
"lobby": {
|
||||
"admit": "سمح بالدخول",
|
||||
"admitAll": "سمح للجميع بالدخول",
|
||||
"knockingParticipantList": "تنبيه قائمة المشاركين",
|
||||
"allow": "اسمح",
|
||||
"backToKnockModeButton": "لا يوجد كلمة مرور، اطلب الإذن بالدخول بدلًا من ذلك.",
|
||||
@@ -1189,7 +909,6 @@
|
||||
"enableDialogText": "يحمي وضع الانتظار غرفة الاجتماع عبر منح رئيس الجلسة إمكانية الموافقة على انضمام المشاركين.",
|
||||
"enterPasswordButton": "أدخل كلمة المرور لهذا الاجتماع",
|
||||
"enterPasswordTitle": "أدخل كلمة المرور للدخول للاجتماع",
|
||||
"errorMissingPassword": "الرجاء إدخال كلمة مرور الاجتماع",
|
||||
"invalidPassword": "كلمة مرور غير صحيحة",
|
||||
"joiningMessage": "ستتمكن من الانضمام للاجتماع بعد الموافقة على طلبك",
|
||||
"joinWithPasswordMessage": "الرجاء الانتظار أثناء محاولة الدخول دون كلمة مرور...",
|
||||
@@ -1208,7 +927,6 @@
|
||||
"passwordField": "أدخل كلمة الدخول إلى الاجتماع",
|
||||
"passwordJoinButton": "انضم",
|
||||
"reject": "رفض",
|
||||
"rejectAll": "رفض الكل",
|
||||
"toggleLabel": "فعِّل غرفة الانتظار"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -488,8 +488,8 @@
|
||||
},
|
||||
"profile": {
|
||||
"setDisplayNameLabel": "Якое адлюстроўваецца імя",
|
||||
"setEmailInput": "Калі ласка, увядзіце email",
|
||||
"setEmailLabel": "Email для Gravatar",
|
||||
"setEmailInput": "Калі ласка, увядзіце e-mail",
|
||||
"setEmailLabel": "E-mail для Gravatar",
|
||||
"title": "Профіль"
|
||||
},
|
||||
"raisedHand": "Хоча гаварыць",
|
||||
@@ -558,7 +558,7 @@
|
||||
"disableCallIntegration": "Адключыць убудаваную інтэграцыю выклікаў",
|
||||
"disableP2P": "Адключыць рэжым Peer-To-Peer",
|
||||
"displayName": "Якое адлюстроўваецца імя",
|
||||
"email": "Email",
|
||||
"email": "E-mail",
|
||||
"header": "Налады",
|
||||
"profileSection": "Профіль",
|
||||
"serverURL": "Адрас сервера",
|
||||
|
||||
@@ -236,7 +236,7 @@
|
||||
"remoteControlDeniedMessage": "{{user}} ha rebutjat la petició de control remot!",
|
||||
"remoteControlErrorMessage": "S'ha produït un error en intentar sol·licitar a {{user}} permisos de control remot!",
|
||||
"remoteControlRequestMessage": "Voleu permetre a {{user}} de controlar remotament el vostre escriptori?",
|
||||
"remoteControlShareScreenWarning": "Tingueu present que si pitgeu \"Permet\"compartireu la vostra pantalla!",
|
||||
"remoteControlShareScreenWarning": "Tingueu present que si pitgeu \"Permet\" compartireu la vostra pantalla!",
|
||||
"remoteControlStopMessage": "La sessió de control remot ha finalitzat!",
|
||||
"remoteControlTitle": "Control d'escriptori remot",
|
||||
"Remove": "Suprimeix",
|
||||
@@ -577,7 +577,7 @@
|
||||
},
|
||||
"startupoverlay": {
|
||||
"title": "{{app}} requereix usar el micròfon i la càmera.",
|
||||
"policyText": ""
|
||||
"policyText": " "
|
||||
},
|
||||
"suspendedoverlay": {
|
||||
"rejoinKeyTitle": "Torna a entrar",
|
||||
@@ -782,42 +782,5 @@
|
||||
},
|
||||
"helpView": {
|
||||
"header": "Centre d'ajuda"
|
||||
},
|
||||
"lobby": {
|
||||
"admit": "Acceptar",
|
||||
"admitAll": "Acceptar Tots",
|
||||
"knockingParticipantList": "Participants en espera",
|
||||
"allow": "Permetre",
|
||||
"backToKnockModeButton": "Sol·licitar entrada",
|
||||
"dialogTitle": "Sala d’espera",
|
||||
"disableDialogContent": "La sala d’espera està habilitada actualment. Aquesta funció garanteix que els participants no desitjats no puguin unir-se a la seva reunió. Vols deshabilitar-ho?",
|
||||
"disableDialogSubmit": "Deshabilitat",
|
||||
"emailField": "Introdueix el teu email",
|
||||
"enableDialogPasswordField": "Estableix la contrasenya (opcional)",
|
||||
"enableDialogSubmit": "Habilitat",
|
||||
"enableDialogText": "La sala d’espera li permet protegir la seva reunió en permetre que les persones només entrin després d’una aprovació formal per part d’un moderador.",
|
||||
"enterPasswordButton": "Introduir la contrasenya de la reunió",
|
||||
"enterPasswordTitle": "Introdueixi la contrasenya per a unir-se a la reunió",
|
||||
"errorMissingPassword": "Si us plau, Introdueixi la contrasenya de la reunió",
|
||||
"invalidPassword": "Contrasenya errònia",
|
||||
"joiningMessage": "T’uniràs a la reunió tan aviat com algú accepti la teva sol·licitud",
|
||||
"joinWithPasswordMessage": "Intentant unir-se amb contrasenya, esperi ...",
|
||||
"joinRejectedMessage": "Un moderador va rebutjar la seva sol·licitud per a unir-se.",
|
||||
"joinTitle": "Unir-se a la reunió",
|
||||
"joiningTitle": "Sol·licitar unir-se a la reunió...",
|
||||
"joiningWithPasswordTitle": "Connectant-se a la reunió amb contrasenya...",
|
||||
"knockButton": "Sol·licitar entrada a la reunió",
|
||||
"knockTitle": "Algú vol unir-se a la reunió",
|
||||
"nameField": "Introdueix el teu nom",
|
||||
"notificationLobbyAccessDenied": "{{originParticipantName}} ha rebutjat l’entrada a la reunió de {{targetParticipantName}}",
|
||||
"notificationLobbyAccessGranted": "{{originParticipantName}} ha acceptat l’entrada a la reunió de {{targetParticipantName}}",
|
||||
"notificationLobbyDisabled": "La sala d’espera ha estat deshabilitada per {{originParticipantName}}",
|
||||
"notificationLobbyEnabled": "La sala d’espera ha estat habilitada per {{originParticipantName}}",
|
||||
"notificationTitle": "Sala d’espera",
|
||||
"passwordField": "Introduir la contrasenya de la reunió",
|
||||
"passwordJoinButton": "Unir-se",
|
||||
"reject": "Rebutjar",
|
||||
"rejectAll": "Rebutjar Tots",
|
||||
"toggleLabel": "Habilitar sala d’espera"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,11 +7,11 @@
|
||||
"copyStream": "Zkopírovat odkaz na živý přenos",
|
||||
"countryNotSupported": "Toto místo zatím nepodporujeme.",
|
||||
"countryReminder": "Voláte mimo USA? Nezapomeňte začít kódem své země!",
|
||||
"defaultEmail": "Vás výchozí email",
|
||||
"defaultEmail": "Vás výchozí e-mail",
|
||||
"disabled": "Nemůžete pozvat lidi.",
|
||||
"failedToAdd": "Nepodařilo se přidat účastníky",
|
||||
"footerText": "Vytáčení je zakázáno.",
|
||||
"googleEmail": "Email Google",
|
||||
"googleEmail": "E-mail Google",
|
||||
"inviteMoreHeader": "Jste v setkání sám/sama",
|
||||
"inviteMoreMailSubject": "Přidejte se k setkání {{appName}}",
|
||||
"inviteMorePrompt": "Pozvat další lidi",
|
||||
@@ -21,7 +21,7 @@
|
||||
"loadingPeople": "Hledání lidí pro pozvání",
|
||||
"noResults": "Žádné odpovídající výsledky vyhledávání",
|
||||
"noValidNumbers": "Zadejte telefonní číslo",
|
||||
"outlookEmail": "Email Outlook",
|
||||
"outlookEmail": "E-mail Outlook",
|
||||
"searchNumbers": "Přidat telefonní čísla",
|
||||
"searchPeople": "Hledat lidi",
|
||||
"searchPeopleAndNumbers": "Hledat lidi nebo přidat jejich telefonní čísla",
|
||||
@@ -30,7 +30,7 @@
|
||||
"shareStream": "Sdílet odkaz na živý přenos",
|
||||
"telephone": "Telefonní číslo: {{number}}",
|
||||
"title": "Pozvěte lidi na toto setkání",
|
||||
"yahooEmail": "Email Yahoo"
|
||||
"yahooEmail": "E-mail Yahoo"
|
||||
},
|
||||
"audioDevices": {
|
||||
"bluetooth": "Bluetooth",
|
||||
@@ -462,7 +462,7 @@
|
||||
"dialogTitle": "Mód předsálí",
|
||||
"disableDialogContent": "Je zapnutý mód předsálí. Zajišťuje, aby do setkání nemohli vstoupit nežádoucí účastníci. Chcete jej vypnout?",
|
||||
"disableDialogSubmit": "Vypnout",
|
||||
"emailField": "Zadejte svoje emailovou adresu",
|
||||
"emailField": "Zadejte svoje e-mailovou adresu",
|
||||
"enableDialogPasswordField": "Nastavte heslo (volitelně)",
|
||||
"enableDialogSubmit": "Zapnout",
|
||||
"enableDialogText": "Mód předsálí vám umožňuje zabezpečit setkání tím, že se lidé mohou připojit až po formálním schválení moderátorem.",
|
||||
@@ -637,8 +637,8 @@
|
||||
},
|
||||
"profile": {
|
||||
"setDisplayNameLabel": "Nastavte si jméno",
|
||||
"setEmailInput": "Zadejte email",
|
||||
"setEmailLabel": "Nastavte si email vašeho Gravataru",
|
||||
"setEmailInput": "Zadejte e-mail",
|
||||
"setEmailLabel": "Nastavte si e-mail vašeho Gravataru",
|
||||
"title": "Profil"
|
||||
},
|
||||
"raisedHand": "Chtěl(a) bych mluvit",
|
||||
@@ -718,7 +718,7 @@
|
||||
"disableCrashReportingWarning": "Určitě chcete vypnout hlášení o pádu? Nastavení se uplatní, až restartujete aplikaci.",
|
||||
"disableP2P": "Vypnout mód Peer-To-Peer",
|
||||
"displayName": "Zobrazované jméno",
|
||||
"email": "Email",
|
||||
"email": "E-mail",
|
||||
"header": "Nastavení",
|
||||
"profileSection": "Profil",
|
||||
"serverURL": "URL serveru",
|
||||
|
||||
@@ -39,20 +39,6 @@
|
||||
"audioOnly": {
|
||||
"audioOnly": "Geringe Bandbreite"
|
||||
},
|
||||
"breakoutRooms": {
|
||||
"defaultName": "Breakout-Raum #{{index}}",
|
||||
"mainRoom": "Hauptraum",
|
||||
"actions": {
|
||||
"add": "Breakout-Raum hinzufügen",
|
||||
"autoAssign": "Automatisch auf Breakout-Räume verteilen",
|
||||
"close": "Schließen",
|
||||
"join": "Teilnehmen",
|
||||
"leaveBreakoutRoom": "Breakout-Raum verlassen",
|
||||
"more": "Mehr",
|
||||
"remove": "Entfernen",
|
||||
"sendToBreakoutRoom": "Anwesende in Breakout-Raum verschieben:"
|
||||
}
|
||||
},
|
||||
"calendarSync": {
|
||||
"addMeetingURL": "Konferenzlink hinzufügen",
|
||||
"confirmAddLink": "Möchten Sie einen Jitsi-Link zu diesem Termin hinzufügen?",
|
||||
@@ -227,9 +213,7 @@
|
||||
"done": "Fertig",
|
||||
"e2eeDescription": "Ende-zu-Ende-Verschlüsselung ist derzeit noch EXPERIMENTELL. Bitte beachten Sie, dass das Aktivieren der Ende-zu-Ende-Verschlüsselung diverse serverseitige Funktionen deaktiviert: Aufnahmen, Livestreaming und Telefoneinwahl. Bitte beachten Sie außerdem, dass der Konferenz dann nur noch mit Browsern beigetreten werden kann, die Insertable Streams unterstützen.",
|
||||
"e2eeLabel": "Ende-zu-Ende-Verschlüsselung aktivieren",
|
||||
"e2eeDisabledDueToMaxModeDescription": "Ende-zu-Ende-Verschlüsselung kann aufgrund der großen Zahl an Anwesenden nicht aktiviert werden.",
|
||||
"e2eeWarning": "WARNUNG: Nicht alle Personen dieser Konferenz scheinen Ende-zu-Ende-Verschlüsselung zu unterstützen. Wenn Sie diese aktivieren, können die entsprechenden Personen nichts mehr sehen oder hören.",
|
||||
"e2eeWillDisableDueToMaxModeDescription": "WARNUNG: Ende-zu-Ende-Verschlüsselung wird automatisch deaktiviert, wenn weitere Anwesende an der Konferenz teilnehmen.",
|
||||
"enterDisplayName": "Bitte geben Sie hier Ihren Namen ein",
|
||||
"embedMeeting": "Besprechung einbetten",
|
||||
"error": "Fehler",
|
||||
@@ -349,7 +333,6 @@
|
||||
"shareScreenWarningH1": "Wenn Sie Ihren Bildschirm freigeben wollen:",
|
||||
"shareScreenWarningD1": "müssen Sie Ihre Audiofreigabe stoppen, bevor Sie ihren Bildschirm freigeben.",
|
||||
"shareScreenWarningD2": "müssen Sie Ihre Audiofreigabe stoppen und dann die Bildschirmfreigabe mit der Option \"Audio freigeben\" starten.",
|
||||
"sharedVideoLinkPlaceholder": "YouTube-URL oder direkte Video-URL",
|
||||
"stopLiveStreaming": "Livestream stoppen",
|
||||
"stopRecording": "Aufnahme stoppen",
|
||||
"stopRecordingWarning": "Sind Sie sicher, dass Sie die Aufnahme stoppen möchten?",
|
||||
@@ -515,7 +498,6 @@
|
||||
"expandedPending": "Livestream wird gestartet …",
|
||||
"failedToStart": "Livestream konnte nicht gestartet werden",
|
||||
"getStreamKeyManually": "Wir waren nicht in der Lage, Livestreams abzurufen. Versuchen Sie, Ihren Livestream-Schlüssel von YouTube zu erhalten.",
|
||||
"inProgress": "Livestreaming gestartet",
|
||||
"invalidStreamKey": "Der Livestream-Schlüssel ist u. U. falsch.",
|
||||
"off": "Livestream gestoppt",
|
||||
"offBy": "{{name}} stoppte den Livestream",
|
||||
@@ -523,7 +505,6 @@
|
||||
"onBy": "{{name}} startete den Livestream",
|
||||
"pending": "Livestream wird gestartet …",
|
||||
"serviceName": "Livestreaming-Dienst",
|
||||
"sessionAlreadyActive": "Diese Konferenz wird bereits als Livestream übertragen.",
|
||||
"signedInAs": "Sie sind derzeit angemeldet als:",
|
||||
"signIn": "Mit Google anmelden",
|
||||
"signInCTA": "Anmelden oder den Streamschlüssel des YouTube-Livestreams eingeben.",
|
||||
@@ -567,14 +548,13 @@
|
||||
"lockRoomPasswordUppercase": "Passwort",
|
||||
"me": "ich",
|
||||
"notify": {
|
||||
"allowAction": "Erlauben",
|
||||
"allowedUnmute": "Sie können die Stummschaltung aufheben, Ihre Kamera einschalten oder Ihren Bildschirm teilen.",
|
||||
"connectedOneMember": "{{name}} nimmt am Meeting teil",
|
||||
"connectedThreePlusMembers": "{{name}} und {{count}} andere Personen nehmen am Meeting teil",
|
||||
"connectedTwoMembers": "{{first}} und {{second}} nehmen am Meeting teil",
|
||||
"disconnected": "getrennt",
|
||||
"focus": "Konferenzleitung",
|
||||
"focusFail": "{{component}} ist im Moment nicht verfügbar – wiederholen in {{ms}} Sekunden",
|
||||
"grantedTo": "Moderationsrechte an {{to}} vergeben!",
|
||||
"hostAskedUnmute": "Die Moderation bittet Sie, das Mikrofon zu aktivieren",
|
||||
"invitedOneMember": "{{name}} wurde eingeladen",
|
||||
"invitedThreePlusMembers": "{{name}} und {{count}} andere wurden eingeladen",
|
||||
@@ -618,6 +598,7 @@
|
||||
"moderationStoppedTitle": "Moderation gestoppt",
|
||||
"moderationToggleDescription": "von {{participantDisplayName}}",
|
||||
"raiseHandAction": "Melden",
|
||||
"groupTitle": "Benachrichtigungen",
|
||||
"reactionSounds": "Interaktionstöne deaktivieren",
|
||||
"groupTitle": "Benachrichtigungen"
|
||||
},
|
||||
@@ -631,13 +612,10 @@
|
||||
},
|
||||
"actions": {
|
||||
"allow": "Anwesenden erlauben:",
|
||||
"allowVideo": "Kamera einschalten",
|
||||
"audioModeration": "Für sich selbst die Stummschaltung aufzuheben",
|
||||
"blockEveryoneMicCamera": "Kamera und Mikrofon von allen sperren",
|
||||
"invite": "Person einladen",
|
||||
"askUnmute": "Anfragen, Stummschaltung aufzuheben",
|
||||
"moreModerationActions": "Weitere Moderationsoptionen",
|
||||
"moreParticipantOptions": "Mehr Optionen für Anwesende",
|
||||
"mute": "Stummschalten",
|
||||
"muteAll": "Alle stummschalten",
|
||||
"muteEveryoneElse": "Alle anderen stummschalten",
|
||||
@@ -645,13 +623,11 @@
|
||||
"stopVideo": "Kamera ausschalten",
|
||||
"unblockEveryoneMicCamera": "Kamera und Mikrofon von allen entsperren",
|
||||
"videoModeration": "Kamera einschalten"
|
||||
},
|
||||
"search": "Suche Anwesende"
|
||||
}
|
||||
},
|
||||
"passwordSetRemotely": "von einer anderen Person gesetzt",
|
||||
"passwordDigitsOnly": "Bis zu {{number}} Ziffern",
|
||||
"polls": {
|
||||
"by": "Von {{ name }}",
|
||||
"create": {
|
||||
"addOption": "Antwort hinzufügen",
|
||||
"answerPlaceholder": "Antwort {{index}}",
|
||||
@@ -719,7 +695,6 @@
|
||||
"errorDialOutFailed": "Anruf fehlgeschlagen. Anruf fehlgeschlagen",
|
||||
"errorDialOutStatus": "Fehler beim Abrufen des Anrufstatus",
|
||||
"errorMissingName": "Bitte geben Sie Ihren Namen ein, um der Konferenz beizutreten.",
|
||||
"errorNoPermissions": "Sie müssen den Zugriff auf Mikrofon und Kamera erlauben",
|
||||
"errorStatusCode": "Anruf fehlgeschlagen. Statuscode: {{status}}",
|
||||
"errorValidation": "Nummerverifikation fehlgeschlagen",
|
||||
"iWantToDialIn": "Ich möchte mich einwählen",
|
||||
@@ -777,7 +752,6 @@
|
||||
"expandedPending": "Aufzeichnung wird gestartet…",
|
||||
"failedToStart": "Die Aufnahme konnte nicht gestartet werden",
|
||||
"fileSharingdescription": "Aufzeichnung mit den Personen der Konferenz teilen",
|
||||
"inProgress": "Aufzeichnung gestartet",
|
||||
"linkGenerated": "Link zur Aufzeichnung wurde generiert.",
|
||||
"live": "LIVE",
|
||||
"loggedIn": "Als {{userName}} angemeldet",
|
||||
@@ -790,7 +764,6 @@
|
||||
"serviceDescription": "Ihre Aufzeichnung wird vom Aufzeichnungsdienst gespeichert",
|
||||
"serviceDescriptionCloud": "Cloud-Aufzeichnung",
|
||||
"serviceName": "Aufnahmedienst",
|
||||
"sessionAlreadyActive": "Diese Konferenz wird bereits aufgezeichnet.",
|
||||
"signIn": "Anmelden",
|
||||
"signOut": "Abmelden",
|
||||
"unavailable": "Oh! Der {{serviceName}} ist aktuell nicht verfügbar. Wir arbeiten an der Behebung des Problems. Bitte versuchen Sie es später noch einmal.",
|
||||
@@ -877,14 +850,7 @@
|
||||
"name": "Name",
|
||||
"seconds": "{{count}} Sek.",
|
||||
"speakerStats": "Sprechstatistik",
|
||||
"speakerTime": "Sprechzeit",
|
||||
"happy": "Fröhlich",
|
||||
"neutral": "Neutral",
|
||||
"sad": "Traurig",
|
||||
"surprised": "Überrascht",
|
||||
"angry": "Sauer",
|
||||
"fearful": "Ängstlich",
|
||||
"disgusted": "Angeekelt"
|
||||
"speakerTime": "Sprechzeit"
|
||||
},
|
||||
"startupoverlay": {
|
||||
"policyText": " ",
|
||||
@@ -901,7 +867,6 @@
|
||||
"audioOnly": "„Nur Audio“ ein-/ausschalten",
|
||||
"audioRoute": "Audiogerät auswählen",
|
||||
"boo": "Buhen",
|
||||
"breakoutRoom": "Breakout-Räume betreten/verlassen",
|
||||
"callQuality": "Qualitätseinstellungen",
|
||||
"cc": "Untertitel ein-/ausschalten",
|
||||
"chat": "Chatfenster öffnen / schließen",
|
||||
@@ -933,7 +898,7 @@
|
||||
"pip": "Bild-in-Bild-Modus ein-/ausschalten",
|
||||
"privateMessage": "Private Nachricht senden",
|
||||
"profile": "Profil bearbeiten",
|
||||
"raiseHand": "Hand heben",
|
||||
"raiseHand": "Hand erheben / senken",
|
||||
"reactionsMenu": "Interaktionsmenü öffnen / schließen",
|
||||
"recording": "Aufzeichnung ein-/ausschalten",
|
||||
"remoteMute": "Personen stummschalten",
|
||||
@@ -970,7 +935,7 @@
|
||||
"chat": "Chat öffnen / schließen",
|
||||
"clap": "Klatschen",
|
||||
"closeChat": "Chat schließen",
|
||||
"closeReactionsMenu": "Interaktionsmenü schließen",
|
||||
"closeReactionsMenu": "Interationsmenü schließen",
|
||||
"disableReactionSounds": "Sie können die Interaktionstöne für diese Konferenz deaktivieren",
|
||||
"documentClose": "Geteiltes Dokument schließen",
|
||||
"documentOpen": "Geteiltes Dokument öffnen",
|
||||
@@ -985,9 +950,7 @@
|
||||
"hangup": "Konferenz verlassen",
|
||||
"help": "Hilfe",
|
||||
"invite": "Personen einladen",
|
||||
"joinBreakoutRoom": "In Breakout-Raum wechseln",
|
||||
"laugh": "Lachen",
|
||||
"leaveBreakoutRoom": "Breakout-Raum verlassen",
|
||||
"like": "Daumen hoch",
|
||||
"lobbyButtonDisable": "Lobbymodus deaktivieren",
|
||||
"lobbyButtonEnable": "Lobbymodus aktivieren",
|
||||
@@ -1007,12 +970,12 @@
|
||||
"noisyAudioInputTitle": "Ihr Mikrofon scheint lärmintensiv zu sein!",
|
||||
"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",
|
||||
"openReactionsMenu": "Interaktionsmenü öffnen",
|
||||
"openReactionsMenu": "Interationsmenü öffnen",
|
||||
"participants": "Anwesende",
|
||||
"pip": "Bild-in-Bild-Modus einschalten",
|
||||
"privateMessage": "Private Nachricht senden",
|
||||
"profile": "Profil bearbeiten",
|
||||
"raiseHand": "Hand heben",
|
||||
"raiseHand": "Hand erheben / senken",
|
||||
"raiseYourHand": "Melden",
|
||||
"reactionBoo": "Buhen senden",
|
||||
"reactionClap": "Klatschen senden",
|
||||
@@ -1077,10 +1040,7 @@
|
||||
"pending": "{{displayName}} wurde eingeladen"
|
||||
},
|
||||
"videoStatus": {
|
||||
"adjustFor": "Einstellen für:",
|
||||
"audioOnly": "AUD",
|
||||
"bestPerformance": "Beste Leistung",
|
||||
"highestQuality": "Höchste Qualität",
|
||||
"audioOnlyExpanded": "Sie befinden sich im Modus „Nur Audio“. Dieser Modus benötigt weniger Bandbreite, Sie sehen jedoch nicht die Videos der anderen.",
|
||||
"callQuality": "Videoqualität",
|
||||
"hd": "HD",
|
||||
@@ -1091,7 +1051,6 @@
|
||||
"ld": "LD",
|
||||
"ldTooltip": "Video wird in niedriger Auflösung angezeigt",
|
||||
"lowDefinition": "Niedrige Auflösung",
|
||||
"performanceSettings": "Qualitätseinstellungen",
|
||||
"sd": "SD",
|
||||
"sdTooltip": "Video wird in Standardauflösung angezeigt",
|
||||
"standardDefinition": "Standardauflösung"
|
||||
@@ -1165,12 +1124,6 @@
|
||||
"button": "Andere einladen",
|
||||
"youAreAlone": "Nur Sie sind in dieser Konferenz"
|
||||
},
|
||||
"termsView": {
|
||||
"header": "Nutzungsbedingungen"
|
||||
},
|
||||
"privacyView": {
|
||||
"header": "Datenschutz"
|
||||
},
|
||||
"helpView": {
|
||||
"header": "Hilfecenter"
|
||||
},
|
||||
|
||||
@@ -544,7 +544,7 @@
|
||||
},
|
||||
"profile": {
|
||||
"setDisplayNameLabel": "Ρυθμίστε το όνομα εμφάνισής σας",
|
||||
"setEmailInput": "Εισάγετε το email",
|
||||
"setEmailInput": "Εισάγετε το e-mail",
|
||||
"setEmailLabel": "Ρυθμίστε το gravatar email",
|
||||
"title": "Προφίλ"
|
||||
},
|
||||
@@ -621,7 +621,7 @@
|
||||
"disableCallIntegration": "Απενεργοποίηση ολοκλήρωσης εγγενούς κλήσης",
|
||||
"disableP2P": "Απενεργοποίηση λειτουργίας Peer-to-Peer",
|
||||
"displayName": "Εμφανιζόμενο όνομα",
|
||||
"email": "Email",
|
||||
"email": "E-mail",
|
||||
"header": "Ρυθμίσεις",
|
||||
"profileSection": "Προφίλ",
|
||||
"serverURL": "Διεύθυνση URL του διακομιστή",
|
||||
|
||||
@@ -480,8 +480,8 @@
|
||||
},
|
||||
"profile": {
|
||||
"setDisplayNameLabel": "Set your display name",
|
||||
"setEmailInput": "Enter email",
|
||||
"setEmailLabel": "Set your Gravatar email",
|
||||
"setEmailInput": "Enter e-mail",
|
||||
"setEmailLabel": "Set your Gravatar e-mail",
|
||||
"title": "Profile"
|
||||
},
|
||||
"recording": {
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
"copyInvite": "Copiar la invitación a la reunión",
|
||||
"copyLink": "Copiar el link de la reunión",
|
||||
"copyStream": "Copiar el link de la transmisión en vivo",
|
||||
"contacts": "contactos",
|
||||
"countryNotSupported": "Aún no contamos con soporte a este destino.",
|
||||
"countryReminder": "¿Llamando fuera de los Estados Unidos? ¡Por favor, asegúrese de empezar con el código de país!",
|
||||
"defaultEmail": "Dirección de correo por defecto",
|
||||
@@ -17,14 +16,18 @@
|
||||
"inviteMoreMailSubject": "Unirse a la reunión {{appName}}",
|
||||
"inviteMorePrompt": "Invitar a más personas",
|
||||
"linkCopied": "Link copiado al portapapeles",
|
||||
"loading": "Buscando por contacto y número telefónico",
|
||||
"loadingNumber": "Validando el número telefónico",
|
||||
"loadingPeople": "Buscando contactos a invitar",
|
||||
"noResults": "No se encontraron coincidencias",
|
||||
"noValidNumbers": "Por favor ingrese un número de teléfono",
|
||||
"outlookEmail": "Correo de Outlook",
|
||||
"phoneNumbers": "números de teléfono",
|
||||
"searching": "Búscando...",
|
||||
"searchNumbers": "Agregar números telefónicos",
|
||||
"searchPeople": "Buscar personas",
|
||||
"searchPeopleAndNumbers": "Buscar personas o añadir sus números de teléfono",
|
||||
"shareInvite": "Compartir la invitación a la reunión",
|
||||
"shareLink": "Compartir el link de la reunion",
|
||||
"shareStream": "Compartir el link de la transmición en vivo",
|
||||
"sipAddresses": "direcciones sip",
|
||||
"telephone": "Teléfono: {{number}}",
|
||||
"title": "Invitar a otras personas a esta reunión",
|
||||
"yahooEmail": "Correo de Yahoo"
|
||||
@@ -58,7 +61,6 @@
|
||||
"today": "Hoy"
|
||||
},
|
||||
"chat": {
|
||||
"enter": "Entrar en la sala",
|
||||
"error": "Error: su mensaje no se envío. Motivo: {{error}}",
|
||||
"fieldPlaceHolder": "Escriba su mensaje aquí",
|
||||
"messagebox": "Escriba un mensaje",
|
||||
@@ -70,26 +72,17 @@
|
||||
"titleWithPolls": "Introduce un apodo para usar el chat"
|
||||
},
|
||||
"privateNotice": "Mensaje privado para {{recipient}}",
|
||||
"message": "Mensaje",
|
||||
"messageAccessibleTitle": "{{user}} dice:",
|
||||
"messageAccessibleTitleMe": "yo digo:",
|
||||
"smileysPanel": "Panel de Emojis",
|
||||
"tabs": {
|
||||
"chat": "Chat",
|
||||
"polls": "Encuestas"
|
||||
},
|
||||
"title": "Chat",
|
||||
"titleWithPolls": "Chat",
|
||||
"you": "tú"
|
||||
"you": "usted"
|
||||
},
|
||||
"chromeExtensionBanner": {
|
||||
"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",
|
||||
"close": "Cerrar"
|
||||
"dontShowAgain": "No mostrar nuevamente"
|
||||
},
|
||||
"connectingOverlay": {
|
||||
"joiningRoom": "Conectándose a la reunión…"
|
||||
"joiningRoom": "Conectándose a su reunión…"
|
||||
},
|
||||
"connection": {
|
||||
"ATTACHED": "Adjunto",
|
||||
@@ -101,6 +94,7 @@
|
||||
"DISCONNECTED": "Desconectado",
|
||||
"DISCONNECTING": "Desconectando",
|
||||
"ERROR": "Error",
|
||||
"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",
|
||||
@@ -124,6 +118,7 @@
|
||||
"maxEnabledResolution": "enviar max",
|
||||
"more": "Mostrar más",
|
||||
"packetloss": "Pérdida de paquetes:",
|
||||
"participant_id": "ID participante:",
|
||||
"quality": {
|
||||
"good": "Buena",
|
||||
"inactive": "Inactivo",
|
||||
@@ -135,9 +130,8 @@
|
||||
"remoteaddress_plural": "Direcciones remotas:",
|
||||
"remoteport": "Puerto remoto:",
|
||||
"remoteport_plural": "Puertos remotos:",
|
||||
"resolution": "Resolución:",
|
||||
"savelogs": "Guardar logs",
|
||||
"participant_id": "ID participante:",
|
||||
"resolution": "Resolución:",
|
||||
"status": "Calidad:",
|
||||
"transport": "Transporte:",
|
||||
"transport_plural": "Transportes:",
|
||||
@@ -153,10 +147,11 @@
|
||||
"description": "¿No pasó nada? Hemos intentado iniciar la reunión en la aplicación de escritorio {{app}}. Intenta de nuevo o inicia en la aplicación web {{app}}.",
|
||||
"descriptionWithoutWeb": "¿No pasó nada? Intentamos iniciar su reunión en la aplicación de escritorio {{app}}.",
|
||||
"downloadApp": "Descargar la app",
|
||||
"launchWebButton": "Iniciar en el navegador",
|
||||
"ifDoNotHaveApp": "Si aún no tienes la app:",
|
||||
"ifHaveApp": "Si ya tienes la app:",
|
||||
"joinInApp": "Unirse a la reunion usando la app",
|
||||
"launchWebButton": "Iniciar en el navegador",
|
||||
"openApp": "Continuar a la aplicación",
|
||||
"title": "Iniciando la reunión en {{app}}…",
|
||||
"tryAgainButton": "Intentar de nuevo en el escritorio"
|
||||
},
|
||||
@@ -183,14 +178,12 @@
|
||||
"alreadySharedVideoMsg": "Otro participante ya está compartiendo un vídeo. Esta conferencia sólo permite compartir un vídeo a la vez.",
|
||||
"alreadySharedVideoTitle": "Solo se permite un vídeo compartido a la vez",
|
||||
"applicationWindow": "Ventana de aplicación",
|
||||
"authenticationRequired": "Se requiere autenticación",
|
||||
"Back": "Anterior",
|
||||
"cameraConstraintFailedError": "Su cámara no satisface algunos de los requerimientos.",
|
||||
"cameraNotFoundError": "No se encontró la cámara.",
|
||||
"cameraNotSendingData": "No podemos acceder a la cámara. Asegúrate que no haya otra aplicación usándola, selecciona otro dispositivo del menú de configuración o intenta volver a cargar la aplicación.",
|
||||
"cameraNotSendingDataTitle": "No es posible acceder a la cámara",
|
||||
"cameraPermissionDeniedError": "No has otorgado permiso para usar la cámara. Puedes unirte a la conferencia de todos modos, pero los demás asistentes no te podrán ver. Usa el botón de la cámara en la barra de direcciones para solucionar esto.",
|
||||
"cameraTimeoutError": "No se ha podido iniciar la fuente de vídeo. Se ha agotado el tiempo de espera.",
|
||||
"cameraUnknownError": "No se puede usar la cámara por un motivo desconocido.",
|
||||
"cameraUnsupportedResolutionError": "La cámara no admite la resolución de vídeo requerida.",
|
||||
"Cancel": "Cancelar",
|
||||
@@ -205,27 +198,29 @@
|
||||
"connectError": "¡Oops! Algo salió mal y no fue posible conectarnos a la conferencia.",
|
||||
"connectErrorWithMsg": "¡Oops! Algo salió mal y no fue posible conectarnos a la conferencia: {{msg}}",
|
||||
"connecting": "Conectando",
|
||||
"contactSupport": "Contacta al soporte técnico",
|
||||
"copied": "Copiado",
|
||||
"contactSupport": "Contacta al soporte técnico",
|
||||
"copy": "Copiar",
|
||||
"dismiss": "Descartar",
|
||||
"displayNameRequired": "¡Hola! ¿Cuál es tu nombre?",
|
||||
"done": "Listo",
|
||||
"e2eeDescription": "El cifrado de extremo a extremo es actualmente EXPERIMENTAL. Tenga en cuenta que activarlo puede deshabilitar servicios como: grabación, transmisión en vivo y participación telefónica. Además, esta reunión solo funcionará con personas que se unan con un navegador.",
|
||||
"e2eeLabel": "Habilitar cifrado Extremo-a-Extremo",
|
||||
"e2eeDisabledDueToMaxModeDescription": "No se puede activar el cifrado de extremo a extremo debido al gran número de participantes en la conferencia.",
|
||||
"e2eeDescription": "El cifrado de extremo a extremo es actualmente EXPERIMENTAL. Tenga en cuenta que activarlo puede deshabilitar servicios como: grabación, transmisión en vivo y participación telefónica. Además, esta reunión solo funcionará con personas que se unan con un navegador.",
|
||||
"e2eeWarning": "ADVERTENCIA: No todos los participantes de esta reunión soportan el cifrado de extremo a extremo. Si usted habilita esta opción, ellos no podrán verlo ni oírlo.",
|
||||
"e2eeWillDisableDueToMaxModeDescription": "ADVERTENCIA: El cifrado de extremo a extremo se desactivará automáticamente si se unen más participantes a la conferencia.",
|
||||
"enterDisplayName": "Por favor ingresa tu nombre aquí",
|
||||
"embedMeeting": "Incrustar reunión",
|
||||
"enterDisplayNameToJoin": "Por favor ingresa tu nombre para unirte",
|
||||
"error": "Error",
|
||||
"externalInstallationMsg": "Necesita instalar nuestra extensión para compartir pantalla.",
|
||||
"externalInstallationTitle": "Extensión requerida",
|
||||
"goToStore": "Ir a la tienda web",
|
||||
"gracefulShutdown": "Nuestro servicio se encuentra en mantenimiento. Por favor, intente más tarde.",
|
||||
"grantModeratorDialog": "¿Estas seguro de que quieres convertir a este participante en moderator?",
|
||||
"grantModeratorTitle": "Convertir en moderador",
|
||||
"hideShareAudioHelper": "No volver a mostrar este diálogo",
|
||||
"IamHost": "Soy el anfitrión",
|
||||
"incorrectRoomLockPassword": "Contraseña incorrecta",
|
||||
"incorrectPassword": "Nombre de usuario o contraseña incorrecta",
|
||||
"inlineInstallationMsg": "Necesita instalar nuestra extensión para compartir escritorio.",
|
||||
"inlineInstallExtension": "Instalar ahora",
|
||||
"internalError": "¡Oops! Algo salió mal. El siguiente error ocurrió: {{error}}",
|
||||
"internalErrorTitle": "Error interno",
|
||||
"kickMessage": "Puede ponerse en contacto con {{participantDisplayName}} para obtener más detalles.",
|
||||
@@ -233,14 +228,14 @@
|
||||
"kickParticipantDialog": "¿Seguro que quiere expulsar a este participante?",
|
||||
"kickParticipantTitle": "¿Expulsar a este participante?",
|
||||
"kickTitle": "¡Ay! {{participantDisplayName}} te expulsó de la reunión",
|
||||
"liveStreaming": "Transmisión en vivo",
|
||||
"liveStreamingDisabledBecauseOfActiveRecordingTooltip": "No es posible mientras la grabación este activa",
|
||||
"liveStreaming": "Transmisión en vivo",
|
||||
"liveStreamingDisabledForGuestTooltip": "Los invitados no pueden iniciar la transmisión en vivo.",
|
||||
"liveStreamingDisabledTooltip": "Las trasmisiones están deshabilitadas.",
|
||||
"lockMessage": "No se pudo bloquear la conferencia.",
|
||||
"lockRoom": "Agregar $t(lockRoomPasswordUppercase) a la reunión",
|
||||
"lockTitle": "El bloqueo falló",
|
||||
"logoutQuestion": "¿Está seguro que desea salir y detener la conferencia?",
|
||||
"login": "Iniciar sesión",
|
||||
"logoutTitle": "Cerrar sesión",
|
||||
"maxUsersLimitReached": "El límite máximo de participantes ha sido alcanzado. Por favor contacta al organizador o intenta más tarde.",
|
||||
"maxUsersLimitReachedTitle": "La reunión está llena.",
|
||||
@@ -249,34 +244,18 @@
|
||||
"micNotSendingData": "Vaya a la configuración de su computadora para activar el micrófono y ajustar su nivel",
|
||||
"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.",
|
||||
"micTimeoutError": "No se ha podido iniciar la fuente de audio. Se ha agotado el tiempo de espera.",
|
||||
"micUnknownError": "No se puede usar el micrófono por motivos desconocidos.",
|
||||
"moderationAudioLabel": "Permitir a los asistentes activar su audio.",
|
||||
"moderationVideoLabel": "Permitir a los asistentes activar su video.",
|
||||
"muteEveryoneElseDialog": "Una vez silenciados, no podrás quitarles el modo silencio, pero ellos podrán hacerlo en cualquier momento.",
|
||||
"muteEveryoneElseTitle": "¿Silenciar a todos excepto a {{whom}}?",
|
||||
"muteEveryoneDialog": "¿Estás seguro que quieres silenciar a todos? No podrás quitarles el silencio, pero ellos pueden quitárselo en cualquier momento.",
|
||||
"muteEveryoneDialogModerationOn": "Los participantes pueden enviar una solicitud de intervención en cualquier momento.",
|
||||
"muteEveryoneTitle": "¿Silenciar a todos?",
|
||||
"muteEveryoneElsesVideoDialog": "Una vez desactivada la cámara, no podrás volver a activarla, pero pueden volver a activarla en cualquier momento.",
|
||||
"muteEveryoneElsesVideoTitle": "¿Detener el vídeo de todos, excepto el de {{whom}}?",
|
||||
"muteEveryonesVideoDialog": "Los participantes pueden encender su vídeo en cualquier momento.",
|
||||
"muteEveryonesVideoDialogModerationOn": "Los participantes pueden enviar una solicitud para encender su vídeo en cualquier momento.",
|
||||
"muteEveryonesVideoDialogOk": "Desactivar",
|
||||
"muteEveryonesVideoTitle": "¿Detener el vídeo de todos?",
|
||||
"muteEveryoneSelf": "ti 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 quieres silenciar a este participante? No podrás revertir esta acción, pero el participante podrá hacerlo en cualquier momento",
|
||||
"muteParticipantsVideoDialog": "¿Estás seguro de que quieres apagar la cámara de este participante? No podrás volver a encender la cámara, pero ellos pueden volver a encenderla en cualquier momento.",
|
||||
"muteParticipantTitle": "¿Silenciar a este participante?",
|
||||
"muteParticipantsVideoButton": "Detener video",
|
||||
"muteParticipantsVideoTitle": "¿Desactivar la cámara de este participante?",
|
||||
"muteParticipantsVideoBody": "No podrás volver a encender la cámara, pero ellos pueden volver a encenderla en cualquier momento.",
|
||||
"noDropboxToken": "No hay un token válido de Dropbox",
|
||||
"Ok": "Aceptar",
|
||||
"password": "Contraseña",
|
||||
"passwordLabel": "$t(lockRoomPasswordUppercase)",
|
||||
"passwordNotSupported": "No se soporta $t(lockRoomPassword) en la reunión",
|
||||
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) no es compatible",
|
||||
@@ -289,6 +268,7 @@
|
||||
"readMore": "mas",
|
||||
"recording": "Grabando",
|
||||
"recordingDisabledBecauseOfActiveLiveStreamingTooltip": "No es posible mientras la transmisión en vivo este activa",
|
||||
"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!",
|
||||
@@ -308,6 +288,10 @@
|
||||
"screenSharingAudio": "Compartir audio",
|
||||
"screenSharingFailed": "¡Oops! ¡Algo salio mal, no se pudo iniciar la compartición de su pantalla!",
|
||||
"screenSharingFailedTitle": "¡Fallo al compartir su pantalla!",
|
||||
"screenSharingFailedToInstall": "¡Uy! La extensión de uso compartido de pantalla no se pudo instalar.",
|
||||
"screenSharingFailedToInstallTitle": "La extensión de uso compartido de pantalla no se pudo instalar",
|
||||
"screenSharingFirefoxPermissionDeniedError": "Algo salió mal al compartir pantalla. Asegúrate de habernos dado permiso para hacerlo.",
|
||||
"screenSharingFirefoxPermissionDeniedTitle": "¡Uy! No pudimos iniciar el uso compartido de la pantalla.",
|
||||
"screenSharingPermissionDeniedError": "¡Uy! Algo salió mal con tus permisos de extensión para compartir pantalla. Vuelve a cargar la página e intenta de nuevo.",
|
||||
"sendPrivateMessage": "Acabas de recibir un mensaje privado. ¿Deseas responder en privado o a todos?",
|
||||
"sendPrivateMessageCancel": "Enviar al grupo",
|
||||
@@ -315,27 +299,15 @@
|
||||
"sendPrivateMessageTitle": "¿Enviar en privado?",
|
||||
"serviceUnavailable": "Servicio no disponible",
|
||||
"sessTerminated": "Llamada terminada",
|
||||
"sessionRestarted": "Llamada reiniciada por un problema de conexión.",
|
||||
"Share": "Compartir",
|
||||
"shareAudio": "Continuar",
|
||||
"shareAudioTitle": "Cómo compartir el audio",
|
||||
"shareAudioWarningTitle": "Hay que dejar de compartir la pantalla antes de compartir el audio",
|
||||
"shareAudioWarningH1": "Si quieres compartir sólo el audio:",
|
||||
"shareAudioWarningD1": "debes dejar de compartir la pantalla antes de compartir el audio.",
|
||||
"shareAudioWarningD2": "Tienes que reiniciar tu pantalla compartida y marcar la opción \"compartir audio\".",
|
||||
"shareMediaWarningGenericH2": "Si quieres compartir tu pantalla y audio",
|
||||
"shareVideoLinkError": "Proporciona un enlace de YouTube correcto.",
|
||||
"shareVideoTitle": "Compartir un vídeo",
|
||||
"shareYourScreen": "Compartir pantalla",
|
||||
"shareYourScreenDisabled": "Se desactivó la opción para compartir pantalla.",
|
||||
"shareYourScreenDisabledForGuest": "Los invitados no pueden compartir la pantalla.",
|
||||
"startLiveStreaming": "Iniciar transmisión en vivo",
|
||||
"startRecording": "Iniciar grabación",
|
||||
"startRemoteControlErrorMessage": "Se produjo un error al intentar iniciar la sesión de control remoto.",
|
||||
"shareScreenWarningTitle": "Tienes que dejar de compartir el audio antes de compartir la pantalla",
|
||||
"shareScreenWarningH1": "Si quieres compartir sólo tu pantalla:",
|
||||
"shareScreenWarningD1": "debes dejar de compartir el audio antes de compartir la pantalla.",
|
||||
"shareScreenWarningD2": "tienes que dejar de compartir el audio, empezar a compartir la pantalla y marcar la opción \"compartir el audio\".",
|
||||
"sharedVideoLinkPlaceholder": "Enlace de YouTube o enlace de vídeo directo",
|
||||
"stopLiveStreaming": "Detener transmisión en vivo",
|
||||
"stopRecording": "Detener grabación",
|
||||
"stopRecordingWarning": "¿Estás seguro de que deseas detener la grabación?",
|
||||
@@ -348,20 +320,12 @@
|
||||
"tokenAuthFailedTitle": "Error de autenticación",
|
||||
"transcribing": "Transcribiendo",
|
||||
"unlockRoom": "Quitar la $t(lockRoomPassword) de reunión",
|
||||
"user": "Usuario",
|
||||
"userIdentifier": "Identificador de usuario",
|
||||
"userPassword": "contraseña del usuario",
|
||||
"videoLink": "Enlace de vídeo",
|
||||
"viewUpgradeOptions": "Ver opciones de mejora",
|
||||
"viewUpgradeOptionsContent": "Para obtener acceso ilimitado a las funciones premium, como la grabación, las transcripciones, el streaming RTMP y otras, tendrás que actualizar tu plan.",
|
||||
"viewUpgradeOptionsTitle": "¡Has descubierto una característica premium!",
|
||||
"WaitForHostMsg": "La conferencia <b>{{room}}</b> aún no ha comenzado. Si eres el anfitrión, inicia sesión. De lo contrario, espera a que llegue el anfitrión.",
|
||||
"WaitForHostMsgWOk": "La conferencia <b>{{room}}</b> aún no ha comenzado. Si eres el anfitrión, presiona Aceptar para autenticar. De lo contrario, espera a que llegue el anfitrión.",
|
||||
"WaitingForHostTitle": "Esperando al anfitrión...",
|
||||
"WaitingForHost": "Esperando al anfitrión…",
|
||||
"Yes": "Sí",
|
||||
"yourEntireScreen": "Toda la pantalla",
|
||||
"remoteUserControls": "El control remoto de {{username}}",
|
||||
"localUserControls": "Controles de usuario locales"
|
||||
"yourEntireScreen": "Toda la pantalla"
|
||||
},
|
||||
"dialOut": {
|
||||
"statusMessage": "está {{status}}"
|
||||
@@ -373,30 +337,10 @@
|
||||
"labelToolTip": "La comunicación de audio y vídeo en esta reunión está cifrada de extremo a extremo"
|
||||
},
|
||||
"embedMeeting": {
|
||||
"title": "Insertar esta reunión"
|
||||
"title": "Insertar reunión en sitio web"
|
||||
},
|
||||
"virtualBackground": {
|
||||
"apply": "Aplicar",
|
||||
"title": "Fondos virtuales",
|
||||
"blur": "Desenfoque",
|
||||
"slightBlur": "Desenfoque Ligero",
|
||||
"removeBackground": "Eliminar el fondo",
|
||||
"addBackground": "Añadir fondo",
|
||||
"pleaseWait": "Por favor, espera...",
|
||||
"none": "Ninguno",
|
||||
"uploadedImage": "Imagen subida {{index}}",
|
||||
"deleteImage": "Borrar imagen",
|
||||
"image1": "Playa",
|
||||
"image2": "Pared neutra blanca",
|
||||
"image3": "Habitación blanca y vacía",
|
||||
"image4": "Lámpara de pie negra",
|
||||
"image5": "Montaña",
|
||||
"image6": "Bosque",
|
||||
"image7": "Amanecer",
|
||||
"desktopShareError": "No se ha podido crear el escritorio compartido",
|
||||
"desktopShare": "Compartir el escritorio",
|
||||
"webAssemblyWarning": "No se admite WebAssembly",
|
||||
"backgroundEffectError": "No se ha podido aplicar el efecto de fondo."
|
||||
"embedMeeting": {
|
||||
"title": "Insertar esta reunión"
|
||||
},
|
||||
"feedback": {
|
||||
"average": "Promedio",
|
||||
@@ -405,8 +349,7 @@
|
||||
"good": "Buena",
|
||||
"rateExperience": "¿Cómo estuvo tu experiencia en la reunión?",
|
||||
"veryBad": "Muy mala",
|
||||
"veryGood": "Muy buena",
|
||||
"star": "Estrella"
|
||||
"veryGood": "Muy buena"
|
||||
},
|
||||
"incomingCall": {
|
||||
"answer": "Contestar",
|
||||
@@ -423,7 +366,6 @@
|
||||
"country": "País",
|
||||
"dialANumber": "Para unirte a la reunión, marca uno de estos números y, luego introduce el PIN.",
|
||||
"dialInConferenceID": "PIN:",
|
||||
"copyNumber": "Copiar número",
|
||||
"dialInNotSupported": "Lo sentimos, actualmente no se admite el marcado telefónico a la reunión.",
|
||||
"dialInNumber": "Marcar:",
|
||||
"dialInSummaryError": "Se ha producido un error al capturar la información de marcación. Vuelva a intentarlo más tarde",
|
||||
@@ -432,11 +374,6 @@
|
||||
"inviteLiveStream": "Para ver la transmisión en vivo de esta reunión, haz clic en este enlace: {{url}}",
|
||||
"invitePhone": "También puedes entrar por llamada telefónica: Marca al número {{number}}, y al escuchar la contestadora introduce {{conferenceID}}#\n",
|
||||
"invitePhoneAlternatives": "Si necesitas un número telefónico de otro país, revisa los números disponibles en {{url}}\n\n\nSi además de entrar vía llamada vas a usar otro dispositivo, puedes usar este link para entrar sin audio: {{silentUrl}}",
|
||||
"inviteSipEndpoint": "Para unirse utilizando la dirección SIP, introduzca esto: {{sipUri}}",
|
||||
"inviteTextiOSPersonal": "{{name}} te invita a una reunión.",
|
||||
"inviteTextiOSJoinSilent": "Si marca a través de un teléfono de sala, utilice este enlace para unirse sin conectarse al audio: {{silentUrl}}.",
|
||||
"inviteTextiOSInviteUrl": "Haz clic en el siguiente enlace para unirte: {{inviteUrl}}.",
|
||||
"inviteTextiOSPhone": "Para participar por teléfono, utiliza este número: {{number}},,{{conferenceID}}. Si buscas otro número, ésta es la lista completa: {{didUrl}}.",
|
||||
"inviteURLFirstPartGeneral": "Estás invitado a unirte a una reunión.",
|
||||
"inviteURLFirstPartPersonal": "{{name}} te esta invitando a una reunión.\n",
|
||||
"inviteURLSecondPart": "\nLink para unirse a la reunión:\n{{url}}\n",
|
||||
@@ -447,7 +384,6 @@
|
||||
"noRoom": "No se especificó la sala a marcar.",
|
||||
"numbers": "Números para entrar por llamada telefónica:",
|
||||
"password": "$t(lockRoomPasswordUppercase):",
|
||||
"sip": "Dirección SIP",
|
||||
"title": "Compartir",
|
||||
"tooltip": "Compartir el enlace y acceso telefónico para esta reunión",
|
||||
"label": "Información de la reunión"
|
||||
@@ -466,7 +402,6 @@
|
||||
"support": "Soporte",
|
||||
"supportMsg": "Si esto sigue ocurriendo, contacta a"
|
||||
},
|
||||
"jitsiHome": "{{logo}} Logotipo, enlaces a la página web",
|
||||
"keyboardShortcuts": {
|
||||
"focusLocal": "Ver tu cámara",
|
||||
"focusRemote": "Ver la cámara de otras personas",
|
||||
@@ -479,14 +414,12 @@
|
||||
"showSpeakerStats": "Mostrar estadísticas de los hablantes",
|
||||
"toggleChat": "Abrir o cerrar el chat",
|
||||
"toggleFilmstrip": "Mostrar u ocultar miniaturas de vídeo",
|
||||
"toggleParticipantsPane": "Mostrar u ocultar el panel de participantes",
|
||||
"toggleScreensharing": "Cambiar entre cámara y pantalla compartida",
|
||||
"toggleShortcuts": "Mostrar u ocultar atajos del teclado",
|
||||
"videoMute": "Prender o apagar la cámara"
|
||||
"videoMute": "Prender o apagar la cámara",
|
||||
"videoQuality": "Ajustar la calidad de la llamada"
|
||||
},
|
||||
"liveStreaming": {
|
||||
"limitNotificationDescriptionWeb": "Debido a la alta demanda su transmisión estará limitada a {{limit}} minutos. Puede obtener transmisiones ilimitadas en <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"limitNotificationDescriptionNative": "Su transmisión estará limitada a {{limit}} minutos. Puede obtener transmisiones ilimitadas en {{app}}.",
|
||||
"busy": "Nuestros servidores andan un poco ocupados. Vuelve a intentarlo en unos minutos.",
|
||||
"busyTitle": "Todos los transmisores están ocupados",
|
||||
"changeSignIn": "Cambiar de cuenta.",
|
||||
@@ -498,6 +431,9 @@
|
||||
"errorLiveStreamNotEnabled": "La transmisión en vivo no está activada en {{email}}. Por favor, activa la transmisión en vivo o inicia sesión en una cuenta con la transmisión en vivo activada.",
|
||||
"expandedOff": "La transmisión en vivo se ha detenido",
|
||||
"expandedOn": "La reunión se está transmitiendo a YouTube.",
|
||||
"googlePrivacyPolicy": "Política de Privacidad de Google",
|
||||
"limitNotificationDescriptionWeb": "Debido a la alta demanda su transmisión estará limitada a {{limit}} minutos. Puede obtener transmisiones ilimitadas en <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"limitNotificationDescriptionNative": "Su transmisión estará limitada a {{limit}} minutos. Puede obtener transmisiones ilimitadas en {{app}}.",
|
||||
"expandedPending": "La transmisión en vivo se está iniciando…",
|
||||
"failedToStart": "La transmisión en vivo no se pudo iniciar",
|
||||
"getStreamKeyManually": "No pudimos encontrar tu clave de transmisión. Por favor, obtenla de la página de YouTube y pégala.",
|
||||
@@ -515,8 +451,7 @@
|
||||
"start": "Iniciar una transmisión en vivo",
|
||||
"streamIdHelp": "¿Qué es esto?",
|
||||
"unavailableTitle": "Transmisión en vivo no disponible",
|
||||
"youtubeTerms": "Términos de servicios de YouTube",
|
||||
"googlePrivacyPolicy": "Política de Privacidad de Google"
|
||||
"youtubeTerms": "Términos de servicios de YouTube"
|
||||
},
|
||||
"localRecording": {
|
||||
"clientState": {
|
||||
@@ -551,15 +486,13 @@
|
||||
"lockRoomPasswordUppercase": "Contraseña",
|
||||
"me": "yo",
|
||||
"notify": {
|
||||
"allowAction": "Permitir",
|
||||
"allowedUnmute": "Puedes anular el silencio del micrófono, iniciar la cámara o compartir la pantalla.",
|
||||
"connectedOneMember": "{{name}} se unió a la reunión",
|
||||
"connectedThreePlusMembers": "{{name}} y {{count}} más se unieron a la reunión",
|
||||
"connectedTwoMembers": "{{first}} y {{second}} se unieron a la reunión",
|
||||
"disconnected": "desconectado",
|
||||
"focus": "Enfocar conferencia",
|
||||
"focusFail": "{{component}} no disponible. Vuelve a intentar en {{ms}} segundos",
|
||||
"hostAskedUnmute": "El moderador quiere que hables",
|
||||
"grantedTo": "Se otorgaron derechos de moderador a {{to}}.",
|
||||
"invitedOneMember": "{{name}} ha sido invitado",
|
||||
"invitedThreePlusMembers": "{{name}} y {{count}} más han sido invitados",
|
||||
"invitedTwoMembers": "{{first}} y {{second}} han sido invitados",
|
||||
@@ -570,13 +503,9 @@
|
||||
"mutedTitle": "¡Estás silenciado!",
|
||||
"mutedRemotelyTitle": "¡{{Nombre del participante}} te ha silenciado!",
|
||||
"mutedRemotelyDescription": "Siempre puedes reactivar tu micrófono cuando estés listo para hablar. Vuélvelo a apagar cuando termines de hablar para no hacer ruido.",
|
||||
"videoMutedRemotelyTitle": "Su vídeo ha sido desactivado por {{moderator}}",
|
||||
"videoMutedRemotelyDescription": "Siempre puedes volver a encenderlo.",
|
||||
"passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) eliminada por otro participante",
|
||||
"passwordSetRemotely": "$t(lockRoomPasswordUppercase) agregada por otro participante",
|
||||
"raisedHand": "{{name}} quisiera hablar.",
|
||||
"screenShareNoAudio": "La casilla Compartir audio no estaba marcada en la pantalla de selección de ventanas.",
|
||||
"screenShareNoAudioTitle": "No se pudo compartir el audio del sistema.",
|
||||
"somebody": "Alguien",
|
||||
"startSilentTitle": "¡Te uniste sin audio!",
|
||||
"startSilentDescription": "Vuelve a ingresar para activar el audio",
|
||||
@@ -589,87 +518,13 @@
|
||||
"OldElectronAPPTitle": "¡Aplicación obsoleta e insegura!",
|
||||
"oldElectronClientDescription1": "Estás usando una versión vieja de la aplicación de Jitsi Meet que tiene problemas de seguridad. ¡Por favor, actualiza a la ",
|
||||
"oldElectronClientDescription2": "versión más reciente",
|
||||
"oldElectronClientDescription3": " YA!",
|
||||
"moderationInEffectDescription": "Por favor, levanten la mano si quieren hablar.",
|
||||
"moderationInEffectCSDescription": "Por favor, levante la mano si quiere compartir su pantalla.",
|
||||
"moderationInEffectVideoDescription": "Por favor, levanten la mano si quieren encender su cámara.",
|
||||
"moderationInEffectTitle": "Su micrófono está silenciado por el moderador",
|
||||
"moderationInEffectCSTitle": "La pantalla compartida está bloqueada por el moderador",
|
||||
"moderationInEffectVideoTitle": "Su cámara está bloqueada por el moderador",
|
||||
"moderationRequestFromModerator": "El anfitrión desea que se desactive el silencio",
|
||||
"moderationRequestFromParticipant": "Quiere hablar",
|
||||
"moderationStartedTitle": "Comienzo de la moderación",
|
||||
"moderationStoppedTitle": "La moderación se detuvo",
|
||||
"moderationToggleDescription": "por {{participantDisplayName}}",
|
||||
"raiseHandAction": "Levantar la mano",
|
||||
"reactionSounds": "Desactivar sonidos",
|
||||
"groupTitle": "Notificaciones"
|
||||
"oldElectronClientDescription3": " YA!"
|
||||
},
|
||||
"participantsPane": {
|
||||
"close": "Cerrar",
|
||||
"header": "Participantes",
|
||||
"headings": {
|
||||
"lobby": "Vestíbulo ({{count}})",
|
||||
"participantsList": "Participantes en la reunión ({{count}})",
|
||||
"waitingLobby": "Esperando en el vestíbulo ({{count}})"
|
||||
},
|
||||
"actions": {
|
||||
"allow": "Permitir a los asistentes:",
|
||||
"allowVideo": "Permitir vídeo",
|
||||
"audioModeration": "Desmutearse a sí mismos",
|
||||
"blockEveryoneMicCamera": "Bloquear el micrófono y la cámara de todos.",
|
||||
"invite": "Invitar a alguien",
|
||||
"askUnmute": "Pida que le quiten el silencio",
|
||||
"mute": "Silenciar",
|
||||
"muteAll": "Silenciar a todos los demás",
|
||||
"muteEveryoneElse": "Silenciar al resto",
|
||||
"stopEveryonesVideo": "Detener el vídeo de todos",
|
||||
"stopVideo": "Detener el vídeo",
|
||||
"unblockEveryoneMicCamera": "Desbloquear el micrófono y la cámara de todos",
|
||||
"videoModeration": "Iniciar su vídeo"
|
||||
}
|
||||
},
|
||||
"passwordSetRemotely": "Definida por otro participante",
|
||||
"passwordSetRemotely": "definida por otro participante",
|
||||
"passwordDigitsOnly": "Hasta {{number]] cifras",
|
||||
"polls": {
|
||||
"create": {
|
||||
"addOption": "Añadir opción",
|
||||
"answerPlaceholder": "Opción {{index}}",
|
||||
"create": "Crear una encuesta",
|
||||
"cancel": "Cancelar",
|
||||
"pollOption": "Opción de encuesta {{index}}",
|
||||
"pollQuestion": "Pregunta de la encuesta",
|
||||
"questionPlaceholder": "Haz una pregunta",
|
||||
"removeOption": "Eliminar la opción",
|
||||
"send": "Enviar"
|
||||
},
|
||||
"answer": {
|
||||
"skip": "Saltar",
|
||||
"submit": "Enviar"
|
||||
},
|
||||
"results": {
|
||||
"vote": "Vota",
|
||||
"changeVote": "Cambiar el voto",
|
||||
"empty": "Todavía no hay encuestas en la reunión. ¡Inicie una encuesta aquí!",
|
||||
"hideDetailedResults": "Ocultar detalles",
|
||||
"showDetailedResults": "Mostrar detalles"
|
||||
},
|
||||
"notification": {
|
||||
"title": "Se ha añadido una nueva encuesta a esta reunión",
|
||||
"description": "Abre la pestaña de encuestas para votar"
|
||||
}
|
||||
},
|
||||
"poweredby": "con tecnología de",
|
||||
"prejoin": {
|
||||
"audioAndVideoError": "Error en audio y vídeo:",
|
||||
"audioDeviceProblem": "Hay un problema con su dispositivo de audio",
|
||||
"audioOnlyError": "Error en audio:",
|
||||
"audioTrackError": "No se pudo crear la pista de audio.",
|
||||
"calling": "Llamando",
|
||||
"callMe": "Llámame",
|
||||
"callMeAtNumber": "Llamame a este número:",
|
||||
"configuringDevices": "Configurando dispositivos...",
|
||||
"connectedWithAudioQ": "¿Estás está conectado con audio?",
|
||||
"connection": {
|
||||
"good": "¡Su conexión a internet es buena!",
|
||||
"nonOptimal": "Su conexión a internet no es óptima",
|
||||
@@ -689,6 +544,16 @@
|
||||
"videoLowQuality": "Prevemos que su video tendrá baja calidad en términos de velocidad de fotogramas y resolución.",
|
||||
"videoTearing": "Prevemos que su video se pixelará o tendrá artefactos visuales."
|
||||
},
|
||||
"errorMissingName": "Ingrese su nombre para unirse a la reunión",
|
||||
"premeeting": "Pre-reunión",
|
||||
"showScreen": "Habilitar pantalla pre-reunión",
|
||||
"audioAndVideoError": "Error en audio y vídeo:",
|
||||
"audioOnlyError": "Error en audio:",
|
||||
"audioTrackError": "No se pudo crear la pista de audio.",
|
||||
"callMe": "Llámame",
|
||||
"callMeAtNumber": "Llamame a este número:",
|
||||
"configuringDevices": "Configurando dispositivos...",
|
||||
"connectedWithAudioQ": "¿Estás está conectado con audio?",
|
||||
"copyAndShare": "Copia y comparte el link de la reuinión",
|
||||
"dialInMeeting": "Entrar con llamada telefónica",
|
||||
"dialInPin": "Marca a la reunión e ingresa el código:",
|
||||
@@ -698,8 +563,6 @@
|
||||
"errorDialOutDisconnected": "No se pudo marcar. Desconectado.",
|
||||
"errorDialOutFailed": "No se pudo marcar. La llamada falló.",
|
||||
"errorDialOutStatus": "Hubo algún error, y no se pudo determinar cuál",
|
||||
"errorMissingName": "Ingrese su nombre para unirse a la reunión",
|
||||
"errorNoPermissions": "Tienes que habilitar el acceso al micrófono y a la cámara",
|
||||
"errorStatusCode": "Error al marcar, código de error {{status}}",
|
||||
"errorValidation": "No se pudo validar el número",
|
||||
"iWantToDialIn": "Quiero entrar por teléfono",
|
||||
@@ -710,9 +573,7 @@
|
||||
"linkCopied": "Se copió el link",
|
||||
"lookGood": "Tu micrófono funciona bien.",
|
||||
"or": "o",
|
||||
"premeeting": "Pre-reunión",
|
||||
"showScreen": "Habilitar pantalla pre-reunión",
|
||||
"keyboardShortcuts": "Activar los atajos de teclado",
|
||||
"calling": "Llamando",
|
||||
"startWithPhone": "Iniciar con audio de llamada telefónica",
|
||||
"screenSharingError": "Error al compartir pantalla:",
|
||||
"videoOnlyError": "Error con el vídeo:",
|
||||
@@ -734,7 +595,6 @@
|
||||
"ringing": "Timbrando…"
|
||||
},
|
||||
"profile": {
|
||||
"avatar": "avatar",
|
||||
"setDisplayNameLabel": "Configura tu nombre para mostrar",
|
||||
"setEmailInput": "Introducir correo electrónico",
|
||||
"setEmailLabel": "Configurar tu correo electrónico de Gravatar",
|
||||
@@ -742,22 +602,19 @@
|
||||
},
|
||||
"raisedHand": "Desea hablar",
|
||||
"recording": {
|
||||
"limitNotificationDescriptionWeb": "Debido a la alta demanda su grabación estará limitada a {{limit}} minutos. Puede obtener grabaciones ilimitadas en <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"limitNotificationDescriptionNative": "Su grabación estará limitada a {{limit}} minutos. Puede obtener grabaciones ilimitadas en <3>{{app}}</3>.",
|
||||
"authDropboxText": "Subir a Dropbox",
|
||||
"availableSpace": "Espacio disponible: {{spaceLeft}} MB (aproximadamente {{duration}} minutos de grabación)",
|
||||
"beta": "BETA",
|
||||
"busy": "Estamos trabajando para liberar recursos de grabación. Vuelve a intentarlo en unos minutos.",
|
||||
"busyTitle": "Todas las grabadoras están actualmente ocupadas",
|
||||
"copyLink": "Copiar enlace",
|
||||
"error": "Error de grabación. Vuelve a intentarlo.",
|
||||
"errorFetchingLink": "Error en la obtención del enlace de grabación.",
|
||||
"expandedOff": "Grabación detenida",
|
||||
"expandedOn": "La reunión está siendo grabada.",
|
||||
"expandedPending": "La grabación se está iniciando…",
|
||||
"failedToStart": "No se pudo iniciar la grabación",
|
||||
"fileSharingdescription": "Compartir la grabación con los participantes de la reunión",
|
||||
"linkGenerated": "Hemos generado un enlace a su grabación.",
|
||||
"limitNotificationDescriptionWeb": "Debido a la alta demanda su grabación estará limitada a {{limit}} minutos. Puede obtener grabaciones ilimitadas en <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"limitNotificationDescriptionNative": "Su grabación estará limitada a {{limit}} minutos. Puede obtener grabaciones ilimitadas en <3>{{app}}</3>.",
|
||||
"live": "EN VIVO",
|
||||
"loggedIn": "Sesión iniciada como {{userName}}",
|
||||
"off": "Grabación detenida",
|
||||
@@ -767,20 +624,18 @@
|
||||
"pending": "Preparando para grabar la reunión…",
|
||||
"rec": "GRA",
|
||||
"serviceDescription": "El servicio de grabación guardará la grabación",
|
||||
"serviceDescriptionCloud": "Grabación en la nube",
|
||||
"serviceName": "Servicio de grabación",
|
||||
"signIn": "Iniciar sesión",
|
||||
"signOut": "Cerrar sesión",
|
||||
"unavailable": "¡Uy! {{serviceName}} actualmente no está disponible. Estamos trabajando para resolver el problema. Vuelve a intentarlo más tarde.",
|
||||
"unavailableTitle": "Grabación no disponible",
|
||||
"uploadToCloud": "Subir a la nube"
|
||||
"unavailableTitle": "Grabación no disponible"
|
||||
},
|
||||
"sectionList": {
|
||||
"pullToRefresh": "Mueve el dedo para abajo para actualizar."
|
||||
},
|
||||
"security": {
|
||||
"about": "Puedes agregar una contraseña a la reunión. Los participantes necesitarán la contraseña para unirse a la reunión.",
|
||||
"aboutReadOnly": "Los participantes moderadores pueden agregar una $t(lockRoomPassword) a la reunión. Los participantes deberán proporcionar la $t(lockRoomPassword) antes de que se les permita unirse a la reunión.",
|
||||
"about": "Puedes agregar una contraseña a la reunión. Los participantes necesitarán la contraseña para unirse a la reunión.",
|
||||
"insecureRoomNameWarning": "El nombre de la sala es inseguro. Participantes no deseados pueden llegar a unirse a la reunión.",
|
||||
"securityOptions": "Opciones de seguridad"
|
||||
},
|
||||
@@ -792,13 +647,8 @@
|
||||
"signedIn": "Actualmente se accede a eventos del calendario para {{email}}. Haz clic en el botón Desconectar más abajo para detener el acceso a eventos del calendario.",
|
||||
"title": "Calendario"
|
||||
},
|
||||
"desktopShareFramerate": "Velocidad de fotogramas para compartir el escritorio",
|
||||
"desktopShareWarning": "Es necesario reiniciar la pantalla compartida para que los nuevos ajustes surtan efecto.",
|
||||
"desktopShareHighFpsWarning": "Una mayor velocidad de fotogramas para el uso compartido de la pantalla podría afectar a su ancho de banda. Es necesario reiniciar la pantalla compartida para que la nueva configuración surta efecto.",
|
||||
"devices": "Dispositivos",
|
||||
"followMe": "Todos me siguen",
|
||||
"framesPerSecond": "fotogramas-por-segundo",
|
||||
"incomingMessage": "Mensaje entrante",
|
||||
"language": "Idioma",
|
||||
"loggedIn": "Sesión iniciada como {{name}}",
|
||||
"microphones": "Micrófono",
|
||||
@@ -806,19 +656,13 @@
|
||||
"more": "Más",
|
||||
"name": "Nombre",
|
||||
"noDevice": "Ninguno",
|
||||
"participantJoined": "Un articipante incorporado",
|
||||
"participantLeft": "Un participante se ha ido",
|
||||
"playSounds": "Reproducir sonido",
|
||||
"reactions": "Reacciones de la reunión",
|
||||
"sameAsSystem": "Igual que el sistema ({{label}})",
|
||||
"selectAudioOutput": "Salida de audio",
|
||||
"selectCamera": "Cámara",
|
||||
"selectMic": "Micrófono",
|
||||
"sounds": "Sonidos",
|
||||
"speakers": "Parlantes",
|
||||
"speakers": "Altavoces",
|
||||
"startAudioMuted": "Todos inician silenciados",
|
||||
"startVideoMuted": "Todos inician con cámara desactivada",
|
||||
"talkWhileMuted": "Hablar en silencio",
|
||||
"speakers": "Parlantes",
|
||||
"title": "Ajustes"
|
||||
},
|
||||
"settingsView": {
|
||||
@@ -831,9 +675,9 @@
|
||||
"conferenceSection": "Conferencia",
|
||||
"disableCallIntegration": "Desactivar la integración nativa de llamadas",
|
||||
"disableP2P": "Desactivar la comunicación directa (\"Peer-To-Peer\")",
|
||||
"displayName": "Nombre a mostrar",
|
||||
"disableCrashReporting": "Desactivar el reporte de crasheos",
|
||||
"disableCrashReportingWarning": "¿Estás seguro que no deseas reportarnos los crasheos? La opción se activará al reiniciar la app.",
|
||||
"displayName": "Nombre a mostrar",
|
||||
"email": "Correo electrónico",
|
||||
"header": "Configuración",
|
||||
"profileSection": "Perfil",
|
||||
@@ -849,7 +693,6 @@
|
||||
},
|
||||
"speaker": "Participante",
|
||||
"speakerStats": {
|
||||
"search": "Buscar",
|
||||
"hours": "{{count}} h",
|
||||
"minutes": "{{count}} min",
|
||||
"name": "Nombre",
|
||||
@@ -859,7 +702,6 @@
|
||||
},
|
||||
"startupoverlay": {
|
||||
"policyText": " ",
|
||||
"genericTitle": "La reunión debe utilizar su micrófono y su cámara.",
|
||||
"title": "{{app}} necesita usar el micrófono y la cámara."
|
||||
},
|
||||
"suspendedoverlay": {
|
||||
@@ -871,23 +713,22 @@
|
||||
"accessibilityLabel": {
|
||||
"audioOnly": "Alternar cámaras de los demás",
|
||||
"audioRoute": "Seleccionar el dispositivo de sonido",
|
||||
"boo": "Boo",
|
||||
"callQuality": "Administrar la calidad de vídeo",
|
||||
"cc": "Alternar subtítulos",
|
||||
"chat": "Alternar ventana de chat",
|
||||
"clap": "Aplauso",
|
||||
"document": "Alternar documento compartido",
|
||||
"download": "Descargar nuestras aplicaciones",
|
||||
"embedMeeting": "Insertar reunión",
|
||||
"grantModerator": "Convertir en moderador",
|
||||
"download": "Descargar nuestras aplicaciones",
|
||||
"e2ee": "Cifrado de extremo a extremo",
|
||||
"feedback": "Dejar comentarios",
|
||||
"fullScreen": "Alternar pantalla completa",
|
||||
"grantModerator": "Convertir en moderador",
|
||||
"hangup": "Colgar",
|
||||
"help": "Ayuda",
|
||||
"invite": "Invitar personas",
|
||||
"lobbyButtonDisable": "Desactivar sala de espera",
|
||||
"lobbyButtonEnable": "Activar sala de espera",
|
||||
"kick": "Expulsar participante",
|
||||
"laugh": "Ríete",
|
||||
"like": "Pulgares arriba",
|
||||
"lobbyButton": "Activar / desactivar el modo lobby",
|
||||
"localRecording": "Alternar controles de grabación local",
|
||||
"lockRoom": "Alternar contraseña de la reunión",
|
||||
@@ -896,57 +737,39 @@
|
||||
"moreOptions": "Mostrar más opciones",
|
||||
"mute": "Silenciar micrófono",
|
||||
"muteEveryone": "Silenciar a todos",
|
||||
"muteEveryoneElse": "Silenciar a todos los demás",
|
||||
"muteEveryonesVideo": "Desactivar el vídeo de todos",
|
||||
"muteEveryoneElsesVideo": "Desactivar el vídeo de los demás",
|
||||
"participants": "Participantes",
|
||||
"pip": "Alternar modo ventana en miniatura",
|
||||
"privateMessage": "Enviar mensaje privado",
|
||||
"profile": "Editar perfil",
|
||||
"raiseHand": "Levantar o bajar la mano",
|
||||
"reactionsMenu": "Abrir / Cerrar el menú de reacciones",
|
||||
"recording": "Alternar grabación",
|
||||
"remoteMute": "Silenciar participante",
|
||||
"remoteVideoMute": "Desactivar la cámara del participante",
|
||||
"security": "Opciones de seguridad",
|
||||
"Settings": "Alternar configuración",
|
||||
"shareaudio": "Compartir audio",
|
||||
"sharedvideo": "Alternar vídeo compartido de YouTube",
|
||||
"shareRoom": "Invitar a alguien",
|
||||
"shareYourScreen": "Alternar pantalla compartida",
|
||||
"shortcuts": "Alternar accesos directos",
|
||||
"show": "Mostrar en primer",
|
||||
"silence": "Silencio",
|
||||
"speakerStats": "Alternar estadísticas del orador",
|
||||
"surprised": "Sorprendido",
|
||||
"tileView": "Alternar vista de mosaico",
|
||||
"toggleCamera": "Alternar cámara",
|
||||
"toggleFilmstrip": "Alternar mosaicos",
|
||||
"videomute": "Alternar vídeo",
|
||||
"videoblur": "Alternar desenfoque de vídeo",
|
||||
"selectBackground": "Seleccione el fondo",
|
||||
"expand": "Ampliar",
|
||||
"collapse": "Colapsar"
|
||||
"videoblur": "Alternar desenfoque de vídeo"
|
||||
},
|
||||
"addPeople": "Agregar personas a la llamada",
|
||||
"audioSettings": "Ajustes de audio",
|
||||
"videoSettings": "Ajustes de vídeo",
|
||||
"audioOnlyOff": "Mostrar cámaras de los demás",
|
||||
"audioOnlyOn": "Ocultar cámaras de los demás (para ahorrar datos)",
|
||||
"audioRoute": "Selecciona el dispositivo de sonido",
|
||||
"authenticate": "Autenticar",
|
||||
"boo": "Boo",
|
||||
"callQuality": "Ajustar la calidad de vídeo",
|
||||
"chat": "Abrir o cerrar chat",
|
||||
"clap": "Aplauso",
|
||||
"closeChat": "Cerrar chat",
|
||||
"closeReactionsMenu": "Cerrar el menú de reacciones",
|
||||
"disableReactionSounds": "Puede desactivar los sonidos de reacción para esta reunión",
|
||||
"documentClose": "Cerrar documento compartido",
|
||||
"documentOpen": "Abrir documento compartido",
|
||||
"download": "Descarga nuestras aplicaciones",
|
||||
"e2ee": "Cifrado de extremo a extremo",
|
||||
"embedMeeting": "Insertar reunión",
|
||||
"e2ee": "Cifrado de extremo a extremo",
|
||||
"enterFullScreen": "Pantalla completa",
|
||||
"enterTileView": "Ver en cuadrícula",
|
||||
"exitFullScreen": "Salir de pantalla completa",
|
||||
@@ -955,8 +778,6 @@
|
||||
"hangup": "Colgar",
|
||||
"help": "Ayuda",
|
||||
"invite": "Invitar personas",
|
||||
"laugh": "Ríete",
|
||||
"like": "Pulgares arriba",
|
||||
"lobbyButtonDisable": "Desactivar el modo lobby",
|
||||
"lobbyButtonEnable": "Activar el modo lobby",
|
||||
"login": "Inicio de sesión",
|
||||
@@ -966,7 +787,6 @@
|
||||
"moreOptions": "Más opciones",
|
||||
"mute": "Activar o silenciar el micrófono",
|
||||
"muteEveryone": "Silenciar a todos",
|
||||
"muteEveryonesVideo": "Desactivar la cámara de todos",
|
||||
"noAudioSignalTitle": "¡No se registra audio de tu micrófono!",
|
||||
"noAudioSignalDesc": "Checa si no está silenciado en tu configuración del sistema o dispositivo, o cambia de micrófono.",
|
||||
"noAudioSignalDescSuggestion": "Si no lo silenciaste a propósito desde la configuración del sistema o el dispositivo, intenta usar este otro micrófono:",
|
||||
@@ -975,39 +795,28 @@
|
||||
"noisyAudioInputTitle": "Tu micrófono parece estar ruidoso",
|
||||
"noisyAudioInputDesc": "Tu micrófono está haciendo ruido, siléncialo, ajusta su volumen en configuración del sistema, o cambia de micrófono.",
|
||||
"openChat": "Abrir chat",
|
||||
"openReactionsMenu": "Abrir el menú de reacciones",
|
||||
"participants": "Participantes",
|
||||
"pip": "Mostrar en ventana pequeña",
|
||||
"privateMessage": "Enviar mensaje privado",
|
||||
"profile": "Editar perfil",
|
||||
"raiseHand": "Levantar o bajar la mano",
|
||||
"raiseYourHand": "Levantar la mano",
|
||||
"reactionBoo": "Enviar la reacción de Boo",
|
||||
"reactionClap": "Enviar reacción de aplauso",
|
||||
"reactionLaugh": "Enviar reacción de risa",
|
||||
"reactionLike": "Enviar la reacción de los pulgares hacia arriba",
|
||||
"reactionSilence": "Enviar reacción de silencio",
|
||||
"reactionSurprised": "Enviar reacción de sorpresa",
|
||||
"security": "Opciones de seguridad",
|
||||
"Settings": "Configuración",
|
||||
"shareaudio": "Compartir audio",
|
||||
"sharedvideo": "Compartir un vídeo de YouTube",
|
||||
"shareRoom": "Invitar a alguien",
|
||||
"shortcuts": "Ver atajos del teclado",
|
||||
"silence": "Silencio",
|
||||
"speakerStats": "Estadísticas de los hablantes",
|
||||
"startScreenSharing": "Comenzar a compartir pantalla",
|
||||
"startSubtitles": "Iniciar subtítulos",
|
||||
"stopAudioSharing": "Dejar de compartir el audio",
|
||||
"stopScreenSharing": "Dejar de compartir pantalla",
|
||||
"stopSubtitles": "Detener subtítulos",
|
||||
"stopSharedVideo": "Detener vídeo de YouTube",
|
||||
"surprised": "Compartir audio",
|
||||
"talkWhileMutedPopup": "¿Intentas hablar? Estás silenciado.",
|
||||
"tileViewToggle": "Activar o desactivar vista en cuadrícula",
|
||||
"toggleCamera": "Activar o desactivar cámara",
|
||||
"videomute": "Iniciar o detener cámara",
|
||||
"selectBackground": "Seleccionar fondo"
|
||||
"startvideoblur": "Desenfocar mi fondo",
|
||||
"stopvideoblur": "Desactivar desenfoque del fondo"
|
||||
},
|
||||
"transcribing": {
|
||||
"ccButtonTooltip": "Iniciar o detener subtítulos",
|
||||
@@ -1033,7 +842,6 @@
|
||||
"react-nativeGrantPermissions": "Selecciona <b><i>Permitir</i></b> cuando el navegador solicite permisos.",
|
||||
"safariGrantPermissions": "Selecciona <b><i>Aceptar</i></b> cuando el navegador solicite permisos."
|
||||
},
|
||||
"volumeSlider": "Deslizador de volumen",
|
||||
"videoSIPGW": {
|
||||
"busy": "Estamos trabajando para liberar recursos. Vuelve a intentarlo en unos minutos.",
|
||||
"busyTitle": "El servicio de salas está actualmente ocupado",
|
||||
@@ -1056,29 +864,26 @@
|
||||
"ld": "LD",
|
||||
"ldTooltip": "Viendo vídeo en baja definición",
|
||||
"lowDefinition": "Baja definición",
|
||||
"onlyAudioAvailable": "Solo hay audio disponible",
|
||||
"onlyAudioSupported": "Solo admitimos audio en este navegador.",
|
||||
"sd": "SD",
|
||||
"sdTooltip": "Viendo vídeo en definición estándar",
|
||||
"standardDefinition": "Definición estándar"
|
||||
},
|
||||
"videothumbnail": {
|
||||
"connectionInfo": "Información de conexión",
|
||||
"domute": "Silenciar",
|
||||
"domuteVideo": "Desactivar la cámara",
|
||||
"domuteOthers": "Silenciar a todos",
|
||||
"domuteVideoOfOthers": "Desactivar la cámara de todos los demás",
|
||||
"flip": "Voltear",
|
||||
"grantModerator": "Convertir en moderador",
|
||||
"kick": "Expulsar",
|
||||
"moderator": "Moderador",
|
||||
"mute": "Se silenció el participante",
|
||||
"muted": "Silenciado",
|
||||
"videoMuted": "Cámara desactivada",
|
||||
"remoteControl": "Control remoto",
|
||||
"show": "Mostrar en primer plano",
|
||||
"videomute": "El participante paró su cámara"
|
||||
},
|
||||
"welcomepage": {
|
||||
"addMeetingName": "Añadir el nombre de la reunión",
|
||||
"accessibilityLabel": {
|
||||
"join": "Toca para unirte",
|
||||
"roomname": "Introduce el nombre de la sala"
|
||||
@@ -1093,37 +898,22 @@
|
||||
"connectCalendarText": "Conecta tu calendario para ver todas tus reuniones de {{app}}. Además, agrega reuniones a tu calendario e inícialas con un solo clic.",
|
||||
"enterRoomTitle": "Comenzar una reunión",
|
||||
"getHelp": "Obtener ayuda",
|
||||
"roomNameAllowedChars": "El nombre de la reunión no debe contener ninguno de estos caracteres: ?, &, :, ', \", %, #.",
|
||||
"go": "IR",
|
||||
"goSmall": "IR",
|
||||
"headerTitle": "Jitsi Meet",
|
||||
"headerSubtitle": "Reuniones seguras y de alta calidad",
|
||||
"info": "Información",
|
||||
"join": "CREAR / UNIRSE",
|
||||
"jitsiOnMobile": "Jitsi en el móvil: descarga nuestras aplicaciones y comienza una reunión desde cualquier lugar",
|
||||
"mobileDownLoadLinkIos": "Descargar la aplicación móvil para iOS",
|
||||
"mobileDownLoadLinkAndroid": "Descargar la aplicación móvil para Android",
|
||||
"mobileDownLoadLinkFDroid": "Descargar la aplicación móvil para F-Droid",
|
||||
"info": "Información",
|
||||
"moderatedMessage": "O <a href=\"{{url}}\" rel=\"noopener noreferrer\" target=\"_blank\">reserve con antelación una URL de reunión</a> en la que usted sea el único moderador.",
|
||||
"privacy": "Privacidad",
|
||||
"recentList": "Reciente",
|
||||
"recentListDelete": "Eliminar",
|
||||
"recentListEmpty": "Tu historial de reuniones está vacío. Reúnete y aparecerán aquí.",
|
||||
"reducedUIText": "¡Bienvenid@ a {{app}}!",
|
||||
"roomNameAllowedChars": "El nombre de la reunión no debe contener ninguno de estos caracteres: ?, &, :, ', \", %, #.",
|
||||
"roomname": "Introduce el nombre de la sala",
|
||||
"roomnameHint": "Introduce el nombre o URL de la sala a la que deseas unirte. Puedes inventar un nombre, simplemente infórmaselo a las personas con las que te reunirás para que introduzcan el mismo nombre.",
|
||||
"sendFeedback": "Enviar sugerencias",
|
||||
"startMeeting": "Iniciar la reunión",
|
||||
"terms": "Términos",
|
||||
"title": "Videoconferencias seguras, con gran variedad de funcionalidades y completamente gratuitas",
|
||||
"logo": {
|
||||
"calendar": "Logotipo del calendario",
|
||||
"microsoftLogo": "Logotipo de Microsoft",
|
||||
"logoDeepLinking": "Logotipo de la reunión de Jitsi",
|
||||
"desktopPreviewThumbnail": "Vista previa del escritorio en miniatura",
|
||||
"googleLogo": "Logotipo de Google",
|
||||
"policyLogo": "Logotipo de la política"
|
||||
}
|
||||
"title": "Videoconferencias seguras, con gran variedad de funcionalidades y completamente gratuitas"
|
||||
},
|
||||
"lonelyMeetingExperience": {
|
||||
"button": "Invita a otros",
|
||||
@@ -1133,8 +923,6 @@
|
||||
"header": "Centro de ayuda"
|
||||
},
|
||||
"lobby": {
|
||||
"admit": "Admitir",
|
||||
"admitAll": "Admitir todo",
|
||||
"knockingParticipantList": "Participantes que quieren entrar",
|
||||
"allow": "permitir",
|
||||
"backToKnockModeButton": "No hay contraseña, pide permiso para entrar.",
|
||||
@@ -1147,7 +935,6 @@
|
||||
"enableDialogText": "La sala de espera te deja proteger tu reunión, de modo que todas los que entren enviarán una solicitud que deberá ser aprobada por un moderador.",
|
||||
"enterPasswordButton": "Introduce la contraseña de la reunión",
|
||||
"enterPasswordTitle": "Introduce la contraseña para poder entrar",
|
||||
"errorMissingPassword": "Por favor, introduzca la contraseña de la reunión",
|
||||
"invalidPassword": "Contraseña inválida",
|
||||
"joiningMessage": "Podrás entrar tan pronto te acepten tu solicitud.",
|
||||
"joinWithPasswordMessage": "Tratando de entrar con contraseña, por favor espera...",
|
||||
@@ -1166,7 +953,6 @@
|
||||
"passwordField": "Introduce la contraseña de la reunión",
|
||||
"passwordJoinButton": "Entrar",
|
||||
"reject": "Rechazar",
|
||||
"rejectAll": "Rechazar todo",
|
||||
"toggleLabel": "Activar sala de espera"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -373,11 +373,11 @@
|
||||
"busyTitle": "Kõik ülekandjad on hetkel hõivatud",
|
||||
"changeSignIn": "Vaheta kontot.",
|
||||
"choose": "Vali otseülekanne",
|
||||
"chooseCTA": "Vali ülekande viis. Oled sisse logitud emailiga {{email}}.",
|
||||
"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 emailiga {{email}} sisse lülitatud. Luba kasutajaga otseülekanded või vaheta kontot.",
|
||||
"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…",
|
||||
@@ -480,7 +480,7 @@
|
||||
},
|
||||
"profile": {
|
||||
"setDisplayNameLabel": "Sisesta nimi",
|
||||
"setEmailInput": "Sisesta email",
|
||||
"setEmailInput": "Sisesta e-mail",
|
||||
"setEmailLabel": "Sisesta Gravatar e-kirja aadress",
|
||||
"title": "Profiil"
|
||||
},
|
||||
@@ -548,7 +548,7 @@
|
||||
"disableCallIntegration": "Lülita kohaliku kõne integratsioon välja",
|
||||
"disableP2P": "Lülita otseühendus välja",
|
||||
"displayName": "Kasutatav nimi",
|
||||
"email": "Email",
|
||||
"email": "E-mail",
|
||||
"header": "Seaded",
|
||||
"profileSection": "Profiil",
|
||||
"serverURL": "Serveri link",
|
||||
|
||||
@@ -39,20 +39,6 @@
|
||||
"audioOnly": {
|
||||
"audioOnly": "Bande passante faible"
|
||||
},
|
||||
"breakoutRooms": {
|
||||
"defaultName": "Salle annexe #{{index}}",
|
||||
"mainRoom": "Salle principale",
|
||||
"actions": {
|
||||
"add": "Ajouter salle annexe",
|
||||
"autoAssign": "Assigner automatqieuement aux salles annexes",
|
||||
"close": "Fermer",
|
||||
"join": "Rejoindre",
|
||||
"leaveBreakoutRoom": "Quitter la salle annexe",
|
||||
"more": "Plus",
|
||||
"remove": "Supprimer",
|
||||
"sendToBreakoutRoom": "Envoyer le participant dans:"
|
||||
}
|
||||
},
|
||||
"calendarSync": {
|
||||
"addMeetingURL": "Ajouter un lien de conférence",
|
||||
"confirmAddLink": "Voulez-vous ajouter un lien Jitsi à cet événement ?",
|
||||
@@ -201,7 +187,7 @@
|
||||
"Back": "Retour",
|
||||
"cameraConstraintFailedError": "Votre caméra ne satisfait pas certaines des contraintes nécessaires.",
|
||||
"cameraNotFoundError": "La caméra n'a pas été trouvée.",
|
||||
"cameraNotSendingData": "Impossible d'accéder à votre caméra. Veuillez sélectionner un autre périphérique dans les paramètres ou rafraîchir la page.",
|
||||
"cameraNotSendingData": "Nous sommes incapables d'accéder à votre caméra. Veuillez sélectionner un autre périphérique dans les paramètres ou rafraîchir la page.",
|
||||
"cameraNotSendingDataTitle": "Impossible d'accéder à votre caméra",
|
||||
"cameraPermissionDeniedError": "Vous n'avez pas autorisé l'utilisation de votre caméra. Vous pouvez toujours participer à la conférence, mais les autres ne pourront pas vous voir. Utilisez le bouton de la caméra dans la barre d'adresse pour résoudre ce problème.",
|
||||
"cameraTimeoutError": "Impossible de démarrer la source vidéo. Délai dépassé!",
|
||||
@@ -225,11 +211,9 @@
|
||||
"dismiss": "Rejeter",
|
||||
"displayNameRequired": "Bonjour ! Quel est votre nom ?",
|
||||
"done": "Terminé",
|
||||
"e2eeDescription": "Le chiffrement de Bout-en-Bout est actuellement EXPERIMENTAL. Veuillez garder à l'esprit que l'activation du chiffrement de Bout-en-Bout désactivera les services fournis côté serveur tels que : l'enregistrement, la diffusion en direct et la participation par téléphone. Gardez également à l'esprit que la réunion ne fonctionnera que pour les personnes qui se connectent à partir de navigateurs prenant en charge les flux insérables.",
|
||||
"e2eeDescription": "Le chiffrement de Bout-en-Bout est actuellement EXPERIMENTAL. Veuillez garder à l'esprit que l'activation du chiffrement de Bout-en-Bout désactivera les services fournis côté serveur tels que : l'enregistrement, la diffusion en direct et la participation par téléphone. Gardez également à l'esprit que la réunion ne fonctionnera que pour les personnes qui se joignent à partir de navigateurs prenant en charge les flux insérables.",
|
||||
"e2eeLabel": "Activer le chiffrement de Bout-en-Bout",
|
||||
"e2eeDisabledDueToMaxModeDescription": "Impossible d'activer le chiffrement de bout en bout en raison du trop grand nombre de participants à la conférence.",
|
||||
"e2eeWarning": "ATTENTION : Tous les participants de cette réunion ne semblent pas prendre en charge le chiffrement de Bout-en-Bout. Si vous activez le chiffrement, ils ne pourront ni vous voir, ni vous entendre.",
|
||||
"e2eeWillDisableDueToMaxModeDescription": "ATTENTION: le chiffrement de bout en bout sera automatiquement arrêté si plus de participants joignent la conférence.",
|
||||
"enterDisplayName": "Merci de saisir votre nom ici",
|
||||
"embedMeeting": "Intégrer la réunion",
|
||||
"error": "Erreur",
|
||||
@@ -237,7 +221,6 @@
|
||||
"grantModeratorDialog": "Êtes-vous sûr de vouloir rendre ce participant modérateur ?",
|
||||
"grantModeratorTitle": "Nommer modérateur",
|
||||
"IamHost": "Je suis l'hôte",
|
||||
"hideShareAudioHelper": "Ne pas montrer ce dialogue à nouveau",
|
||||
"incorrectRoomLockPassword": "Mot de passe incorrect",
|
||||
"incorrectPassword": "Nom d'utilisateur ou mot de passe incorrect",
|
||||
"internalError": "Oups ! Quelque chose s'est mal passée. L'erreur suivante s'est produite : {{error}}",
|
||||
@@ -249,14 +232,14 @@
|
||||
"kickTitle": "Oups ! vous avez été expulsé(e) par {{participantDisplayName}}",
|
||||
"liveStreaming": "Direct",
|
||||
"liveStreamingDisabledBecauseOfActiveRecordingTooltip": "Impossible durant l'enregistrement",
|
||||
"liveStreamingDisabledTooltip": "La diffusion en direct est désactivée",
|
||||
"liveStreamingDisabledTooltip": "La diffusion en direct est désactivé",
|
||||
"lockMessage": "Impossible de verrouiller la conférence.",
|
||||
"lockRoom": "Ajouter un $t(lockRoomPassword) à la réunion ",
|
||||
"lockTitle": "Échec du verrouillage",
|
||||
"login": "Connexion",
|
||||
"logoutQuestion": "Voulez-vous vraiment vous déconnecter et arrêter la conférence ?",
|
||||
"logoutTitle": "Déconnexion",
|
||||
"maxUsersLimitReached": "Le nombre maximal de participants est atteint. Le conférence est complète. Merci de contacter l'organisateur de la réunion ou réessayer plus tard !",
|
||||
"maxUsersLimitReached": "Le nombre maximal de participant est atteint. Le conférence est complète. Merci de contacter l'organisateur de la réunion ou réessayer plus tard !",
|
||||
"maxUsersLimitReachedTitle": "Le nombre maximal de participants est atteint",
|
||||
"micConstraintFailedError": "Votre microphone ne satisfait pas certaines des contraintes nécessaires.",
|
||||
"micNotFoundError": "Le microphone n'a pas été détecté.",
|
||||
@@ -265,39 +248,30 @@
|
||||
"micPermissionDeniedError": "Vous n'avez pas autorisé l'utilisation de votre microphone. Vous pouvez toujours participer à la conférence, mais les autres ne vont pas vous entendre. Utilisez le bouton du microphone dans la barre d'adresse pour résoudre ce problème.",
|
||||
"micTimeoutError": "Impossible de démarrer la source audio. Délai dépassé!",
|
||||
"micUnknownError": "Vous ne pouvez pas utiliser le microphone pour une raison inconnue.",
|
||||
"moderationAudioLabel": "Autoriser les participants à réactiver leur micro",
|
||||
"moderationVideoLabel": "Autoriser les participants à démarrer leur vidéo",
|
||||
"muteEveryoneElseDialog": "Une fois leur micro coupé, vous ne pourrez plus le réactiver, mais ils pourront l'activer par eux-mêmes à tout moment.",
|
||||
"muteEveryoneElseTitle": "Couper le micro de tout le monde sauf de {{whom}} ?",
|
||||
"muteEveryoneDialog": "Êtes-vous sûr de vouloir couper les micros de tout le monde ? Vous ne pourrez plus réactiver leur micro, mais ils pourront l'activer par eux-mêmes à tout moment.",
|
||||
"muteEveryoneDialogModerationOn": "Les participants peuvent demander à parler n'importe quand",
|
||||
"muteEveryoneTitle": "Couper le micro de tout le monde ?",
|
||||
"muteEveryoneElsesVideoDialog": "Une fois la caméra coupée, vous ne pourrez plus la rallumer, mais ils peuvent la rallumer à tout moment.",
|
||||
"muteEveryoneElsesVideoTitle": "Couper la vidéo de tout le monde sauf {{whom}}?",
|
||||
"muteEveryonesVideoDialog": "Êtes-vous sûr de vouloir couper la caméra de tout le monde? Vous ne pourrez pas la réactiver, mais ils peuvent la remettre à tout moment.",
|
||||
"muteEveryonesVideoDialogModerationOn": "Les participants peuvent demander à activer leur caméra n'importe quand.",
|
||||
"muteEveryonesVideoDialogOk": "Désactiver",
|
||||
"muteEveryonesVideoTitle": "Couper la caméra de tout le monde?",
|
||||
"muteEveryoneSelf": "vous",
|
||||
"muteEveryoneStartMuted": "Tout le monde démarre avec le micro coupé",
|
||||
"muteParticipantBody": "Vous ne pourrez plus réactiver son micro, mais il pourra l'activer par lui-même à tout moment.",
|
||||
"muteParticipantButton": "Couper le micro",
|
||||
"muteParticipantsVideoDialog": "Êtes-vous sûr(e) de vouloir couper la caméra de ce participant ? Seul le participant pourra ensuite réactiver son micro à tout moment.",
|
||||
"muteParticipantsVideoDialogModerationOn": "Êtes-vous sûr(e) de vouloir couper la caméra de ce participant ? Ni vous ni le participant ne pourront la réactiver ensuite ?",
|
||||
"muteParticipantDialog": "Êtes-vous sûr(e) de vouloir couper le micro de ce participant ? Seul le participant pourra ensuite réactiver son micro à tout moment.",
|
||||
"muteParticipantTitle": "Couper le micro de ce participant ?",
|
||||
"muteParticipantsVideoButton": "Couper la caméra",
|
||||
"muteParticipantsVideoTitle": "Couper la caméra de ce participant?",
|
||||
"muteParticipantsVideoBody": "Vous ne pourrez pas rallumer la caméra, mais ils peuvent la rallumer à tout moment.",
|
||||
"muteParticipantsVideoBodyModerationOn": "Ni vous ni le participant ne pourront rallumer la caméra.",
|
||||
"noDropboxToken": "Pas de jeton Dropbox valide",
|
||||
"Ok": "Ok",
|
||||
"password": "Mot de passe",
|
||||
"passwordLabel": "La réunion a été verrouillée par un(e) participant(e). Veuillez entrer le $t(lockRoomPassword) pour la rejoindre.",
|
||||
"passwordNotSupported": "La définition d'un $t(lockRoomPassword) de réunion n'est pas prise en charge.",
|
||||
"passwordNotSupportedTitle": "L'ajout d'un $t(lockRoomPassword) n'est pas supporté",
|
||||
"passwordRequired": "$t(lockRoomPasswordUppercase) requis",
|
||||
"permissionErrorTitle": "Permission nécessaire",
|
||||
"permissionCameraRequiredError": "L'autorisation caméra est nécessaire pour participer aux réunions avec vidéo. Merci de l'accorder dans les paramètres",
|
||||
"permissionMicRequiredError": "L'autorisation microphone est nécessaire pour participer aux réunions avec son. Merci de l'accorder dans les paramètres",
|
||||
"popupError": "Votre navigateur bloque les fenêtres pop-up. Veuillez autoriser les fenêtres pop-up dans les paramètres de votre navigateur.",
|
||||
"popupErrorTitle": "Pop-up bloquée",
|
||||
"readMore": "plus",
|
||||
@@ -320,24 +294,18 @@
|
||||
"reservationErrorMsg": "Code d'erreur: {{code}}, message: {{msg}}",
|
||||
"retry": "Réessayer",
|
||||
"screenSharingAudio": "Partager l'audio",
|
||||
"screenSharingFailed": "Houla ! Quelque chose s'est mal passé, nous n'avons pas pu démarrer le partage d'écran !",
|
||||
"screenSharingFailed": "Oops ! Quelque chose s'est mal passée, nous n'avons pas pu démarrer le partage d'écran !",
|
||||
"screenSharingFailedTitle": "Echec du partage d'écran !",
|
||||
"screenSharingPermissionDeniedError": "Houla ! Un problème est survenu avec vos autorisations de partage d'écran. Veuillez réessayer.",
|
||||
"screenSharingPermissionDeniedError": "Oops ! Un problème est survenu avec vos autorisations de partage d'écran. Veuillez réessayer.",
|
||||
"screenSharingPermissionDeniedError": "Oups ! Une erreur s'est produite avec vos autorisations d'extension de partage d'écran. Veuillez rafraîchir et réessayer.",
|
||||
"sendPrivateMessage": "Vous avez récemment reçu un message privé. Aviez-vous l'intention d'y répondre en privé, ou vouliez-vous envoyer votre message au groupe ?",
|
||||
"sendPrivateMessageCancel": "Envoyer au groupe",
|
||||
"sendPrivateMessageOk": "Envoyer en privé",
|
||||
"sendPrivateMessageTitle": "Envoyer en privé ?",
|
||||
"serviceUnavailable": "Service indisponible",
|
||||
"sessTerminated": "Appel terminé",
|
||||
"sessionRestarted": "L'appel est relancé par la passerelle",
|
||||
"sessionRestarted": "L'appel est relancé par le pont",
|
||||
"Share": "Partager",
|
||||
"shareAudio": "Continuer",
|
||||
"shareAudioTitle" : "Comment partager le son",
|
||||
"shareAudioWarningTitle": "Vous devez cesser de partager l'écran avant de partager l'audio",
|
||||
"shareAudioWarningH1": "Si vous voulez partager uniquement de l'audio:",
|
||||
"shareAudioWarningD1": "vous devez cesser le partage d'écran avant de partager votre son.",
|
||||
"shareAudioWarningD2": "viys devez partager votre écran à nouveau et cocher l'ootion \"Partager l'audio\".",
|
||||
"shareMediaWarningGenericH2": "Si vous voulez partager votre écran et l'audio",
|
||||
"shareVideoLinkError": "Veuillez renseigner un lien Youtube fonctionnel.",
|
||||
"shareVideoTitle": "Partager une vidéo",
|
||||
"shareYourScreen": "Partager votre écran",
|
||||
@@ -345,11 +313,6 @@
|
||||
"startLiveStreaming": "Démarrer la diffusion en direct",
|
||||
"startRecording": "Commencer l'enregistrement",
|
||||
"startRemoteControlErrorMessage": "Une erreur est survenue lors de la tentative de démarrage de la session de contrôle à distance !",
|
||||
"shareScreenWarningTitle": "Vous devez cesser de partager votre audio avant de partager votre écran",
|
||||
"shareScreenWarningH1": "Si vous voulez partager uniquement votre écran:",
|
||||
"shareScreenWarningD1": "vous devez arrêter le partage d'audio avant de partager votre écran.",
|
||||
"shareScreenWarningD2": "vous devez arrêter le partage d'audio, démarrer le partage d'écran et cocher l'option \"Partager l'audio\".",
|
||||
"sharedVideoLinkPlaceholder": "lien YouTube ou lien vidéo direct",
|
||||
"stopLiveStreaming": "Arrêter la diffusion en direct",
|
||||
"stopRecording": "Arrêter l'enregistrement",
|
||||
"stopRecordingWarning": "Désirez-vous vraiment arrêter l'enregistrement ?",
|
||||
@@ -366,12 +329,9 @@
|
||||
"userIdentifier": "Identifiant utilisateur",
|
||||
"userPassword": "mot de passe utilisateur",
|
||||
"videoLink": "Lien de la vidéo",
|
||||
"viewUpgradeOptions": "Voir les options de mise à jour",
|
||||
"viewUpgradeOptionsContent": "Pour obtenir un accès illimité à des capacités premium comme l'enregistrement, les transcriptions, diffusion RTMP et plus, vous devez mettre à jour votre plan.",
|
||||
"viewUpgradeOptionsTitle": "Vous avez découvert une capacité premium !",
|
||||
"WaitForHostMsg": "La conférence <b>{{room}}</b> n'a pas encore commencé. Si vous en êtes l'hôte, veuillez vous authentifier. Sinon, veuillez attendre son arrivée.",
|
||||
"WaitForHostMsgWOk": "La conférence <b>{{room}}</b> n'a pas encore commencé. Si vous en êtes l'hôte, veuillez appuyer sur Ok pour vous authentifier. Sinon, veuillez attendre son arrivée.",
|
||||
"WaitingForHostTitle": "En attente de l'hôte ...",
|
||||
"WaitingForHostTitle": "En attente du hôte ...",
|
||||
"Yes": "Oui",
|
||||
"yourEntireScreen": "Votre écran entier",
|
||||
"remoteUserControls": "Contrôles de l'utilisateur distant {{username}}",
|
||||
@@ -384,7 +344,7 @@
|
||||
"title": "Document partagé"
|
||||
},
|
||||
"e2ee": {
|
||||
"labelToolTip": "Le son et la vidéo de cette conférence sont chiffrés de Bout-en-Bout"
|
||||
"labelToolTip": "L'audio et la vidéo de cette conférence sont chiffrés de Bout-en-Bout"
|
||||
},
|
||||
"embedMeeting": {
|
||||
"title": "Intégrer cette réunion"
|
||||
@@ -406,11 +366,9 @@
|
||||
"image4" : "Lampadaire noir",
|
||||
"image5" : "Montagne",
|
||||
"image6" : "Forêt ",
|
||||
"image7" : "Lever de soleil",
|
||||
"image7" : "Lever du soleil",
|
||||
"desktopShareError": "Impossible de créer le partage de bureau",
|
||||
"desktopShare":"Partage de bureau",
|
||||
"webAssemblyWarning": "WebAssembly non supporté",
|
||||
"backgroundEffectError": "Erreur dans l'application de l'effet d'arrière-plan."
|
||||
"desktopShare":"Partage de bureau"
|
||||
},
|
||||
"feedback": {
|
||||
"average": "Moyen",
|
||||
@@ -445,12 +403,8 @@
|
||||
"genericError": "Oups, quelque chose a mal tourné.",
|
||||
"inviteLiveStream": "Pour voir la diffusion en direct de cette réunion, cliquez sur ce lien : {{url}}",
|
||||
"invitePhone": "Pour rejoindre depuis un téléphone, saisissez : {{number}},,{{conferenceID}}#\n",
|
||||
"invitePhoneAlternatives": "Vous cherchez un numéro d'appel différent ?\nAfficher les numéros d'appel de la réunion: {{url}}\n\n\nSi vous appelez également via un téléphone de réunion, vous pouvez vous connecter sans audio: {{silentUrl}}",
|
||||
"invitePhoneAlternatives": "Vous cherchez un numéro d'appel différent ?\nAfficher les numéros d'appel de la réunion: {{url}}\n\n\nSi vous appelez également via un téléphone de salle, vous pouvez vous connecter sans audio: {{silentUrl}}",
|
||||
"inviteSipEndpoint": "Pour rejoindre en utilisant l'adresse SIP, entrez ceci : {{sipUri}}",
|
||||
"inviteTextiOSPersonal": "{{name}} vous invite à une réunion.",
|
||||
"inviteTextiOSJoinSilent": "Si vous téléphonez avec un téléphone de réunion, utilisez ce lien pour rejoindre sans vous connecter en audio: {{silentUrl}}.",
|
||||
"inviteTextiOSInviteUrl": "Clickez le lien suivant pour rejoindre: {{inviteUrl}}.",
|
||||
"inviteTextiOSPhone": "Pour rejoindre par téléphone, utilisez ce numéro: {{number}},,{{conferenceID}}#. Si vous voulez utiliser un autre numéro, voici la liste complête: {{didUrl}}.",
|
||||
"inviteURLFirstPartGeneral": "Vous êtes invité(e) à participer à une réunion.",
|
||||
"inviteURLFirstPartPersonal": "{{name}} vous invite à une réunion.\n",
|
||||
"inviteURLSecondPart": "\nRejoindre la réunion :\n{{url}}\n",
|
||||
@@ -461,7 +415,6 @@
|
||||
"noRoom": "Aucune réunion n'a été spécifiée pour l'appel entrant.",
|
||||
"numbers": "Numéros d'appel",
|
||||
"password": "$t(lockRoomPasswordUppercase) :",
|
||||
"sip": "adresse SIP",
|
||||
"title": "Partager",
|
||||
"tooltip": "Partager le lien et les informations de connexion pour cette conférence",
|
||||
"label": "Information de la réunion"
|
||||
@@ -475,7 +428,7 @@
|
||||
"send": "Envoyer"
|
||||
},
|
||||
"inlineDialogFailure": {
|
||||
"msg": "Il y a eu un petit problème.",
|
||||
"msg": "Nous avons trébuché un peu.",
|
||||
"retry": "Réessayer",
|
||||
"support": "Support",
|
||||
"supportMsg": "Si ceci persiste, contactez"
|
||||
@@ -499,8 +452,6 @@
|
||||
"videoMute": "Démarrer / Arrêter votre caméra"
|
||||
},
|
||||
"liveStreaming": {
|
||||
"limitNotificationDescriptionWeb": "En raison d'une forte demande, votre diffusion sera limitée à {{limit}} min. Pour une diffusion illimitée, essayez <a href={{url}} rel='noopener noreferrer' target='_blank'> {{app}} </a>.",
|
||||
"limitNotificationDescriptionNative": "Votre diffusion sera limitée à {{limit}} min. Pour une diffusion illimitée, essayez {{app}}.",
|
||||
"busy": "Nous tentons de libérer des ressources de diffusion. Veuillez réessayez dans quelques minutes.",
|
||||
"busyTitle": "Tous les flux sont actuellement occupés",
|
||||
"changeSignIn": "Changer de compte.",
|
||||
@@ -508,6 +459,8 @@
|
||||
"chooseCTA": "Choisissez une option de diffusion. Vous êtes actuellement connecté comme {{email}}.",
|
||||
"enterStreamKey": "Entrez votre clé de diffusion Youtube ici",
|
||||
"error": "La diffusion a échouée. Veuillez réessayer ultérieurement.",
|
||||
"enterStreamKey": "Entrez votre clé de flux direct YouTube ici.",
|
||||
"error": "Le Streaming a échoué. Veuillez réessayer.",
|
||||
"errorAPI": "Une erreur s'est produite lors de l'accès à vos diffusions YouTube. Veuillez réessayer de vous connecter.",
|
||||
"errorLiveStreamNotEnabled": "La diffusion en direct n'est pas activée pour {{email}}. Merci de l'activer ou de vous connecter avec un compte où elle est déjà activée.",
|
||||
"expandedOff": "La diffusion en direct a été arrêtée",
|
||||
@@ -515,15 +468,15 @@
|
||||
"expandedPending": "La diffusion en direct a commencé ...",
|
||||
"failedToStart": "La diffusion n'a pas réussi à démarrer",
|
||||
"getStreamKeyManually": "Nous n'avons pas réussi à récupérer un flux de direct. Essayez d'obtenir votre clé de diffusion en direct sur YouTube.",
|
||||
"inProgress": "Enregisrtement ou diffusion en cours",
|
||||
"invalidStreamKey": "La clé de diffusion en direct n'est peut-être pas correcte.",
|
||||
"limitNotificationDescriptionWeb": "En raison d'une forte demande, votre diffusion sera limitée à {{limit}} min. Pour un streaming illimité, essayez <a href={{url}} rel='noopener noreferrer' target='_blank'> {{app}} </a>.",
|
||||
"limitNotificationDescriptionNative": "Votre diffusion sera limitée à {{limit}} min. Pour un streaming illimité, essayez {{app}}.",
|
||||
"off": "La diffusion en direct (streaming) a été arrêté",
|
||||
"offBy": "{{name}} a arrêté la diffusion en direct",
|
||||
"on": "En direct",
|
||||
"onBy": "{{name}} a démarré la diffusion en direct",
|
||||
"pending": "Lancement du direct ...",
|
||||
"serviceName": "Service de diffusion en direct",
|
||||
"sessionAlreadyActive": "Cette session est déjà en cours d'enregistrement ou de diffusion.",
|
||||
"signedInAs": "Vous êtes connecté en tant que :",
|
||||
"signIn": "Se connecter avec Google",
|
||||
"signInCTA": "Connectez vous ou saisissez votre clé de diffusion Youtube.",
|
||||
@@ -554,7 +507,7 @@
|
||||
"finishedModerator": "L'enregistrement de la session {{token}} s'est terminé. L'enregistrement a bien été sauvegardée. Merci de demander aux autres participants de soumettre leurs enregistrements.",
|
||||
"notModerator": "Vous n'êtes pas le modérateur. Vous ne pouvez pas démarrer ou arrêter un enregistrement local."
|
||||
},
|
||||
"moderator": "Droits de modérateur accordés",
|
||||
"moderator": "Modérateur ",
|
||||
"no": "Non",
|
||||
"participant": "Participant(e)",
|
||||
"participantStats": "Statistiques du participant",
|
||||
@@ -567,15 +520,13 @@
|
||||
"lockRoomPasswordUppercase": "Mot de passe",
|
||||
"me": "moi",
|
||||
"notify": {
|
||||
"allowAction": "Permettre",
|
||||
"allowedUnmute": "Vous pouvez réactiver votre écran, votre caméra ou partager votre écran.",
|
||||
"connectedOneMember": "{{name}} a rejoint la réunion",
|
||||
"connectedThreePlusMembers": "{{name}} et {{count}} autres personnes ont rejoint la réunion",
|
||||
"connectedTwoMembers": "{{first}} et {{second}} ont rejoint la réunion",
|
||||
"disconnected": "déconnecté",
|
||||
"focus": "Focus de conférence",
|
||||
"focusFail": "{{component}} n'est pas disponible - réessayez dans {{ms}} sec",
|
||||
"hostAskedUnmute": "Le modérateur souhaite vous donner la parole",
|
||||
"grantedTo": "Droits modérateur accordés à {{to}} !",
|
||||
"invitedOneMember": "{{name}} a été invité(e)",
|
||||
"invitedThreePlusMembers": "{{name}} et {{count}} autres ont été invités",
|
||||
"invitedTwoMembers": "{{first}} et {{second}} ont été invités",
|
||||
@@ -596,62 +547,33 @@
|
||||
"somebody": "Quelqu'un",
|
||||
"startSilentTitle": "Vous avez rejoint sans sortie audio !",
|
||||
"startSilentDescription": "Rejoignez la réunion de nouveau pour activer l'audio",
|
||||
"suboptimalBrowserWarning": "Nous craignons que votre expérience de réunion en ligne ne soit pas idéale ici. Nous cherchons des moyens d'améliorer cela, mais d'ici-là, essayez d'utiliser l'un des <a href='{{recommendedBrowserPageLink}}' target='_blank'>navigateurs supportés</a>.",
|
||||
"suboptimalBrowserWarning": "Nous craignons que votre expérience de réunion en ligne ne soit bonne ici. Nous cherchons des moyens d'améliorer cela, mais d'ici-là, essayez d'utiliser l'un des <a href='{{recommendedBrowserPageLink}}' target='_blank'>navigateurs supportés</a>.",
|
||||
"suboptimalExperienceTitle": "Avertissement du navigateur",
|
||||
"unmute": "Rétablir le son",
|
||||
"newDeviceCameraTitle": "Nouvelle caméra détectée",
|
||||
"newDeviceAudioTitle": "Nouveau périphérique audio détecté",
|
||||
"newDeviceAction": "Utiliser",
|
||||
"OldElectronAPPTitle": "Faille de sécurité !",
|
||||
"oldElectronClientDescription1": "Vous semblez utiliser une ancienne version du client Jitsi Meet qui présente des failles de sécurité connues. Veuillez vous assurer de mettre à jour vers notre ",
|
||||
"OldElectronAPPTitle": "Vulnérabilité de sécurité !",
|
||||
"oldElectronClientDescription1": "Vous semblez utiliser une ancienne version du client Jitsi Meet qui présente des vulnérabilités de sécurité connues. Veuillez vous assurer de mettre à jour vers notre ",
|
||||
"oldElectronClientDescription2": "dernière build",
|
||||
"oldElectronClientDescription3": " rapidement !",
|
||||
"moderationInEffectDescription": "Merci de levez la main pour demander la parole.",
|
||||
"moderationInEffectCSDescription": "Merci de lever la main si vous voulez partager votre écran.",
|
||||
"moderationInEffectVideoDescription": "Merci de lever la main si vous souhaitez démarrer votre caméra.",
|
||||
"moderationInEffectTitle": "Votre micro est coupé par le modérateur",
|
||||
"moderationInEffectCSTitle": "Le partage d'écran est interdit par le modérateur",
|
||||
"moderationInEffectVideoTitle": "Votre caméra est coupée par le modérateur",
|
||||
"moderationRequestFromModerator": "Le modérateur souhaite que vous activiez votre micro",
|
||||
"moderationRequestFromParticipant": "Souhaite parler",
|
||||
"moderationStartedTitle": "Modération démarrée",
|
||||
"moderationStoppedTitle": "Modération arrêtée",
|
||||
"moderationToggleDescription": "par {{participantDisplayName}}",
|
||||
"raiseHandAction": "Lever la main",
|
||||
"reactionSounds": "Bloquer les réactions sonores",
|
||||
"groupTitle": "Notifications"
|
||||
},
|
||||
"participantsPane": {
|
||||
"close": "Fermer",
|
||||
"header": "Participants",
|
||||
"headings": {
|
||||
"lobby": "Salle d'attente ({{count}})",
|
||||
"participantsList": "Participants de la réunion ({{count}})",
|
||||
"waitingLobby": "Dans la salle d'attente ({{count}})"
|
||||
"participantsList": "Participants de la réunion ({{count}})"
|
||||
},
|
||||
"actions": {
|
||||
"allow": "Autoriser les participants à:",
|
||||
"allowVideo": "permettre la vidéo",
|
||||
"audioModeration": "réouvrir leur micro",
|
||||
"blockEveryoneMicCamera": "Bloquer tous les micros et caméras",
|
||||
"invite": "Inviter quelqu'un",
|
||||
"askUnmute": "Demander de réactiver le micro",
|
||||
"moreModerationActions": "Options de modération supplémentaires",
|
||||
"moreParticipantOptions": "Options supplémentaires pour les participants",
|
||||
"mute": "Couper le micro",
|
||||
"muteAll": "Couper le micro de tout le monde",
|
||||
"muteEveryoneElse": "Couper le micro de tous les autres",
|
||||
"stopEveryonesVideo": "Couper toutes les caméras",
|
||||
"stopVideo": "Couper la vidéo",
|
||||
"unblockEveryoneMicCamera": "Débloquer tous les micros et caméras",
|
||||
"videoModeration": "Démarrer leur vidéo"
|
||||
},
|
||||
"search": "Rechercher des participants"
|
||||
"muteAll": "couper le micro de tout le monde",
|
||||
"stopVideo": "couper la vidéo"
|
||||
}
|
||||
},
|
||||
"passwordSetRemotely": "défini par un autre participant",
|
||||
"passwordDigitsOnly": "Jusqu'à {{number}} chiffres",
|
||||
"polls": {
|
||||
"by": "Par {{ name }}",
|
||||
"create": {
|
||||
"addOption": "Ajouter une option",
|
||||
"answerPlaceholder": "Option {{index}}",
|
||||
@@ -676,7 +598,7 @@
|
||||
},
|
||||
"notification": {
|
||||
"title": "Un nouveau sondage a été ajouté à la réunion",
|
||||
"description": "Ouvrez l'onglet des sondages pour voter"
|
||||
"description": "Ouvrez l'onget des sondages pour voter"
|
||||
}
|
||||
},
|
||||
"poweredby": "produit par",
|
||||
@@ -696,8 +618,8 @@
|
||||
"poor": "Vous avez une mauvaise connexion"
|
||||
},
|
||||
"connectionDetails": {
|
||||
"audioClipping": "Attendez vous à ce que votre son soit coupé.",
|
||||
"audioHighQuality": "Votre son sera de bonne qualité.",
|
||||
"audioClipping": "Attendez vous à ce que votre audio soit coupé.",
|
||||
"audioHighQuality": "Votre audio sera de bonne qualité.",
|
||||
"audioLowNoVideo": "Attendez vous à une faible qualité audio et aucune vidéo",
|
||||
"goodQuality": "Impressionnant ! La qualité de vos médias sera excellente",
|
||||
"noMediaConnectivity": "Nous n'avons pas pu trouver un moyen d'établir une connectivité multimédia pour ce test. Cela est généralement causé par un pare-feu ou un NAT.",
|
||||
@@ -719,7 +641,6 @@
|
||||
"errorDialOutFailed": "Impossible de composer le numéro. L'appel a échoué",
|
||||
"errorDialOutStatus": "Erreur lors de l'obtention de l'état d'appel sortant",
|
||||
"errorMissingName": "Veuillez entrer votre nom pour entrer en conférence",
|
||||
"errorNoPermissions": "Vous devez permettre l'accès microphone et caméra",
|
||||
"errorStatusCode": "Erreur de numérotation, code d'état: {{status}}",
|
||||
"errorValidation": "La validation du numéro a échoué",
|
||||
"iWantToDialIn": "Je veux me connecter",
|
||||
@@ -730,6 +651,7 @@
|
||||
"linkCopied": "Lien copié dans le presse-papiers",
|
||||
"lookGood": "Il semble que votre microphone fonctionne correctement",
|
||||
"or": "ou",
|
||||
"calling": "Appel",
|
||||
"premeeting": "Pré-séance",
|
||||
"showScreen": "Activer l'écran de pré-séance",
|
||||
"startWithPhone": "Commencez avec l'audio du téléphone",
|
||||
@@ -756,29 +678,25 @@
|
||||
"profile": {
|
||||
"avatar": "avatar",
|
||||
"setDisplayNameLabel": "Choisissez un pseudo",
|
||||
"setEmailInput": "Entrez une adresse email",
|
||||
"setEmailInput": "Entrez une adresse e-mail",
|
||||
"setEmailLabel": "Définir votre courriel Gravatar",
|
||||
"title": "Profil"
|
||||
},
|
||||
"raisedHand": "Aimerait prendre la parole",
|
||||
"recording": {
|
||||
"limitNotificationDescriptionWeb": "En raison d'une forte demande, votre enregistrement sera limité à {{limit}} min. Pour des enregistrements illimités, essayez <a href={{url}} rel='noopener noreferrer' target='_blank'> {{app}} </a>.",
|
||||
"limitNotificationDescriptionNative": "En raison d'une forte demande, votre enregistrement sera limité à {{limit}} min. Pour des enregistrements illimités, essayez <3> {{app}} </3>.",
|
||||
"authDropboxText": "Téléchargement vers Dropbox",
|
||||
"availableSpace": "Espace disponible : {{spaceLeft}} Mo (approximativement {{duration}} minutes d'enregistrement)",
|
||||
"beta": "BETA",
|
||||
"busy": "Nous sommes en train de libérer les ressources d'enregistrement. Réessayez dans quelques minutes.",
|
||||
"busyTitle": "Tous les enregistreurs sont actuellement occupés",
|
||||
"copyLink": "Copier lien",
|
||||
"error": "Échec de l'enregistrement. Veuillez réessayer.",
|
||||
"errorFetchingLink": "Erreur de récupération du lien d'enregistrement.",
|
||||
"expandedOff": "L'enregistrement a été arrêté",
|
||||
"expandedOn": "Cette conférence est actuellement en cours d'enregistrement.",
|
||||
"expandedPending": "Démarrage de l'enregistrement ...",
|
||||
"failedToStart": "L'enregistrement n'a pas réussi à démarrer",
|
||||
"fileSharingdescription": "Partager l'enregistrement avec les participants de la réunion",
|
||||
"inProgress": "Enregistrement ou diffusion en cours",
|
||||
"linkGenerated": "Nous avons généré un lien à votre enregistrement.",
|
||||
"limitNotificationDescriptionWeb": "En raison d'une forte demande, votre enregistrement sera limité à {{limit}} min. Pour des enregistrements illimités, essayez <a href={{url}} rel='noopener noreferrer' target='_blank'> {{app}} </a>.",
|
||||
"limitNotificationDescriptionNative": "En raison d'une forte demande, votre enregistrement sera limité à {{limit}} min. Pour des enregistrements illimités, essayez <3> {{app}} </3>.",
|
||||
"live": "DIRECT",
|
||||
"loggedIn": "Connecté en tant que {{userName}}",
|
||||
"off": "Enregistrement arrêté",
|
||||
@@ -790,37 +708,30 @@
|
||||
"serviceDescription": "Votre enregistrement sera enregistré par le service dédié",
|
||||
"serviceDescriptionCloud": "Enregistrement Cloud",
|
||||
"serviceName": "Service d'enregistrement",
|
||||
"sessionAlreadyActive": "Cette session est déjà en cours d'enregistrement ou de diffusion.",
|
||||
"signIn": "Se connecter",
|
||||
"signOut": "Se déconnecter",
|
||||
"unavailable": "Oups ! Le {{serviceName}} est actuellement indisponible. Nous tentons de résoudre le problème. Veuillez réessayer plus tard.",
|
||||
"unavailableTitle": "Enregistrement indisponible",
|
||||
"uploadToCloud": "Envoyer vers le cloud"
|
||||
"unavailableTitle": "Enregistrement indisponible"
|
||||
},
|
||||
"sectionList": {
|
||||
"pullToRefresh": "Tirer pour recharger"
|
||||
},
|
||||
"security": {
|
||||
"about": "Vous pouvez ajouter un mot de passe à votre réunion. Les participants devront fournir le mot de passe avant de pouvoir rejoindre la réunion.",
|
||||
"aboutReadOnly": "Les modérateurs peuvent ajouter un mot de passe à la réunion. Les participants devront fournir le mot de passe avant de pouvoir rejoindre la réunion.",
|
||||
"about": "Vous pouvez ajouter un mot de passe à votre réunion. Les participants devront fournir le mot de passe avant qu'ils soient autorisés à rejoindre la réunion.",
|
||||
"aboutReadOnly": "Les modérateurs peuvent ajouter un mot de passe à la réunion. Les participants devront fournir le mot de passe avant qu'ils soient autorisés à rejoindre la réunion.",
|
||||
"insecureRoomNameWarning": "Le nom de la salle est peu sûr. Des participants non désirés peuvent rejoindre votre réunion. Pensez à sécuriser votre réunion en cliquant sur le bouton de sécurité.",
|
||||
"securityOptions": "Options de sécurité"
|
||||
},
|
||||
"settings": {
|
||||
"calendar": {
|
||||
"about": "L'intégration de {{appName}} avec votre calendrier permet d'accéder de manière sécurisée aux événements à venir.",
|
||||
"about": "L'intégration de {{appName}} avec votre calendrier permet d'accéder de manière sécurisée aux événement à venir.",
|
||||
"disconnect": "Se déconnecter",
|
||||
"microsoftSignIn": "Se connecter avec Microsoft",
|
||||
"signedIn": "Accès aux événements du calendrier {{email}}. Cliquez sur le bouton se déconnecter ci-dessous pour arrêter l'accès aux événements du calendrier.",
|
||||
"title": "Calendrier"
|
||||
},
|
||||
"desktopShareFramerate": "Images par seconde pour le Partage d'écran",
|
||||
"desktopShareWarning": "Vous devez repartager l'écran pour que ces paramètres soient utilisés.",
|
||||
"desktopShareHighFpsWarning": "Augmenter le nombre d'images par seconde pour le partage d'écran peut impacter votre bande passante. Vous devez repartager l'écran pour que ces paramètres soient utilisés.",
|
||||
"devices": "Périphériques",
|
||||
"followMe": "Tout le monde me suit",
|
||||
"framesPerSecond": "images par seconde",
|
||||
"incomingMessage": "un message arrive",
|
||||
"language": "Langue",
|
||||
"loggedIn": "Connecté en tant que {{name}}",
|
||||
"microphones": "Microphones",
|
||||
@@ -828,19 +739,13 @@
|
||||
"more": "Plus",
|
||||
"name": "Nom",
|
||||
"noDevice": "Aucun",
|
||||
"participantJoined": "un participant arrive",
|
||||
"participantLeft": "un participant quitte",
|
||||
"playSounds": "Jouer un son quand",
|
||||
"reactions": "il y a une réaction à la réunion",
|
||||
"sameAsSystem": "Identique au système ({{label}})",
|
||||
"selectAudioOutput": "Sortie audio",
|
||||
"selectCamera": "Caméra",
|
||||
"selectMic": "Microphone",
|
||||
"sounds": "Sons",
|
||||
"speakers": "Haut-parleurs",
|
||||
"speakers": "Intervenants",
|
||||
"startAudioMuted": "Tout le monde commence en muet",
|
||||
"startVideoMuted": "Tout le monde commence sans vidéo",
|
||||
"talkWhileMuted": "vous parlez en étant muet",
|
||||
"title": "Paramètres"
|
||||
},
|
||||
"settingsView": {
|
||||
@@ -871,20 +776,12 @@
|
||||
},
|
||||
"speaker": "Haut-parleur",
|
||||
"speakerStats": {
|
||||
"search": "Recherche",
|
||||
"hours": "{{count}}h",
|
||||
"minutes": "{{count}}m",
|
||||
"name": "Nom",
|
||||
"seconds": "{{count}}s",
|
||||
"speakerStats": "Statistiques de l'interlocuteur",
|
||||
"speakerTime": "Temps de l'interlocuteur",
|
||||
"happy": "Content",
|
||||
"neutral": "Indifférent",
|
||||
"sad": "Triste",
|
||||
"surprised": "Surpris",
|
||||
"angry": "En colère",
|
||||
"fearful": "Effrayé",
|
||||
"disgusted": "Dégoûté"
|
||||
"speakerTime": "Temps de l'interlocuteur"
|
||||
},
|
||||
"startupoverlay": {
|
||||
"policyText": " ",
|
||||
@@ -900,24 +797,19 @@
|
||||
"accessibilityLabel": {
|
||||
"audioOnly": "Activer / Désactiver le mode voix uniquement",
|
||||
"audioRoute": "Sélectionner la source audio",
|
||||
"boo": "Hou",
|
||||
"breakoutRoom": "Rejoindre/quitter une salle annexe",
|
||||
"callQuality": "Ajuster la qualité vidéo",
|
||||
"cc": "Activer / Désactiver les sous-titres",
|
||||
"chat": "Afficher / Masquer la discussion instantanée",
|
||||
"clap": "Applaudir",
|
||||
"document": "Activer / Désactiver le document partagé",
|
||||
"download": "Télécharger nos applications",
|
||||
"embedMeeting": "Intégrer la réunion",
|
||||
"feedback": "Laisser des commentaires",
|
||||
"fullScreen": "Activer / Désactiver le plein écran",
|
||||
"grantModerator": "donner des droits de modérateur",
|
||||
"grantModerator": "Nommer modérateur",
|
||||
"hangup": "Quitter la conversation",
|
||||
"help": "Aide",
|
||||
"invite": "Inviter des participants",
|
||||
"kick": "Expulser le participant",
|
||||
"laugh": "Rire",
|
||||
"like": "Approuver",
|
||||
"lobbyButton": "Activer / Désactiver le mode salle d'attente",
|
||||
"localRecording": "Activer / Désactiver les contrôles d'enregistrement local",
|
||||
"lockRoom": "Activer / Désactiver le mot de passe de la réunion",
|
||||
@@ -934,7 +826,6 @@
|
||||
"privateMessage": "Envoyer un message privé",
|
||||
"profile": "Éditer votre profil",
|
||||
"raiseHand": "Lever la main",
|
||||
"reactionsMenu": "Ouvrir / fermer le menu réactions",
|
||||
"recording": "Activer / Désactiver l'enregistrement",
|
||||
"remoteMute": "Couper le micro du participant",
|
||||
"remoteVideoMute": "Couper la caméra du participant",
|
||||
@@ -946,9 +837,7 @@
|
||||
"shareYourScreen": "Activer / Désactiver le partage d'écran",
|
||||
"shortcuts": "Afficher / Masquer les raccourcis",
|
||||
"show": "Afficher en premier plan",
|
||||
"silence": "Silence",
|
||||
"speakerStats": "Afficher / Cacher les statistiques de parole",
|
||||
"surprised": "Surpris",
|
||||
"tileView": "Activer / Désactiver la vue mosaïque",
|
||||
"toggleCamera": "Changer de caméra",
|
||||
"toggleFilmstrip": "Basculer de pellicule",
|
||||
@@ -960,18 +849,13 @@
|
||||
},
|
||||
"addPeople": "Ajouter des personnes à votre appel",
|
||||
"audioSettings": "Paramètres audio",
|
||||
"videoSettings": "Paramètres vidéo",
|
||||
"audioOnlyOff": "Désactiver le mode bande passante réduite",
|
||||
"audioOnlyOn": "Activer le mode bande passante réduite",
|
||||
"audioRoute": "Sélectionner la source audio",
|
||||
"authenticate": "Authentifiez-vous",
|
||||
"boo": "Huer",
|
||||
"callQuality": "Ajuster la qualité vidéo",
|
||||
"chat": "Ouvrir / Fermer le chat",
|
||||
"clap": "Applaudir",
|
||||
"closeChat": "Fermer le chat",
|
||||
"closeReactionsMenu": "Fermer le menu réactions",
|
||||
"disableReactionSounds": "Vous pouvez interdire les réactions sonores à cette réunion",
|
||||
"documentClose": "Fermer le document partagé",
|
||||
"documentOpen": "Ouvrir le document partagé",
|
||||
"download": "Télécharger nos applications",
|
||||
@@ -985,10 +869,6 @@
|
||||
"hangup": "Quitter",
|
||||
"help": "Aide",
|
||||
"invite": "Inviter des participants",
|
||||
"joinBreakoutRoom": "Rejoindre salle annexe",
|
||||
"laugh": "Rire",
|
||||
"leaveBreakoutRoom": "Quitter salle annexe",
|
||||
"like": "Approuver",
|
||||
"lobbyButtonDisable": "Désactiver le mode salle d'attente / contrôle des participant(e)s",
|
||||
"lobbyButtonEnable": "Activer le mode salle d'attente / contrôle des participant(e)s",
|
||||
"login": "Connexion",
|
||||
@@ -1005,40 +885,31 @@
|
||||
"noAudioSignalDialInDesc": "Vous pouvez également appeler en utilisant :",
|
||||
"noAudioSignalDialInLinkDesc": "Numéros d'appel",
|
||||
"noisyAudioInputTitle": "Votre microphone semble être bruyant !",
|
||||
"noisyAudioInputDesc": "Il semble que votre microphone soit bruyant, veuillez le couper ou changer de périphérique.",
|
||||
"noisyAudioInputDesc": "Il semble que votre microphone fasse du bruit, veuillez le couper ou changer de périphérique.",
|
||||
"openChat": "Ouvrir le chat",
|
||||
"openReactionsMenu": "Ouvrir le menu Réactions",
|
||||
"participants": "Participants",
|
||||
"pip": "Entrer en mode Picture-in-Picture",
|
||||
"privateMessage": "Envoyer un message privé",
|
||||
"profile": "Éditer votre profil",
|
||||
"raiseHand": "Lever / Baisser la main",
|
||||
"raiseYourHand": "Lever la main",
|
||||
"reactionBoo": "Envoyer réaction huer",
|
||||
"reactionClap": "Envoyer réaction applaudir",
|
||||
"reactionLaugh": "Envoyer réaction rire",
|
||||
"reactionLike": "Envoyer réaction approuver",
|
||||
"reactionSilence": "Envoyer réaction silence",
|
||||
"reactionSurprised": "Envoyer réaction surprise",
|
||||
"security": "Options de sécurité",
|
||||
"Settings": "Paramètres",
|
||||
"shareaudio": "Partager l'audio",
|
||||
"sharedvideo": "Partager une vidéo YouTube",
|
||||
"shareRoom": "Inviter quelqu'un",
|
||||
"shortcuts": "Afficher les raccourcis",
|
||||
"silence": "Silence",
|
||||
"speakerStats": "Statistiques de l'interlocuteur",
|
||||
"startScreenSharing": "Démarrer le partage d'écran",
|
||||
"startSubtitles": "Activer les sous-titres",
|
||||
"stopAudioSharing": "Arrêter le partage son",
|
||||
"stopScreenSharing": "Arrêter le partage d'écran",
|
||||
"stopSubtitles": "Désactiver les sous-titres",
|
||||
"stopSharedVideo": "Arrêter la vidéo YouTube",
|
||||
"surprised": "Surpris",
|
||||
"talkWhileMutedPopup": "Vous voulez parler ? Votre micro est coupé.",
|
||||
"tileViewToggle": "Activer / Désactiver la vue mosaïque",
|
||||
"toggleCamera": "Changer de caméra",
|
||||
"videomute": "Démarrer / Arrêter la caméra",
|
||||
"videoSettings": "Paramètres vidéo",
|
||||
"selectBackground": "Sélectionner un arrière-plan"
|
||||
},
|
||||
"transcribing": {
|
||||
@@ -1077,10 +948,7 @@
|
||||
"pending": "{{displayName}} a été invité(e)"
|
||||
},
|
||||
"videoStatus": {
|
||||
"adjustFor": "Ajuster pour:",
|
||||
"audioOnly": "VOIX",
|
||||
"bestPerformance": "la meilleure performance",
|
||||
"highestQuality": "la meilleure qualité",
|
||||
"audioOnlyExpanded": "Vous êtes en mode bande passante réduite. Dans ce mode, vous ne recevrez que le partage audio et le partage d'écran.",
|
||||
"callQuality": "Qualité vidéo",
|
||||
"hd": "HD",
|
||||
@@ -1091,7 +959,6 @@
|
||||
"ld": "BD",
|
||||
"ldTooltip": "Regardez la vidéo en basse définition",
|
||||
"lowDefinition": "Basse définition",
|
||||
"performanceSettings": "Paramètres de performance",
|
||||
"sd": "MD",
|
||||
"sdTooltip": "Regardez la vidéo en définition standard",
|
||||
"standardDefinition": "Moyenne Définition"
|
||||
@@ -1103,7 +970,7 @@
|
||||
"domuteOthers": "Couper le micro de tous les autres",
|
||||
"domuteVideoOfOthers": "Couper la caméra des autres",
|
||||
"flip": "Balancer",
|
||||
"grantModerator": "Donner des droits de modérateur",
|
||||
"grantModerator": "Nommer modérateur",
|
||||
"kick": "Exclure",
|
||||
"moderator": "Modérateur",
|
||||
"mute": "Un participant a coupé son micro",
|
||||
@@ -1165,12 +1032,6 @@
|
||||
"button": "Inviter d'autres personnes",
|
||||
"youAreAlone": "Vous êtes le seul participant de la réunion"
|
||||
},
|
||||
"termsView": {
|
||||
"header": "Conditions d'utilisation"
|
||||
},
|
||||
"privacyView": {
|
||||
"header": "Confidentialité"
|
||||
},
|
||||
"helpView": {
|
||||
"header": "Centre d'aide"
|
||||
},
|
||||
@@ -1189,7 +1050,6 @@
|
||||
"enableDialogText": "Le mode salle d'attente vous permet de protéger votre réunion en autorisant les personnes à entrer qu'après l'approbation formelle d'un modérateur.",
|
||||
"enterPasswordButton": "Saisissez un mot de passe de réunion",
|
||||
"enterPasswordTitle": "Saisissez le mot de passe pour rejoindre la réunion",
|
||||
"errorMissingPassword": "Veuillez saisir le mot de passe de la réunion",
|
||||
"invalidPassword": "Mot de passe invalide",
|
||||
"joiningMessage": "Vous allez rejoindre une réunion dès que quelqu'un aura accepté votre demande",
|
||||
"joinWithPasswordMessage": "Tentative de rejoindre avec mot de passe, patientez s'il vous plait ...",
|
||||
@@ -1208,7 +1068,6 @@
|
||||
"passwordField": "Veuillez saisir le mot de passe de la réunion",
|
||||
"passwordJoinButton": "Rejoindre",
|
||||
"reject": "Refuser",
|
||||
"rejectAll": "Refuser tout",
|
||||
"toggleLabel": "Activer la salle d'attente"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -296,7 +296,7 @@
|
||||
"sendPrivateMessageTitle": "निजी तौर पर भेजें?",
|
||||
"serviceUnavailable": "सेवा अनुपलब्ध",
|
||||
"sessTerminated": "कॉल समाप्त",
|
||||
"sessionRestarted": "Call restarted because of a connection issue",
|
||||
"sessionRestarted": "Call restarted by the bridge",
|
||||
"Share": "Share",
|
||||
"shareVideoLinkError": "कृपया एक सही यूट्यूब लिंक प्रदान करें।.",
|
||||
"shareVideoTitle": "एक वीडियो साझा करें",
|
||||
|
||||
@@ -479,8 +479,8 @@
|
||||
},
|
||||
"profile": {
|
||||
"setDisplayNameLabel": "Állítsa be a megjelenő nevet",
|
||||
"setEmailInput": "Adjon meg egy email címet",
|
||||
"setEmailLabel": "Adja meg a gravatar email címet",
|
||||
"setEmailInput": "Adjon meg egy e-mail címet",
|
||||
"setEmailLabel": "Adja meg a gravatar e-mail címet",
|
||||
"title": "Profil"
|
||||
},
|
||||
"raisedHand": "Beszélni szeretnék",
|
||||
@@ -549,7 +549,7 @@
|
||||
"disableCallIntegration": "A natív hívások integrációjának letiltása",
|
||||
"disableP2P": "Kapcsolja ki a peer-to-peer módot",
|
||||
"displayName": "Megjelenő név",
|
||||
"email": "Email",
|
||||
"email": "E-mail",
|
||||
"header": "Beállítások",
|
||||
"profileSection": "Profil",
|
||||
"serverURL": "Kiszolgáló URL",
|
||||
|
||||
@@ -487,7 +487,7 @@
|
||||
},
|
||||
"profile": {
|
||||
"setDisplayNameLabel": "Set your display name",
|
||||
"setEmailInput": "Enter email",
|
||||
"setEmailInput": "Enter e-mail",
|
||||
"setEmailLabel": "Set your gravatar email",
|
||||
"title": "Profile"
|
||||
},
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user