mirror of
https://gitcode.com/GitHub_Trending/ji/jitsi-meet.git
synced 2026-01-03 13:22:28 +00:00
Compare commits
304 Commits
4205
...
replace-sa
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d490b29b7a | ||
|
|
ca306f47b6 | ||
|
|
56da400f19 | ||
|
|
ab21e3cd5e | ||
|
|
2c026754ef | ||
|
|
8dbe3e37b9 | ||
|
|
7f67f78db6 | ||
|
|
312949eef6 | ||
|
|
41ea94c0c2 | ||
|
|
e70adef2ef | ||
|
|
57bbe3f75a | ||
|
|
e2731ce73e | ||
|
|
d5dae945a8 | ||
|
|
4d1dba937f | ||
|
|
b6792db65f | ||
|
|
9815b633fc | ||
|
|
b4bf82429c | ||
|
|
53d485b397 | ||
|
|
0354dbe889 | ||
|
|
7cafa205ee | ||
|
|
2b4f33bef8 | ||
|
|
31dee0bb68 | ||
|
|
fc75d45c6c | ||
|
|
25839b18d2 | ||
|
|
43f36c8cfd | ||
|
|
b02d96231c | ||
|
|
651d713206 | ||
|
|
9e5f469e0c | ||
|
|
493ce8249e | ||
|
|
fdffb688c1 | ||
|
|
4807badac8 | ||
|
|
5e3bd746e9 | ||
|
|
8fa41bebb7 | ||
|
|
cb7c280da6 | ||
|
|
0e50f1887e | ||
|
|
476ca54711 | ||
|
|
70aa19e6d9 | ||
|
|
7778a17b90 | ||
|
|
7ff41217ac | ||
|
|
e8c44c10dd | ||
|
|
b087b22d4f | ||
|
|
e988bf6565 | ||
|
|
d169bd5007 | ||
|
|
ac17db9df5 | ||
|
|
322618357c | ||
|
|
79c1358f4b | ||
|
|
5e85b5f63a | ||
|
|
74f7c4141f | ||
|
|
4866ddc2ad | ||
|
|
71d0577a49 | ||
|
|
b7529863d5 | ||
|
|
4ded94d130 | ||
|
|
eb8b730227 | ||
|
|
4bd57692b7 | ||
|
|
5d012c24a7 | ||
|
|
4f52a29120 | ||
|
|
8a4fb72eae | ||
|
|
6453ceb048 | ||
|
|
e51bbe6125 | ||
|
|
d725c0ab8a | ||
|
|
2c2edace2a | ||
|
|
d3d5847605 | ||
|
|
89ad76142d | ||
|
|
1e76b8b6ea | ||
|
|
55175e2e95 | ||
|
|
453c07cb17 | ||
|
|
af71d80150 | ||
|
|
b765adca75 | ||
|
|
92e6cf7618 | ||
|
|
10c2652a4f | ||
|
|
c3329ec931 | ||
|
|
9cf7199c0e | ||
|
|
d82bb0a89b | ||
|
|
295dd8a45d | ||
|
|
25ae83bcf4 | ||
|
|
82b1408454 | ||
|
|
36565f0c50 | ||
|
|
0c48e205d7 | ||
|
|
5e35b69fc9 | ||
|
|
3fd85720bc | ||
|
|
e439d065b7 | ||
|
|
5dcecdbb54 | ||
|
|
8d2a52d0e8 | ||
|
|
2aa6f7ff4b | ||
|
|
d716665f27 | ||
|
|
4ca4e242b1 | ||
|
|
cdd782a82f | ||
|
|
713ae817c0 | ||
|
|
d05fa32413 | ||
|
|
e6676bb09a | ||
|
|
8e9a51f742 | ||
|
|
3da7798e9f | ||
|
|
6fc9606c0d | ||
|
|
004c1b65ad | ||
|
|
eabcc078ef | ||
|
|
5b1f852783 | ||
|
|
5cf9a76f9e | ||
|
|
3f33adc5d0 | ||
|
|
d9250aa986 | ||
|
|
5b10d8f5ef | ||
|
|
02885ea716 | ||
|
|
7e70a57eb3 | ||
|
|
dbaa1168b3 | ||
|
|
b1d691ca07 | ||
|
|
10a4612230 | ||
|
|
21767fa7cf | ||
|
|
0bd100f027 | ||
|
|
f14a595462 | ||
|
|
5e4b8c747c | ||
|
|
c4155575f9 | ||
|
|
11ee71a51c | ||
|
|
c998d83f34 | ||
|
|
b670b29d7f | ||
|
|
9b7e8c98ad | ||
|
|
ad44558153 | ||
|
|
1a957ed85b | ||
|
|
1dbb47b84f | ||
|
|
4adaa6f1fd | ||
|
|
b3b561f27a | ||
|
|
a6a19a3002 | ||
|
|
1426a5b4bc | ||
|
|
858ee557d4 | ||
|
|
bd64c14aaa | ||
|
|
ce286f9be8 | ||
|
|
cc9cb6a874 | ||
|
|
168dbd6276 | ||
|
|
400c86ad5e | ||
|
|
b0650b8448 | ||
|
|
027cc1be96 | ||
|
|
9b32811ff2 | ||
|
|
a67d0fbf6c | ||
|
|
af5d4c850b | ||
|
|
7bfb2fc219 | ||
|
|
b814827df1 | ||
|
|
240b033e76 | ||
|
|
00b41dbb41 | ||
|
|
2689be5d24 | ||
|
|
f3da009d61 | ||
|
|
ddc2b4f26e | ||
|
|
b106e51a10 | ||
|
|
0cef706b6a | ||
|
|
b9c20a3fd4 | ||
|
|
23507da59a | ||
|
|
4bfc80ecb9 | ||
|
|
52ce8031a3 | ||
|
|
aa9f06fa84 | ||
|
|
a758e98101 | ||
|
|
63d4c2b84b | ||
|
|
4161e7bfe1 | ||
|
|
1c3cf325cb | ||
|
|
fdbd681c8f | ||
|
|
f6433668d5 | ||
|
|
1ae5630590 | ||
|
|
b1e12d33ab | ||
|
|
28094947a7 | ||
|
|
a23dac2ab6 | ||
|
|
d70f9d6fd6 | ||
|
|
9e7a477797 | ||
|
|
0fc748dc44 | ||
|
|
b831bb8350 | ||
|
|
16547b91a5 | ||
|
|
1e3e15fc72 | ||
|
|
9d6e21b77b | ||
|
|
48a58f8dae | ||
|
|
eb1ef0fa9c | ||
|
|
eaa715879a | ||
|
|
fde7cf4ab8 | ||
|
|
46b444c498 | ||
|
|
3cbadc72a1 | ||
|
|
ddaaeccafa | ||
|
|
0751c6ab48 | ||
|
|
76e4929add | ||
|
|
e39c8d8ed6 | ||
|
|
4687187cca | ||
|
|
7858f12df2 | ||
|
|
f2c3401a79 | ||
|
|
828e578af4 | ||
|
|
43189f3e66 | ||
|
|
335b43036d | ||
|
|
b3ca51c7d0 | ||
|
|
f9d545c531 | ||
|
|
5f5468995f | ||
|
|
4289b23135 | ||
|
|
bf7aa39947 | ||
|
|
ad948bdbe2 | ||
|
|
29366a0029 | ||
|
|
0bec7c7ab7 | ||
|
|
29805edd02 | ||
|
|
11fd5363ce | ||
|
|
1790c71c80 | ||
|
|
36d95ed51f | ||
|
|
ef0af1a8c0 | ||
|
|
b85cd2348f | ||
|
|
035f720a50 | ||
|
|
c8444a9a0d | ||
|
|
7f5751b918 | ||
|
|
fc6bd3667c | ||
|
|
2c42dd0773 | ||
|
|
1891ce0b24 | ||
|
|
e34c5673b2 | ||
|
|
41ba55a6a9 | ||
|
|
099820b6ac | ||
|
|
25ded0bdeb | ||
|
|
758b60f92b | ||
|
|
fcc69b92bb | ||
|
|
a697caea03 | ||
|
|
51fd10278b | ||
|
|
5b89709483 | ||
|
|
e4ce3928dc | ||
|
|
b0188a7184 | ||
|
|
53281c2d42 | ||
|
|
3da1b65757 | ||
|
|
0e5091adba | ||
|
|
f376542441 | ||
|
|
bd65108692 | ||
|
|
546b0abe32 | ||
|
|
62ad7d3451 | ||
|
|
5bc3128c71 | ||
|
|
b91d6b97a9 | ||
|
|
ce812591f9 | ||
|
|
f32140c4b7 | ||
|
|
7d513738d2 | ||
|
|
8d1bde3cb1 | ||
|
|
95825dcdd7 | ||
|
|
a61f272303 | ||
|
|
3538761543 | ||
|
|
f22d5ed629 | ||
|
|
f30dd9d881 | ||
|
|
4a3cd2596a | ||
|
|
4e1f42a665 | ||
|
|
1fff5d2567 | ||
|
|
bbcc40a97e | ||
|
|
bbf76296ed | ||
|
|
e0b3a81a41 | ||
|
|
1c122705bf | ||
|
|
29c16e42bd | ||
|
|
8a19a34d19 | ||
|
|
d5832f226d | ||
|
|
4cfc8cd7a2 | ||
|
|
873ede0e06 | ||
|
|
f73e9947c0 | ||
|
|
82711b3f23 | ||
|
|
2f841fab73 | ||
|
|
b3a2905849 | ||
|
|
5f579e9a15 | ||
|
|
ea2ea89ef7 | ||
|
|
a5f17a8033 | ||
|
|
4c6e9e7788 | ||
|
|
a7e0df2623 | ||
|
|
da9a70129e | ||
|
|
6d3d15a64b | ||
|
|
b10a45bf98 | ||
|
|
858a3d953c | ||
|
|
1ff27b7298 | ||
|
|
bc43f00d28 | ||
|
|
bfd5db355d | ||
|
|
a4ca247056 | ||
|
|
eac891585b | ||
|
|
7d62020787 | ||
|
|
7d18183bf9 | ||
|
|
346dac476a | ||
|
|
b4ecef429a | ||
|
|
ea07515138 | ||
|
|
79231914b9 | ||
|
|
0e1ecd3256 | ||
|
|
0d15c01077 | ||
|
|
24c75b7332 | ||
|
|
2327a6d0b4 | ||
|
|
b94c357cc2 | ||
|
|
216801720a | ||
|
|
312813e677 | ||
|
|
2b5787163e | ||
|
|
28632752ba | ||
|
|
7dfff1b455 | ||
|
|
99e7d636b7 | ||
|
|
4b1743bb2f | ||
|
|
3b1ad9faff | ||
|
|
87b14c3711 | ||
|
|
5811e0476c | ||
|
|
59750ba1f1 | ||
|
|
b3de7fd52b | ||
|
|
f68b9b7df9 | ||
|
|
b534c4f624 | ||
|
|
ab1c5805f4 | ||
|
|
0c6b0641f5 | ||
|
|
093254d948 | ||
|
|
0494200383 | ||
|
|
16f1c167b8 | ||
|
|
97fd36a19a | ||
|
|
701d34248b | ||
|
|
e72dae5c32 | ||
|
|
811ee40d99 | ||
|
|
76eabf1f29 | ||
|
|
01a8cc1478 | ||
|
|
047c9b43ea | ||
|
|
22d040ab76 | ||
|
|
4ac9ea258c | ||
|
|
6bd64ee552 | ||
|
|
7a1595f162 | ||
|
|
07cad2a98f | ||
|
|
6fbba52c6d | ||
|
|
311d1c67ba | ||
|
|
0aa54d8650 | ||
|
|
74e0e10928 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -84,3 +84,4 @@ android/app/google-services.json
|
||||
ios/app/dropbox.key
|
||||
ios/app/GoogleService-Info.plist
|
||||
|
||||
.vscode
|
||||
|
||||
17
Makefile
17
Makefile
@@ -3,8 +3,9 @@ CLEANCSS = ./node_modules/.bin/cleancss
|
||||
DEPLOY_DIR = libs
|
||||
LIBJITSIMEET_DIR = node_modules/lib-jitsi-meet/
|
||||
LIBFLAC_DIR = node_modules/libflacjs/dist/min/
|
||||
OLM_DIR = node_modules/olm
|
||||
RNNOISE_WASM_DIR = node_modules/rnnoise-wasm/dist/
|
||||
NODE_SASS = ./node_modules/.bin/node-sass
|
||||
NODE_SASS = ./node_modules/.bin/sass
|
||||
NPM = npm
|
||||
OUTPUT_DIR = .
|
||||
STYLES_BUNDLE = css/all.bundle.css
|
||||
@@ -22,7 +23,7 @@ clean:
|
||||
rm -fr $(BUILD_DIR)
|
||||
|
||||
.NOTPARALLEL:
|
||||
deploy: deploy-init deploy-appbundle deploy-rnnoise-binary deploy-lib-jitsi-meet deploy-libflac deploy-css deploy-local
|
||||
deploy: deploy-init deploy-appbundle deploy-rnnoise-binary deploy-lib-jitsi-meet deploy-libflac deploy-olm deploy-css deploy-local
|
||||
|
||||
deploy-init:
|
||||
rm -fr $(DEPLOY_DIR)
|
||||
@@ -51,12 +52,15 @@ deploy-appbundle:
|
||||
$(BUILD_DIR)/video-blur-effect.min.map \
|
||||
$(BUILD_DIR)/rnnoise-processor.min.js \
|
||||
$(BUILD_DIR)/rnnoise-processor.min.map \
|
||||
$(BUILD_DIR)/close3.min.js \
|
||||
$(BUILD_DIR)/close3.min.map \
|
||||
$(DEPLOY_DIR)
|
||||
|
||||
deploy-lib-jitsi-meet:
|
||||
cp \
|
||||
$(LIBJITSIMEET_DIR)/lib-jitsi-meet.min.js \
|
||||
$(LIBJITSIMEET_DIR)/lib-jitsi-meet.min.map \
|
||||
$(LIBJITSIMEET_DIR)/lib-jitsi-meet.e2ee-worker.js \
|
||||
$(LIBJITSIMEET_DIR)/connection_optimization/external_connect.js \
|
||||
$(LIBJITSIMEET_DIR)/modules/browser/capabilities.json \
|
||||
$(DEPLOY_DIR)
|
||||
@@ -67,6 +71,11 @@ deploy-libflac:
|
||||
$(LIBFLAC_DIR)/libflac4-1.3.2.min.js.mem \
|
||||
$(DEPLOY_DIR)
|
||||
|
||||
deploy-olm:
|
||||
cp \
|
||||
$(OLM_DIR)/olm.wasm \
|
||||
$(DEPLOY_DIR)
|
||||
|
||||
deploy-rnnoise-binary:
|
||||
cp \
|
||||
$(RNNOISE_WASM_DIR)/rnnoise.wasm \
|
||||
@@ -74,14 +83,14 @@ deploy-rnnoise-binary:
|
||||
|
||||
deploy-css:
|
||||
$(NODE_SASS) $(STYLES_MAIN) $(STYLES_BUNDLE) && \
|
||||
$(CLEANCSS) $(STYLES_BUNDLE) > $(STYLES_DESTINATION) ; \
|
||||
$(CLEANCSS) --skip-rebase $(STYLES_BUNDLE) > $(STYLES_DESTINATION) ; \
|
||||
rm $(STYLES_BUNDLE)
|
||||
|
||||
deploy-local:
|
||||
([ ! -x deploy-local.sh ] || ./deploy-local.sh)
|
||||
|
||||
.NOTPARALLEL:
|
||||
dev: deploy-init deploy-css deploy-rnnoise-binary deploy-lib-jitsi-meet deploy-libflac
|
||||
dev: deploy-init deploy-css deploy-rnnoise-binary deploy-lib-jitsi-meet deploy-libflac deploy-olm
|
||||
$(WEBPACK_DEV_SERVER) --detect-circular-deps
|
||||
|
||||
source-package:
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Security
|
||||
|
||||
## Reporting security issuess
|
||||
## Reporting security issues
|
||||
|
||||
We take security very seriously and develop all Jitsi projects to be secure and safe.
|
||||
|
||||
If you find (or simply suspect) a security issue in any of the Jitsi projects, please send us an email to security@jitsi.org.
|
||||
If you find (or simply suspect) a security issue in any of the Jitsi projects, please report it to us via [HackerOne](https://hackerone.com/8x8) or send us an email to security@jitsi.org.
|
||||
|
||||
**We encourage responsible disclosure for the sake of our users, so please reach out before posting in a public space.**
|
||||
|
||||
@@ -3,7 +3,7 @@ apply plugin: 'com.android.application'
|
||||
// Crashlytics integration is done as part of Firebase now, so it gets
|
||||
// automagically activated with google-services.json
|
||||
if (googleServicesEnabled) {
|
||||
apply plugin: 'io.fabric'
|
||||
apply plugin: 'com.google.firebase.crashlytics'
|
||||
}
|
||||
|
||||
// Use the number of seconds/10 since Jan 1 2019 as the versionCode.
|
||||
@@ -70,14 +70,9 @@ android {
|
||||
}
|
||||
}
|
||||
|
||||
repositories {
|
||||
maven { url 'https://maven.fabric.io/public' }
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||
implementation 'androidx.appcompat:appcompat:1.1.0'
|
||||
implementation 'androidx.appcompat:appcompat:1.2.0'
|
||||
|
||||
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.0-beta-5'
|
||||
|
||||
@@ -87,9 +82,8 @@ dependencies {
|
||||
// Firebase
|
||||
// - Crashlytics
|
||||
// - Dynamic Links
|
||||
implementation 'com.google.firebase:firebase-core:16.0.6'
|
||||
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.8'
|
||||
implementation 'com.google.firebase:firebase-dynamic-links:16.1.5'
|
||||
implementation 'com.google.firebase:firebase-crashlytics:17.2.1'
|
||||
implementation 'com.google.firebase:firebase-dynamic-links:19.1.0'
|
||||
}
|
||||
|
||||
implementation project(':sdk')
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
<manifest
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.jitsi.meet">
|
||||
package="org.jitsi.meet"
|
||||
android:installLocation="auto">
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:networkSecurityConfig="@xml/network_security_config"
|
||||
android:theme="@style/AppTheme">
|
||||
<meta-data
|
||||
android:name="android.content.APP_RESTRICTIONS"
|
||||
android:resource="@xml/app_restrictions" />
|
||||
<activity
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize"
|
||||
android:label="@string/app_name"
|
||||
|
||||
@@ -3,9 +3,8 @@ package org.jitsi.meet;
|
||||
import android.net.Uri;
|
||||
import android.util.Log;
|
||||
|
||||
import com.crashlytics.android.Crashlytics;
|
||||
import com.google.firebase.crashlytics.FirebaseCrashlytics;
|
||||
import com.google.firebase.dynamiclinks.FirebaseDynamicLinks;
|
||||
import io.fabric.sdk.android.Fabric;
|
||||
|
||||
import org.jitsi.meet.sdk.JitsiMeet;
|
||||
import org.jitsi.meet.sdk.JitsiMeetActivity;
|
||||
@@ -22,10 +21,7 @@ final class GoogleServicesHelper {
|
||||
if (BuildConfig.GOOGLE_SERVICES_ENABLED) {
|
||||
Log.d(activity.getClass().getSimpleName(), "Initializing Google Services");
|
||||
|
||||
if (!JitsiMeet.isCrashReportingDisabled(activity)) {
|
||||
Fabric.with(activity, new Crashlytics());
|
||||
}
|
||||
|
||||
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(!JitsiMeet.isCrashReportingDisabled(activity));
|
||||
FirebaseDynamicLinks.getInstance().getDynamicLink(activity.getIntent())
|
||||
.addOnSuccessListener(activity, pendingDynamicLinkData -> {
|
||||
Uri dynamicLink = null;
|
||||
|
||||
@@ -16,9 +16,14 @@
|
||||
|
||||
package org.jitsi.meet;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.RestrictionEntry;
|
||||
import android.content.RestrictionsManager;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
@@ -31,6 +36,7 @@ import org.jitsi.meet.sdk.JitsiMeetConferenceOptions;
|
||||
import java.lang.reflect.Method;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -48,6 +54,27 @@ public class MainActivity extends JitsiMeetActivity {
|
||||
private static final int OVERLAY_PERMISSION_REQUEST_CODE
|
||||
= (int) (Math.random() * Short.MAX_VALUE);
|
||||
|
||||
/**
|
||||
* ServerURL configuration key for restriction configuration using {@link android.content.RestrictionsManager}
|
||||
*/
|
||||
public static final String RESTRICTION_SERVER_URL = "SERVER_URL";
|
||||
|
||||
/**
|
||||
* Broadcast receiver for restrictions handling
|
||||
*/
|
||||
private BroadcastReceiver broadcastReceiver;
|
||||
|
||||
/**
|
||||
* Flag if configuration is provided by RestrictionManager
|
||||
*/
|
||||
private boolean configurationByRestrictions = false;
|
||||
|
||||
/**
|
||||
* Default URL as could be obtained from RestrictionManager
|
||||
*/
|
||||
private String defaultURL;
|
||||
|
||||
|
||||
// JitsiMeetActivity overrides
|
||||
//
|
||||
|
||||
@@ -68,7 +95,7 @@ public class MainActivity extends JitsiMeetActivity {
|
||||
// In Debug builds React needs permission to write over other apps in
|
||||
// order to display the warning and error overlays.
|
||||
if (BuildConfig.DEBUG) {
|
||||
if (canRequestOverlayPermission() && !Settings.canDrawOverlays(this)) {
|
||||
if (!Settings.canDrawOverlays(this)) {
|
||||
Intent intent
|
||||
= new Intent(
|
||||
Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
|
||||
@@ -85,16 +112,67 @@ public class MainActivity extends JitsiMeetActivity {
|
||||
|
||||
@Override
|
||||
protected void initialize() {
|
||||
broadcastReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
// As new restrictions including server URL are received,
|
||||
// conference should be restarted with new configuration.
|
||||
leave();
|
||||
recreate();
|
||||
}
|
||||
};
|
||||
registerReceiver(broadcastReceiver,
|
||||
new IntentFilter(Intent.ACTION_APPLICATION_RESTRICTIONS_CHANGED));
|
||||
|
||||
resolveRestrictions();
|
||||
setJitsiMeetConferenceDefaultOptions();
|
||||
super.initialize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
if (broadcastReceiver != null) {
|
||||
unregisterReceiver(broadcastReceiver);
|
||||
broadcastReceiver = null;
|
||||
}
|
||||
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
private void setJitsiMeetConferenceDefaultOptions() {
|
||||
// Set default options
|
||||
JitsiMeetConferenceOptions defaultOptions
|
||||
= new JitsiMeetConferenceOptions.Builder()
|
||||
.setWelcomePageEnabled(true)
|
||||
.setServerURL(buildURL("https://meet.jit.si"))
|
||||
.setFeatureFlag("call-integration.enabled", false)
|
||||
.build();
|
||||
.setWelcomePageEnabled(true)
|
||||
.setServerURL(buildURL(defaultURL))
|
||||
.setFeatureFlag("call-integration.enabled", false)
|
||||
.setFeatureFlag("resolution", 360)
|
||||
.setFeatureFlag("server-url-change.enabled", !configurationByRestrictions)
|
||||
.build();
|
||||
JitsiMeet.setDefaultConferenceOptions(defaultOptions);
|
||||
}
|
||||
|
||||
super.initialize();
|
||||
private void resolveRestrictions() {
|
||||
RestrictionsManager manager =
|
||||
(RestrictionsManager) getSystemService(Context.RESTRICTIONS_SERVICE);
|
||||
Bundle restrictions = manager.getApplicationRestrictions();
|
||||
Collection<RestrictionEntry> entries = manager.getManifestRestrictions(
|
||||
getApplicationContext().getPackageName());
|
||||
for (RestrictionEntry restrictionEntry : entries) {
|
||||
String key = restrictionEntry.getKey();
|
||||
if (RESTRICTION_SERVER_URL.equals(key)) {
|
||||
// If restrictions are passed to the application.
|
||||
if (restrictions != null &&
|
||||
restrictions.containsKey(RESTRICTION_SERVER_URL)) {
|
||||
defaultURL = restrictions.getString(RESTRICTION_SERVER_URL);
|
||||
configurationByRestrictions = true;
|
||||
// Otherwise use default URL from app-restrictions.xml.
|
||||
} else {
|
||||
defaultURL = restrictionEntry.getSelectedString();
|
||||
configurationByRestrictions = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -107,8 +185,7 @@ public class MainActivity extends JitsiMeetActivity {
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if (requestCode == OVERLAY_PERMISSION_REQUEST_CODE
|
||||
&& canRequestOverlayPermission()) {
|
||||
if (requestCode == OVERLAY_PERMISSION_REQUEST_CODE) {
|
||||
if (Settings.canDrawOverlays(this)) {
|
||||
initialize();
|
||||
return;
|
||||
@@ -131,6 +208,18 @@ public class MainActivity extends JitsiMeetActivity {
|
||||
return super.onKeyUp(keyCode, event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) {
|
||||
super.onPictureInPictureModeChanged(isInPictureInPictureMode);
|
||||
|
||||
Log.d(TAG, "Is in picture-in-picture mode: " + isInPictureInPictureMode);
|
||||
|
||||
if (!isInPictureInPictureMode) {
|
||||
this.startActivity(new Intent(this, getClass())
|
||||
.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT));
|
||||
}
|
||||
}
|
||||
|
||||
// Helper methods
|
||||
//
|
||||
|
||||
@@ -141,10 +230,4 @@ public class MainActivity extends JitsiMeetActivity {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean canRequestOverlayPermission() {
|
||||
return
|
||||
Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
|
||||
&& getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.M;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
<resources>
|
||||
<string name="app_name">Jitsi Meet</string>
|
||||
<string name="restriction_server_url_description">URL of Jitsi Meet server instance to connect to</string>
|
||||
<string name="restriction_server_url_title">Server URL</string>
|
||||
</resources>
|
||||
|
||||
11
android/app/src/main/res/xml/app_restrictions.xml
Normal file
11
android/app/src/main/res/xml/app_restrictions.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<restrictions xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<!-- Server URL configuration -->
|
||||
<restriction
|
||||
android:defaultValue="https://meet.jit.si"
|
||||
android:description="@string/restriction_server_url_description"
|
||||
android:key="SERVER_URL"
|
||||
android:restrictionType="string"
|
||||
android:title="@string/restriction_server_url_title"/>
|
||||
</restrictions>
|
||||
@@ -1,6 +1,12 @@
|
||||
<network-security-config>
|
||||
<domain-config cleartextTrafficPermitted="true">
|
||||
<domain includeSubdomains="false">localhost</domain>
|
||||
<domain includeSubdomains="false">10.0.2.2</domain>
|
||||
</domain-config>
|
||||
<network-security-config>
|
||||
<base-config>
|
||||
<trust-anchors>
|
||||
<certificates src="system" />
|
||||
<certificates src="user" />
|
||||
</trust-anchors>
|
||||
</base-config>
|
||||
<domain-config cleartextTrafficPermitted="true">
|
||||
<domain includeSubdomains="false">localhost</domain>
|
||||
<domain includeSubdomains="false">10.0.2.2</domain>
|
||||
</domain-config>
|
||||
</network-security-config>
|
||||
|
||||
@@ -7,17 +7,11 @@ buildscript {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
repositories {
|
||||
maven { url 'https://maven.fabric.io/public' }
|
||||
}
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.3.2'
|
||||
classpath 'com.google.gms:google-services:4.3.3'
|
||||
classpath 'io.fabric.tools:gradle:1.28.1'
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files.
|
||||
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.3.0'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,10 +136,10 @@ allprojects {
|
||||
}
|
||||
|
||||
ext {
|
||||
buildToolsVersion = "28.0.3"
|
||||
compileSdkVersion = 28
|
||||
minSdkVersion = 21
|
||||
targetSdkVersion = 28
|
||||
buildToolsVersion = "29.0.3"
|
||||
compileSdkVersion = 29
|
||||
minSdkVersion = 23
|
||||
targetSdkVersion = 29
|
||||
supportLibVersion = "28.0.0"
|
||||
|
||||
// The Maven artifact groupdId of the third-party react-native modules which
|
||||
|
||||
@@ -20,5 +20,5 @@
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
|
||||
appVersion=20.3.0
|
||||
sdkVersion=2.9.0
|
||||
appVersion=20.4.0
|
||||
sdkVersion=2.10.0
|
||||
|
||||
5
android/scripts/run-packager-helper.command
Executable file
5
android/scripts/run-packager-helper.command
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
THIS_DIR=$(cd -P "$(dirname "$(readlink "${BASH_SOURCE[0]}" || echo "${BASH_SOURCE[0]}")")" && pwd)
|
||||
|
||||
exec ${THIS_DIR}/../../node_modules/react-native/scripts/launchPackager.command --reset-cache
|
||||
@@ -8,7 +8,7 @@ THIS_DIR=$(cd -P "$(dirname "$(readlink "${BASH_SOURCE[0]}" || echo "${BASH_SOUR
|
||||
export RCT_METRO_PORT="${RCT_METRO_PORT:=8081}"
|
||||
echo "export RCT_METRO_PORT=${RCT_METRO_PORT}" > "${THIS_DIR}/../../node_modules/react-native/scripts/.packager.env"
|
||||
|
||||
adb reverse tcp:8081 tcp:8081
|
||||
adb reverse tcp:$RCT_METRO_PORT tcp:$RCT_METRO_PORT
|
||||
|
||||
if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then
|
||||
if ! curl -s "http://localhost:${RCT_METRO_PORT}/status" | grep -q "packager-status:running" ; then
|
||||
@@ -16,11 +16,10 @@ if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then
|
||||
exit 2
|
||||
fi
|
||||
else
|
||||
CMD="${THIS_DIR}/../../node_modules/react-native/scripts/launchPackager.command"
|
||||
CMD="$THIS_DIR/run-packager-helper.command"
|
||||
if [[ `uname` == "Darwin" ]]; then
|
||||
open -g "${CMD}" || echo "Can't start packager automatically"
|
||||
else
|
||||
xdg-open "${CMD}" || echo "Can't start packager automatically"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -44,9 +44,9 @@ android {
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
|
||||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||
implementation 'androidx.appcompat:appcompat:1.1.0'
|
||||
implementation 'androidx.fragment:fragment:1.2.0'
|
||||
implementation 'androidx.appcompat:appcompat:1.2.0'
|
||||
implementation 'androidx.fragment:fragment:1.2.5'
|
||||
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
|
||||
|
||||
//noinspection GradleDynamicVersion
|
||||
api 'com.facebook.react:react-native:+'
|
||||
|
||||
@@ -16,11 +16,8 @@
|
||||
|
||||
package org.jitsi.meet.sdk;
|
||||
|
||||
import android.content.Context;
|
||||
import android.media.AudioDeviceInfo;
|
||||
import android.media.AudioManager;
|
||||
import android.os.Build;
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
@@ -34,7 +31,6 @@ import org.jitsi.meet.sdk.log.JitsiMeetLogger;
|
||||
* default it's only used on versions < O, since versions >= O use ConnectionService, but it
|
||||
* can be disabled.
|
||||
*/
|
||||
@RequiresApi(Build.VERSION_CODES.M)
|
||||
class AudioDeviceHandlerGeneric implements
|
||||
AudioModeModule.AudioDeviceHandlerInterface,
|
||||
AudioManager.OnAudioFocusChangeListener {
|
||||
|
||||
@@ -1,230 +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.
|
||||
*/
|
||||
|
||||
package org.jitsi.meet.sdk;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.media.AudioManager;
|
||||
|
||||
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
|
||||
|
||||
|
||||
/**
|
||||
* {@link AudioModeModule.AudioDeviceHandlerInterface} module implementing device handling for
|
||||
* legacy (pre-M) Android versions.
|
||||
*/
|
||||
class AudioDeviceHandlerLegacy implements
|
||||
AudioModeModule.AudioDeviceHandlerInterface,
|
||||
AudioManager.OnAudioFocusChangeListener,
|
||||
BluetoothHeadsetMonitor.Listener {
|
||||
|
||||
private final static String TAG = AudioDeviceHandlerLegacy.class.getSimpleName();
|
||||
|
||||
/**
|
||||
* Reference to the main {@code AudioModeModule}.
|
||||
*/
|
||||
private AudioModeModule module;
|
||||
|
||||
/**
|
||||
* Indicator that we have lost audio focus.
|
||||
*/
|
||||
private boolean audioFocusLost = false;
|
||||
|
||||
/**
|
||||
* {@link AudioManager} instance used to interact with the Android audio
|
||||
* subsystem.
|
||||
*/
|
||||
private AudioManager audioManager;
|
||||
|
||||
/**
|
||||
* {@link BluetoothHeadsetMonitor} for detecting Bluetooth device changes in
|
||||
* old (< M) Android versions.
|
||||
*/
|
||||
private BluetoothHeadsetMonitor bluetoothHeadsetMonitor;
|
||||
|
||||
public AudioDeviceHandlerLegacy(AudioManager audioManager) {
|
||||
this.audioManager = audioManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to trigger an audio route update when Bluetooth devices are
|
||||
* connected / disconnected.
|
||||
*/
|
||||
@Override
|
||||
public void onBluetoothDeviceChange(final boolean deviceAvailable) {
|
||||
module.runInAudioThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (deviceAvailable) {
|
||||
module.addDevice(AudioModeModule.DEVICE_BLUETOOTH);
|
||||
} else {
|
||||
module.removeDevice(AudioModeModule.DEVICE_BLUETOOTH);
|
||||
}
|
||||
|
||||
module.updateAudioRoute();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to trigger an audio route update when a headset is plugged
|
||||
* or unplugged.
|
||||
*/
|
||||
private void onHeadsetDeviceChange() {
|
||||
module.runInAudioThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
// XXX: isWiredHeadsetOn is not deprecated when used just for
|
||||
// knowing if there is a wired headset connected, regardless of
|
||||
// audio being routed to it.
|
||||
//noinspection deprecation
|
||||
if (audioManager.isWiredHeadsetOn()) {
|
||||
module.addDevice(AudioModeModule.DEVICE_HEADPHONES);
|
||||
} else {
|
||||
module.removeDevice(AudioModeModule.DEVICE_HEADPHONES);
|
||||
}
|
||||
|
||||
module.updateAudioRoute();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link AudioManager.OnAudioFocusChangeListener} interface method. Called
|
||||
* when the audio focus of the system is updated.
|
||||
*
|
||||
* @param focusChange - The type of focus change.
|
||||
*/
|
||||
@Override
|
||||
public void onAudioFocusChange(final int focusChange) {
|
||||
module.runInAudioThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
switch (focusChange) {
|
||||
case AudioManager.AUDIOFOCUS_GAIN: {
|
||||
JitsiMeetLogger.d(TAG + " Audio focus gained");
|
||||
// Some other application potentially stole our audio focus
|
||||
// temporarily. Restore our mode.
|
||||
if (audioFocusLost) {
|
||||
module.updateAudioRoute();
|
||||
}
|
||||
audioFocusLost = false;
|
||||
break;
|
||||
}
|
||||
case AudioManager.AUDIOFOCUS_LOSS:
|
||||
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
|
||||
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK: {
|
||||
JitsiMeetLogger.d(TAG + " Audio focus lost");
|
||||
audioFocusLost = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to set the output route to a Bluetooth device.
|
||||
*
|
||||
* @param enabled true if Bluetooth should use used, false otherwise.
|
||||
*/
|
||||
private void setBluetoothAudioRoute(boolean enabled) {
|
||||
if (enabled) {
|
||||
audioManager.startBluetoothSco();
|
||||
audioManager.setBluetoothScoOn(true);
|
||||
} else {
|
||||
audioManager.setBluetoothScoOn(false);
|
||||
audioManager.stopBluetoothSco();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start(AudioModeModule audioModeModule) {
|
||||
JitsiMeetLogger.i("Using " + TAG + " as the audio device handler");
|
||||
|
||||
module = audioModeModule;
|
||||
Context context = module.getContext();
|
||||
|
||||
// Setup runtime device change detection.
|
||||
//
|
||||
|
||||
// Detect changes in wired headset connections.
|
||||
IntentFilter wiredHeadSetFilter = new IntentFilter(AudioManager.ACTION_HEADSET_PLUG);
|
||||
BroadcastReceiver wiredHeadsetReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
JitsiMeetLogger.d(TAG + " Wired headset added / removed");
|
||||
onHeadsetDeviceChange();
|
||||
}
|
||||
};
|
||||
context.registerReceiver(wiredHeadsetReceiver, wiredHeadSetFilter);
|
||||
|
||||
// Detect Bluetooth device changes.
|
||||
bluetoothHeadsetMonitor = new BluetoothHeadsetMonitor(context, this);
|
||||
|
||||
// On Android < M, detect if we have an earpiece.
|
||||
PackageManager pm = context.getPackageManager();
|
||||
if (pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
|
||||
module.addDevice(AudioModeModule.DEVICE_EARPIECE);
|
||||
}
|
||||
|
||||
// Always assume there is a speaker.
|
||||
module.addDevice(AudioModeModule.DEVICE_SPEAKER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
bluetoothHeadsetMonitor.stop();
|
||||
bluetoothHeadsetMonitor = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAudioRoute(String device) {
|
||||
// Turn speaker on / off
|
||||
audioManager.setSpeakerphoneOn(device.equals(AudioModeModule.DEVICE_SPEAKER));
|
||||
|
||||
// Turn bluetooth on / off
|
||||
setBluetoothAudioRoute(device.equals(AudioModeModule.DEVICE_BLUETOOTH));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setMode(int mode) {
|
||||
if (mode == AudioModeModule.DEFAULT) {
|
||||
audioFocusLost = false;
|
||||
audioManager.setMode(AudioManager.MODE_NORMAL);
|
||||
audioManager.abandonAudioFocus(this);
|
||||
audioManager.setSpeakerphoneOn(false);
|
||||
setBluetoothAudioRoute(false);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
|
||||
audioManager.setMicrophoneMute(false);
|
||||
|
||||
if (audioManager.requestAudioFocus(this, AudioManager.STREAM_VOICE_CALL, AudioManager.AUDIOFOCUS_GAIN)
|
||||
== AudioManager.AUDIOFOCUS_REQUEST_FAILED) {
|
||||
JitsiMeetLogger.w(TAG + " Audio focus request failed");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -222,10 +222,8 @@ class AudioModeModule extends ReactContextBaseJavaModule {
|
||||
|
||||
if (useConnectionService()) {
|
||||
audioDeviceHandler = new AudioDeviceHandlerConnectionService(audioManager);
|
||||
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
audioDeviceHandler = new AudioDeviceHandlerGeneric(audioManager);
|
||||
} else {
|
||||
audioDeviceHandler = new AudioDeviceHandlerLegacy(audioManager);
|
||||
audioDeviceHandler = new AudioDeviceHandlerGeneric(audioManager);
|
||||
}
|
||||
|
||||
audioDeviceHandler.start(this);
|
||||
@@ -427,15 +425,6 @@ class AudioModeModule extends ReactContextBaseJavaModule {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Needed on the legacy handler...
|
||||
*
|
||||
* @return Context for the application.
|
||||
*/
|
||||
Context getContext() {
|
||||
return getReactApplicationContext();
|
||||
}
|
||||
|
||||
/**
|
||||
* Interface for the modules implementing the actual audio device management.
|
||||
*/
|
||||
|
||||
@@ -1,191 +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.
|
||||
*/
|
||||
|
||||
package org.jitsi.meet.sdk;
|
||||
|
||||
import android.bluetooth.BluetoothAdapter;
|
||||
import android.bluetooth.BluetoothHeadset;
|
||||
import android.bluetooth.BluetoothProfile;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.media.AudioManager;
|
||||
|
||||
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
|
||||
|
||||
/**
|
||||
* Helper class to detect and handle Bluetooth device changes. It monitors
|
||||
* Bluetooth headsets being connected / disconnected and notifies the module
|
||||
* about device changes when this occurs.
|
||||
*/
|
||||
class BluetoothHeadsetMonitor {
|
||||
private final static String TAG = BluetoothHeadsetMonitor.class.getSimpleName();
|
||||
|
||||
/**
|
||||
* The {@link Context} in which this module executes.
|
||||
*/
|
||||
private final Context context;
|
||||
|
||||
/**
|
||||
* Reference to the {@link BluetoothAdapter} object, used to access Bluetooth functionality.
|
||||
*/
|
||||
private BluetoothAdapter adapter;
|
||||
|
||||
/**
|
||||
* Reference to a proxy object which allows us to query connected devices.
|
||||
*/
|
||||
private BluetoothHeadset headset;
|
||||
|
||||
/**
|
||||
* receiver registered for receiving Bluetooth connection state changes.
|
||||
*/
|
||||
private BroadcastReceiver receiver;
|
||||
|
||||
/**
|
||||
* Listener for receiving Bluetooth device change events.
|
||||
*/
|
||||
private Listener listener;
|
||||
|
||||
public BluetoothHeadsetMonitor(Context context, Listener listener) {
|
||||
this.context = context;
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
private boolean getBluetoothHeadsetProfileProxy() {
|
||||
adapter = BluetoothAdapter.getDefaultAdapter();
|
||||
|
||||
if (adapter == null) {
|
||||
JitsiMeetLogger.w(TAG + " Device doesn't support Bluetooth");
|
||||
return false;
|
||||
}
|
||||
|
||||
// XXX: The profile listener listens for system services of the given
|
||||
// type being available to the application. That is, if our Bluetooth
|
||||
// adapter has the "headset" profile.
|
||||
BluetoothProfile.ServiceListener listener
|
||||
= new BluetoothProfile.ServiceListener() {
|
||||
@Override
|
||||
public void onServiceConnected(int profile, BluetoothProfile proxy) {
|
||||
if (profile == BluetoothProfile.HEADSET) {
|
||||
headset = (BluetoothHeadset) proxy;
|
||||
updateDevices();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceDisconnected(int profile) {
|
||||
// The logic is the same as the logic of onServiceConnected.
|
||||
onServiceConnected(profile, /* proxy */ null);
|
||||
}
|
||||
};
|
||||
|
||||
return adapter.getProfileProxy(context, listener, BluetoothProfile.HEADSET);
|
||||
}
|
||||
|
||||
private void onBluetoothReceiverReceive(Context context, Intent intent) {
|
||||
final String action = intent.getAction();
|
||||
|
||||
if (action.equals(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED)) {
|
||||
// XXX: This action will be fired when a Bluetooth headset is
|
||||
// connected or disconnected to the system. This is not related to
|
||||
// audio routing.
|
||||
int state = intent.getIntExtra(BluetoothHeadset.EXTRA_STATE, -99);
|
||||
|
||||
switch (state) {
|
||||
case BluetoothHeadset.STATE_CONNECTED:
|
||||
case BluetoothHeadset.STATE_DISCONNECTED:
|
||||
JitsiMeetLogger.d(TAG + " BT headset connection state changed: " + state);
|
||||
updateDevices();
|
||||
break;
|
||||
}
|
||||
} else if (action.equals(AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED)) {
|
||||
// XXX: This action will be fired when the connection established
|
||||
// with a Bluetooth headset (called a SCO connection) changes state.
|
||||
// When the SCO connection is active we route audio to it.
|
||||
int state = intent.getIntExtra(AudioManager.EXTRA_SCO_AUDIO_STATE, -99);
|
||||
|
||||
switch (state) {
|
||||
case AudioManager.SCO_AUDIO_STATE_CONNECTED:
|
||||
case AudioManager.SCO_AUDIO_STATE_DISCONNECTED:
|
||||
JitsiMeetLogger.d(TAG + " BT SCO connection state changed: " + state);
|
||||
updateDevices();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void registerBluetoothReceiver() {
|
||||
receiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
onBluetoothReceiverReceive(context, intent);
|
||||
}
|
||||
};
|
||||
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.addAction(AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED);
|
||||
filter.addAction(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED);
|
||||
|
||||
context.registerReceiver(receiver, filter);
|
||||
}
|
||||
|
||||
/**
|
||||
* Detects if there are new devices connected / disconnected and fires the
|
||||
* {@link Listener} registered event.
|
||||
*/
|
||||
private void updateDevices() {
|
||||
boolean headsetAvailable = (headset != null) && !headset.getConnectedDevices().isEmpty();
|
||||
listener.onBluetoothDeviceChange(headsetAvailable);
|
||||
}
|
||||
|
||||
public void start() {
|
||||
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
|
||||
|
||||
if (!audioManager.isBluetoothScoAvailableOffCall()) {
|
||||
JitsiMeetLogger.w(TAG + " Bluetooth SCO is not available");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!getBluetoothHeadsetProfileProxy()) {
|
||||
JitsiMeetLogger.w(TAG + " Couldn't get BT profile proxy");
|
||||
return;
|
||||
}
|
||||
|
||||
registerBluetoothReceiver();
|
||||
|
||||
// Initial detection.
|
||||
updateDevices();
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
if (receiver != null) {
|
||||
context.unregisterReceiver(receiver);
|
||||
}
|
||||
|
||||
if (adapter != null && headset != null) {
|
||||
adapter.closeProfileProxy(BluetoothProfile.HEADSET, headset);
|
||||
}
|
||||
|
||||
receiver = null;
|
||||
headset = null;
|
||||
adapter = null;
|
||||
}
|
||||
|
||||
interface Listener {
|
||||
void onBluetoothDeviceChange(boolean deviceAvailable);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
/*
|
||||
* Copyright @ 2019-present 8x8, Inc.
|
||||
* Copyright @ 2018 Atlassian Pty Ltd
|
||||
* Copyright @ 2018-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.
|
||||
@@ -17,16 +16,16 @@
|
||||
|
||||
package org.jitsi.meet.sdk;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
|
||||
import com.facebook.react.ReactInstanceManager;
|
||||
import com.facebook.react.bridge.Callback;
|
||||
import com.facebook.react.bridge.ReactContext;
|
||||
import com.facebook.react.modules.core.PermissionListener;
|
||||
|
||||
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
|
||||
|
||||
/**
|
||||
* Helper class to encapsulate the work which needs to be done on
|
||||
* {@link Activity} lifecycle methods in order for the React side to be aware of
|
||||
@@ -178,9 +177,18 @@ public class JitsiMeetActivityDelegate {
|
||||
};
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.M)
|
||||
public static void requestPermissions(Activity activity, String[] permissions, int requestCode, PermissionListener listener) {
|
||||
permissionListener = listener;
|
||||
activity.requestPermissions(permissions, requestCode);
|
||||
|
||||
// The RN Permissions module calls this in a non-UI thread. What we observe is a crash in ViewGroup.dispatchCancelPendingInputEvents,
|
||||
// which is called on the calling (ie, non-UI) thread. This doesn't look very safe, so try to avoid a crash by pretending the permission
|
||||
// was denied.
|
||||
|
||||
try {
|
||||
activity.requestPermissions(permissions, requestCode);
|
||||
} catch (Exception e) {
|
||||
JitsiMeetLogger.e(e, "Error requesting permissions");
|
||||
onRequestPermissionsResult(requestCode, permissions, new int[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
/*
|
||||
* Copyright @ 2018-present 8x8, Inc.
|
||||
* Copyright @ 2017-2018 Atlassian Pty Ltd
|
||||
* 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.
|
||||
@@ -126,7 +125,7 @@ public class JitsiMeetView extends BaseReactView<JitsiMeetViewListener>
|
||||
= ReactInstanceManagerHolder.getNativeModule(
|
||||
PictureInPictureModule.class);
|
||||
if (pipModule != null
|
||||
&& PictureInPictureModule.isPictureInPictureSupported()
|
||||
&& pipModule.isPictureInPictureSupported()
|
||||
&& !JitsiMeetActivityDelegate.arePermissionsBeingRequested()
|
||||
&& this.url != null) {
|
||||
try {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright @ 2017-present Atlassian Pty Ltd
|
||||
* 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.
|
||||
@@ -18,6 +18,7 @@ package org.jitsi.meet.sdk;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
import android.app.ActivityManager;
|
||||
import android.app.PictureInPictureParams;
|
||||
import android.os.Build;
|
||||
import android.util.Rational;
|
||||
@@ -30,20 +31,41 @@ import com.facebook.react.module.annotations.ReactModule;
|
||||
|
||||
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static android.content.Context.ACTIVITY_SERVICE;
|
||||
|
||||
@ReactModule(name = PictureInPictureModule.NAME)
|
||||
class PictureInPictureModule
|
||||
extends ReactContextBaseJavaModule {
|
||||
class PictureInPictureModule extends ReactContextBaseJavaModule {
|
||||
|
||||
public static final String NAME = "PictureInPicture";
|
||||
|
||||
private static final String TAG = NAME;
|
||||
|
||||
static boolean isPictureInPictureSupported() {
|
||||
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O;
|
||||
}
|
||||
private static boolean isSupported;
|
||||
|
||||
public PictureInPictureModule(ReactApplicationContext reactContext) {
|
||||
super(reactContext);
|
||||
|
||||
ActivityManager am = (ActivityManager) reactContext.getSystemService(ACTIVITY_SERVICE);
|
||||
|
||||
// Android Go devices don't support PiP. There doesn't seem to be a better way to detect it than
|
||||
// to use ActivityManager.isLowRamDevice().
|
||||
// https://stackoverflow.com/questions/58340558/how-to-detect-android-go
|
||||
isSupported = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && !am.isLowRamDevice();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a {@code Map} of constants this module exports to JS. Supports JSON
|
||||
* types.
|
||||
*
|
||||
* @return a {@link Map} of constants this module exports to JS
|
||||
*/
|
||||
@Override
|
||||
public Map<String, Object> getConstants() {
|
||||
Map<String, Object> constants = new HashMap<>();
|
||||
constants.put("SUPPORTED", isSupported);
|
||||
return constants;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -61,7 +83,7 @@ class PictureInPictureModule
|
||||
*/
|
||||
@TargetApi(Build.VERSION_CODES.O)
|
||||
public void enterPictureInPicture() {
|
||||
if (!isPictureInPictureSupported()) {
|
||||
if (!isSupported) {
|
||||
throw new IllegalStateException("Picture-in-Picture not supported");
|
||||
}
|
||||
|
||||
@@ -104,6 +126,10 @@ class PictureInPictureModule
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isPictureInPictureSupported() {
|
||||
return isSupported;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return NAME;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright @ 2017-present Atlassian Pty Ltd
|
||||
* 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.
|
||||
@@ -33,21 +33,10 @@ import com.facebook.react.module.annotations.ReactModule;
|
||||
* is used with the conference audio-only mode.
|
||||
*/
|
||||
@ReactModule(name = ProximityModule.NAME)
|
||||
class ProximityModule
|
||||
extends ReactContextBaseJavaModule {
|
||||
class ProximityModule extends ReactContextBaseJavaModule {
|
||||
|
||||
public static final String NAME = "Proximity";
|
||||
|
||||
/**
|
||||
* This type of wake lock (the one activated by the proximity sensor) has
|
||||
* been available for a while, but the constant was only exported in API
|
||||
* level 21 (Android Marshmallow) so make no assumptions and use its value
|
||||
* directly.
|
||||
*
|
||||
* TODO: Remove when we bump the API level to 21.
|
||||
*/
|
||||
private static final int PROXIMITY_SCREEN_OFF_WAKE_LOCK = 32;
|
||||
|
||||
/**
|
||||
* {@link WakeLock} instance.
|
||||
*/
|
||||
@@ -71,7 +60,7 @@ class ProximityModule
|
||||
try {
|
||||
wakeLock
|
||||
= powerManager.newWakeLock(
|
||||
PROXIMITY_SCREEN_OFF_WAKE_LOCK,
|
||||
PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK,
|
||||
"jitsi:"+NAME);
|
||||
} catch (Throwable ignored) {
|
||||
wakeLock = null;
|
||||
|
||||
7
app.js
7
app.js
@@ -4,6 +4,8 @@ import 'jquery';
|
||||
import 'jquery-contextmenu';
|
||||
import 'jQuery-Impromptu';
|
||||
|
||||
import 'olm';
|
||||
|
||||
import conference from './conference';
|
||||
import API from './modules/API';
|
||||
import UI from './modules/UI/UI';
|
||||
@@ -11,6 +13,11 @@ import keyboardshortcut from './modules/keyboardshortcut/keyboardshortcut';
|
||||
import remoteControl from './modules/remotecontrol/RemoteControl';
|
||||
import translation from './modules/translation/translation';
|
||||
|
||||
// Initialize Olm as early as possible.
|
||||
if (window.Olm) {
|
||||
window.Olm.init();
|
||||
}
|
||||
|
||||
window.APP = {
|
||||
API,
|
||||
conference,
|
||||
|
||||
223
conference.js
223
conference.js
@@ -1,4 +1,4 @@
|
||||
/* global $, APP, JitsiMeetJS, config, interfaceConfig */
|
||||
/* global APP, JitsiMeetJS, config, interfaceConfig */
|
||||
|
||||
import EventEmitter from 'events';
|
||||
import Logger from 'jitsi-meet-logger';
|
||||
@@ -95,6 +95,8 @@ import {
|
||||
createLocalPresenterTrack,
|
||||
createLocalTracksF,
|
||||
destroyLocalTracks,
|
||||
getLocalJitsiAudioTrack,
|
||||
getLocalJitsiVideoTrack,
|
||||
isLocalVideoTrackMuted,
|
||||
isLocalTrackMuted,
|
||||
isUserInteractionRequiredForUnmute,
|
||||
@@ -108,7 +110,6 @@ import {
|
||||
} from './react/features/base/util';
|
||||
import { showDesktopPicker } from './react/features/desktop-picker';
|
||||
import { appendSuffix } from './react/features/display-name';
|
||||
import { setE2EEKey } from './react/features/e2ee';
|
||||
import {
|
||||
maybeOpenFeedbackDialog,
|
||||
submitFeedback
|
||||
@@ -118,7 +119,9 @@ import { mediaPermissionPromptVisibilityChanged } from './react/features/overlay
|
||||
import { suspendDetected } from './react/features/power-monitor';
|
||||
import {
|
||||
initPrejoin,
|
||||
isPrejoinPageEnabled
|
||||
isPrejoinPageEnabled,
|
||||
isPrejoinPageVisible,
|
||||
makePrecallTest
|
||||
} from './react/features/prejoin';
|
||||
import { createRnnoiseProcessorPromise } from './react/features/rnnoise';
|
||||
import { toggleScreenshotCaptureEffect } from './react/features/screenshot-capture';
|
||||
@@ -408,6 +411,10 @@ function disconnect() {
|
||||
return Promise.resolve();
|
||||
};
|
||||
|
||||
if (!connection) {
|
||||
return onDisconnected();
|
||||
}
|
||||
|
||||
return connection.disconnect().then(onDisconnected, onDisconnected);
|
||||
}
|
||||
|
||||
@@ -738,8 +745,6 @@ export default {
|
||||
|
||||
this.roomName = roomName;
|
||||
|
||||
window.addEventListener('hashchange', this.onHashChange.bind(this), false);
|
||||
|
||||
try {
|
||||
// Initialize the device list first. This way, when creating tracks
|
||||
// based on preferred devices, loose label matching can be done in
|
||||
@@ -752,7 +757,15 @@ export default {
|
||||
}
|
||||
|
||||
if (isPrejoinPageEnabled(APP.store.getState())) {
|
||||
_connectionPromise = connect(roomName);
|
||||
_connectionPromise = connect(roomName).then(c => {
|
||||
// we want to initialize it early, in case of errors to be able
|
||||
// to gather logs
|
||||
APP.connection = c;
|
||||
|
||||
return c;
|
||||
});
|
||||
|
||||
APP.store.dispatch(makePrecallTest(this._getConferenceOptions()));
|
||||
|
||||
const { tryCreateLocalTracks, errors } = this.createInitialLocalTracks(initialOptions);
|
||||
const tracks = await tryCreateLocalTracks;
|
||||
@@ -1199,10 +1212,6 @@ export default {
|
||||
|
||||
// end used by torture
|
||||
|
||||
getLogs() {
|
||||
return room.getLogs();
|
||||
},
|
||||
|
||||
/**
|
||||
* Download logs, a function that can be called from console while
|
||||
* debugging.
|
||||
@@ -1211,7 +1220,7 @@ export default {
|
||||
saveLogs(filename = 'meetlog.json') {
|
||||
// this can be called from console and will not have reference to this
|
||||
// that's why we reference the global var
|
||||
const logs = APP.conference.getLogs();
|
||||
const logs = APP.connection.getLogs();
|
||||
const data = encodeURIComponent(JSON.stringify(logs, null, ' '));
|
||||
|
||||
const elem = document.createElement('a');
|
||||
@@ -1227,34 +1236,6 @@ export default {
|
||||
}));
|
||||
},
|
||||
|
||||
/**
|
||||
* Handled location hash change events.
|
||||
*/
|
||||
onHashChange() {
|
||||
const items = {};
|
||||
const parts = window.location.hash.substr(1).split('&');
|
||||
|
||||
for (const part of parts) {
|
||||
const param = part.split('=');
|
||||
const key = param[0];
|
||||
|
||||
if (!key) {
|
||||
continue; // eslint-disable-line no-continue
|
||||
}
|
||||
|
||||
items[key] = param[1];
|
||||
}
|
||||
|
||||
if (typeof items.e2eekey !== 'undefined') {
|
||||
APP.store.dispatch(setE2EEKey(items.e2eekey));
|
||||
|
||||
// Clean URL in browser history.
|
||||
const cleanUrl = window.location.href.split('#')[0];
|
||||
|
||||
history.replaceState(history.state, document.title, cleanUrl);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Exposes a Command(s) API on this instance. It is necessitated by (1) the
|
||||
* desire to keep room private to this instance and (2) the need of other
|
||||
@@ -1400,19 +1381,32 @@ export default {
|
||||
/**
|
||||
* Start using provided video stream.
|
||||
* Stops previous video stream.
|
||||
* @param {JitsiLocalTrack} [stream] new stream to use or null
|
||||
* @param {JitsiLocalTrack} newTrack - new track to use or null
|
||||
* @returns {Promise}
|
||||
*/
|
||||
useVideoStream(newStream) {
|
||||
useVideoStream(newTrack) {
|
||||
return new Promise((resolve, reject) => {
|
||||
_replaceLocalVideoTrackQueue.enqueue(onFinish => {
|
||||
const state = APP.store.getState();
|
||||
|
||||
// When the prejoin page is displayed localVideo is not set
|
||||
// so just replace the video track from the store with the new one.
|
||||
if (isPrejoinPageVisible(state)) {
|
||||
const oldTrack = getLocalJitsiVideoTrack(state);
|
||||
|
||||
return APP.store.dispatch(replaceLocalTrack(oldTrack, newTrack))
|
||||
.then(resolve)
|
||||
.catch(reject)
|
||||
.then(onFinish);
|
||||
}
|
||||
|
||||
APP.store.dispatch(
|
||||
replaceLocalTrack(this.localVideo, newStream, room))
|
||||
replaceLocalTrack(this.localVideo, newTrack, room))
|
||||
.then(() => {
|
||||
this.localVideo = newStream;
|
||||
this._setSharingScreen(newStream);
|
||||
if (newStream) {
|
||||
APP.UI.addLocalVideoStream(newStream);
|
||||
this.localVideo = newTrack;
|
||||
this._setSharingScreen(newTrack);
|
||||
if (newTrack) {
|
||||
APP.UI.addLocalVideoStream(newTrack);
|
||||
}
|
||||
this.setVideoMuteStatus(this.isLocalVideoMuted());
|
||||
})
|
||||
@@ -1453,16 +1447,29 @@ export default {
|
||||
/**
|
||||
* Start using provided audio stream.
|
||||
* Stops previous audio stream.
|
||||
* @param {JitsiLocalTrack} [stream] new stream to use or null
|
||||
* @param {JitsiLocalTrack} newTrack - new track to use or null
|
||||
* @returns {Promise}
|
||||
*/
|
||||
useAudioStream(newStream) {
|
||||
useAudioStream(newTrack) {
|
||||
return new Promise((resolve, reject) => {
|
||||
_replaceLocalAudioTrackQueue.enqueue(onFinish => {
|
||||
const state = APP.store.getState();
|
||||
|
||||
// When the prejoin page is displayed localAudio is not set
|
||||
// so just replace the audio track from the store with the new one.
|
||||
if (isPrejoinPageVisible(state)) {
|
||||
const oldTrack = getLocalJitsiAudioTrack(state);
|
||||
|
||||
return APP.store.dispatch(replaceLocalTrack(oldTrack, newTrack))
|
||||
.then(resolve)
|
||||
.catch(reject)
|
||||
.then(onFinish);
|
||||
}
|
||||
|
||||
APP.store.dispatch(
|
||||
replaceLocalTrack(this.localAudio, newStream, room))
|
||||
replaceLocalTrack(this.localAudio, newTrack, room))
|
||||
.then(() => {
|
||||
this.localAudio = newStream;
|
||||
this.localAudio = newTrack;
|
||||
this.setAudioMuteStatus(this.isLocalAudioMuted());
|
||||
})
|
||||
.then(resolve)
|
||||
@@ -1555,10 +1562,6 @@ export default {
|
||||
if (didHaveVideo) {
|
||||
promise = promise.then(() => createLocalTracksF({ devices: [ 'video' ] }))
|
||||
.then(([ stream ]) => this.useVideoStream(stream))
|
||||
.then(() => {
|
||||
sendAnalytics(createScreenSharingEvent('stopped'));
|
||||
logger.log('Screen sharing stopped.');
|
||||
})
|
||||
.catch(error => {
|
||||
logger.error('failed to switch back to local video', error);
|
||||
|
||||
@@ -1575,6 +1578,8 @@ export default {
|
||||
return promise.then(
|
||||
() => {
|
||||
this.videoSwitchInProgress = false;
|
||||
sendAnalytics(createScreenSharingEvent('stopped'));
|
||||
logger.info('Screen sharing stopped.');
|
||||
},
|
||||
error => {
|
||||
this.videoSwitchInProgress = false;
|
||||
@@ -1642,8 +1647,6 @@ export default {
|
||||
* @private
|
||||
*/
|
||||
_createDesktopTrack(options = {}) {
|
||||
let externalInstallation = false;
|
||||
let DSExternalInstallationInProgress = false;
|
||||
const didHaveVideo = !this.isLocalVideoMuted();
|
||||
|
||||
const getDesktopStreamPromise = options.desktopStream
|
||||
@@ -1652,43 +1655,7 @@ export default {
|
||||
desktopSharingSourceDevice: options.desktopSharingSources
|
||||
? null : config._desktopSharingSourceDevice,
|
||||
desktopSharingSources: options.desktopSharingSources,
|
||||
devices: [ 'desktop' ],
|
||||
desktopSharingExtensionExternalInstallation: {
|
||||
interval: 500,
|
||||
checkAgain: () => DSExternalInstallationInProgress,
|
||||
listener: (status, url) => {
|
||||
switch (status) {
|
||||
case 'waitingForExtension': {
|
||||
DSExternalInstallationInProgress = true;
|
||||
externalInstallation = true;
|
||||
const listener = () => {
|
||||
// Wait a little bit more just to be sure that
|
||||
// we won't miss the extension installation
|
||||
setTimeout(() => {
|
||||
DSExternalInstallationInProgress = false;
|
||||
},
|
||||
500);
|
||||
APP.UI.removeListener(
|
||||
UIEvents.EXTERNAL_INSTALLATION_CANCELED,
|
||||
listener);
|
||||
};
|
||||
|
||||
APP.UI.addListener(
|
||||
UIEvents.EXTERNAL_INSTALLATION_CANCELED,
|
||||
listener);
|
||||
APP.UI.showExtensionExternalInstallationDialog(url);
|
||||
break;
|
||||
}
|
||||
case 'extensionFound':
|
||||
// Close the dialog.
|
||||
externalInstallation && $.prompt.close();
|
||||
break;
|
||||
default:
|
||||
|
||||
// Unknown status
|
||||
}
|
||||
}
|
||||
}
|
||||
devices: [ 'desktop' ]
|
||||
});
|
||||
|
||||
return getDesktopStreamPromise.then(desktopStreams => {
|
||||
@@ -1712,15 +1679,8 @@ export default {
|
||||
);
|
||||
}
|
||||
|
||||
// close external installation dialog on success.
|
||||
externalInstallation && $.prompt.close();
|
||||
|
||||
return desktopStreams;
|
||||
}, error => {
|
||||
DSExternalInstallationInProgress = false;
|
||||
|
||||
// close external installation dialog on success.
|
||||
externalInstallation && $.prompt.close();
|
||||
throw error;
|
||||
});
|
||||
},
|
||||
@@ -1924,70 +1884,36 @@ export default {
|
||||
/**
|
||||
* Handles {@link JitsiTrackError} returned by the lib-jitsi-meet when
|
||||
* trying to create screensharing track. It will either do nothing if
|
||||
* the dialog was canceled on user's request or display inline installation
|
||||
* dialog and ask the user to install the extension, once the extension is
|
||||
* installed it will switch the conference to screensharing. The last option
|
||||
* is that an unrecoverable error dialog will be displayed.
|
||||
* the dialog was canceled on user's request or display an error if
|
||||
* screensharing couldn't be started.
|
||||
* @param {JitsiTrackError} error - The error returned by
|
||||
* {@link _createDesktopTrack} Promise.
|
||||
* @private
|
||||
*/
|
||||
_handleScreenSharingError(error) {
|
||||
if (error.name === JitsiTrackErrors.CHROME_EXTENSION_USER_CANCELED) {
|
||||
if (error.name === JitsiTrackErrors.SCREENSHARING_USER_CANCELED) {
|
||||
return;
|
||||
}
|
||||
|
||||
logger.error('failed to share local desktop', error);
|
||||
|
||||
if (error.name
|
||||
=== JitsiTrackErrors.CHROME_EXTENSION_USER_GESTURE_REQUIRED) {
|
||||
// If start with screen sharing the extension will fail to install
|
||||
// (if not found), because the request has been triggered by the
|
||||
// script. Show a dialog which asks user to click "install" and try
|
||||
// again switching to the screen sharing.
|
||||
APP.UI.showExtensionInlineInstallationDialog(
|
||||
() => {
|
||||
// eslint-disable-next-line no-empty-function
|
||||
this.toggleScreenSharing().catch(() => {});
|
||||
}
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Handling:
|
||||
// JitsiTrackErrors.PERMISSION_DENIED
|
||||
// JitsiTrackErrors.CHROME_EXTENSION_INSTALLATION_ERROR
|
||||
// JitsiTrackErrors.CONSTRAINT_FAILED
|
||||
// JitsiTrackErrors.GENERAL
|
||||
// JitsiTrackErrors.PERMISSION_DENIED
|
||||
// JitsiTrackErrors.SCREENSHARING_GENERIC_ERROR
|
||||
// and any other
|
||||
let descriptionKey;
|
||||
let titleKey;
|
||||
|
||||
if (error.name === JitsiTrackErrors.PERMISSION_DENIED) {
|
||||
|
||||
// in FF the only option for user is to deny access temporary or
|
||||
// permanently and we only receive permission_denied
|
||||
// we always show some info cause in case of permanently, no info
|
||||
// shown will be bad experience
|
||||
//
|
||||
// TODO: detect interval between requesting permissions and received
|
||||
// error, this way we can detect user interaction which will have
|
||||
// longer delay
|
||||
if (JitsiMeetJS.util.browser.isFirefox()) {
|
||||
descriptionKey
|
||||
= 'dialog.screenSharingFirefoxPermissionDeniedError';
|
||||
titleKey = 'dialog.screenSharingFirefoxPermissionDeniedTitle';
|
||||
} else {
|
||||
descriptionKey = 'dialog.screenSharingPermissionDeniedError';
|
||||
titleKey = 'dialog.screenSharingFailedToInstallTitle';
|
||||
}
|
||||
descriptionKey = 'dialog.screenSharingPermissionDeniedError';
|
||||
titleKey = 'dialog.screenSharingFailedTitle';
|
||||
} else if (error.name === JitsiTrackErrors.CONSTRAINT_FAILED) {
|
||||
descriptionKey = 'dialog.cameraConstraintFailedError';
|
||||
titleKey = 'deviceError.cameraError';
|
||||
} else {
|
||||
descriptionKey = 'dialog.screenSharingFailedToInstall';
|
||||
titleKey = 'dialog.screenSharingFailedToInstallTitle';
|
||||
} else if (error.name === JitsiTrackErrors.SCREENSHARING_GENERIC_ERROR) {
|
||||
descriptionKey = 'dialog.screenSharingFailed';
|
||||
titleKey = 'dialog.screenSharingFailedTitle';
|
||||
}
|
||||
|
||||
APP.UI.messageHandler.showError({
|
||||
@@ -2904,7 +2830,14 @@ export default {
|
||||
this._room = undefined;
|
||||
room = undefined;
|
||||
|
||||
APP.API.notifyReadyToClose();
|
||||
/**
|
||||
* Don't call {@code notifyReadyToClose} if the promotional page flag is set
|
||||
* and let the page take care of sending the message, since there will be
|
||||
* a redirect to the page regardlessly.
|
||||
*/
|
||||
if (!interfaceConfig.SHOW_PROMOTIONAL_CLOSE_PAGE) {
|
||||
APP.API.notifyReadyToClose();
|
||||
}
|
||||
APP.store.dispatch(maybeRedirectToWelcomePage(values[0]));
|
||||
});
|
||||
},
|
||||
|
||||
153
config.js
153
config.js
@@ -37,6 +37,8 @@ var config = {
|
||||
clientNode: 'http://jitsi.org/jitsimeet',
|
||||
|
||||
// The real JID of focus participant - can be overridden here
|
||||
// Do not change username - FIXME: Make focus username configurable
|
||||
// https://github.com/jitsi/jitsi-meet/issues/7376
|
||||
// focusUserJid: 'focus@auth.jitsi-meet.example.com',
|
||||
|
||||
|
||||
@@ -44,6 +46,10 @@ var config = {
|
||||
//
|
||||
|
||||
testing: {
|
||||
// Disables the End to End Encryption feature. Useful for debugging
|
||||
// issues related to insertable streams.
|
||||
// disableE2EE: false,
|
||||
|
||||
// P2P test mode disables automatic switching to P2P when there are 2
|
||||
// participants in the conference.
|
||||
p2pTestMode: false
|
||||
@@ -107,11 +113,23 @@ var config = {
|
||||
// participants and to enable it back a reload is needed.
|
||||
// startSilent: false
|
||||
|
||||
// Sets the preferred target bitrate for the Opus audio codec by setting its
|
||||
// 'maxaveragebitrate' parameter. Currently not available in p2p mode.
|
||||
// Valid values are in the range 6000 to 510000
|
||||
// opusMaxAverageBitrate: 20000,
|
||||
|
||||
// Enables redundancy for Opus
|
||||
// enableOpusRed: false
|
||||
|
||||
// Video
|
||||
|
||||
// Sets the preferred resolution (height) for local video. Defaults to 720.
|
||||
// resolution: 720,
|
||||
|
||||
// How many participants while in the tile view mode, before the receiving video quality is reduced from HD to SD.
|
||||
// Use -1 to disable.
|
||||
// maxFullResolutionParticipants: 2,
|
||||
|
||||
// w3c spec-compliant video constraints to use for video capture. Currently
|
||||
// used by browsers that return true from lib-jitsi-meet's
|
||||
// util#browser#usesNewGumFlow. The constraints are independent from
|
||||
@@ -146,6 +164,7 @@ var config = {
|
||||
// Note that it's not recommended to do this because simulcast is not
|
||||
// supported when using H.264. For 1-to-1 calls this setting is enabled by
|
||||
// default and can be toggled in the p2p section.
|
||||
// This option has been deprecated, use preferredCodec under videoQuality section instead.
|
||||
// preferH264: true,
|
||||
|
||||
// If set to true, disable H.264 video codec by stripping it out of the
|
||||
@@ -154,22 +173,6 @@ var config = {
|
||||
|
||||
// Desktop sharing
|
||||
|
||||
// The ID of the jidesha extension for Chrome.
|
||||
desktopSharingChromeExtId: null,
|
||||
|
||||
// Whether desktop sharing should be disabled on Chrome.
|
||||
// desktopSharingChromeDisabled: false,
|
||||
|
||||
// The media sources to use when using screen sharing with the Chrome
|
||||
// extension.
|
||||
desktopSharingChromeSources: [ 'screen', 'window', 'tab' ],
|
||||
|
||||
// Required version of Chrome extension
|
||||
desktopSharingChromeMinExtVersion: '0.1',
|
||||
|
||||
// Whether desktop sharing should be disabled on Firefox.
|
||||
// desktopSharingFirefoxDisabled: false,
|
||||
|
||||
// Optional desktop sharing frame rate options. Default value: min:5, max:5.
|
||||
// desktopSharingFrameRate: {
|
||||
// min: 5,
|
||||
@@ -217,6 +220,64 @@ var config = {
|
||||
// Default value for the channel "last N" attribute. -1 for unlimited.
|
||||
channelLastN: -1,
|
||||
|
||||
// Provides a way to use different "last N" values based on the number of participants in the conference.
|
||||
// The keys in an Object represent number of participants and the values are "last N" to be used when number of
|
||||
// participants gets to or above the number.
|
||||
//
|
||||
// For the given example mapping, "last N" will be set to 20 as long as there are at least 5, but less than
|
||||
// 29 participants in the call and it will be lowered to 15 when the 30th participant joins. The 'channelLastN'
|
||||
// will be used as default until the first threshold is reached.
|
||||
//
|
||||
// lastNLimits: {
|
||||
// 5: 20,
|
||||
// 30: 15,
|
||||
// 50: 10,
|
||||
// 70: 5,
|
||||
// 90: 2
|
||||
// },
|
||||
|
||||
// Specify the settings for video quality optimizations on the client.
|
||||
// videoQuality: {
|
||||
// // Provides a way to prevent a video codec from being negotiated on the JVB connection. The codec specified
|
||||
// // here will be removed from the list of codecs present in the SDP answer generated by the client. If the
|
||||
// // same codec is specified for both the disabled and preferred option, the disable settings will prevail.
|
||||
// // Note that 'VP8' cannot be disabled since it's a mandatory codec, the setting will be ignored in this case.
|
||||
// disabledCodec: 'H264',
|
||||
//
|
||||
// // Provides a way to set a preferred video codec for the JVB connection. If 'H264' is specified here,
|
||||
// // simulcast will be automatically disabled since JVB doesn't support H264 simulcast yet. This will only
|
||||
// // rearrange the the preference order of the codecs in the SDP answer generated by the browser only if the
|
||||
// // preferred codec specified here is present. Please ensure that the JVB offers the specified codec for this
|
||||
// // to take effect.
|
||||
// preferredCodec: 'VP8',
|
||||
//
|
||||
// // Provides a way to configure the maximum bitrates that will be enforced on the simulcast streams for
|
||||
// // video tracks. The keys in the object represent the type of the stream (LD, SD or HD) and the values
|
||||
// // are the max.bitrates to be set on that particular type of stream. The actual send may vary based on
|
||||
// // the available bandwidth calculated by the browser, but it will be capped by the values specified here.
|
||||
// // This is currently not implemented on app based clients on mobile.
|
||||
// maxBitratesVideo: {
|
||||
// low: 200000,
|
||||
// standard: 500000,
|
||||
// high: 1500000
|
||||
// },
|
||||
//
|
||||
// // The options can be used to override default thresholds of video thumbnail heights corresponding to
|
||||
// // the video quality levels used in the application. At the time of this writing the allowed levels are:
|
||||
// // 'low' - for the low quality level (180p at the time of this writing)
|
||||
// // 'standard' - for the medium quality level (360p)
|
||||
// // 'high' - for the high quality level (720p)
|
||||
// // The keys should be positive numbers which represent the minimal thumbnail height for the quality level.
|
||||
// //
|
||||
// // With the default config value below the application will use 'low' quality until the thumbnails are
|
||||
// // at least 360 pixels tall. If the thumbnail height reaches 720 pixels then the application will switch to
|
||||
// // the high quality.
|
||||
// minHeightForQualityLvl: {
|
||||
// 360: 'standard,
|
||||
// 720: 'high'
|
||||
// }
|
||||
// },
|
||||
|
||||
// // Options for the recording limit notification.
|
||||
// recordingLimit: {
|
||||
//
|
||||
@@ -279,6 +340,9 @@ var config = {
|
||||
// UI
|
||||
//
|
||||
|
||||
// Hides lobby button
|
||||
// hideLobbyButton: false,
|
||||
|
||||
// Require users to always specify a display name.
|
||||
// requireDisplayName: true,
|
||||
|
||||
@@ -319,14 +383,18 @@ var config = {
|
||||
// and microsoftApiApplicationClientID
|
||||
// enableCalendarIntegration: false,
|
||||
|
||||
// When 'true', it shows an intermediate page before joining, where the user can configure its devices.
|
||||
// When 'true', it shows an intermediate page before joining, where the user can configure their devices.
|
||||
// prejoinPageEnabled: false,
|
||||
|
||||
// If true, shows the unsafe roon name warning label when a room name is
|
||||
// If true, shows the unsafe room name warning label when a room name is
|
||||
// deemed unsafe (due to the simplicity in the name) and a password is not
|
||||
// set or the lobby is not enabled.
|
||||
// enableInsecureRoomNameWarning: false,
|
||||
|
||||
// Whether to automatically copy invitation URL after creating a room.
|
||||
// Document should be focused for this option to work
|
||||
// enableAutomaticUrlCopy: false,
|
||||
|
||||
// Stats
|
||||
//
|
||||
|
||||
@@ -344,10 +412,10 @@ var config = {
|
||||
// callStatsID: '',
|
||||
// callStatsSecret: '',
|
||||
|
||||
// enables sending participants display name to callstats
|
||||
// Enables sending participants' display names to callstats
|
||||
// enableDisplayNameInStats: false,
|
||||
|
||||
// enables sending participants email if available to callstats and other analytics
|
||||
// Enables sending participants' emails (if available) to callstats and other analytics
|
||||
// enableEmailInStats: false,
|
||||
|
||||
// Privacy
|
||||
@@ -377,7 +445,7 @@ var config = {
|
||||
// The STUN servers that will be used in the peer to peer connections
|
||||
stunServers: [
|
||||
|
||||
// { urls: 'stun:jitsi-meet.example.com:4446' },
|
||||
// { urls: 'stun:jitsi-meet.example.com:3478' },
|
||||
{ urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' }
|
||||
]
|
||||
|
||||
@@ -390,13 +458,20 @@ var config = {
|
||||
// iceTransportPolicy: 'all',
|
||||
|
||||
// If set to true, it will prefer to use H.264 for P2P calls (if H.264
|
||||
// is supported).
|
||||
// is supported). This setting is deprecated, use preferredCodec instead.
|
||||
// preferH264: true
|
||||
|
||||
// Provides a way to set the video codec preference on the p2p connection. Acceptable
|
||||
// codec values are 'VP8', 'VP9' and 'H264'.
|
||||
// preferredCodec: 'H264',
|
||||
|
||||
// If set to true, disable H.264 video codec by stripping it out of the
|
||||
// SDP.
|
||||
// SDP. This setting is deprecated, use disabledCodec instead.
|
||||
// disableH264: false,
|
||||
|
||||
// Provides a way to prevent a video codec from being negotiated on the p2p connection.
|
||||
// disabledCodec: '',
|
||||
|
||||
// How long we're going to wait, before going back to P2P after the 3rd
|
||||
// participant has left the conference (to filter out page reload).
|
||||
// backToP2PDelay: 5
|
||||
@@ -413,6 +488,21 @@ var config = {
|
||||
// The Amplitude APP Key:
|
||||
// amplitudeAPPKey: '<APP_KEY>'
|
||||
|
||||
// Configuration for the rtcstats server:
|
||||
// By enabling rtcstats server every time a conference is joined the rtcstats
|
||||
// module connects to the provided rtcstatsEndpoint and sends statistics regarding
|
||||
// PeerConnection states along with getStats metrics polled at the specified
|
||||
// interval.
|
||||
// rtcstatsEnabled: true,
|
||||
|
||||
// In order to enable rtcstats one needs to provide a endpoint url.
|
||||
// rtcstatsEndpoint: wss://rtcstats-server-pilot.jitsi.net/,
|
||||
|
||||
// The interval at which rtcstats will poll getStats, defaults to 1000ms.
|
||||
// If the value is set to 0 getStats won't be polled and the rtcstats client
|
||||
// will only send data related to RTCPeerConnection events.
|
||||
// rtcstatsPolIInterval: 1000
|
||||
|
||||
// Array of script URLs to load as lib-jitsi-meet "analytics handlers".
|
||||
// scriptURLs: [
|
||||
// "libs/analytics-ga.min.js", // google-analytics
|
||||
@@ -420,6 +510,9 @@ var config = {
|
||||
// ],
|
||||
},
|
||||
|
||||
// Logs that should go be passed through the 'log' event if a handler is defined for it
|
||||
// apiLogLevels: ['warn', 'log', 'error', 'info', 'debug'],
|
||||
|
||||
// Information about the jitsi-meet instance we are connecting to, including
|
||||
// the user region as seen by the server.
|
||||
deploymentInfo: {
|
||||
@@ -520,7 +613,7 @@ var config = {
|
||||
/**
|
||||
External API url used to receive branding specific information.
|
||||
If there is no url set or there are missing fields, the defaults are applied.
|
||||
None of the fieds are mandatory and the response must have the shape:
|
||||
None of the fields are mandatory and the response must have the shape:
|
||||
{
|
||||
// The hex value for the colour used as background
|
||||
backgroundColor: '#fff',
|
||||
@@ -534,6 +627,11 @@ var config = {
|
||||
*/
|
||||
// brandingDataUrl: '',
|
||||
|
||||
// The URL of the moderated rooms microservice, if available. If it
|
||||
// is present, a link to the service will be rendered on the welcome page,
|
||||
// otherwise the app doesn't render it.
|
||||
// moderatedRoomServiceUrl: 'https://moderated.jitsi-meet.example.com',
|
||||
|
||||
// List of undocumented settings used in jitsi-meet
|
||||
/**
|
||||
_immediateReloadThreshold
|
||||
@@ -561,6 +659,13 @@ var config = {
|
||||
tokenAuthUrl
|
||||
*/
|
||||
|
||||
/**
|
||||
* This property can be used to alter the generated meeting invite links (in combination with a branding domain
|
||||
* which is retrieved internally by jitsi meet) (e.g. https://meet.jit.si/someMeeting
|
||||
* can become https://brandedDomain/roomAlias)
|
||||
*/
|
||||
// brandingRoomAlias: null,
|
||||
|
||||
// List of undocumented settings used in lib-jitsi-meet
|
||||
/**
|
||||
_peerConnStatusOutOfLastNTimeout
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* global APP, JitsiMeetJS, config */
|
||||
|
||||
import { jitsiLocalStorage } from '@jitsi/js-utils';
|
||||
import Logger from 'jitsi-meet-logger';
|
||||
import { jitsiLocalStorage } from 'js-utils';
|
||||
|
||||
import AuthHandler from './modules/UI/authentication/AuthHandler';
|
||||
import {
|
||||
@@ -13,6 +13,7 @@ import {
|
||||
JitsiConnectionErrors,
|
||||
JitsiConnectionEvents
|
||||
} from './react/features/base/lib-jitsi-meet';
|
||||
import { setPrejoinDisplayNameRequired } from './react/features/prejoin/actions';
|
||||
|
||||
const logger = Logger.getLogger(__filename);
|
||||
|
||||
@@ -81,7 +82,7 @@ function checkForAttachParametersAndConnect(id, password, connection) {
|
||||
*/
|
||||
function connect(id, password, roomName) {
|
||||
const connectionConfig = Object.assign({}, config);
|
||||
const { issuer, jwt } = APP.store.getState()['features/base/jwt'];
|
||||
const { jwt } = APP.store.getState()['features/base/jwt'];
|
||||
|
||||
// Use Websocket URL for the web app if configured. Note that there is no 'isWeb' check, because there's assumption
|
||||
// that this code executes only on web browsers/electron. This needs to be changed when mobile and web are unified.
|
||||
@@ -93,11 +94,7 @@ function connect(id, password, roomName) {
|
||||
// in future). It's included for the time being for Jitsi Meet and lib-jitsi-meet versions interoperability.
|
||||
connectionConfig.serviceUrl = connectionConfig.bosh = serviceUrl;
|
||||
|
||||
const connection
|
||||
= new JitsiMeetJS.JitsiConnection(
|
||||
null,
|
||||
jwt && issuer && issuer !== 'anonymous' ? jwt : undefined,
|
||||
connectionConfig);
|
||||
const connection = new JitsiMeetJS.JitsiConnection(null, jwt, connectionConfig);
|
||||
|
||||
if (config.iAmRecorder) {
|
||||
connection.addFeature(DISCO_JIBRI_FEATURE);
|
||||
@@ -113,6 +110,10 @@ function connect(id, password, roomName) {
|
||||
connection.addEventListener(
|
||||
JitsiConnectionEvents.CONNECTION_FAILED,
|
||||
connectionFailedHandler);
|
||||
connection.addEventListener(
|
||||
JitsiConnectionEvents.DISPLAY_NAME_REQUIRED,
|
||||
displayNameRequiredHandler
|
||||
);
|
||||
|
||||
/* eslint-disable max-params */
|
||||
/**
|
||||
@@ -166,6 +167,14 @@ function connect(id, password, roomName) {
|
||||
reject(err);
|
||||
}
|
||||
|
||||
/**
|
||||
* Marks the display name for the prejoin screen as required.
|
||||
* This can happen if a user tries to join a room with lobby enabled.
|
||||
*/
|
||||
function displayNameRequiredHandler() {
|
||||
APP.store.dispatch(setPrejoinDisplayNameRequired());
|
||||
}
|
||||
|
||||
checkForAttachParametersAndConnect(id, password, connection);
|
||||
});
|
||||
}
|
||||
@@ -198,10 +207,9 @@ export function openConnection({ id, password, retry, roomName }) {
|
||||
|
||||
return connect(id, password, roomName).catch(err => {
|
||||
if (retry) {
|
||||
const { issuer, jwt } = APP.store.getState()['features/base/jwt'];
|
||||
const { jwt } = APP.store.getState()['features/base/jwt'];
|
||||
|
||||
if (err === JitsiConnectionErrors.PASSWORD_REQUIRED
|
||||
&& (!jwt || issuer === 'anonymous')) {
|
||||
if (err === JitsiConnectionErrors.PASSWORD_REQUIRED && !jwt) {
|
||||
return AuthHandler.requestAuth(roomName, connect);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* Move the @atlaskit/flag container up a little bit so it does not cover the
|
||||
* toolbar with the first notification.
|
||||
*/
|
||||
.cjMOOK{
|
||||
.jIMojv{
|
||||
bottom: calc(#{$newToolbarSizeWithPadding}) !important;
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,26 @@ body {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* AtlasKit sets a default margin on the rendered modals, so
|
||||
* when the shift-right class is set when the chat opens, we
|
||||
* pad the modal container in order for the modals to be centered
|
||||
* while also taking the chat size into consideration.
|
||||
*/
|
||||
@media (min-width: 480px + $sidebarWidth) {
|
||||
.shift-right [class^="Modal__FillScreen"] {
|
||||
padding-left: $sidebarWidth;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Similarly, we offset the notifications when the chat is open by
|
||||
* padding the container.
|
||||
*/
|
||||
.shift-right [class^="styledFlagGroup-"] {
|
||||
padding-left: $sidebarWidth;
|
||||
}
|
||||
|
||||
.jitsi-icon svg {
|
||||
fill: white;
|
||||
}
|
||||
|
||||
@@ -4,16 +4,11 @@
|
||||
color: #FFF;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
/**
|
||||
* Make the sidebar flush with the top of the toolbar. Take the size of
|
||||
* the toolbar and subtract from 100%.
|
||||
*/
|
||||
height: calc(100% - #{$newToolbarSizeWithPadding});
|
||||
height: 100%;
|
||||
left: -$sidebarWidth;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
transition: left 0.5s;
|
||||
width: $sidebarWidth;
|
||||
z-index: $sideToolbarContainerZ;
|
||||
|
||||
|
||||
60
css/_connection-status.scss
Normal file
60
css/_connection-status.scss
Normal file
@@ -0,0 +1,60 @@
|
||||
.con-status {
|
||||
position: absolute;
|
||||
top: 40px;
|
||||
width: 100%;
|
||||
z-index: $toolbarZ + 3;
|
||||
|
||||
&-container {
|
||||
background: rgba(28, 32, 37, .5);
|
||||
border-radius: 3px;
|
||||
color: #fff;
|
||||
font-size: 13px;
|
||||
line-height: 20px;
|
||||
margin: 0 auto;
|
||||
width: 304px;
|
||||
}
|
||||
|
||||
&-header {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
&-circle {
|
||||
border-radius: 50%;
|
||||
display: inline-block;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
&--good {
|
||||
background: #31B76A;
|
||||
}
|
||||
|
||||
&--poor {
|
||||
background: #E12D2D;
|
||||
}
|
||||
|
||||
&--non-optimal {
|
||||
background: #E39623;
|
||||
}
|
||||
|
||||
&-arrow {
|
||||
&--up {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
&>svg {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
&-text {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
&-details {
|
||||
border-top: 1px solid #5E6D7A;
|
||||
padding: 16px;
|
||||
}
|
||||
}
|
||||
@@ -1,35 +1,26 @@
|
||||
#e2ee-section {
|
||||
.title {
|
||||
font-weight: 700;
|
||||
}
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.description {
|
||||
font-size: .8em;
|
||||
font-size: 13px;
|
||||
margin: 15px 0;
|
||||
|
||||
.read-more {
|
||||
cursor: pointer;
|
||||
opacity: .7;
|
||||
}
|
||||
}
|
||||
|
||||
.key-field {
|
||||
align-items: center;
|
||||
.control-row {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
margin-top: 15px;
|
||||
|
||||
label {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
input {
|
||||
background-color: inherit;
|
||||
border: none;
|
||||
color: inherit;
|
||||
flex: 1;
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #6FB1EA;
|
||||
cursor: pointer;
|
||||
font-size: 14px;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@
|
||||
top: 30px;
|
||||
right: 30px;
|
||||
transition: right 0.5s;
|
||||
z-index: $zindex3;
|
||||
z-index: $filmstripVideosZ + 1;
|
||||
|
||||
.circular-label {
|
||||
align-items: center;
|
||||
|
||||
@@ -34,6 +34,10 @@
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.description {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.control-row {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
||||
@@ -96,6 +96,11 @@
|
||||
padding: 0 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.prejoin-dialog-btn.primary,
|
||||
.action-btn.prejoin-dialog-btn.text {
|
||||
width: 310px;
|
||||
}
|
||||
}
|
||||
|
||||
.prejoin-dialog-callout {
|
||||
|
||||
@@ -36,15 +36,19 @@
|
||||
}
|
||||
|
||||
&-checkbox-container {
|
||||
align-items: center;
|
||||
color: #fff;
|
||||
display: none;
|
||||
font-size: 13px;
|
||||
justify-content: center;
|
||||
line-height: 20px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 14px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
&-error {
|
||||
color: white;
|
||||
background-color: rgba(229, 75, 75, 0.5);
|
||||
width: 100%;
|
||||
padding: 3px;
|
||||
margin-top: 4px;
|
||||
font-size: 13px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin name-placeholder {
|
||||
|
||||
@@ -1,22 +1,90 @@
|
||||
/**
|
||||
* Shared style for full screen local track based dialogs/modals.
|
||||
*/
|
||||
.premeeting-screen,
|
||||
.preview-overlay {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.premeeting-screen {
|
||||
align-items: stretch;
|
||||
background: #1C2025;
|
||||
bottom: 0;
|
||||
background: radial-gradient(50% 50% at 50% 50%, #5D95C7 0%, #376288 100%), #FFFFFF;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
font-size: 1.3em;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
z-index: $toolbarZ + 1;
|
||||
|
||||
.action-btn {
|
||||
border-radius: 3px;
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
font-size: 15px;
|
||||
line-height: 24px;
|
||||
margin-top: 16px;
|
||||
padding: 7px 16px;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
width: 286px;
|
||||
|
||||
&.primary {
|
||||
background: #0376DA;
|
||||
border: 1px solid #0376DA;
|
||||
}
|
||||
|
||||
&.secondary {
|
||||
background: transparent;
|
||||
border: 1px solid #5E6D7A;
|
||||
}
|
||||
|
||||
&.text {
|
||||
width: auto;
|
||||
font-size: 13px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
&.disabled {
|
||||
background: #5E6D7A;
|
||||
border: 1px solid #5E6D7A;
|
||||
color: #AFB6BC;
|
||||
cursor: initial;
|
||||
|
||||
.icon {
|
||||
& > svg {
|
||||
fill: #AFB6BC;
|
||||
}
|
||||
}
|
||||
|
||||
.options {
|
||||
border-left: 1px solid #AFB6BC;
|
||||
}
|
||||
}
|
||||
|
||||
.options {
|
||||
align-items: center;
|
||||
border-left: 1px solid #fff;
|
||||
display: flex;
|
||||
height: 100%;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
width: 40px;
|
||||
}
|
||||
}
|
||||
|
||||
.preview-overlay {
|
||||
background-image: linear-gradient(transparent, black);
|
||||
z-index: $toolbarZ + 1;
|
||||
}
|
||||
|
||||
.content {
|
||||
align-items: center;
|
||||
background-image: linear-gradient(transparent, black);
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: column;
|
||||
@@ -97,66 +165,6 @@
|
||||
color: $defaultWarningColor;
|
||||
}
|
||||
}
|
||||
|
||||
.action-btn {
|
||||
border-radius: 3px;
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
font-size: 15px;
|
||||
line-height: 24px;
|
||||
margin-top: 16px;
|
||||
padding: 7px 16px;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
width: 286px;
|
||||
|
||||
&.primary {
|
||||
background: #0376DA;
|
||||
border: 1px solid #0376DA;
|
||||
}
|
||||
|
||||
&.secondary {
|
||||
background: transparent;
|
||||
border: 1px solid #5E6D7A;
|
||||
}
|
||||
|
||||
&.text {
|
||||
width: auto;
|
||||
font-size: 13px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
&.disabled {
|
||||
background: #5E6D7A;
|
||||
border: 1px solid #5E6D7A;
|
||||
color: #AFB6BC;
|
||||
cursor: initial;
|
||||
|
||||
.icon {
|
||||
& > svg {
|
||||
fill: #AFB6BC;
|
||||
}
|
||||
}
|
||||
|
||||
.options {
|
||||
border-left: 1px solid #AFB6BC;
|
||||
}
|
||||
}
|
||||
|
||||
.options {
|
||||
align-items: center;
|
||||
border-left: 1px solid #fff;
|
||||
display: flex;
|
||||
height: 100%;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
width: 40px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.media-btn-container {
|
||||
@@ -191,7 +199,7 @@
|
||||
|
||||
.avatar {
|
||||
background: #A4B8D1;
|
||||
margin: 200px auto 0 auto;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
video {
|
||||
@@ -201,3 +209,66 @@
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin flex-centered() {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
@mixin icon-container($bg, $fill) {
|
||||
.toggle-button-icon-container {
|
||||
background: $bg;
|
||||
|
||||
svg {
|
||||
fill: $fill
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.toggle-button {
|
||||
border-radius: 3px;
|
||||
cursor: pointer;
|
||||
color: #fff;
|
||||
font-size: 13px;
|
||||
height: 40px;
|
||||
margin: 0 auto;
|
||||
width: 320px;
|
||||
|
||||
@include flex-centered();
|
||||
|
||||
svg {
|
||||
fill: transparent;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: #1C2025;
|
||||
|
||||
@include icon-container(#A4B8D1, #1C2025);
|
||||
}
|
||||
|
||||
&-container {
|
||||
position: relative;
|
||||
|
||||
@include flex-centered();
|
||||
}
|
||||
|
||||
&-icon-container {
|
||||
border-radius: 50%;
|
||||
left: -22px;
|
||||
padding: 2px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
&--toggled {
|
||||
background: #75757A;
|
||||
|
||||
&:hover {
|
||||
background: #75757A;
|
||||
|
||||
@include icon-container(#A4B8D1, #75757A);
|
||||
}
|
||||
|
||||
@include icon-container(#A4B8D1, #75757A);
|
||||
}
|
||||
}
|
||||
|
||||
70
css/_responsive.scss
Normal file
70
css/_responsive.scss
Normal file
@@ -0,0 +1,70 @@
|
||||
@media only screen and (max-width: $smallScreen) {
|
||||
.watermark {
|
||||
width: 20%;
|
||||
height: 20%;
|
||||
}
|
||||
|
||||
.new-toolbox {
|
||||
.toolbox-content {
|
||||
.button-group-center, .button-group-left, .button-group-right {
|
||||
.toolbox-button {
|
||||
.toolbox-icon {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
svg {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(2) {
|
||||
.toolbox-icon {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: $verySmallScreen) {
|
||||
#videoResolutionLabel {
|
||||
display: none;
|
||||
}
|
||||
.desktop-browser {
|
||||
.vertical-filmstrip .filmstrip {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.new-toolbox {
|
||||
.toolbox-content {
|
||||
.button-group-center, .button-group-left, .button-group-right {
|
||||
.settings-button-small-icon {
|
||||
display: none;
|
||||
}
|
||||
.toolbox-button {
|
||||
.toolbox-icon {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
svg {
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(2) {
|
||||
.toolbox-icon {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.chrome-extension-banner {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@@ -42,6 +42,11 @@
|
||||
display: none;
|
||||
}
|
||||
|
||||
&.shift-right {
|
||||
margin-left: $sidebarWidth;
|
||||
width: calc(100% - #{$sidebarWidth});
|
||||
}
|
||||
|
||||
.toolbox-background {
|
||||
background-image: linear-gradient(to top, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0));
|
||||
transition: bottom .3s ease-in;
|
||||
|
||||
@@ -164,6 +164,9 @@ $unsupportedDesktopBrowserTextFontSize: 21px;
|
||||
$watermarkWidth: 186px;
|
||||
$watermarkHeight: 74px;
|
||||
|
||||
$welcomePageWatermarkWidth: 186px;
|
||||
$welcomePageWatermarkHeight: 74px;
|
||||
|
||||
/**
|
||||
* Welcome page variables.
|
||||
*/
|
||||
@@ -178,9 +181,12 @@ $welcomePageHeaderBackgroundPosition: none;
|
||||
$welcomePageHeaderBackgroundRepeat: none;
|
||||
$welcomePageHeaderBackgroundSize: none;
|
||||
$welcomePageHeaderPaddingBottom: 0px;
|
||||
$welcomePageHeaderMinHeight: fit-content;
|
||||
|
||||
$welcomePageHeaderTextMarginTop: 35px;
|
||||
$welcomePageHeaderTextMarginBottom: 35px;
|
||||
$welcomePageHeaderTextDisplay: flex;
|
||||
$welcomePageHeaderTextWidth: 650px;
|
||||
|
||||
$welcomePageHeaderTextTitleMarginBottom: 16px;
|
||||
$welcomePageHeaderTextTitleFontSize: 2.5rem;
|
||||
@@ -195,6 +201,7 @@ $welcomePageHeaderTextDescriptionLineHeight: 24px;
|
||||
$welcomePageHeaderTextDescriptionMarginBottom: 20px;
|
||||
$welcomePageHeaderTextDescriptionAlignSelf: inherit;
|
||||
|
||||
$welcomePageEnterRoomDisplay: flex;
|
||||
$welcomePageEnterRoomWidth: 680px;
|
||||
$welcomePageEnterRoomPadding: 25px 30px;
|
||||
$welcomePageEnterRoomBorderRadius: 0px;
|
||||
@@ -269,3 +276,9 @@ $chromeExtensionBannerTop: 80px;
|
||||
$chromeExtensionBannerRight: 16px;
|
||||
$chromeExtensionBannerTopInMeeting: 10px;
|
||||
$chromeExtensionBannerRightInMeeeting: 10px;
|
||||
|
||||
/**
|
||||
* media type thresholds
|
||||
*/
|
||||
$smallScreen: 700px;
|
||||
$verySmallScreen: 500px;
|
||||
|
||||
@@ -181,6 +181,13 @@
|
||||
visibility: hidden;
|
||||
z-index: $zindex2;
|
||||
}
|
||||
|
||||
&.shift-right {
|
||||
&#largeVideoContainer {
|
||||
margin-left: $sidebarWidth;
|
||||
width: calc(100% - #{$sidebarWidth});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#localVideoWrapper {
|
||||
|
||||
@@ -21,18 +21,18 @@ body.welcome-page {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: fit-content;
|
||||
min-height: $welcomePageHeaderMinHeight;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
|
||||
.header-text {
|
||||
display: flex;
|
||||
display: $welcomePageHeaderTextDisplay;
|
||||
flex-direction: column;
|
||||
margin-top: $watermarkHeight + $welcomePageHeaderTextMarginTop;
|
||||
margin-bottom: $welcomePageHeaderTextMarginBottom;
|
||||
max-width: calc(100% - 40px);
|
||||
width: 650px;
|
||||
width: $welcomePageHeaderTextWidth;
|
||||
z-index: $zindex2;
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ body.welcome-page {
|
||||
}
|
||||
|
||||
#enter_room {
|
||||
display: flex;
|
||||
display: $welcomePageEnterRoomDisplay;
|
||||
align-items: center;
|
||||
max-width: calc(100% - 40px);
|
||||
width: $welcomePageEnterRoomWidth;
|
||||
@@ -95,8 +95,12 @@ body.welcome-page {
|
||||
flex-direction: row;
|
||||
margin-top: 5px;
|
||||
|
||||
svg {
|
||||
fill: $defaultWarningColor
|
||||
.jitsi-icon {
|
||||
margin-right: 15px;
|
||||
|
||||
svg {
|
||||
fill: $defaultWarningColor
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,6 +111,22 @@ body.welcome-page {
|
||||
|
||||
}
|
||||
|
||||
#moderated-meetings {
|
||||
max-width: calc(100% - 40px);
|
||||
padding: 16px 0 39px 0;
|
||||
width: $welcomePageEnterRoomWidth;
|
||||
|
||||
p {
|
||||
color: $welcomePageDescriptionColor;
|
||||
text-align: left;
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tab-container {
|
||||
font-size: 16px;
|
||||
position: relative;
|
||||
@@ -191,5 +211,10 @@ body.welcome-page {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
.watermark.leftwatermark {
|
||||
width: $welcomePageWatermarkWidth;
|
||||
height: $welcomePageWatermarkHeight;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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: 8px;
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -46,7 +46,16 @@
|
||||
position: fixed;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
z-index: $filmstripVideosZ
|
||||
z-index: $filmstripVideosZ;
|
||||
|
||||
&.shift-right {
|
||||
margin-left: $sidebarWidth;
|
||||
width: calc(100% - #{$sidebarWidth});
|
||||
|
||||
#filmstripRemoteVideos {
|
||||
width: calc(100vw - #{$sidebarWidth});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -33,9 +33,11 @@ $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';
|
||||
@import 'modals/embed-meeting/embed-meeting';
|
||||
@import 'modals/feedback/feedback';
|
||||
@import 'modals/invite/info';
|
||||
@import 'modals/settings/settings';
|
||||
@@ -99,5 +101,7 @@ $flagsImagePath: "../images/";
|
||||
@import 'modals/security/security';
|
||||
@import 'premeeting-screens';
|
||||
@import 'e2ee';
|
||||
@import 'responsive';
|
||||
@import 'connection-status';
|
||||
|
||||
/* Modules END */
|
||||
|
||||
59
css/modals/embed-meeting/_embed-meeting.scss
Normal file
59
css/modals/embed-meeting/_embed-meeting.scss
Normal file
@@ -0,0 +1,59 @@
|
||||
.embed-meeting {
|
||||
&-dialog {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
&-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin: 16px 16px 24px;
|
||||
width: calc(100% - 32px);
|
||||
color: #fff;
|
||||
font-weight: 600;
|
||||
font-size: 24px;
|
||||
line-height: 32px;
|
||||
|
||||
& > div > svg {
|
||||
cursor: pointer;
|
||||
fill: #A4B8D1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-copy {
|
||||
color: white;
|
||||
font-size: 15px;
|
||||
margin-left: auto;
|
||||
margin-top: 16px;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
&-code {
|
||||
background: transparent;
|
||||
border: 1px solid #A4B8D1;
|
||||
color: white;
|
||||
font-size: 15px;
|
||||
height: 165px;
|
||||
line-height: 24px;
|
||||
padding: 8px;
|
||||
width: 100%;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
&-trigger {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 8px 8px 8px 16px;
|
||||
margin-top: 24px;
|
||||
width: calc(100% - 24px);
|
||||
height: 24px;
|
||||
background: #2A3A4B;
|
||||
border: 1px solid #5E6D7A;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
|
||||
.jitsi-icon {
|
||||
margin-right: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -47,10 +47,6 @@
|
||||
font-size: 15px;
|
||||
line-height: 24px;
|
||||
|
||||
& > span {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
&.header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
@@ -67,44 +63,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
&.copy-link {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 8px 8px 8px 16px;
|
||||
margin-top: 8px;
|
||||
width: calc(100% - 24px);
|
||||
height: 24px;
|
||||
|
||||
background: #0376DA;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
background: #278ADF;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
&-text {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
max-width: 292px;
|
||||
|
||||
&.selected {
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
|
||||
&.clicked {
|
||||
background: #31B76A;
|
||||
}
|
||||
|
||||
& > div > svg > path {
|
||||
fill: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
&.separator {
|
||||
margin: 24px 0 24px -20px;
|
||||
padding: 0 20px;
|
||||
@@ -208,6 +166,12 @@
|
||||
padding: 8px 16px;
|
||||
background: #0376DA;
|
||||
}
|
||||
|
||||
&.disabled {
|
||||
& > a {
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.stream {
|
||||
|
||||
@@ -8,6 +8,10 @@
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.description {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.password {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
@@ -22,17 +26,13 @@
|
||||
color: #6FB1EA;
|
||||
}
|
||||
|
||||
&>a+a {
|
||||
margin-left: 24px;
|
||||
& > :first-child:not(:last-child) {
|
||||
margin-right: 24px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&> :first-child:not(:last-child) {
|
||||
margin-right: 24px;
|
||||
}
|
||||
|
||||
.separator-line {
|
||||
margin: 24px 0 24px -20px;
|
||||
padding: 0 20px;
|
||||
@@ -47,13 +47,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
.new-toolbox .toolbox-content .toolbox-icon.security-toolbar-button,
|
||||
.new-toolbox .toolbox-content .toolbox-icon.toggled.security-toolbar-button {
|
||||
background: rgba(241, 173, 51, 0.7);
|
||||
border: 1px solid rgba(255, 255, 255, 0.4);
|
||||
border-width: 0;
|
||||
|
||||
&:hover {
|
||||
background: rgba(241, 173, 51, 0.7);
|
||||
border: 1px solid rgba(255, 255, 255, 0.4);
|
||||
&:not(:hover) {
|
||||
background: unset;
|
||||
}
|
||||
}
|
||||
@@ -30,10 +30,12 @@
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.profile-edit-field,
|
||||
.settings-sub-pane {
|
||||
.profile-edit-field {
|
||||
flex: 1;
|
||||
}
|
||||
.settings-sub-pane {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.profile-edit-field {
|
||||
margin-right: 20px;
|
||||
|
||||
2
debian/control
vendored
2
debian/control
vendored
@@ -47,7 +47,7 @@ Description: Prosody configuration for Jitsi Meet
|
||||
|
||||
Package: jitsi-meet-tokens
|
||||
Architecture: all
|
||||
Depends: ${misc:Depends}, prosody-trunk (>= 1nightly747) | prosody-0.11 | prosody (>= 0.11.2), libssl-dev, luarocks, jitsi-meet-prosody
|
||||
Depends: ${misc:Depends}, prosody-trunk (>= 1nightly747) | prosody-0.11 | prosody (>= 0.11.2), libssl1.0-dev | libssl-dev, luarocks, jitsi-meet-prosody, git
|
||||
Description: Prosody token authentication plugin for Jitsi Meet
|
||||
|
||||
Package: jitsi-meet-turnserver
|
||||
|
||||
11
debian/jitsi-meet-tokens.postinst
vendored
11
debian/jitsi-meet-tokens.postinst
vendored
@@ -48,9 +48,9 @@ case "$1" in
|
||||
db_stop
|
||||
|
||||
if [ -f "$PROSODY_HOST_CONFIG" ] ; then
|
||||
# search for --plugin_paths, if this is not enabled this is the
|
||||
# search for the token auth, if this is not enabled this is the
|
||||
# first time we install tokens package and needs a config change
|
||||
if grep -q "\-\-plugin_paths" "$PROSODY_HOST_CONFIG"; then
|
||||
if ! egrep -q '^\s*authentication\s*=\s*"token"' "$PROSODY_HOST_CONFIG"; then
|
||||
# enable tokens in prosody host config
|
||||
sed -i 's/--plugin_paths/plugin_paths/g' $PROSODY_HOST_CONFIG
|
||||
sed -i 's/authentication = "anonymous"/authentication = "token"/g' $PROSODY_HOST_CONFIG
|
||||
@@ -58,6 +58,7 @@ case "$1" in
|
||||
sed -i "s/ --app_id=\"example_app_id\"/ app_id=\"$APP_ID\"/g" $PROSODY_HOST_CONFIG
|
||||
sed -i "s/ --app_secret=\"example_app_secret\"/ app_secret=\"$APP_SECRET\"/g" $PROSODY_HOST_CONFIG
|
||||
sed -i 's/ --modules_enabled = { "token_verification" }/ modules_enabled = { "token_verification" }/g' $PROSODY_HOST_CONFIG
|
||||
sed -i '/^\s*--\s*"token_verification"/ s/--\s*//' $PROSODY_HOST_CONFIG
|
||||
|
||||
# Install luajwt
|
||||
if ! luarocks install luajwtjitsi; then
|
||||
@@ -73,9 +74,9 @@ case "$1" in
|
||||
PRTRUNK_INSTALL_CHECK="$(dpkg-query -f '${Status}' -W 'prosody-trunk' 2>/dev/null | awk '{print $3}' || true)"
|
||||
PR_VER_INSTALLED=$(dpkg-query -f='${Version}\n' --show prosody 2>/dev/null || true)
|
||||
if [ "$PR10_INSTALL_CHECK" = "installed" ] \
|
||||
|| "$PR10_INSTALL_CHECK" = "unpacked" \
|
||||
|| "$PRTRUNK_INSTALL_CHECK" = "installed" \
|
||||
|| "$PRTRUNK_INSTALL_CHECK" = "unpacked" \
|
||||
|| [ "$PR10_INSTALL_CHECK" = "unpacked" ] \
|
||||
|| [ "$PRTRUNK_INSTALL_CHECK" = "installed" ] \
|
||||
|| [ "$PRTRUNK_INSTALL_CHECK" = "unpacked" ] \
|
||||
|| dpkg --compare-versions "$PR_VER_INSTALLED" lt "0.11" ; then
|
||||
sed -i 's/module:hook_global(/module:hook(/g' /usr/share/jitsi-meet/prosody-plugins/mod_auth_token.lua
|
||||
fi
|
||||
|
||||
3
debian/jitsi-meet-tokens.postrm
vendored
3
debian/jitsi-meet-tokens.postrm
vendored
@@ -37,11 +37,10 @@ case "$1" in
|
||||
APP_SECRET=$RET
|
||||
|
||||
# Revert prosody config
|
||||
sed -i 's/plugin_paths/--plugin_paths/g' $PROSODY_HOST_CONFIG
|
||||
sed -i 's/authentication = "token"/authentication = "anonymous"/g' $PROSODY_HOST_CONFIG
|
||||
sed -i "s/ app_id=\"$APP_ID\"/ --app_id=\"example_app_id\"/g" $PROSODY_HOST_CONFIG
|
||||
sed -i "s/ app_secret=\"$APP_SECRET\"/ --app_secret=\"example_app_secret\"/g" $PROSODY_HOST_CONFIG
|
||||
sed -i 's/ -- "token_verification"/ "token_verification"/g' $PROSODY_HOST_CONFIG
|
||||
sed -i '/^\s*"token_verification"/ s/"token_verification"/-- "token_verification"/' $PROSODY_HOST_CONFIG
|
||||
|
||||
if [ -x "/etc/init.d/prosody" ]; then
|
||||
invoke-rc.d prosody restart || true
|
||||
|
||||
33
debian/jitsi-meet-turnserver.postinst
vendored
33
debian/jitsi-meet-turnserver.postinst
vendored
@@ -49,7 +49,7 @@ case "$1" in
|
||||
# nothing to do
|
||||
echo "------------------------------------------------"
|
||||
echo ""
|
||||
echo "turnserver is listening on tcp 4445 as other nginx sites use port 443"
|
||||
echo "turnserver is listening on tcp 5349 as other nginx sites use port 443"
|
||||
echo ""
|
||||
echo "------------------------------------------------"
|
||||
NGINX_MULTIPLEXING="false"
|
||||
@@ -87,9 +87,36 @@ case "$1" in
|
||||
if [[ -f $TURN_CONFIG ]] ; then
|
||||
echo "------------------------------------------------"
|
||||
echo ""
|
||||
echo "turnserver is already configured on this machine, skipping."
|
||||
echo "turnserver is already configured on this machine."
|
||||
echo ""
|
||||
echo "------------------------------------------------"
|
||||
|
||||
if grep -q "jitsi-meet coturn config" "$TURN_CONFIG" && ! grep -q "jitsi-meet coturn relay disable config" "$TURN_CONFIG" ; then
|
||||
echo "Updating coturn config"
|
||||
echo "# jitsi-meet coturn relay disable config. Do not modify this line
|
||||
no-multicast-peers
|
||||
no-cli
|
||||
no-loopback-peers
|
||||
no-tcp-relay
|
||||
denied-peer-ip=0.0.0.0-0.255.255.255
|
||||
denied-peer-ip=10.0.0.0-10.255.255.255
|
||||
denied-peer-ip=100.64.0.0-100.127.255.255
|
||||
denied-peer-ip=127.0.0.0-127.255.255.255
|
||||
denied-peer-ip=169.254.0.0-169.254.255.255
|
||||
denied-peer-ip=127.0.0.0-127.255.255.255
|
||||
denied-peer-ip=172.16.0.0-172.31.255.255
|
||||
denied-peer-ip=192.0.0.0-192.0.0.255
|
||||
denied-peer-ip=192.0.2.0-192.0.2.255
|
||||
denied-peer-ip=192.88.99.0-192.88.99.255
|
||||
denied-peer-ip=192.168.0.0-192.168.255.255
|
||||
denied-peer-ip=198.18.0.0-198.19.255.255
|
||||
denied-peer-ip=198.51.100.0-198.51.100.255
|
||||
denied-peer-ip=203.0.113.0-203.0.113.255
|
||||
denied-peer-ip=240.0.0.0-255.255.255.255" >> $TURN_CONFIG
|
||||
|
||||
invoke-rc.d coturn restart || true
|
||||
fi
|
||||
|
||||
db_stop
|
||||
exit 0
|
||||
fi
|
||||
@@ -152,7 +179,7 @@ case "$1" in
|
||||
PROSODY_HOST_CONFIG="/etc/prosody/conf.avail/$JVB_HOSTNAME.cfg.lua"
|
||||
if [ -f $PROSODY_HOST_CONFIG ] ; then
|
||||
# If we are not multiplexing we need to change the port in prosody config
|
||||
sed -i 's/"443"/"4445"/g' $PROSODY_HOST_CONFIG
|
||||
sed -i 's/"443"/"5349"/g' $PROSODY_HOST_CONFIG
|
||||
invoke-rc.d prosody restart || true
|
||||
fi
|
||||
fi
|
||||
|
||||
8
debian/jitsi-meet-web-config.postinst
vendored
8
debian/jitsi-meet-web-config.postinst
vendored
@@ -91,10 +91,14 @@ case "$1" in
|
||||
CERT_CRT="/etc/jitsi/meet/$JVB_HOSTNAME.crt"
|
||||
HOST="$( (hostname -s; echo localhost) | head -n 1)"
|
||||
DOMAIN="$( (hostname -d; echo localdomain) | head -n 1)"
|
||||
openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj \
|
||||
openssl req -new -newkey rsa:4096 -days 3650 -nodes -x509 -subj \
|
||||
"/O=$DOMAIN/OU=$HOST/CN=$JVB_HOSTNAME/emailAddress=webmaster@$HOST.$DOMAIN" \
|
||||
-keyout $CERT_KEY \
|
||||
-out $CERT_CRT
|
||||
-out $CERT_CRT \
|
||||
-reqexts SAN \
|
||||
-extensions SAN \
|
||||
-config <(cat /etc/ssl/openssl.cnf \
|
||||
<(printf "[SAN]\nsubjectAltName=DNS:localhost,DNS:$JVB_HOSTNAME"))
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
# Documentation
|
||||
|
||||
The Jitsi documentation has been moved to [The Handbook](https://jitsi.github.io/handbook/).
|
||||
The Jitsi documentation has been moved to [The Handbook](https://jitsi.github.io/handbook/). The repo is https://github.com/jitsi/handbook.
|
||||
|
||||
@@ -6,8 +6,8 @@ muc_mapper_domain_base = "jitmeet.example.com";
|
||||
turncredentials_secret = "__turnSecret__";
|
||||
|
||||
turncredentials = {
|
||||
{ type = "stun", host = "jitmeet.example.com", port = "4446" },
|
||||
{ type = "turn", host = "jitmeet.example.com", port = "4446", transport = "udp" },
|
||||
{ type = "stun", host = "jitmeet.example.com", port = "3478" },
|
||||
{ type = "turn", host = "jitmeet.example.com", port = "3478", transport = "udp" },
|
||||
{ type = "turns", host = "jitmeet.example.com", port = "443", transport = "tcp" }
|
||||
};
|
||||
|
||||
|
||||
@@ -5,14 +5,32 @@ static-auth-secret=__turnSecret__
|
||||
realm=jitsi-meet.example.com
|
||||
cert=/etc/jitsi/meet/jitsi-meet.example.com.crt
|
||||
pkey=/etc/jitsi/meet/jitsi-meet.example.com.key
|
||||
|
||||
no-multicast-peers
|
||||
no-cli
|
||||
no-loopback-peers
|
||||
no-tcp-relay
|
||||
no-tcp
|
||||
listening-port=4446
|
||||
tls-listening-port=4445
|
||||
listening-port=3478
|
||||
tls-listening-port=5349
|
||||
external-ip=__external_ip_address__
|
||||
no-tlsv1
|
||||
no-tlsv1_1
|
||||
# https://ssl-config.mozilla.org/#server=haproxy&version=2.1&config=intermediate&openssl=1.1.0g&guideline=5.4
|
||||
cipher-list=ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
|
||||
|
||||
# jitsi-meet coturn relay disable config. Do not modify this line
|
||||
denied-peer-ip=0.0.0.0-0.255.255.255
|
||||
denied-peer-ip=10.0.0.0-10.255.255.255
|
||||
denied-peer-ip=100.64.0.0-100.127.255.255
|
||||
denied-peer-ip=127.0.0.0-127.255.255.255
|
||||
denied-peer-ip=169.254.0.0-169.254.255.255
|
||||
denied-peer-ip=127.0.0.0-127.255.255.255
|
||||
denied-peer-ip=172.16.0.0-172.31.255.255
|
||||
denied-peer-ip=192.0.0.0-192.0.0.255
|
||||
denied-peer-ip=192.0.2.0-192.0.2.255
|
||||
denied-peer-ip=192.88.99.0-192.88.99.255
|
||||
denied-peer-ip=192.168.0.0-192.168.255.255
|
||||
denied-peer-ip=198.18.0.0-198.19.255.255
|
||||
denied-peer-ip=198.51.100.0-198.51.100.255
|
||||
denied-peer-ip=203.0.113.0-203.0.113.255
|
||||
denied-peer-ip=240.0.0.0-255.255.255.255
|
||||
syslog
|
||||
|
||||
@@ -7,7 +7,7 @@ stream {
|
||||
server 127.0.0.1:4444;
|
||||
}
|
||||
upstream turn {
|
||||
server 127.0.0.1:4445;
|
||||
server 127.0.0.1:5349;
|
||||
}
|
||||
# since 1.13.10
|
||||
map $ssl_preread_alpn_protocols $upstream {
|
||||
|
||||
@@ -45,8 +45,10 @@ server {
|
||||
error_page 404 /static/404.html;
|
||||
|
||||
gzip on;
|
||||
gzip_types text/plain text/css application/javascript application/json;
|
||||
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 = /config.js {
|
||||
alias /etc/jitsi/meet/jitsi-meet.example.com-config.js;
|
||||
@@ -61,6 +63,11 @@ server {
|
||||
{
|
||||
add_header 'Access-Control-Allow-Origin' '*';
|
||||
alias /usr/share/jitsi-meet/$1/$2;
|
||||
|
||||
# cache all versioned files
|
||||
if ($arg_v) {
|
||||
expires 1y;
|
||||
}
|
||||
}
|
||||
|
||||
# BOSH
|
||||
|
||||
@@ -14,6 +14,12 @@ server {
|
||||
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;
|
||||
|
||||
@@ -28,6 +28,12 @@ server {
|
||||
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;
|
||||
}
|
||||
|
||||
10
index.html
10
index.html
@@ -8,7 +8,17 @@
|
||||
|
||||
<link rel="apple-touch-icon" href="images/apple-touch-icon.png">
|
||||
<link rel="stylesheet" href="css/all.css">
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
if (!JitsiMeetJS.app) {
|
||||
return;
|
||||
}
|
||||
|
||||
JitsiMeetJS.app.renderEntryPoint({
|
||||
Component: JitsiMeetJS.app.entryPoints.APP
|
||||
})
|
||||
})
|
||||
</script>
|
||||
<script>
|
||||
// IE11 and earlier can be identified via their user agent and be
|
||||
// redirected to a page that is known to have no newer js syntax.
|
||||
|
||||
@@ -1,131 +1,23 @@
|
||||
/* eslint-disable no-unused-vars, no-var, max-len */
|
||||
/* eslint sort-keys: ["error", "asc", {"caseSensitive": false}] */
|
||||
|
||||
var interfaceConfig = {
|
||||
DEFAULT_BACKGROUND: '#474747',
|
||||
DEFAULT_LOGO_URL: '../images/watermark.png',
|
||||
|
||||
/**
|
||||
* Whether or not the blurred video background for large video should be
|
||||
* displayed on browsers that can support it.
|
||||
*/
|
||||
DISABLE_VIDEO_BACKGROUND: false,
|
||||
|
||||
INITIAL_TOOLBAR_TIMEOUT: 20000,
|
||||
TOOLBAR_TIMEOUT: 4000,
|
||||
TOOLBAR_ALWAYS_VISIBLE: false,
|
||||
DEFAULT_REMOTE_DISPLAY_NAME: 'Fellow Jitster',
|
||||
DEFAULT_LOCAL_DISPLAY_NAME: 'me',
|
||||
SHOW_JITSI_WATERMARK: true,
|
||||
JITSI_WATERMARK_LINK: 'https://jitsi.org',
|
||||
|
||||
// if watermark is disabled by default, it can be shown only for guests
|
||||
SHOW_WATERMARK_FOR_GUESTS: true,
|
||||
SHOW_BRAND_WATERMARK: false,
|
||||
BRAND_WATERMARK_LINK: '',
|
||||
SHOW_POWERED_BY: false,
|
||||
SHOW_DEEP_LINKING_IMAGE: false,
|
||||
GENERATE_ROOMNAMES_ON_WELCOME_PAGE: true,
|
||||
DISPLAY_WELCOME_PAGE_CONTENT: true,
|
||||
DISPLAY_WELCOME_PAGE_TOOLBAR_ADDITIONAL_CONTENT: false,
|
||||
APP_NAME: 'Jitsi Meet',
|
||||
NATIVE_APP_NAME: 'Jitsi Meet',
|
||||
PROVIDER_NAME: 'Jitsi',
|
||||
LANG_DETECTION: true, // Allow i18n to detect the system language
|
||||
|
||||
/**
|
||||
* Hide the invite prompt in the header when alone in the meeting.
|
||||
*/
|
||||
HIDE_INVITE_MORE_HEADER: false,
|
||||
|
||||
/**
|
||||
* The name of the toolbar buttons to display in the toolbar. If present,
|
||||
* the button will display. Exceptions are "livestreaming" and "recording"
|
||||
* which also require being a moderator and some values in config.js to be
|
||||
* enabled. Also, the "profile" button will not display for user's with a
|
||||
* jwt.
|
||||
*/
|
||||
TOOLBAR_BUTTONS: [
|
||||
'microphone', 'camera', 'closedcaptions', 'desktop', 'fullscreen',
|
||||
'fodeviceselection', 'hangup', 'profile', 'chat', 'recording',
|
||||
'livestreaming', 'etherpad', 'sharedvideo', 'settings', 'raisehand',
|
||||
'videoquality', 'filmstrip', 'invite', 'feedback', 'stats', 'shortcuts',
|
||||
'tileview', 'videobackgroundblur', 'download', 'help', 'mute-everyone', 'security'
|
||||
],
|
||||
|
||||
SETTINGS_SECTIONS: [ 'devices', 'language', 'moderator', 'profile', 'calendar' ],
|
||||
|
||||
// Determines how the video would fit the screen. 'both' would fit the whole
|
||||
// screen, 'height' would fit the original video height to the height of the
|
||||
// screen, 'width' would fit the original video width to the width of the
|
||||
// screen respecting ratio.
|
||||
VIDEO_LAYOUT_FIT: 'both',
|
||||
|
||||
/**
|
||||
* Whether to only show the filmstrip (and hide the toolbar).
|
||||
*/
|
||||
filmStripOnly: false,
|
||||
|
||||
/**
|
||||
* Whether to show thumbnails in filmstrip as a column instead of as a row.
|
||||
*/
|
||||
VERTICAL_FILMSTRIP: true,
|
||||
|
||||
// A html text to be shown to guests on the close page, false disables it
|
||||
CLOSE_PAGE_GUEST_HINT: false,
|
||||
SHOW_PROMOTIONAL_CLOSE_PAGE: false,
|
||||
FILM_STRIP_MAX_HEIGHT: 120,
|
||||
|
||||
// Enables feedback star animation.
|
||||
ENABLE_FEEDBACK_ANIMATION: false,
|
||||
DISABLE_FOCUS_INDICATOR: false,
|
||||
DISABLE_DOMINANT_SPEAKER_INDICATOR: false,
|
||||
|
||||
/**
|
||||
* Whether the speech to text transcription subtitles panel is disabled.
|
||||
* If {@code undefined}, defaults to {@code false}.
|
||||
*
|
||||
* @type {boolean}
|
||||
*/
|
||||
DISABLE_TRANSCRIPTION_SUBTITLES: false,
|
||||
|
||||
/**
|
||||
* Whether the ringing sound in the call/ring overlay is disabled. If
|
||||
* {@code undefined}, defaults to {@code false}.
|
||||
*
|
||||
* @type {boolean}
|
||||
*/
|
||||
DISABLE_RINGING: false,
|
||||
AUDIO_LEVEL_PRIMARY_COLOR: 'rgba(255,255,255,0.4)',
|
||||
AUDIO_LEVEL_SECONDARY_COLOR: 'rgba(255,255,255,0.2)',
|
||||
POLICY_LOGO: null,
|
||||
LOCAL_THUMBNAIL_RATIO: 16 / 9, // 16:9
|
||||
REMOTE_THUMBNAIL_RATIO: 1, // 1:1
|
||||
// Documentation reference for the live streaming feature.
|
||||
LIVE_STREAMING_HELP_LINK: 'https://jitsi.org/live',
|
||||
|
||||
/**
|
||||
* Whether the mobile app Jitsi Meet is to be promoted to participants
|
||||
* attempting to join a conference in a mobile Web browser. If
|
||||
* {@code undefined}, defaults to {@code true}.
|
||||
* A UX mode where the last screen share participant is automatically
|
||||
* pinned. Valid values are the string "remote-only" so remote participants
|
||||
* get pinned but not local, otherwise any truthy value for all participants,
|
||||
* and any falsy value to disable the feature.
|
||||
*
|
||||
* @type {boolean}
|
||||
* Note: this mode is experimental and subject to breakage.
|
||||
*/
|
||||
MOBILE_APP_PROMO: true,
|
||||
|
||||
/**
|
||||
* Maximum coeficient of the ratio of the large video to the visible area
|
||||
* after the large video is scaled to fit the window.
|
||||
*
|
||||
* @type {number}
|
||||
*/
|
||||
MAXIMUM_ZOOMING_COEFFICIENT: 1.3,
|
||||
|
||||
/*
|
||||
* If indicated some of the error dialogs may point to the support URL for
|
||||
* help.
|
||||
*/
|
||||
SUPPORT_URL: 'https://community.jitsi.org/',
|
||||
AUTO_PIN_LATEST_SCREEN_SHARE: 'remote-only',
|
||||
BRAND_WATERMARK_LINK: '',
|
||||
|
||||
CLOSE_PAGE_GUEST_HINT: false, // A html text to be shown to guests on the close page, false disables it
|
||||
/**
|
||||
* Whether the connection indicator icon should hide itself based on
|
||||
* connection strength. If true, the connection indicator will remain
|
||||
@@ -152,51 +44,120 @@ var interfaceConfig = {
|
||||
*/
|
||||
CONNECTION_INDICATOR_DISABLED: false,
|
||||
|
||||
/**
|
||||
* If true, hides the video quality label indicating the resolution status
|
||||
* of the current large video.
|
||||
*
|
||||
* @type {boolean}
|
||||
*/
|
||||
VIDEO_QUALITY_LABEL_DISABLED: false,
|
||||
DEFAULT_BACKGROUND: '#474747',
|
||||
DEFAULT_LOCAL_DISPLAY_NAME: 'me',
|
||||
DEFAULT_LOGO_URL: 'images/watermark.png',
|
||||
DEFAULT_REMOTE_DISPLAY_NAME: 'Fellow Jitster',
|
||||
DEFAULT_WELCOME_PAGE_LOGO_URL: 'images/watermark.png',
|
||||
|
||||
/**
|
||||
* If true, will display recent list
|
||||
*
|
||||
* @type {boolean}
|
||||
*/
|
||||
RECENT_LIST_ENABLED: true,
|
||||
DISABLE_DOMINANT_SPEAKER_INDICATOR: false,
|
||||
|
||||
// Names of browsers which should show a warning stating the current browser
|
||||
// has a suboptimal experience. Browsers which are not listed as optimal or
|
||||
// unsupported are considered suboptimal. Valid values are:
|
||||
// chrome, chromium, edge, electron, firefox, nwjs, opera, safari
|
||||
OPTIMAL_BROWSERS: [ 'chrome', 'chromium', 'firefox', 'nwjs', 'electron', 'safari' ],
|
||||
|
||||
// Browsers, in addition to those which do not fully support WebRTC, that
|
||||
// are not supported and should show the unsupported browser page.
|
||||
UNSUPPORTED_BROWSERS: [],
|
||||
|
||||
/**
|
||||
* A UX mode where the last screen share participant is automatically
|
||||
* pinned. Valid values are the string "remote-only" so remote participants
|
||||
* get pinned but not local, otherwise any truthy value for all participants,
|
||||
* and any falsy value to disable the feature.
|
||||
*
|
||||
* Note: this mode is experimental and subject to breakage.
|
||||
*/
|
||||
AUTO_PIN_LATEST_SCREEN_SHARE: 'remote-only',
|
||||
|
||||
/**
|
||||
* If true, presence status: busy, calling, connected etc. is not displayed.
|
||||
*/
|
||||
DISABLE_PRESENCE_STATUS: false,
|
||||
DISABLE_FOCUS_INDICATOR: false,
|
||||
|
||||
/**
|
||||
* If true, notifications regarding joining/leaving are no longer displayed.
|
||||
*/
|
||||
DISABLE_JOIN_LEAVE_NOTIFICATIONS: false,
|
||||
|
||||
/**
|
||||
* If true, presence status: busy, calling, connected etc. is not displayed.
|
||||
*/
|
||||
DISABLE_PRESENCE_STATUS: false,
|
||||
|
||||
/**
|
||||
* Whether the ringing sound in the call/ring overlay is disabled. If
|
||||
* {@code undefined}, defaults to {@code false}.
|
||||
*
|
||||
* @type {boolean}
|
||||
*/
|
||||
DISABLE_RINGING: false,
|
||||
|
||||
/**
|
||||
* Whether the speech to text transcription subtitles panel is disabled.
|
||||
* If {@code undefined}, defaults to {@code false}.
|
||||
*
|
||||
* @type {boolean}
|
||||
*/
|
||||
DISABLE_TRANSCRIPTION_SUBTITLES: false,
|
||||
|
||||
/**
|
||||
* Whether or not the blurred video background for large video should be
|
||||
* displayed on browsers that can support it.
|
||||
*/
|
||||
DISABLE_VIDEO_BACKGROUND: false,
|
||||
|
||||
DISPLAY_WELCOME_PAGE_CONTENT: true,
|
||||
DISPLAY_WELCOME_PAGE_TOOLBAR_ADDITIONAL_CONTENT: false,
|
||||
|
||||
ENABLE_DIAL_OUT: true,
|
||||
|
||||
ENABLE_FEEDBACK_ANIMATION: false, // Enables feedback star animation.
|
||||
|
||||
FILM_STRIP_MAX_HEIGHT: 120,
|
||||
|
||||
/**
|
||||
* Whether to only show the filmstrip (and hide the toolbar).
|
||||
*/
|
||||
filmStripOnly: false,
|
||||
|
||||
GENERATE_ROOMNAMES_ON_WELCOME_PAGE: true,
|
||||
|
||||
/**
|
||||
* Hide the logo on the deep linking pages.
|
||||
*/
|
||||
HIDE_DEEP_LINKING_LOGO: false,
|
||||
|
||||
/**
|
||||
* Hide the invite prompt in the header when alone in the meeting.
|
||||
*/
|
||||
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
|
||||
LIVE_STREAMING_HELP_LINK: 'https://jitsi.org/live', // Documentation reference for the live streaming feature.
|
||||
LOCAL_THUMBNAIL_RATIO: 16 / 9, // 16:9
|
||||
|
||||
/**
|
||||
* Maximum coefficient of the ratio of the large video to the visible area
|
||||
* after the large video is scaled to fit the window.
|
||||
*
|
||||
* @type {number}
|
||||
*/
|
||||
MAXIMUM_ZOOMING_COEFFICIENT: 1.3,
|
||||
|
||||
/**
|
||||
* Whether the mobile app Jitsi Meet is to be promoted to participants
|
||||
* attempting to join a conference in a mobile Web browser. If
|
||||
* {@code undefined}, defaults to {@code true}.
|
||||
*
|
||||
* @type {boolean}
|
||||
*/
|
||||
MOBILE_APP_PROMO: true,
|
||||
|
||||
NATIVE_APP_NAME: 'Jitsi Meet',
|
||||
|
||||
// Names of browsers which should show a warning stating the current browser
|
||||
// has a suboptimal experience. Browsers which are not listed as optimal or
|
||||
// unsupported are considered suboptimal. Valid values are:
|
||||
// chrome, chromium, edge, electron, firefox, nwjs, opera, safari
|
||||
OPTIMAL_BROWSERS: [ 'chrome', 'chromium', 'firefox', 'nwjs', 'electron', 'safari' ],
|
||||
|
||||
POLICY_LOGO: null,
|
||||
PROVIDER_NAME: 'Jitsi',
|
||||
|
||||
/**
|
||||
* If true, will display recent list
|
||||
*
|
||||
* @type {boolean}
|
||||
*/
|
||||
RECENT_LIST_ENABLED: true,
|
||||
REMOTE_THUMBNAIL_RATIO: 1, // 1:1
|
||||
|
||||
SETTINGS_SECTIONS: [ 'devices', 'language', 'moderator', 'profile', 'calendar' ],
|
||||
SHOW_BRAND_WATERMARK: false,
|
||||
|
||||
/**
|
||||
* Decides whether the chrome extension banner should be rendered on the landing page and during the meeting.
|
||||
* If this is set to false, the banner will not be rendered at all. If set to true, the check for extension(s)
|
||||
@@ -204,6 +165,64 @@ var interfaceConfig = {
|
||||
*/
|
||||
SHOW_CHROME_EXTENSION_BANNER: false,
|
||||
|
||||
SHOW_DEEP_LINKING_IMAGE: false,
|
||||
SHOW_JITSI_WATERMARK: true,
|
||||
SHOW_POWERED_BY: false,
|
||||
SHOW_PROMOTIONAL_CLOSE_PAGE: false,
|
||||
SHOW_WATERMARK_FOR_GUESTS: true, // if watermark is disabled by default, it can be shown only for guests
|
||||
|
||||
/*
|
||||
* If indicated some of the error dialogs may point to the support URL for
|
||||
* help.
|
||||
*/
|
||||
SUPPORT_URL: 'https://community.jitsi.org/',
|
||||
|
||||
TOOLBAR_ALWAYS_VISIBLE: false,
|
||||
|
||||
/**
|
||||
* The name of the toolbar buttons to display in the toolbar, including the
|
||||
* "More actions" menu. If present, the button will display. Exceptions are
|
||||
* "livestreaming" and "recording" which also require being a moderator and
|
||||
* some values in config.js to be enabled. Also, the "profile" button will
|
||||
* not display for users with a JWT.
|
||||
* Notes:
|
||||
* - it's impossible to choose which buttons go in the "More actions" menu
|
||||
* - it's impossible to control the placement of buttons
|
||||
* - 'desktop' controls the "Share your screen" button
|
||||
*/
|
||||
TOOLBAR_BUTTONS: [
|
||||
'microphone', 'camera', 'closedcaptions', 'desktop', 'embedmeeting', 'fullscreen',
|
||||
'fodeviceselection', 'hangup', 'profile', 'chat', 'recording',
|
||||
'livestreaming', 'etherpad', 'sharedvideo', 'settings', 'raisehand',
|
||||
'videoquality', 'filmstrip', 'invite', 'feedback', 'stats', 'shortcuts',
|
||||
'tileview', 'videobackgroundblur', 'download', 'help', 'mute-everyone', 'security'
|
||||
],
|
||||
|
||||
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: [],
|
||||
|
||||
/**
|
||||
* Whether to show thumbnails in filmstrip as a column instead of as a row.
|
||||
*/
|
||||
VERTICAL_FILMSTRIP: true,
|
||||
|
||||
// Determines how the video would fit the screen. 'both' would fit the whole
|
||||
// screen, 'height' would fit the original video height to the height of the
|
||||
// screen, 'width' would fit the original video width to the width of the
|
||||
// screen respecting ratio.
|
||||
VIDEO_LAYOUT_FIT: 'both',
|
||||
|
||||
/**
|
||||
* If true, hides the video quality label indicating the resolution status
|
||||
* of the current large video.
|
||||
*
|
||||
* @type {boolean}
|
||||
*/
|
||||
VIDEO_QUALITY_LABEL_DISABLED: false,
|
||||
|
||||
/**
|
||||
* When enabled, the kick participant button will not be presented for users without a JWT
|
||||
*/
|
||||
@@ -261,9 +280,10 @@ var interfaceConfig = {
|
||||
|
||||
// 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
|
||||
makeJsonParserHappy: 'even if last key had a trailing comma'
|
||||
|
||||
// no configuration value should follow this line.
|
||||
// No configuration value should follow this line.
|
||||
};
|
||||
|
||||
/* eslint-enable no-unused-vars, no-var, max-len */
|
||||
|
||||
@@ -5,10 +5,8 @@ require_relative '../node_modules/@react-native-community/cli-platform-ios/nativ
|
||||
target 'jitsi-meet' do
|
||||
project 'app/app.xcodeproj'
|
||||
|
||||
pod 'Crashlytics', '~> 3.14.0'
|
||||
pod 'Fabric', '~> 1.10.2'
|
||||
pod 'Firebase/Core', '~> 6.16.0'
|
||||
pod 'Firebase/DynamicLinks', '~> 6.16.0'
|
||||
pod 'Firebase/Crashlytics', '~> 6.24.0'
|
||||
pod 'Firebase/DynamicLinks', '~> 6.24.0'
|
||||
end
|
||||
|
||||
target 'JitsiMeet' do
|
||||
|
||||
142
ios/Podfile.lock
142
ios/Podfile.lock
@@ -11,10 +11,7 @@ PODS:
|
||||
- CocoaLumberjack (3.5.3):
|
||||
- CocoaLumberjack/Core (= 3.5.3)
|
||||
- CocoaLumberjack/Core (3.5.3)
|
||||
- Crashlytics (3.14.0):
|
||||
- Fabric (~> 1.10.2)
|
||||
- DoubleConversion (1.1.6)
|
||||
- Fabric (1.10.2)
|
||||
- FBLazyVector (0.61.5-jitsi.1)
|
||||
- FBReactNativeSpec (0.61.5-jitsi.1):
|
||||
- Folly (= 2018.10.22.00)
|
||||
@@ -23,48 +20,43 @@ PODS:
|
||||
- React-Core (= 0.61.5-jitsi.1)
|
||||
- React-jsi (= 0.61.5-jitsi.1)
|
||||
- ReactCommon/turbomodule/core (= 0.61.5-jitsi.1)
|
||||
- Firebase/Core (6.16.0):
|
||||
- Firebase/CoreOnly (6.24.0):
|
||||
- FirebaseCore (= 6.7.0)
|
||||
- Firebase/Crashlytics (6.24.0):
|
||||
- Firebase/CoreOnly
|
||||
- FirebaseAnalytics (= 6.2.2)
|
||||
- Firebase/CoreOnly (6.16.0):
|
||||
- FirebaseCore (= 6.6.1)
|
||||
- Firebase/DynamicLinks (6.16.0):
|
||||
- FirebaseCrashlytics (~> 4.1.0)
|
||||
- Firebase/DynamicLinks (6.24.0):
|
||||
- Firebase/CoreOnly
|
||||
- FirebaseDynamicLinks (~> 4.0.6)
|
||||
- FirebaseAnalytics (6.2.2):
|
||||
- FirebaseCore (~> 6.6)
|
||||
- FirebaseInstanceID (~> 4.3)
|
||||
- GoogleAppMeasurement (= 6.2.2)
|
||||
- GoogleUtilities/AppDelegateSwizzler (~> 6.0)
|
||||
- GoogleUtilities/MethodSwizzler (~> 6.0)
|
||||
- GoogleUtilities/Network (~> 6.0)
|
||||
- "GoogleUtilities/NSData+zlib (~> 6.0)"
|
||||
- nanopb (= 0.3.9011)
|
||||
- FirebaseDynamicLinks (~> 4.0.8)
|
||||
- FirebaseAnalyticsInterop (1.5.0)
|
||||
- FirebaseCore (6.6.1):
|
||||
- FirebaseCoreDiagnostics (~> 1.2)
|
||||
- FirebaseCore (6.7.0):
|
||||
- FirebaseCoreDiagnostics (~> 1.3)
|
||||
- FirebaseCoreDiagnosticsInterop (~> 1.2)
|
||||
- GoogleUtilities/Environment (~> 6.5)
|
||||
- GoogleUtilities/Logger (~> 6.5)
|
||||
- FirebaseCoreDiagnostics (1.2.2):
|
||||
- FirebaseCoreDiagnostics (1.3.0):
|
||||
- FirebaseCoreDiagnosticsInterop (~> 1.2)
|
||||
- GoogleDataTransportCCTSupport (~> 2.0)
|
||||
- GoogleDataTransportCCTSupport (~> 3.1)
|
||||
- GoogleUtilities/Environment (~> 6.5)
|
||||
- GoogleUtilities/Logger (~> 6.5)
|
||||
- nanopb (~> 0.3.901)
|
||||
- nanopb (~> 1.30905.0)
|
||||
- FirebaseCoreDiagnosticsInterop (1.2.0)
|
||||
- FirebaseCrashlytics (4.1.1):
|
||||
- FirebaseAnalyticsInterop (~> 1.2)
|
||||
- FirebaseCore (~> 6.6)
|
||||
- FirebaseInstallations (~> 1.1)
|
||||
- GoogleDataTransport (~> 6.1)
|
||||
- GoogleDataTransportCCTSupport (~> 3.1)
|
||||
- nanopb (~> 1.30905.0)
|
||||
- PromisesObjC (~> 1.2)
|
||||
- FirebaseDynamicLinks (4.0.8):
|
||||
- FirebaseAnalyticsInterop (~> 1.3)
|
||||
- FirebaseCore (~> 6.2)
|
||||
- FirebaseInstallations (1.1.1):
|
||||
- FirebaseInstallations (1.2.0):
|
||||
- FirebaseCore (~> 6.6)
|
||||
- GoogleUtilities/UserDefaults (~> 6.5)
|
||||
- GoogleUtilities/Environment (~> 6.6)
|
||||
- GoogleUtilities/UserDefaults (~> 6.6)
|
||||
- PromisesObjC (~> 1.2)
|
||||
- FirebaseInstanceID (4.3.2):
|
||||
- FirebaseCore (~> 6.6)
|
||||
- FirebaseInstallations (~> 1.0)
|
||||
- GoogleUtilities/Environment (~> 6.5)
|
||||
- GoogleUtilities/UserDefaults (~> 6.5)
|
||||
- Folly (2018.10.22.00):
|
||||
- boost-for-react-native
|
||||
- DoubleConversion
|
||||
@@ -75,37 +67,19 @@ PODS:
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- glog (0.3.5)
|
||||
- GoogleAppMeasurement (6.2.2):
|
||||
- GoogleUtilities/AppDelegateSwizzler (~> 6.0)
|
||||
- GoogleUtilities/MethodSwizzler (~> 6.0)
|
||||
- GoogleUtilities/Network (~> 6.0)
|
||||
- "GoogleUtilities/NSData+zlib (~> 6.0)"
|
||||
- nanopb (= 0.3.9011)
|
||||
- GoogleDataTransport (5.1.0)
|
||||
- GoogleDataTransportCCTSupport (2.0.1):
|
||||
- GoogleDataTransport (~> 5.1)
|
||||
- nanopb (~> 0.3.901)
|
||||
- GoogleDataTransport (6.1.0)
|
||||
- GoogleDataTransportCCTSupport (3.1.0):
|
||||
- GoogleDataTransport (~> 6.1)
|
||||
- nanopb (~> 1.30905.0)
|
||||
- GoogleSignIn (5.0.1):
|
||||
- AppAuth (~> 1.2)
|
||||
- GTMAppAuth (~> 1.0)
|
||||
- GTMSessionFetcher/Core (~> 1.1)
|
||||
- GoogleUtilities/AppDelegateSwizzler (6.5.2):
|
||||
- GoogleUtilities/Environment (6.6.0):
|
||||
- PromisesObjC (~> 1.2)
|
||||
- GoogleUtilities/Logger (6.6.0):
|
||||
- GoogleUtilities/Environment
|
||||
- GoogleUtilities/Logger
|
||||
- GoogleUtilities/Network
|
||||
- GoogleUtilities/Environment (6.5.2)
|
||||
- GoogleUtilities/Logger (6.5.2):
|
||||
- GoogleUtilities/Environment
|
||||
- GoogleUtilities/MethodSwizzler (6.5.2):
|
||||
- GoogleUtilities/Logger
|
||||
- GoogleUtilities/Network (6.5.2):
|
||||
- GoogleUtilities/Logger
|
||||
- "GoogleUtilities/NSData+zlib"
|
||||
- GoogleUtilities/Reachability
|
||||
- "GoogleUtilities/NSData+zlib (6.5.2)"
|
||||
- GoogleUtilities/Reachability (6.5.2):
|
||||
- GoogleUtilities/Logger
|
||||
- GoogleUtilities/UserDefaults (6.5.2):
|
||||
- GoogleUtilities/UserDefaults (6.6.0):
|
||||
- GoogleUtilities/Logger
|
||||
- GTMAppAuth (1.0.0):
|
||||
- AppAuth/Core (~> 1.0)
|
||||
@@ -115,11 +89,11 @@ PODS:
|
||||
- GTMSessionFetcher/Core (1.2.2)
|
||||
- GTMSessionFetcher/Full (1.2.2):
|
||||
- GTMSessionFetcher/Core (= 1.2.2)
|
||||
- nanopb (0.3.9011):
|
||||
- nanopb/decode (= 0.3.9011)
|
||||
- nanopb/encode (= 0.3.9011)
|
||||
- nanopb/decode (0.3.9011)
|
||||
- nanopb/encode (0.3.9011)
|
||||
- nanopb (1.30905.0):
|
||||
- nanopb/decode (= 1.30905.0)
|
||||
- nanopb/encode (= 1.30905.0)
|
||||
- nanopb/decode (1.30905.0)
|
||||
- nanopb/encode (1.30905.0)
|
||||
- ObjectiveDropboxOfficial (3.9.4)
|
||||
- PromisesObjC (1.2.8)
|
||||
- RCTRequired (0.61.5-jitsi.1)
|
||||
@@ -285,7 +259,7 @@ PODS:
|
||||
- React-cxxreact (= 0.61.5-jitsi.1)
|
||||
- React-jsi (= 0.61.5-jitsi.1)
|
||||
- React-jsinspector (0.61.5-jitsi.1)
|
||||
- react-native-background-timer (2.1.1):
|
||||
- react-native-background-timer (2.4.0):
|
||||
- React
|
||||
- react-native-calendar-events (2.0.0):
|
||||
- React
|
||||
@@ -293,7 +267,7 @@ PODS:
|
||||
- React
|
||||
- react-native-netinfo (4.1.5):
|
||||
- React
|
||||
- react-native-webrtc (1.75.3):
|
||||
- react-native-webrtc (1.84.0):
|
||||
- React
|
||||
- react-native-webview (7.4.1):
|
||||
- React
|
||||
@@ -373,13 +347,11 @@ DEPENDENCIES:
|
||||
- Amplitude-iOS (~> 4.0.4)
|
||||
- BVLinearGradient (from `../node_modules/react-native-linear-gradient`)
|
||||
- CocoaLumberjack (~> 3.5.3)
|
||||
- Crashlytics (~> 3.14.0)
|
||||
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
|
||||
- Fabric (~> 1.10.2)
|
||||
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector/`)
|
||||
- FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec/`)
|
||||
- Firebase/Core (~> 6.16.0)
|
||||
- Firebase/DynamicLinks (~> 6.16.0)
|
||||
- Firebase/Crashlytics (~> 6.24.0)
|
||||
- Firebase/DynamicLinks (~> 6.24.0)
|
||||
- Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`)
|
||||
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
|
||||
- ObjectiveDropboxOfficial (~> 3.9.4)
|
||||
@@ -424,18 +396,14 @@ SPEC REPOS:
|
||||
- AppAuth
|
||||
- boost-for-react-native
|
||||
- CocoaLumberjack
|
||||
- Crashlytics
|
||||
- Fabric
|
||||
- Firebase
|
||||
- FirebaseAnalytics
|
||||
- FirebaseAnalyticsInterop
|
||||
- FirebaseCore
|
||||
- FirebaseCoreDiagnostics
|
||||
- FirebaseCoreDiagnosticsInterop
|
||||
- FirebaseCrashlytics
|
||||
- FirebaseDynamicLinks
|
||||
- FirebaseInstallations
|
||||
- FirebaseInstanceID
|
||||
- GoogleAppMeasurement
|
||||
- GoogleDataTransport
|
||||
- GoogleDataTransportCCTSupport
|
||||
- GoogleSignIn
|
||||
@@ -530,30 +498,26 @@ SPEC CHECKSUMS:
|
||||
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
|
||||
BVLinearGradient: e3aad03778a456d77928f594a649e96995f1c872
|
||||
CocoaLumberjack: 2f44e60eb91c176d471fdba43b9e3eae6a721947
|
||||
Crashlytics: 540b7e5f5da5a042647227a5e3ac51d85eed06df
|
||||
DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2
|
||||
Fabric: 706c8b8098fff96c33c0db69cbf81f9c551d0d74
|
||||
FBLazyVector: 4a5251159a3ed05dc11cc8b74cf937869935814b
|
||||
FBReactNativeSpec: 6fa602a20993212cc9877a81838578ffb0008bc9
|
||||
Firebase: 497158b816d0a86fc31babbd05546fcd7e6083ff
|
||||
FirebaseAnalytics: cf95d3aab897612783020fbd98401d5366f135ee
|
||||
Firebase: b28e55c60efd98963cd9011fe2fac5a10c2ba124
|
||||
FirebaseAnalyticsInterop: 3f86269c38ae41f47afeb43ebf32a001f58fcdae
|
||||
FirebaseCore: 85064903ed6c28e47fec9c7bd149d94ba1b6b6e7
|
||||
FirebaseCoreDiagnostics: e9b4cd8ba60dee0f2d13347332e4b7898cca5b61
|
||||
FirebaseCore: e610482f64097b0e9f056cd97bc6b33dfabcbb6a
|
||||
FirebaseCoreDiagnostics: 4a773a47bd83bbd5a9b1ccf1ce7caa8b2d535e67
|
||||
FirebaseCoreDiagnosticsInterop: 296e2c5f5314500a850ad0b83e9e7c10b011a850
|
||||
FirebaseCrashlytics: a87cce5746d3335995bd18b1b60d073cd05a6920
|
||||
FirebaseDynamicLinks: 417dc6dbb6013233c77558290d73296f429656a6
|
||||
FirebaseInstallations: acb3216eb9784d3b1d2d2d635ff74fa892cc0c44
|
||||
FirebaseInstanceID: 7ee0d6777013bb952f377b41965bf132b6a075be
|
||||
FirebaseInstallations: 2119fb3e46b0a88bfdbf12562f855ee3252462fa
|
||||
Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51
|
||||
glog: 1f3da668190260b06b429bb211bfbee5cd790c28
|
||||
GoogleAppMeasurement: d0560d915abf15e692e8538ba1d58442217b6aff
|
||||
GoogleDataTransport: b29a21d813e906014ca16c00897827e40e4a24ab
|
||||
GoogleDataTransportCCTSupport: 6f15a89b0ca35d6fa523e1f752ef818588885988
|
||||
GoogleDataTransport: f6f8eba931df03ebd2232ff4645aa85f8f47b5ab
|
||||
GoogleDataTransportCCTSupport: d70a561f7d236af529fee598835caad5e25f6d3d
|
||||
GoogleSignIn: 3a51b9bb8e48b635fd7f4272cee06ca260345b86
|
||||
GoogleUtilities: ad0f3b691c67909d03a3327cc205222ab8f42e0e
|
||||
GoogleUtilities: 39530bc0ad980530298e9c4af8549e991fd033b1
|
||||
GTMAppAuth: 4deac854479704f348309e7b66189e604cf5e01e
|
||||
GTMSessionFetcher: 61bb0f61a4cb560030f1222021178008a5727a23
|
||||
nanopb: 18003b5e52dab79db540fe93fe9579f399bd1ccd
|
||||
nanopb: c43f40fadfe79e8b8db116583945847910cbabc9
|
||||
ObjectiveDropboxOfficial: a5afefc83f6467c42c45f2253f583f2ad1ffc701
|
||||
PromisesObjC: c119f3cd559f50b7ae681fa59dc1acd19173b7e6
|
||||
RCTRequired: f63dd90a89a60602acdd44c42e5d2645ca60ab79
|
||||
@@ -565,11 +529,11 @@ SPEC CHECKSUMS:
|
||||
React-jsi: 4f35c1a2273d193a80c1c3831c808413840c260c
|
||||
React-jsiexecutor: de1c37cf59ae9adcbf2be82eea0e090dc3f3205e
|
||||
React-jsinspector: b76c4e84a7833bb4c90549d59ed53ec299ff912b
|
||||
react-native-background-timer: 0d34748e53a972507c66963490c775321a88f6f2
|
||||
react-native-background-timer: e0384ea2fa5a98f67f84f9c4dc274260ddd674ed
|
||||
react-native-calendar-events: 1442fad71a00388f933cfa25512588fec300fcf8
|
||||
react-native-keep-awake: eba3137546b10003361b37c761f6c429b59814ae
|
||||
react-native-netinfo: 8d8db463bcc5db66a8ac5c48a7d86beb3b92f61a
|
||||
react-native-webrtc: 86d841823e66d68cc1f86712db1c2956056bf0c2
|
||||
react-native-webrtc: 9268ae9a2bc9730796b0968d012327e92c392adf
|
||||
react-native-webview: 4dbc1d2a4a6b9c5e9e723c62651917aa2b5e579e
|
||||
React-RCTActionSheet: b72ddbfbe15b44ce691d128e4b582f4bb9abb540
|
||||
React-RCTAnimation: cfaefba5024499d336b76ab850e6bd33b232b5e3
|
||||
@@ -589,6 +553,6 @@ SPEC CHECKSUMS:
|
||||
RNWatch: a5320c959c75e72845c07985f3e935e58998f1d3
|
||||
Yoga: 7b4209fda2441f99d54dd6cf4c82b094409bb68f
|
||||
|
||||
PODFILE CHECKSUM: 082858daebbe170e7a490de433e7f2a99e0c3701
|
||||
PODFILE CHECKSUM: 7255ec38ea51a8bc10a7a582248b4eb4bbbff80c
|
||||
|
||||
COCOAPODS: 1.9.1
|
||||
COCOAPODS: 1.9.3
|
||||
|
||||
@@ -291,9 +291,9 @@
|
||||
13B07F8E1A680F5B00A75B9A /* Resources */,
|
||||
0B26BE701EC5BC3C00EEFB41 /* Embed Frameworks */,
|
||||
B35383AD1DDA0083008F406A /* Adjust embedded framework architectures */,
|
||||
DE3A859324C701EA009B7D76 /* Copy WebRTC dSYM */,
|
||||
0BB7DA181EC9E695007AAE98 /* Adjust ATS */,
|
||||
DEF4813D224925A2002AD03A /* Copy Google Plist file */,
|
||||
DEC2069321CBBD6900072F03 /* Setup Crashlytics */,
|
||||
DE11877A21EE09640078D059 /* Setup Google reverse URL handler */,
|
||||
DE4F6D6E22005C0400DE699E /* Setup Dropbox */,
|
||||
0BEA5C491F7B8F73000D0AB4 /* Embed Watch Content */,
|
||||
@@ -474,6 +474,24 @@
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "INFO_PLIST=\"$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH\"\nGOOGLE_PLIST=\"$PROJECT_DIR/GoogleService-Info.plist\"\n\nif [[ -f $GOOGLE_PLIST ]]; then\n REVERSED_CLIENT_ID=$(/usr/libexec/PlistBuddy -c \"Print :REVERSED_CLIENT_ID:\" $GOOGLE_PLIST)\n /usr/libexec/PlistBuddy -c \"Set :CFBundleURLTypes:1:CFBundleURLSchemes:0 $REVERSED_CLIENT_ID\" $INFO_PLIST\nfi\n";
|
||||
};
|
||||
DE3A859324C701EA009B7D76 /* Copy WebRTC dSYM */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Copy WebRTC dSYM";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "set -x\n\nif [[ \"${CONFIGURATION}\" != \"Debug\" ]]; then\n cp -r ../../node_modules/react-native-webrtc/ios/WebRTC.dSYM ${DWARF_DSYM_FOLDER_PATH}/\nfi\n";
|
||||
};
|
||||
DE4F6D6E22005C0400DE699E /* Setup Dropbox */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -492,24 +510,6 @@
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "INFO_PLIST=\"$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH\"\nDROPBOX_KEY_FILE=\"$PROJECT_DIR/dropbox.key\"\n\nif [[ -f $DROPBOX_KEY_FILE ]]; then\n /usr/libexec/PlistBuddy -c \"Delete :LSApplicationQueriesSchemes\" $INFO_PLIST\n /usr/libexec/PlistBuddy -c \"Add :LSApplicationQueriesSchemes array\" $INFO_PLIST\n /usr/libexec/PlistBuddy -c \"Add :LSApplicationQueriesSchemes:0 string 'dbapi-2'\" $INFO_PLIST\n /usr/libexec/PlistBuddy -c \"Add :LSApplicationQueriesSchemes:1 string 'dbapi-8-emm'\" $INFO_PLIST\n\n DROPBOX_KEY=$(head -n 1 $DROPBOX_KEY_FILE)\n /usr/libexec/PlistBuddy -c \"Add :CFBundleURLTypes:2:CFBundleURLName string dropbox\" $INFO_PLIST\n /usr/libexec/PlistBuddy -c \"Add :CFBundleURLTypes:2:CFBundleURLSchemes array\" $INFO_PLIST\n /usr/libexec/PlistBuddy -c \"Add :CFBundleURLTypes:2:CFBundleURLSchemes:0 string $DROPBOX_KEY\" $INFO_PLIST\nfi\n";
|
||||
};
|
||||
DEC2069321CBBD6900072F03 /* Setup Crashlytics */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Setup Crashlytics";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "GOOGLE_PLIST=\"$PROJECT_DIR/GoogleService-Info.plist\"\n\nif [[ -f $GOOGLE_PLIST ]]; then\n if [ \"${CONFIGURATION}\" != \"Debug\" ]; then\n find \"${DWARF_DSYM_FOLDER_PATH}\" -name \"*.dSYM\" | xargs -I \\{\\} ${PODS_ROOT}/Fabric/upload-symbols -gsp $GOOGLE_PLIST -p ios \\{\\}\n fi\nfi\n";
|
||||
};
|
||||
DEF4813D224925A2002AD03A /* Copy Google Plist file */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
|
||||
@@ -20,8 +20,6 @@
|
||||
#import "Types.h"
|
||||
#import "ViewController.h"
|
||||
|
||||
@import Crashlytics;
|
||||
@import Fabric;
|
||||
@import Firebase;
|
||||
@import JitsiMeet;
|
||||
|
||||
@@ -36,6 +34,7 @@
|
||||
jitsiMeet.universalLinkDomains = @[@"meet.jit.si", @"alpha.jitsi.net", @"beta.meet.jit.si"];
|
||||
|
||||
jitsiMeet.defaultConferenceOptions = [JitsiMeetConferenceOptions fromBuilder:^(JitsiMeetConferenceOptionsBuilder *builder) {
|
||||
[builder setFeatureFlag:@"resolution" withValue:@(360)];
|
||||
builder.serverURL = [NSURL URLWithString:@"https://meet.jit.si"];
|
||||
builder.welcomePageEnabled = YES;
|
||||
|
||||
@@ -47,10 +46,11 @@
|
||||
}];
|
||||
|
||||
// Initialize Crashlytics and Firebase if a valid GoogleService-Info.plist file was provided.
|
||||
if ([FIRUtilities appContainsRealServiceInfoPlist] && ![jitsiMeet isCrashReportingDisabled]) {
|
||||
NSLog(@"Enabling Crashlytics and Firebase");
|
||||
if ([FIRUtilities appContainsRealServiceInfoPlist]) {
|
||||
NSLog(@"Enabling Firebase");
|
||||
[FIRApp configure];
|
||||
[Fabric with:@[[Crashlytics class]]];
|
||||
// Crashlytics defaults to disabled wirth the FirebaseCrashlyticsCollectionEnabled Info.plist key.
|
||||
[[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:![jitsiMeet isCrashReportingDisabled]];
|
||||
}
|
||||
|
||||
[jitsiMeet application:application didFinishLaunchingWithOptions:launchOptions];
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>20.3.0</string>
|
||||
<string>20.4.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleURLTypes</key>
|
||||
@@ -99,7 +99,7 @@
|
||||
</array>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<false/>
|
||||
<key>firebase_crashlytics_collection_enabled</key>
|
||||
<key>FirebaseCrashlyticsCollectionEnabled</key>
|
||||
<string>false</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>20.3.0</string>
|
||||
<string>20.4.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>20.3.0</string>
|
||||
<string>20.4.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>CLKComplicationPrincipalClass</key>
|
||||
|
||||
@@ -80,6 +80,10 @@ platform :ios do
|
||||
uses_non_exempt_encryption: false
|
||||
)
|
||||
|
||||
# Upload dSYMs to Crashlytics
|
||||
download_dsyms
|
||||
upload_symbols_to_crashlytics
|
||||
|
||||
# Cleanup
|
||||
clean_build_artifacts
|
||||
reset_git_repo(skip_clean: true)
|
||||
|
||||
5
ios/scripts/run-packager-helper.command
Executable file
5
ios/scripts/run-packager-helper.command
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
THIS_DIR=$(cd -P "$(dirname "$(readlink "${BASH_SOURCE[0]}" || echo "${BASH_SOURCE[0]}")")" && pwd)
|
||||
|
||||
exec ${THIS_DIR}/../../node_modules/react-native/scripts/launchPackager.command --reset-cache
|
||||
@@ -3,6 +3,8 @@
|
||||
# This script is executed from Xcode to start the React packager for Debug
|
||||
# targets.
|
||||
|
||||
THIS_DIR=$(cd -P "$(dirname "$(readlink "${BASH_SOURCE[0]}" || echo "${BASH_SOURCE[0]}")")" && pwd)
|
||||
|
||||
export RCT_METRO_PORT="${RCT_METRO_PORT:=8081}"
|
||||
echo "export RCT_METRO_PORT=${RCT_METRO_PORT}" > "${SRCROOT}/../../node_modules/react-native/scripts/.packager.env"
|
||||
|
||||
@@ -13,7 +15,6 @@ if [[ "$CONFIGURATION" = "Debug" ]]; then
|
||||
exit 2
|
||||
fi
|
||||
else
|
||||
open -g "$SRCROOT/../../node_modules/react-native/scripts/launchPackager.command" || echo "Can't start packager automatically"
|
||||
open -g "$THIS_DIR/run-packager-helper.command" || echo "Can't start packager automatically"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.9.0</string>
|
||||
<string>2.10.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"en": "Anglès",
|
||||
"af": "Afrikaans",
|
||||
"ar": "Àrab",
|
||||
"bg": "Búlgar",
|
||||
"ca": "Català",
|
||||
"cs": "Txec",
|
||||
@@ -10,25 +11,36 @@
|
||||
"enGB": "Anglès (Regne Unit)",
|
||||
"eo": "Esperanto",
|
||||
"es": "Espanyol",
|
||||
"esUS": "Espanyol (Amèrica llatina)",
|
||||
"esUS": "Espanyol (Amèrica Llatina)",
|
||||
"et": "Estonià",
|
||||
"eu": "Èuscar",
|
||||
"fi": "Finès",
|
||||
"fr": "Francès",
|
||||
"frCA": "Francès (Canadà)",
|
||||
"he": "Hebreu",
|
||||
"mr": "Marathi",
|
||||
"hr": "Croat",
|
||||
"hu": "Hongarès",
|
||||
"hy": "Armeni",
|
||||
"id": "Indonesi",
|
||||
"it": "Italià",
|
||||
"ja": "Japonès",
|
||||
"ko": "Coreà",
|
||||
"lt": "Lituà",
|
||||
"nl": "Neerlandès",
|
||||
"oc": "Occità",
|
||||
"pl": "Polonès",
|
||||
"ptBR": "Portuguès (Brasil)",
|
||||
"ru": "Rus",
|
||||
"ro": "Romanès",
|
||||
"sc": "Sard",
|
||||
"sk": "Eslovac",
|
||||
"sl": "Eslovè",
|
||||
"sv": "Suec",
|
||||
"th": "Tai",
|
||||
"tr": "Turc",
|
||||
"uk": "Ucraïnès",
|
||||
"vi": "Vietnamita",
|
||||
"zhCN": "Xinès (Xina)",
|
||||
"zhTW": "Xinès (Taiwan)",
|
||||
"et": "Estonià"
|
||||
"zhTW": "Xinès (Taiwan)"
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
"it": "Taṭalyant",
|
||||
"ja": "Tajapunit",
|
||||
"ko": "Takurit",
|
||||
"kab": "Taqbaylit",
|
||||
"nb": "Tanurvijit Bukmal",
|
||||
"oc": "Tuksitant",
|
||||
"pl": "Tapulunit",
|
||||
@@ -23,5 +24,25 @@
|
||||
"sv": "Taswidit",
|
||||
"tr": "Taṭurkit",
|
||||
"vi": "Tavyitnamit",
|
||||
"zhCN": "Tavyitnamit"
|
||||
"zhCN": "Tavyitnamit",
|
||||
"ro": "Tarumanit",
|
||||
"ar": "Taɛrabt",
|
||||
"zhTW": "Tacinwat (Taiwan)",
|
||||
"uk": "Tukranit",
|
||||
"th": "Tayland",
|
||||
"sc": "Tasardit",
|
||||
"nl": "Tahulandit",
|
||||
"lt": "Taliṭwanit",
|
||||
"id": "Tandunizit",
|
||||
"hu": "Tahungrit",
|
||||
"hr": "Takrwasit",
|
||||
"he": "Taɛbrit",
|
||||
"frCA": "Tafṛansist (Kanada)",
|
||||
"fi": "Tafinit",
|
||||
"eu": "Tabaskit",
|
||||
"et": "Tastunit",
|
||||
"esUS": "Taspanit (Temrikt Talatinit)",
|
||||
"enGB": "Tagnizit (Tagldit i ddukklen)",
|
||||
"da": "Tadanit",
|
||||
"ca": "Takaṭalant"
|
||||
}
|
||||
|
||||
@@ -38,5 +38,11 @@
|
||||
"lt": "Lituanian",
|
||||
"id": "Indonesian",
|
||||
"he": "Ebrèu",
|
||||
"eu": "Basc"
|
||||
"eu": "Basc",
|
||||
"mr": "Marathi",
|
||||
"sl": "Eslovèn",
|
||||
"ro": "Romanian",
|
||||
"ar": "Arabi"
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
"id": "Indonesian",
|
||||
"it": "Italian",
|
||||
"ja": "Japanese",
|
||||
"kab": "Kabyle",
|
||||
"ko": "Korean",
|
||||
"lt": "Lithuanian",
|
||||
"nl": "Dutch",
|
||||
|
||||
@@ -534,7 +534,7 @@
|
||||
"selectCamera": "Kamera",
|
||||
"selectMic": "Mikrofon",
|
||||
"startAudioMuted": "Při připojení všem zlumit zvuk",
|
||||
"startVideoMuted": "Všechny připojovat jako skrýté",
|
||||
"startVideoMuted": "Všechny připojovat jako skryté",
|
||||
"title": "Nastavení",
|
||||
"speakers": "Reproduktory",
|
||||
"microphones": "Mikrofony"
|
||||
@@ -567,7 +567,7 @@
|
||||
"name": "Řečník",
|
||||
"seconds": "",
|
||||
"speakerStats": "Statistika řečníků",
|
||||
"speakerTime": "Mluvil již"
|
||||
"speakerTime": "Mluvil(a) již"
|
||||
},
|
||||
"startupoverlay": {
|
||||
"policyText": " ",
|
||||
@@ -638,7 +638,7 @@
|
||||
"openChat": "",
|
||||
"pip": "",
|
||||
"profile": "Upravit váš profil",
|
||||
"raiseHand": "Příhlásit / Odhlásit se o slovo",
|
||||
"raiseHand": "Přihlásit / Odhlásit se o slovo",
|
||||
"raiseYourHand": "",
|
||||
"Settings": "Nastavení",
|
||||
"sharedvideo": "Sdílet obraz YouTube videa",
|
||||
|
||||
@@ -3,14 +3,15 @@
|
||||
"add": "Einladen",
|
||||
"addContacts": "Laden Sie Ihre Kontakte ein",
|
||||
"copyInvite": "Sitzungseinladung kopieren",
|
||||
"copyLink": "Meeting-Link kopieren",
|
||||
"copyStream": "Live-Streaming-Link kopieren",
|
||||
"copyLink": "Konferenzlink kopieren",
|
||||
"copyStream": "Livestreaminglink kopieren",
|
||||
"countryNotSupported": "Wir unterstützen dieses Land noch nicht.",
|
||||
"countryReminder": "Telefonnummer nicht in den USA? Bitte sicherstellen, dass die Telefonnummer mit dem Ländercode beginnt.",
|
||||
"defaultEmail": "Ihre Standard-E-Mail",
|
||||
"disabled": "Sie können keine Teilnehmer einladen.",
|
||||
"failedToAdd": "Fehler beim Hinzufügen von Teilnehmern",
|
||||
"footerText": "Abgehender Ruf ist deaktiviert.",
|
||||
"googleEmail": "Google-E-Mail",
|
||||
"inviteMoreHeader": "Sie sind alleine in der Sitzung",
|
||||
"inviteMoreMailSubject": "An {{appName}} Meeting teilnehmen",
|
||||
"inviteMorePrompt": "Mehr Leute einladen",
|
||||
@@ -20,14 +21,16 @@
|
||||
"loadingPeople": "Suche nach einzuladenden Teilnehmern",
|
||||
"noResults": "Keine passenden Ergebnisse",
|
||||
"noValidNumbers": "Telefonnummer eingeben",
|
||||
"outlookEmail": "Outlook-E-Mail",
|
||||
"searchNumbers": "Telefonnummern hinzufügen",
|
||||
"searchPeople": "Nach Teilnehmern suchen",
|
||||
"searchPeopleAndNumbers": "Nach Teilnehmen suchen oder deren Telefonnummern hinzufügen",
|
||||
"shareInvite": "Einladung zur Versammlung teilen",
|
||||
"shareLink": "Teilen Sie den Meeting-Link, um andere einzuladen",
|
||||
"shareStream": "Den Live-Streaming-Link freigeben",
|
||||
"shareLink": "Teilen Sie den Konferenzlink, um andere einzuladen",
|
||||
"shareStream": "Den Livestreaminglink freigeben",
|
||||
"telephone": "Telefon: {{number}}",
|
||||
"title": "Teilnehmer zu dieser Konferenz einladen"
|
||||
"title": "Teilnehmer zu dieser Konferenz einladen",
|
||||
"yahooEmail": "Yahoo-E-Mail"
|
||||
},
|
||||
"audioDevices": {
|
||||
"bluetooth": "Bluetooth",
|
||||
@@ -40,7 +43,7 @@
|
||||
"audioOnly": "Geringe Bandbreite"
|
||||
},
|
||||
"calendarSync": {
|
||||
"addMeetingURL": "Meeting-Link hinzufügen",
|
||||
"addMeetingURL": "Konferenzlink hinzufügen",
|
||||
"confirmAddLink": "Möchten Sie einen Jitsi-Link zu diesem Termin hinzufügen?",
|
||||
"error": {
|
||||
"appConfiguration": "Kalenderintegration ist nicht richtig konfiguriert.",
|
||||
@@ -89,9 +92,9 @@
|
||||
"DISCONNECTED": "Getrennt",
|
||||
"DISCONNECTING": "Verbindung wird getrennt",
|
||||
"ERROR": "Fehler",
|
||||
"FETCH_SESSION_ID": "Sitzungs-ID erhalten...",
|
||||
"FETCH_SESSION_ID": "Sitzungs-ID abrufen …",
|
||||
"GET_SESSION_ID_ERROR": "Sitzungs-ID-Fehler erhalten: {{code}}",
|
||||
"GOT_SESSION_ID": "Sitzungs-ID erhalten... Beendet",
|
||||
"GOT_SESSION_ID": "Sitzungs-ID abrufen … beendet",
|
||||
"LOW_BANDWIDTH": "Video für {{displayName}} wurde ausgeschaltet, um Bandbreite einzusparen"
|
||||
},
|
||||
"connectionindicator": {
|
||||
@@ -107,6 +110,7 @@
|
||||
"localaddress_plural": "Lokale Adressen:",
|
||||
"localport": "Lokaler Port:",
|
||||
"localport_plural": "Lokale Ports:",
|
||||
"maxEnabledResolution": "max. senden",
|
||||
"more": "Mehr anzeigen",
|
||||
"packetloss": "Paketverlust:",
|
||||
"quality": {
|
||||
@@ -139,7 +143,7 @@
|
||||
"ifHaveApp": "Wenn Sie die App bereits haben:",
|
||||
"joinInApp": "An dem Meeting teilnehmen mit der App",
|
||||
"launchWebButton": "Im Web öffnen",
|
||||
"title": "Die Konferenz wird in {{app}} geöffnet...",
|
||||
"title": "Die Konferenz wird in {{app}} geöffnet …",
|
||||
"tryAgainButton": "Erneut mit der nativen Applikation versuchen"
|
||||
},
|
||||
"defaultLink": "Bsp.: {{url}}",
|
||||
@@ -160,6 +164,7 @@
|
||||
"accessibilityLabel": {
|
||||
"liveStreaming": "Livestream"
|
||||
},
|
||||
"add": "Hinzufügen",
|
||||
"allow": "Erlauben",
|
||||
"alreadySharedVideoMsg": "Ein anderer Teilnehmer gibt bereits ein Video weiter. Bei dieser Konferenz ist jeweils nur ein geteiltes Video möglich.",
|
||||
"alreadySharedVideoTitle": "Nur ein geteiltes Video gleichzeitig",
|
||||
@@ -174,9 +179,9 @@
|
||||
"cameraUnsupportedResolutionError": "Die Kamera unterstützt die erforderliche Auflösung nicht.",
|
||||
"Cancel": "Abbrechen",
|
||||
"close": "Schließen",
|
||||
"conferenceDisconnectMsg": "Prüfen Sie allenfalls Ihre Netzwerkverbindung. Verbinde in {{seconds}} Sekunden...",
|
||||
"conferenceDisconnectMsg": "Prüfen Sie allenfalls Ihre Netzwerkverbindung. Verbinde in {{seconds}} Sekunden …",
|
||||
"conferenceDisconnectTitle": "Ihre Verbindung ist getrennt worden.",
|
||||
"conferenceReloadMsg": "Wir versuchen das zu beheben. Verbinde in {{seconds}} Sekunden...",
|
||||
"conferenceReloadMsg": "Wir versuchen das zu beheben. Verbinde in {{seconds}} Sekunden …",
|
||||
"conferenceReloadTitle": "Leider ist etwas schiefgegangen.",
|
||||
"confirm": "Bestätigen",
|
||||
"confirmNo": "Nein",
|
||||
@@ -185,21 +190,25 @@
|
||||
"connectErrorWithMsg": "Oh! Es hat etwas nicht geklappt und der Konferenz konnte nicht beigetreten werden: {{msg}}",
|
||||
"connecting": "Verbindung wird hergestellt",
|
||||
"contactSupport": "Support kontaktieren",
|
||||
"copied": "Kopiert",
|
||||
"copy": "Kopieren",
|
||||
"dismiss": "OK",
|
||||
"displayNameRequired": "Hallo! Wie ist Ihr Name?",
|
||||
"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": "E2EE-Schlüssel",
|
||||
"e2eeNoKey": "Keiner",
|
||||
"e2eeToggleSet": "Schlüssel festlegen",
|
||||
"e2eeSet": "Setzen",
|
||||
"e2eeWarning": "WARNUNG: Nicht alle Teilnehmer dieser Konferenz scheinen Ende-zu-Ende-Verschlüsselung zu unterstützen. Wenn Sie diese aktivieren, können die entsprechenden Teilnehmer nichts mehr sehen oder hören.",
|
||||
"enterDisplayName": "Bitte geben Sie hier Ihren Namen ein",
|
||||
"error": "Fehler",
|
||||
"externalInstallationMsg": "Die Bildschirmfreigabe-Erweiterung muss installiert werden.",
|
||||
"externalInstallationTitle": "Erweiterung erforderlich",
|
||||
"goToStore": "Zum Store",
|
||||
"gracefulShutdown": "Der Dienst steht momentan wegen Wartungsarbeiten nicht zur Verfügung. Bitte versuchen Sie es später noch einmal.",
|
||||
"grantModeratorDialog": "Möchten Sie diesen Teilnehmer wirklich zum Moderator machen?",
|
||||
"grantModeratorTitle": "Zum Moderator machen",
|
||||
"IamHost": "Ich bin der Organisator",
|
||||
"incorrectRoomLockPassword": "Falsches Passwort",
|
||||
"incorrectPassword": "Benutzername oder Passwort ungültig",
|
||||
"inlineInstallationMsg": "Die Bildschirmfreigabe-Erweiterung muss installiert werden.",
|
||||
"inlineInstallExtension": "Jetzt installieren",
|
||||
"internalError": "Oh! Es hat etwas nicht funktioniert. Der folgende Fehler ist aufgetreten: {{error}}",
|
||||
"internalErrorTitle": "Interner Fehler",
|
||||
"kickMessage": "Sie können sich für mehr Details an {{participantDisplayName}} wenden.",
|
||||
@@ -208,10 +217,11 @@
|
||||
"kickParticipantTitle": "Teilnehmer entfernen?",
|
||||
"kickTitle": "Autsch! {{participantDisplayName}} hat Sie aus dem Meeting geworfen",
|
||||
"liveStreaming": "Livestreaming",
|
||||
"liveStreamingDisabledBecauseOfActiveRecordingTooltip": "Während einer Aufnahme nicht möglich",
|
||||
"liveStreamingDisabledForGuestTooltip": "Gäste können kein Livestreaming starten.",
|
||||
"liveStreamingDisabledTooltip": "Starten des Livestreams deaktiviert.",
|
||||
"lockMessage": "Die Konferenz konnte nicht gesperrt werden.",
|
||||
"lockRoom": "Meeting-$t(lockRoomPasswordUppercase) hinzufügen",
|
||||
"lockRoom": "Konferenz$t(lockRoomPassword) hinzufügen",
|
||||
"lockTitle": "Sperren fehlgeschlagen",
|
||||
"logoutQuestion": "Sind Sie sicher, dass Sie sich abmelden und die Konferenz verlassen möchten?",
|
||||
"logoutTitle": "Abmelden",
|
||||
@@ -234,13 +244,15 @@
|
||||
"muteParticipantDialog": "Wollen Sie diesen Teilnehmer wirklich stummschalten? Sie können die Stummschaltung nicht wieder aufheben, der Teilnehmer kann dies aber jederzeit selbst tun.",
|
||||
"muteParticipantTitle": "Teilnehmer stummschalten?",
|
||||
"Ok": "OK",
|
||||
"passwordLabel": "Dieses Meeting wurde von einem Teilnehmer gesichert. Bitte geben Sie das $t(lockRoomPassword) ein, um dem Meeting beizutreten.",
|
||||
"passwordNotSupported": "Das Festlegen von einem $t(lockRoomPassword) für das Meeting wird nicht unterstützt.",
|
||||
"passwordLabel": "Dieses Meeting wurde von einem Teilnehmer gesichert. Bitte geben Sie das $t(lockRoomPasswordUppercase) ein, um dem Meeting beizutreten.",
|
||||
"passwordNotSupported": "Das Festlegen eines Konferenzpassworts wird nicht unterstützt.",
|
||||
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) nicht unterstützt",
|
||||
"passwordRequired": "$t(lockRoomPasswordUppercase) erforderlich",
|
||||
"popupError": "Ihr Browser blockiert Pop-ups von dieser Website. Bitte aktivieren Sie Pop-ups in den Sicherheitseinstellungen des Browsers und versuchen Sie es erneut.",
|
||||
"popupErrorTitle": "Pop-up blockiert",
|
||||
"readMore": "mehr",
|
||||
"recording": "Aufnahme",
|
||||
"recordingDisabledBecauseOfActiveLiveStreamingTooltip": "Während eines Livestreams nicht möglich",
|
||||
"recordingDisabledForGuestTooltip": "Gäste können keine Aufzeichnungen starten.",
|
||||
"recordingDisabledTooltip": "Start der Aufzeichnung deaktiviert.",
|
||||
"rejoinNow": "Jetzt erneut beitreten",
|
||||
@@ -252,17 +264,16 @@
|
||||
"remoteControlStopMessage": "Die Fernsteuerung wurde beendet!",
|
||||
"remoteControlTitle": "Fernsteuerung",
|
||||
"Remove": "Entfernen",
|
||||
"removePassword": "$t(lockRoomPassword) entfernen",
|
||||
"removePassword": "$t(lockRoomPasswordUppercase) entfernen",
|
||||
"removeSharedVideoMsg": "Sind Sie sicher, dass Sie das geteilte Video entfernen möchten?",
|
||||
"removeSharedVideoTitle": "Freigegebenes Video entfernen",
|
||||
"reservationError": "Fehler im Reservierungssystem",
|
||||
"reservationErrorMsg": "Fehler, Nummer: {{code}}, Nachricht: {{msg}}",
|
||||
"retry": "Wiederholen",
|
||||
"screenSharingFailedToInstall": "Oh! Die Erweiterung für die Bildschirmfreigabe konnte nicht installiert werden.",
|
||||
"screenSharingFailedToInstallTitle": "Bildschirmfreigabe-Erweiterung konnte nicht installiert werden",
|
||||
"screenSharingFirefoxPermissionDeniedError": "Die Bildschirmfreigabe ist leider fehlgeschlagen. Bitte stellen Sie sicher, dass die Berechtigung für die Bildschirmfreigabe im Browser erteilt wurde. ",
|
||||
"screenSharingFirefoxPermissionDeniedTitle": "Die Bildschirmfreigabe konnte nicht gestartet werden!",
|
||||
"screenSharingPermissionDeniedError": "Oh! Beim Anfordern der Bildschirmfreigabe-Berechtigungen hat etwas nicht funktioniert. Bitte aktualisieren und erneut versuchen.",
|
||||
"screenSharingAudio": "Audio teilen",
|
||||
"screenSharingFailed": "Ups! Beim Teilen des Bildschirms ist etwas schiefgegangen!",
|
||||
"screenSharingFailedTitle": "Bildschirmfreigabe fehlgeschlagen!",
|
||||
"screenSharingPermissionDeniedError": "Ups! Etwas stimmt nicht mit Ihren Berechtigungen zur Bildschirmfreigabe. Bitte neu laden und erneut versuchen.",
|
||||
"sendPrivateMessage": "Sie haben kürzlich eine private Nachricht erhalten. Hatten Sie die Absicht, darauf privat zu antworten, oder wollen Sie Ihre Nachricht an die Gruppe senden?",
|
||||
"sendPrivateMessageCancel": "An die Gruppe senden",
|
||||
"sendPrivateMessageOk": "Privat antworten",
|
||||
@@ -275,13 +286,13 @@
|
||||
"shareYourScreen": "Bildschirm freigeben",
|
||||
"shareYourScreenDisabled": "Bildschirmfreigabe deaktiviert.",
|
||||
"shareYourScreenDisabledForGuest": "Gäste können den Bildschirm nicht freigeben.",
|
||||
"startLiveStreaming": "Einen Livestream starten",
|
||||
"startLiveStreaming": "Livestream starten",
|
||||
"startRecording": "Aufnahme starten",
|
||||
"startRemoteControlErrorMessage": "Beim Versuch, die Fernsteuerung zu starten, ist ein Fehler aufgetreten!",
|
||||
"stopLiveStreaming": "Livestreaming stoppen",
|
||||
"stopLiveStreaming": "Livestream stoppen",
|
||||
"stopRecording": "Aufnahme stoppen",
|
||||
"stopRecordingWarning": "Sind Sie sicher, dass Sie die Aufnahme stoppen möchten?",
|
||||
"stopStreamingWarning": "Sind Sie sicher, dass Sie das Livestreaming stoppen möchten?",
|
||||
"stopStreamingWarning": "Sind Sie sicher, dass Sie den Livestream stoppen möchten?",
|
||||
"streamKey": "Streamschlüssel",
|
||||
"Submit": "OK",
|
||||
"thankYou": "Danke für die Verwendung von {{appName}}!",
|
||||
@@ -289,14 +300,13 @@
|
||||
"tokenAuthFailed": "Sie sind nicht berechtigt, dieser Konferenz beizutreten.",
|
||||
"tokenAuthFailedTitle": "Authentifizierung fehlgeschlagen",
|
||||
"transcribing": "Wird transkribiert",
|
||||
"unlockRoom": "Meeting-$t(lockRoomPassword) entfernen",
|
||||
"unlockRoom": "Konferenz$t(lockRoomPassword) entfernen",
|
||||
"userPassword": "Benutzerpasswort",
|
||||
"WaitForHostMsg": "Die Konferenz <b>{{room}}</b> wurde noch nicht gestartet. Wenn Sie der Organisator sind, authentifizieren Sie sich. Warten Sie andernfalls, bis der Organisator erscheint.",
|
||||
"WaitForHostMsgWOk": "Die Konferenz <b>{{room}}</b> wurde noch nicht gestartet. Wenn Sie der Organisator sind, drücken Sie zum Authentifizieren auf OK. Warten Sie andernfalls, bis der Organisator erscheint.",
|
||||
"WaitingForHost": "Warten auf den Organisator...",
|
||||
"WaitingForHost": "Warten auf den Organisator …",
|
||||
"Yes": "Ja",
|
||||
"yourEntireScreen": "Ganzer Bildschirm",
|
||||
"screenSharingAudio": "Audio austauschen"
|
||||
"yourEntireScreen": "Ganzer Bildschirm"
|
||||
},
|
||||
"dialOut": {
|
||||
"statusMessage": "ist jetzt {{status}}"
|
||||
@@ -304,6 +314,12 @@
|
||||
"documentSharing": {
|
||||
"title": "Freigegebenes Dokument"
|
||||
},
|
||||
"e2ee": {
|
||||
"labelToolTip": "Audio- und Videodaten dieser Unterhaltung sind jetzt zwischen den Teilnehmern verschlüsselt"
|
||||
},
|
||||
"embedMeeting": {
|
||||
"title": "Diese Konferenz einbetten"
|
||||
},
|
||||
"feedback": {
|
||||
"average": "Durchschnittlich",
|
||||
"bad": "Schlecht",
|
||||
@@ -322,8 +338,8 @@
|
||||
},
|
||||
"info": {
|
||||
"accessibilityLabel": "Informationen anzeigen",
|
||||
"addPassword": "$t(lockRoomPassword) hinzufügen",
|
||||
"cancelPassword": "$t(lockRoomPassword) löschen",
|
||||
"addPassword": "$t(lockRoomPasswordUppercase) hinzufügen",
|
||||
"cancelPassword": "$t(lockRoomPasswordUppercase) löschen",
|
||||
"conferenceURL": "Link:",
|
||||
"country": "Land",
|
||||
"dialANumber": "Um am Meeting teilzunehmen, müssen Sie eine dieser Nummern wählen und dann die PIN eingeben.",
|
||||
@@ -335,7 +351,7 @@
|
||||
"genericError": "Es ist leider etwas schiefgegangen.",
|
||||
"inviteLiveStream": "Klicken Sie auf {{url}}, um den Livestream dieser Konferenz zu öffnen",
|
||||
"invitePhone": "Wenn Sie stattdessen per Telefon beitreten möchten, wählen sie: {{number}},,{{conferenceID}}#\n",
|
||||
"invitePhoneAlternatives": "Suchen Sie nach einer anderen Einwahlnummer ?\nMeeting-Einwahlnummern anzeigen: {{url}}\n\n\nWenn Sie sich auch über ein Raumtelefon einwählen, nehmen Sie teil, ohne sich mit dem Ton zu verbinden: {{silentUrl}}",
|
||||
"invitePhoneAlternatives": "Suchen Sie nach einer anderen Einwahlnummer ?\nEinwahlnummern der Konferenz anzeigen: {{url}}\n\n\nWenn Sie sich auch über ein Raumtelefon einwählen, nehmen Sie teil, ohne sich mit dem Ton zu verbinden: {{silentUrl}}",
|
||||
"inviteURLFirstPartGeneral": "Sie wurden zur Teilnahme an einem Meeting eingeladen.",
|
||||
"inviteURLFirstPartPersonal": "{{name}} lädt Sie zu einem Meeting ein.\n",
|
||||
"inviteURLSecondPart": "\nAm Meeting teilnehmen:\n{{url}}\n",
|
||||
@@ -348,7 +364,7 @@
|
||||
"password": "$t(lockRoomPasswordUppercase):",
|
||||
"title": "Teilen",
|
||||
"tooltip": "Freigabe-Link und Einwahlinformationen für dieses Meeting",
|
||||
"label": "Meeting-Informationen"
|
||||
"label": "Konferenzinformationen"
|
||||
},
|
||||
"inviteDialog": {
|
||||
"alertText": "Die Einladung einiger Teilnehmer ist fehlgeschlagen.",
|
||||
@@ -382,6 +398,8 @@
|
||||
"videoQuality": "Anrufqualität verwalten"
|
||||
},
|
||||
"liveStreaming": {
|
||||
"limitNotificationDescriptionWeb": "Wegen hoher Nachfrage ist Ihr Stream auf {{limit}} min. begrenzt. Für unlimitiertes Streaming nutzen Sie bitte <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"limitNotificationDescriptionNative": "Ihr Stream ist begrenzt auf {{limit}} min. Für unlimitiertes Streaming, nutzen Sie bitte {{app}}.",
|
||||
"busy": "Es werden Ressourcen zum Streamen bereitgestellt. Bitte in ein paar Minuten erneut versuchen.",
|
||||
"busyTitle": "Alle Streaming-Instanzen sind in Gebrauch",
|
||||
"changeSignIn": "Konten wechseln.",
|
||||
@@ -391,17 +409,17 @@
|
||||
"error": "Das Livestreaming ist fehlgeschlagen. Bitte versuchen Sie es erneut.",
|
||||
"errorAPI": "Beim Abrufen der YouTube-Livestreams ist ein Fehler aufgetreten. Bitte versuchen Sie, sich erneut anzumelden.",
|
||||
"errorLiveStreamNotEnabled": "Livestreaming ist für {{email}} nicht aktiviert. Aktivieren Sie das Livestreaming oder melden Sie sich bei einem Konto mit aktiviertem Livestreaming an.",
|
||||
"expandedOff": "Livestreaming wurde angehalten",
|
||||
"expandedOff": "Livestream wurde angehalten",
|
||||
"expandedOn": "Das Meeting wird momentan an YouTube gestreamt.",
|
||||
"expandedPending": "Livestreaming wird gestartet...",
|
||||
"failedToStart": "Livestreaming konnte nicht gestartet werden",
|
||||
"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.",
|
||||
"invalidStreamKey": "Der Livestream-Schlüssel ist u. U. falsch.",
|
||||
"off": "Livestreaming gestoppt",
|
||||
"offBy": "{{name}} stoppte das Livestreaming",
|
||||
"on": "Livestreaming",
|
||||
"onBy": "{{name}} startete das Livestreaming",
|
||||
"pending": "Livestream wird gestartet...",
|
||||
"off": "Livestream gestoppt",
|
||||
"offBy": "{{name}} stoppte den Livestream",
|
||||
"on": "Livestream",
|
||||
"onBy": "{{name}} startete den Livestream",
|
||||
"pending": "Livestream wird gestartet …",
|
||||
"serviceName": "Livestreaming-Dienst",
|
||||
"signedInAs": "Sie sind derzeit angemeldet als:",
|
||||
"signIn": "Mit Google anmelden",
|
||||
@@ -442,7 +460,7 @@
|
||||
"stop": "Aufnahme stoppen",
|
||||
"yes": "Ja"
|
||||
},
|
||||
"lockRoomPassword": "Passwort",
|
||||
"lockRoomPassword": "passwort",
|
||||
"lockRoomPasswordUppercase": "Passwort",
|
||||
"me": "ich",
|
||||
"notify": {
|
||||
@@ -474,11 +492,51 @@
|
||||
"unmute": "Stummschaltung aufheben",
|
||||
"newDeviceCameraTitle": "Neue Kamera erkannt",
|
||||
"newDeviceAudioTitle": "Neues Audiogerät erkannt",
|
||||
"newDeviceAction": "Verwenden"
|
||||
"newDeviceAction": "Verwenden",
|
||||
"OldElectronAPPTitle": "Sicherheitslücke!",
|
||||
"oldElectronClientDescription1": "Sie scheinen eine alte Version des Jitsi-Meet-Clients zu nutzen. Diese hat bekannte Schwachstellen. Bitte aktualisieren Sie auf unsere ",
|
||||
"oldElectronClientDescription2": "aktuelle Version",
|
||||
"oldElectronClientDescription3": "!"
|
||||
},
|
||||
"passwordSetRemotely": "von einem anderen Teilnehmer gesetzt",
|
||||
"passwordDigitsOnly": "Bis zu {{number}} Ziffern",
|
||||
"poweredby": "Betrieben von",
|
||||
"prejoin": {
|
||||
"audioAndVideoError": "Audio- und Videofehler:",
|
||||
"audioOnlyError": "Audiofehler:",
|
||||
"audioTrackError": "Audiotrack konnte nicht erstellt werden.",
|
||||
"calling": "Rufaufbau",
|
||||
"callMe": "Mich anrufen",
|
||||
"callMeAtNumber": "Mich unter dieser Nummer anrufen:",
|
||||
"configuringDevices": "Geräte werden eingerichtet …",
|
||||
"connectedWithAudioQ": "Sie sind mit Audio verbunden?",
|
||||
"copyAndShare": "Konferenzlink kopieren & teilen",
|
||||
"dialInMeeting": "Telefoneinwahl",
|
||||
"dialInPin": "In die Konferenz einwählen und PIN eingeben:",
|
||||
"dialing": "Wählen",
|
||||
"doNotShow": "Nicht mehr anzeigen",
|
||||
"errorDialOut": "Anruf fehlgeschlagen",
|
||||
"errorDialOutDisconnected": "Anruf fehlgeschlagen. Verbindungsabbruch",
|
||||
"errorDialOutFailed": "Anruf fehlgeschlagen. Anruf fehlgeschlagen",
|
||||
"errorDialOutStatus": "Fehler beim Abrufen des Anrufstatus",
|
||||
"errorStatusCode": "Anruf fehlgeschlagen. Statuscode: {{status}}",
|
||||
"errorValidation": "Nummerverifikation fehlgeschlagen",
|
||||
"iWantToDialIn": "Ich möchte mich einwählen",
|
||||
"joinAudioByPhone": "Per Telefon teilnehmen",
|
||||
"joinMeeting": "Konferenz beitreten",
|
||||
"joinWithoutAudio": "Ohne Ton beitreten",
|
||||
"initiated": "Anruf gestartet",
|
||||
"linkCopied": "Link in die Zwischenablage kopiert",
|
||||
"lookGood": "Ihr Mikrofon scheint zu funktionieren.",
|
||||
"or": "oder",
|
||||
"premeeting": "Vorraum",
|
||||
"showScreen": "Konferenzvorraum aktivieren",
|
||||
"startWithPhone": "Mit Telefonaudio starten",
|
||||
"screenSharingError": "Fehler bei Bildschirmfreigabe:",
|
||||
"videoOnlyError": "Videofehler:",
|
||||
"videoTrackError": "Videotrack konnte nicht erstellt werden.",
|
||||
"viewAllNumbers": "alle Nummern anzeigen"
|
||||
},
|
||||
"presenceStatus": {
|
||||
"busy": "Beschäftigt",
|
||||
"calling": "Wird angerufen …",
|
||||
@@ -501,6 +559,8 @@
|
||||
},
|
||||
"raisedHand": "Ich möchte sprechen",
|
||||
"recording": {
|
||||
"limitNotificationDescriptionWeb": "Wegen hoher Nachfrage ist Ihre Aufnahme auf {{limit}} min. begrenzt. Für unlimitierte Aufnahmen nutzen Sie bitte <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"limitNotificationDescriptionNative": "Wegen hoher Nachfrage ist Ihre Aufnahme auf {{limit}} min begrenzt. Für unlimitierte Aufnahmen nutzen Sie bitte <3>{{app}}</3>.",
|
||||
"authDropboxText": "In Dropbox hochladen",
|
||||
"availableSpace": "Verfügbarer Speicherplatz: {{spaceLeft}} MB (ca. {{duration}} Minuten Aufzeichnung)",
|
||||
"beta": "BETA",
|
||||
@@ -511,7 +571,7 @@
|
||||
"expandedOn": "Das Meeting wird momentan aufgezeichnet.",
|
||||
"expandedPending": "Aufzeichnung wird gestartet…",
|
||||
"failedToStart": "Die Aufnahme konnte nicht gestartet werden",
|
||||
"fileSharingdescription": "Aufzeichnung mit Meeting-Teilnehmer teilen",
|
||||
"fileSharingdescription": "Aufzeichnung mit Konferenzteilnehmer teilen",
|
||||
"live": "LIVE",
|
||||
"loggedIn": "Als {{userName}} angemeldet",
|
||||
"off": "Aufnahme gestoppt",
|
||||
@@ -531,7 +591,8 @@
|
||||
"pullToRefresh": "Ziehen, um zu aktualisieren"
|
||||
},
|
||||
"security": {
|
||||
"about": "Sie können einen Passwort zu Ihrer Sitzung hinzufügen. Die Teilnehmer müssen dieses ebenfalls eingeben, bevor sie an der Sitzung teilnehmen dürfen",
|
||||
"about": "Sie können Ihre Konferenz mit einem Passwort sichern. Teilnehmer müssen dieses eingeben, bevor sie an der Sitzung teilnehmen dürfen.",
|
||||
"aboutReadOnly": "Moderatoren können die Konferenz mit einem Passwort sichern. Teilnehmer müssen dieses eingeben, bevor sie an der Sitzung teilnehmen dürfen.",
|
||||
"insecureRoomNameWarning": "Der Raumname ist unsicher. Unerwünschte Teilnehmer könnten Ihrer Konferenz beitreten",
|
||||
"securityOptions": "Sicherheitsoptionen"
|
||||
},
|
||||
@@ -563,12 +624,15 @@
|
||||
"settingsView": {
|
||||
"advanced": "Erweitert",
|
||||
"alertOk": "OK",
|
||||
"alertCancel": "Abbrechen",
|
||||
"alertTitle": "Warnung",
|
||||
"alertURLText": "Die angegebene Server-URL ist ungültig",
|
||||
"buildInfoSection": "Build-Informationen",
|
||||
"conferenceSection": "Konferenz",
|
||||
"disableCallIntegration": "Native Anrufintegration deaktivieren",
|
||||
"disableP2P": "Ende-zu-Ende-Modus deaktivieren",
|
||||
"disableCrashReporting": "Absturzberichte deaktivieren",
|
||||
"disableCrashReportingWarning": "Möchten Sie die Absturzberichte wirklich deaktivieren? Diese Einstellung wird nach einem Neustart der App wirksam.",
|
||||
"displayName": "Anzeigename",
|
||||
"email": "E-Mail",
|
||||
"header": "Einstellungen",
|
||||
@@ -610,14 +674,18 @@
|
||||
"chat": "Chatfenster ein-/ausblenden",
|
||||
"document": "Geteiltes Dokument schließen",
|
||||
"download": "Unsere Apps herunterladen",
|
||||
"embedMeeting": "Konferenz einbetten",
|
||||
"e2ee": "Ende-zu-Ende-Verschlüsselung",
|
||||
"feedback": "Feedback hinterlassen",
|
||||
"fullScreen": "Vollbildmodus aktivieren/deaktivieren",
|
||||
"fullScreen": "Vollbildmodus ein-/ausschalten",
|
||||
"grantModerator": "Zum Moderator machen",
|
||||
"hangup": "Anruf beenden",
|
||||
"help": "Hilfe",
|
||||
"invite": "Teilnehmer einladen",
|
||||
"kick": "Teilnehmer entfernen",
|
||||
"lobbyButton": "Lobbymodus ein-/ausschalten",
|
||||
"localRecording": "Lokale Aufzeichnungssteuerelemente ein-/ausschalten",
|
||||
"lockRoom": "Meeting-Passwort ein-/auschalten",
|
||||
"lockRoom": "Konferenzpasswort ein-/auschalten",
|
||||
"moreActions": "Menü „Weitere Aktionen“ ein-/ausschalten",
|
||||
"moreActionsMenu": "Menü „Weitere Aktionen“",
|
||||
"moreOptions": "Menü „Weitere Optionen“",
|
||||
@@ -639,6 +707,7 @@
|
||||
"speakerStats": "Sprecherstatistik ein-/ausblenden",
|
||||
"tileView": "Kachelansicht ein-/ausschalten",
|
||||
"toggleCamera": "Kamera wechseln",
|
||||
"toggleFilmstrip": "Miniaturansichten ein-/ausschalten",
|
||||
"videomute": "„Video stummschalten“ ein-/ausschalten",
|
||||
"videoblur": "Video-Unschärfe ein-/ausschalten"
|
||||
},
|
||||
@@ -653,6 +722,8 @@
|
||||
"documentClose": "Geteiltes Dokument schließen",
|
||||
"documentOpen": "Geteiltes Dokument öffnen",
|
||||
"download": "Unsere Apps herunterladen",
|
||||
"e2ee": "Ende-zu-Ende-Verschlüsselung",
|
||||
"embedMeeting": "Konferenz einbetten",
|
||||
"enterFullScreen": "Vollbildmodus",
|
||||
"enterTileView": "Kachelansicht einschalten",
|
||||
"exitFullScreen": "Vollbildmodus verlassen",
|
||||
@@ -661,6 +732,8 @@
|
||||
"hangup": "Verlassen",
|
||||
"help": "Hilfe",
|
||||
"invite": "Teilnehmer einladen",
|
||||
"lobbyButtonDisable": "Lobbymodus deaktivieren",
|
||||
"lobbyButtonEnable": "Lobbymodus aktivieren",
|
||||
"login": "Anmelden",
|
||||
"logout": "Abmelden",
|
||||
"lowerYourHand": "Hand senken",
|
||||
@@ -755,6 +828,7 @@
|
||||
"domute": "Stummschalten",
|
||||
"domuteOthers": "Alle anderen stummschalten",
|
||||
"flip": "Spiegeln",
|
||||
"grantModerator": "Zum Moderator machen",
|
||||
"kick": "Hinauswerfen",
|
||||
"moderator": "Moderator",
|
||||
"mute": "Teilnehmer ist stumm geschaltet",
|
||||
@@ -768,7 +842,7 @@
|
||||
"join": "Zum Teilnehmen tippen",
|
||||
"roomname": "Konferenzname eingeben"
|
||||
},
|
||||
"appDescription": "Auf geht's! Starten Sie eine Videokonferenz mit dem ganzen Team. Oder besser noch: Laden Sie alle ein, die Sie kennen. {{app}} ist eine vollständig verschlüsselte, aus 100 % Open-Source-Software bestehende Videokonferenzlösung, die Sie den ganzen Tag kostenlos verwenden können — ohne Registrierung.",
|
||||
"appDescription": "Auf geht's! Starten Sie eine Videokonferenz mit ihrem Team oder besser noch: Laden Sie alle ein, die Sie kennen. {{app}} ist eine vollständig verschlüsselte und 100 % quelloffene Videokonferenzlösung, die Sie immer und überall kostenlos verwenden können – ohne Registrierung.",
|
||||
"audioVideoSwitch": {
|
||||
"audio": "Audio",
|
||||
"video": "Video"
|
||||
@@ -777,24 +851,62 @@
|
||||
"connectCalendarButton": "Kalender verbinden",
|
||||
"connectCalendarText": "Verbinden Sie Ihren Kalender, um all Ihre Meetings in {{app}} anzuzeigen. Fügen Sie zudem {{provider}}-Meetings in Ihren Kalender ein und starten Sie sie mit nur einem Klick.",
|
||||
"enterRoomTitle": "Neues Meeting starten",
|
||||
"roomNameAllowedChars": "Der Meeting-Name sollte keines der folgenden Zeichen enthalten: ?, &, :, ', \", %, #.",
|
||||
"getHelp": "Hilfe",
|
||||
"go": "Los",
|
||||
"goSmall": "Los",
|
||||
"join": "Beitreten",
|
||||
"info": "Informationen",
|
||||
"join": "ERSTELLEN / BEITRETEN",
|
||||
"moderatedMessage": "Oder <a href=\"{{url}}\" rel=\"noopener noreferrer\" target=\"_blank\">reservieren Sie sich eine Konferenz-URL</a>, unter der Sie der einzige Moderator sind.",
|
||||
"privacy": "Datenschutz",
|
||||
"recentList": "Letzte",
|
||||
"recentList": "Verlauf",
|
||||
"recentListDelete": "Löschen",
|
||||
"recentListEmpty": "Die Liste „Letzte“ ist momentan leer. Chatten Sie mit Ihrem Team. Sie finden all Ihre letzten Meetings hier.",
|
||||
"recentListEmpty": "Ihr Konferenzverlauf ist derzeit leer. Reden Sie mit Ihrem Team und Ihre vergangenen Konferenzen landen hier.",
|
||||
"reducedUIText": "Willkommen bei {{app}}!",
|
||||
"roomNameAllowedChars": "Der Konferenzname sollte keines der folgenden Zeichen enthalten: ?, &, :, ', \", %, #.",
|
||||
"roomname": "Konferenzname eingeben",
|
||||
"roomnameHint": "Name oder URL der Konferenz, der Sie beitreten möchten. Sie können einen Namen erfinden, er muss nur den anderen Teilnehmern übermittelt werden, damit diese der gleichen Konferenz beitreten.",
|
||||
"sendFeedback": "Feedback senden",
|
||||
"terms": "AGB",
|
||||
"title": "Sichere, mit umfassenden Funktionen ausgestattete und vollkommen kostenlose Videokonferenzen"
|
||||
"title": "Sichere, voll funktionale und komplett kostenlose Videokonferenzen"
|
||||
},
|
||||
"lonelyMeetingExperience": {
|
||||
"button": "Andere einladen",
|
||||
"youAreAlone": "Nur Sie sind in diesem Meeting"
|
||||
"youAreAlone": "Sie sind alleine in dieser Konferenz"
|
||||
},
|
||||
"helpView": {
|
||||
"header": "Hilfecenter"
|
||||
},
|
||||
"lobby": {
|
||||
"knockingParticipantList": "Liste anklopfender Teilnehmer",
|
||||
"allow": "Annehmen",
|
||||
"backToKnockModeButton": "Kein Passwort, stattdessen Beitritt anfragen",
|
||||
"dialogTitle": "Lobbymodus",
|
||||
"disableDialogContent": "Lobbymodus derzeit deaktiviert. Diese Funktion stellt sicher, dass unerwünschte Personen Ihrer Konferenz nicht beitreten können. Funktion aktivieren?",
|
||||
"disableDialogSubmit": "Deaktivieren",
|
||||
"emailField": "E-Mail-Adresse eingeben",
|
||||
"enableDialogPasswordField": "Passwort setzen (optional)",
|
||||
"enableDialogSubmit": "Aktivieren",
|
||||
"enableDialogText": "Mit dem Lobbymodus schützen Sie Ihre Konferenz, da nur von einem Moderator angenommene Teilnehmer beitreten können.",
|
||||
"enterPasswordButton": "Konferenzpasswort eingeben",
|
||||
"enterPasswordTitle": "Passwort zum Beitreten benutzen",
|
||||
"invalidPassword": "Ungültiges Passwort",
|
||||
"joiningMessage": "Sie treten der Konferenz bei, sobald jemand Ihre Anfrage annimmt.",
|
||||
"joinWithPasswordMessage": "Beitrittsversuch mit Passwort, bitte warten …",
|
||||
"joinRejectedMessage": "Ihr Beitrittsanfrage wurde von einem Moderator abgelehnt.",
|
||||
"joinTitle": "Konferenz beitreten",
|
||||
"joiningTitle": "Beitritt anfragen …",
|
||||
"joiningWithPasswordTitle": "Mit Passwort beitreten …",
|
||||
"knockButton": "Beitritt anfragen",
|
||||
"knockTitle": "Jemand möchte der Konferenz beitreten",
|
||||
"nameField": "Geben Sie Ihren Namen ein",
|
||||
"notificationLobbyAccessDenied": "{{targetParticipantName}} wurde von {{originParticipantName}} der Zutritt verwehrt",
|
||||
"notificationLobbyAccessGranted": "{{targetParticipantName}} wurde von {{originParticipantName}} der Zutritt gestattet",
|
||||
"notificationLobbyDisabled": "{{originParticipantName}} hat die Lobby deaktiviert",
|
||||
"notificationLobbyEnabled": "{{originParticipantName}} hat die Lobby aktiviert",
|
||||
"notificationTitle": "Lobby",
|
||||
"passwordField": "Konferenzpasswort eingeben",
|
||||
"passwordJoinButton": "Beitreten",
|
||||
"reject": "Ablehnen",
|
||||
"toggleLabel": "Lobby aktivieren"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +1,36 @@
|
||||
{
|
||||
"addPeople": {
|
||||
"add": "Προσκάλεσε",
|
||||
"addContacts": "Προσκάλεσε τις επαφές σου",
|
||||
"copyInvite": "Αντίγραψε την πρόσκληση της συνάντησης",
|
||||
"copyLink": "Αντίγραψε το σύνδεσμο της συνάντησης",
|
||||
"copyStream": "Αντίγραψε το σύνδεσμο της ζωντανής μετάδοσης",
|
||||
"countryNotSupported": "Δεν υποστηρίζουμε αυτόν τον προορισμό ακόμα.",
|
||||
"countryReminder": "Κλήση εκτός ΗΠΑ; Παρακαλώ βεβαιωθείτε ότι ξεκινάτε με τον κωδικό της χώρας!",
|
||||
"defaultEmail": "Το προεπιλεγμένο Email σου",
|
||||
"disabled": "Δεν μπορείτε να προσκαλέσετε άτομα.",
|
||||
"failedToAdd": "Αποτυχία προσθήκης συμμετεχόντων",
|
||||
"footerText": "Η κλήση είναι απενεργοποιημένη.",
|
||||
"googleEmail": "Google Email",
|
||||
"inviteMoreHeader": "Είσαι ο μόναδικός συμμετέχων στη συνάντηση",
|
||||
"inviteMoreMailSubject": "Συμμετοχή στη συνάντηση {{appName}}",
|
||||
"inviteMorePrompt": "Πρόσκληση συμμετεχόντων",
|
||||
"linkCopied": "Ο σύνδεσμος αντιγράφηκε στο πρόχειρο",
|
||||
"loading": "Αναζήτηση για ανθρώπους και αριθμούς τηλεφώνου",
|
||||
"loadingNumber": "Ο αριθμός τηλεφώνου επικυρώνεται",
|
||||
"loadingPeople": "Γίνεται αναζήτηση για ανθρώπους που θα καλεστούν",
|
||||
"noResults": "Δε βρέθηκαν αποτελέσματα αναζήτησης",
|
||||
"outlookEmail": "Outlook Email",
|
||||
"noValidNumbers": "Παρακαλώ εισάγετε έναν αριθμό τηλεφώνου",
|
||||
"searchNumbers": "Προσθέστε αριθμούς τηλεφώνου",
|
||||
"searchPeople": "Αναζήτηση για ανθρώπους",
|
||||
"searchPeopleAndNumbers": "Αναζήτηση για ανθρώπους ή προσθήκη των αριθμών τηλεφώνου τους",
|
||||
"shareInvite": "Κοινή χρήση πρόσκλησης συνάντησης",
|
||||
"shareLink": "Κοινή χρήση συνδέσμου συνάντησης για πρόσκληση άλλων",
|
||||
"shareStream": "Κοινή χρήση του συνδέσμου ζωντανής μετάδοσης",
|
||||
"telephone": "Τηλέφωνο: {{number}}",
|
||||
"title": "Καλέστε ανθρώπους σε αυτή τη συνάντηση"
|
||||
"title": "Καλέστε ανθρώπους σε αυτή τη συνάντηση",
|
||||
"yahooEmail": "Yahoo Email"
|
||||
},
|
||||
"audioDevices": {
|
||||
"bluetooth": "Bluetooth",
|
||||
@@ -79,7 +94,7 @@
|
||||
"ERROR": "Σφάλμα",
|
||||
"FETCH_SESSION_ID": "Απόκτηση session-id...",
|
||||
"GET_SESSION_ID_ERROR": "Λήψη session-id σφάλματος: {{code}}",
|
||||
"GOT_SESSION_ID": "Απόκτηση session-id... Κάνει",
|
||||
"GOT_SESSION_ID": "Απόκτηση session-id... Έγινε",
|
||||
"LOW_BANDWIDTH": "Το βίντεο για το {{displayName}} έχει απενεργοποιηθεί για να εξοικονομήσετε εύρος ζώνης"
|
||||
},
|
||||
"connectionindicator": {
|
||||
@@ -98,9 +113,9 @@
|
||||
"more": "Εμφάνιση περισσότερων",
|
||||
"packetloss": "Απώλεια πακέτων:",
|
||||
"quality": {
|
||||
"good": "Καλά",
|
||||
"inactive": "Ανενεργά",
|
||||
"lost": "Χαμένα",
|
||||
"good": "Καλή",
|
||||
"inactive": "Ανενεργό",
|
||||
"lost": "Χαμένη",
|
||||
"nonoptimal": "Μέτρια",
|
||||
"poor": "Κακή"
|
||||
},
|
||||
@@ -123,8 +138,10 @@
|
||||
"description": "Δεν έγινε τίποτα; Προσπαθήσαμε να κάνουμε έναρξη σύσκεψης στο {{app}} desktop app. Προσπαθήστε ξανά ή ξεκινήστε το {{app}} web app.",
|
||||
"descriptionWithoutWeb": "Δεν έγινε τίποτα; Προσπαθήσαμε να κάνουμε έναρξη σύσκεψης στο {{app}} desktop app.",
|
||||
"downloadApp": "Κατεβάστε την εφαρμογή",
|
||||
"ifDoNotHaveApp": "If you don't have the app yet:",
|
||||
"ifHaveApp": "If you already have the app:",
|
||||
"joinInApp": "Join this meeting using the app",
|
||||
"launchWebButton": "Έναρξη στο web",
|
||||
"openApp": "Συνεχίστε στην εφαρμογή",
|
||||
"title": "Γίνεται έναρξη της συνάντησής σας στο {{app}}...",
|
||||
"tryAgainButton": "Προσπαθήστε ξανά στην επιφάνεια εργασίας"
|
||||
},
|
||||
@@ -146,6 +163,7 @@
|
||||
"accessibilityLabel": {
|
||||
"liveStreaming": "Ζωντανή ροή"
|
||||
},
|
||||
"add": "Add",
|
||||
"allow": "Επίτρεψε",
|
||||
"alreadySharedVideoMsg": "Ένας άλλος συμμετέχων κάνει ήδη κοινή προβολή βίντεο. Η διάσκεψη αυτή επιτρέπει μόνο ένα κοινόχρηστο βίντεο τη φορά.",
|
||||
"alreadySharedVideoTitle": "Μόνο ένα κοινόχρηστο βίντεο επιτρέπεται τη φορά",
|
||||
@@ -174,22 +192,18 @@
|
||||
"copy": "Αντιγραφή",
|
||||
"dismiss": "Απόρριψη",
|
||||
"displayNameRequired": "Γεια σου! Ποιο είναι το όνομα σου;",
|
||||
"done": "Κάνει",
|
||||
"e2eeDescription": "<p>Η από άκρη σε άκρη κρυπτογράφηση είναι σήμερα <strong>σε ΠΕΙΡΑΜΑΤΙΚΟ στάδιο</strong>. Παρακαλώ δείτε <a href='https://jitsi.org/blog/e2ee/' target='_blank'>αυτήν την ανάρτηση</a> για λεπτομέρειες.</p><br/><p>Παρακαλώ να έχετε κατά νου ότι η ενεργοποίηση της από άκρη σε άκρη κρυπτογράφησης θα απενεργοποιήσει από την πλευρά του διακομιστή υπηρεσίες όπως: καταγραφή, live streaming και συμμετοχή μέσω τηλεφώνου. Επίσης, να έχετε κατά νου ότι η συνάντηση θα λειτουργήσει μόνο για τους ανθρώπους που συνδέονται από φυλλομετρητές με υποστήριξη για insertable streams.</p>",
|
||||
"e2eeLabel": "Κλειδί",
|
||||
"e2eeTitle": "Από άκρη σε άκρη κρυπτογράφηση",
|
||||
"done": "Έγινε",
|
||||
"e2eeDescription": "Η από άκρη σε άκρη κρυπτογράφηση είναι σήμερα σε ΠΕΙΡΑΜΑΤΙΚΟ στάδιο. Παρακαλώ να έχετε κατά νου ότι η ενεργοποίηση της από άκρη σε άκρη κρυπτογράφησης θα απενεργοποιήσει από την πλευρά του διακομιστή υπηρεσίες όπως: καταγραφή, live streaming και συμμετοχή μέσω τηλεφώνου. Επίσης, να έχετε κατά νου ότι η συνάντηση θα λειτουργήσει μόνο για τους ανθρώπους που συνδέονται από φυλλομετρητές με υποστήριξη για insertable streams.",
|
||||
"e2eeNoKey": "None",
|
||||
"e2eeSet": "Set",
|
||||
"e2eeToggleSet": "Set key",
|
||||
"e2eeWarning": "ΠΡΟΕΙΔΟΠΟΊΗΣΗ: Δε φαίνεται να έχουν όλοι οι συμμετέχοντες στη συνάντηση αυτή υποστήριξη για από άκρη σε άκρη κρυπτογράφηση. Αν την ενεργοποιήσετε, δεν θα μπορέσουν να σας δουν ούτε να σας ακούσουν.",
|
||||
"enterDisplayName": "Παρακαλώ εισάγετε το όνομά σας εδώ",
|
||||
"error": "Σφάλμα",
|
||||
"externalInstallationMsg": "Θα πρέπει να εγκαταστήσετε την επέκτασή μας για διαμοιρασμό επιφάνειας εργασίας.",
|
||||
"externalInstallationTitle": "Απαιτείται επέκταση",
|
||||
"goToStore": "Μετάβαση στο webstore",
|
||||
"gracefulShutdown": "Μας υπηρεσία είναι προς το παρόν εκτός λειτουργίας για συντήρηση. Παρακαλώ προσπαθήστε ξανά αργότερα.",
|
||||
"IamHost": "Είμαι ο οικοδεσπότης",
|
||||
"incorrectRoomLockPassword": "Εσφαλμένος κωδικός πρόσβασης",
|
||||
"incorrectPassword": "Λανθασμένο όνομα χρήστη ή κωδικός πρόσβασης",
|
||||
"inlineInstallationMsg": "Θα πρέπει να εγκαταστήσετε την επέκτασή μας για διαμοιρασμό επιφάνειας εργασίας.",
|
||||
"inlineInstallExtension": "Εγκαταστήστε τώρα",
|
||||
"internalError": "Ουπς! Κάτι πήγε στραβά. Παρουσιάστηκε το παρακάτω σφάλμα: {{error}}",
|
||||
"internalErrorTitle": "Εσωτερικό σφάλμα",
|
||||
"kickMessage": "Μπορείτε να επικοινωνήσετε με το {{participantDisplayName}} για περισσότερες λεπτομέρειες.",
|
||||
@@ -198,6 +212,7 @@
|
||||
"kickParticipantTitle": "Θέλετε να αποβάλετε αυτόν τον συμμετέχοντα;",
|
||||
"kickTitle": "Ωχ! Ο/Η {{participantDisplayName}} σας απέβαλε από τη διάσκεψη",
|
||||
"liveStreaming": "Ζωντανή ροή",
|
||||
"liveStreamingDisabledBecauseOfActiveRecordingTooltip": "Not possible while recording is active",
|
||||
"liveStreamingDisabledForGuestTooltip": "Οι επισκέπτες δεν μπορούν να ξεκινήσουν τη ζωντανή ροή",
|
||||
"liveStreamingDisabledTooltip": "Έναρξη ζωντανής ροής απενεργοποιημένη",
|
||||
"lockMessage": "Αποτυχία κλειδώματος της διάσκεψης.",
|
||||
@@ -231,6 +246,7 @@
|
||||
"popupError": "Ο φυλλομετρητής σας μπλοκάρει τα pop-up windows από αυτό το site. Παρακαλούμε ενεργοποιήστε τα pop-ups στις ρυθμίσεις ασφαλείας του προγράμματος περιήγησής σας και προσπαθήστε ξανά.",
|
||||
"popupErrorTitle": "Pop-up μπλοκαρίστηκε",
|
||||
"recording": "Γίνεται εγγραφή",
|
||||
"recordingDisabledBecauseOfActiveLiveStreamingTooltip": "Not possible while a live stream is active",
|
||||
"recordingDisabledForGuestTooltip": "Οι επισκέπτες δεν μπορούν να ξεκινήσουν τις ηχογραφήσεις.",
|
||||
"recordingDisabledTooltip": "Έναρξη εγγραφής απενεργοποιημένη.",
|
||||
"rejoinNow": "Επανασύνδεση τώρα",
|
||||
@@ -251,8 +267,6 @@
|
||||
"screenSharingAudio": "Διαμοιρασμός ήχου",
|
||||
"screenSharingFailedToInstall": "Ουπς! Η εγκατάσταση της επέκταση κοινής χρήσης οθόνης απέτυχε.",
|
||||
"screenSharingFailedToInstallTitle": "Η εγκατάσταση της επέκταση κοινής χρήσης οθόνης απέτυχε",
|
||||
"screenSharingFirefoxPermissionDeniedError": "Κάτι πήγε στραβά ενώ προσπαθούσατε να μοιραστείτε την οθόνη σας. Παρακαλούμε βεβαιωθείτε ότι μας έχετε δώσει την άδεια να το πράξουμε.",
|
||||
"screenSharingFirefoxPermissionDeniedTitle": "Ουπς! Δεν ήμασταν σε θέση να ξεκινήσουμε την κοινή χρήση οθόνης!",
|
||||
"screenSharingPermissionDeniedError": "Ουπς! Κάτι πήγε στραβά με τα δικαιώματα της επέκτασης κοινής χρήσης οθόνης. Παρακαλώ ξαναφορτώστε και προσπαθήστε ξανά.",
|
||||
"sendPrivateMessage": "Πρόσφατα λάβατε ένα προσωπικό μήνυμα. Σκοπεύετε να απαντήσετε σε αυτό ιδιωτικά ή θέλετε να στείλετε το μήνυμά σας στην ομάδα;",
|
||||
"sendPrivateMessageCancel": "Στείλτε στην ομάδα",
|
||||
@@ -390,6 +404,8 @@
|
||||
"failedToStart": "Η ζωντανή ροή απέτυχε να ξεκινήσει",
|
||||
"getStreamKeyManually": "Δεν ήμασταν σε θέση να φέρουμε κάποια ζωντανή ροή. Προσπαθήστε να πάρετε το κλειδί της ζωντανής ροής από το YouTube.",
|
||||
"invalidStreamKey": "Το κλειδί της ζωντανής ροής μπορεί να είναι εσφαλμένο.",
|
||||
"limitNotificationDescriptionNative": "Your streaming will be limited to {{limit}} min. For unlimited streaming try {{app}}.",
|
||||
"limitNotificationDescriptionWeb": "Due to high demand your streaming will be limited to {{limit}} min. For unlimited streaming try <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"off": "Η ζωντανή ροή σταμάτησε",
|
||||
"offBy": "Ο/Η {{name}} σταμάτησε τη ζωντανή ροή",
|
||||
"on": "Ζωντανή ροή",
|
||||
@@ -476,6 +492,40 @@
|
||||
"passwordSetRemotely": "ορίστηκε από άλλον συμμετέχοντα",
|
||||
"passwordDigitsOnly": "Έως {{number}} ψηφία",
|
||||
"poweredby": "με τη δύναμη του",
|
||||
"prejoin": {
|
||||
"audioAndVideoError": "Σφάλμα ήχου και βίντεο:",
|
||||
"audioOnlyError": "Σφάλμα ήχου:",
|
||||
"audioTrackError": "Δεν ήταν δυνατή η δημιουργία κομματιού ήχου.",
|
||||
"callMe": "Κάλεσέ με",
|
||||
"callMeAtNumber": "Κάλεσέ με σε αυτό το νούμερο:",
|
||||
"configuringDevices": "Γίνεται παραμετροποίηση συσκευών...",
|
||||
"connectedWithAudioQ": "Είστε συνδεδεμένοι με ήχο;",
|
||||
"copyAndShare": "Αντιγραφή και κοινή χρήση συνδέσμου συνάντησης",
|
||||
"dialInMeeting": "Κλήση στη συνάντηση",
|
||||
"dialInPin": "Κλήση στη συνάντηση και εισαγωγή κωδικού PIN:",
|
||||
"dialing": "Γίνεται κλήση",
|
||||
"doNotShow": "Να μην εμφανιστεί αυτό ξανά",
|
||||
"errorDialOut": "Η κλήση δεν ήταν δυνατή",
|
||||
"errorDialOutDisconnected": "Η κλήση δεν ήταν δυνατή. Έγινε αποσύνδεση",
|
||||
"errorDialOutFailed": "Η κλήση δεν ήταν δυνατή. Η κλήση απέτυχε",
|
||||
"errorDialOutStatus": "Σφάλμα λήψης κατάστασης κλήσης",
|
||||
"errorStatusCode": "Σφάλμα κλήσης, κωδικός κατάστασης: {{status}}",
|
||||
"errorValidation": "Η επικύρωση του αριθμού απέτυχε",
|
||||
"iWantToDialIn": "Θέλω να κάνω κλήση",
|
||||
"joinAudioByPhone": "Συμμετοχή με ήχο τηλεφώνου",
|
||||
"joinMeeting": "Συμμετοχή στη συνάντηση",
|
||||
"joinWithoutAudio": "Συμμετοχή χωρίς ήχο",
|
||||
"initiated": "Η κλήση ξεκίνησε",
|
||||
"linkCopied": "Ο σύνδεσμος αντιγράφηκε στο πρόχειρο",
|
||||
"lookGood": "Ακούγεται ότι το μικρόφωνο σας λειτουργεί άψογα",
|
||||
"or": "ή",
|
||||
"calling": "Γίνεται κλήση",
|
||||
"startWithPhone": "Έναρξη με ήχο τηλεφώνου",
|
||||
"screenSharingError": "Σφάλμα διαμοιρασμού οθόνης:",
|
||||
"videoOnlyError": "Σφάλμα βίντεο:",
|
||||
"videoTrackError": "Δεν ήταν δυνατή η δημιουργία κομματιού βίντεο.",
|
||||
"viewAllNumbers": "προβολή όλων των αριθμών"
|
||||
},
|
||||
"presenceStatus": {
|
||||
"busy": "Απασχολημένος",
|
||||
"calling": "Γίνεται κλήση...",
|
||||
@@ -498,6 +548,8 @@
|
||||
},
|
||||
"raisedHand": "Θα ήθελα να μιλήσω",
|
||||
"recording": {
|
||||
"limitNotificationDescriptionWeb": "Λόγω υψηλής ζήτησης η εγγραφή σας θα περιριστεί σε {{limit}} λεπτά. Για απεριόριστες εγγραφές, δοκιμάστε το <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"limitNotificationDescriptionNative": "Λόγω υψηλής ζήτησης η εγγραφή σας θα περιριστεί σε {{limit}} λεπτά. Για απεριόριστες εγγραφές, δοκιμάστε <3>{{app}}</3>.",
|
||||
"authDropboxText": "Ανεβάστε στο Dropbox",
|
||||
"availableSpace": "Διαθέσιμος χώρος: {{spaceLeft}} MB (περίπου {{duration}} λεπτά εγγραφής)",
|
||||
"beta": "BETA",
|
||||
@@ -527,6 +579,11 @@
|
||||
"sectionList": {
|
||||
"pullToRefresh": "Τραβήξτε για να ανανεώσετε"
|
||||
},
|
||||
"security": {
|
||||
"about": "Έχετε τη δυνατότητα να προσθέσετε κωδικό στη συνάντησή σας. Οι συμμετέχοντες θα πρέπει να τον εισάγουν για να τους δοθεί πρόσβαση στη συνάντηση.",
|
||||
"insecureRoomNameWarning": "Το όνομα του διαδρόμου δεν είναι ασφαλές. Ανεπιθύμητοι συμμετέχοντες μπορεί να συμμετάσχουν στη συνάντησή σας. Σκεφτείτε το να ασφαλίσετε τη συνάντηση σας χρησιμοποιώντας το κουμπί Ασφάλεια.",
|
||||
"securityOptions": "Επιλογές ασφαλείας"
|
||||
},
|
||||
"settings": {
|
||||
"calendar": {
|
||||
"about": "H σύνδεση ημερολογίου του {{appName}} χρησιμοποιείται για την ασφαλή πρόσβαση του ημερολογίου σας, ώστε να μπορεί να διαβάσει τις επερχόμενες εκδηλώσεις.",
|
||||
@@ -585,7 +642,7 @@
|
||||
"name": "Όνομα",
|
||||
"seconds": "{{count}}δ",
|
||||
"speakerStats": "Στατιστικά ομιλητή",
|
||||
"speakerTime": "Ώρα ομιλητή"
|
||||
"speakerTime": "Χρόνος ομιλητή"
|
||||
},
|
||||
"startupoverlay": {
|
||||
"policyText": " ",
|
||||
@@ -612,6 +669,7 @@
|
||||
"help": "Βοήθεια",
|
||||
"invite": "Πρόσκληση συμμετεχόντων",
|
||||
"kick": "Αποβολή συμμετέχοντα",
|
||||
"lobbyButton": "Ενεργοποίηση/απενεργοποίηση λειτουργίας διαδρόμου",
|
||||
"localRecording": "Εναλλαγή ελέγχων τοπικής καταγραφής",
|
||||
"lockRoom": "Εναλλαγή κωδικού πρόσβασης συνάντησης",
|
||||
"moreActions": "Εναλλαγή μενού περισσότερων ενεργειών",
|
||||
@@ -625,6 +683,7 @@
|
||||
"raiseHand": "Εναλλαγή σηκώματος χεριού",
|
||||
"recording": "Εναλλαγή καταγραφής",
|
||||
"remoteMute": "Σίγαση συμμετέχοντα",
|
||||
"security": "Επιλογές ασφαλείας",
|
||||
"Settings": "Εναλλαγή ρυθμίσεων",
|
||||
"sharedvideo": "Εναλλαγή κοινής χρήσης βίντεο στο Youtube",
|
||||
"shareRoom": "Προσκαλέστε κάποιον",
|
||||
@@ -658,6 +717,8 @@
|
||||
"hangup": "Αποσύνδεση",
|
||||
"help": "Βοήθεια",
|
||||
"invite": "Πρόσκληση συμμετεχόντων",
|
||||
"lobbyButtonDisable": "Απενεργοποίηση λειτουργίας διαδρόμου",
|
||||
"lobbyButtonEnable": "Ενεργοποίηση λειτουργίας διαδρόμου",
|
||||
"login": "Είσοδος",
|
||||
"logout": "Αποσύνδεση",
|
||||
"lowerYourHand": "Κατεβάστε το χέρι σας",
|
||||
@@ -678,6 +739,7 @@
|
||||
"profile": "Επεξεργαστείτε το προφίλ σας",
|
||||
"raiseHand": "Σηκώστε / κατεβάστε το χέρι σας",
|
||||
"raiseYourHand": "Σηκώστε το χέρι σας",
|
||||
"security": "Επιλογές ασφαλείας",
|
||||
"Settings": "Ρυθμίσεις",
|
||||
"sharedvideo": "Μοιραστείτε βίντεο στο YouTube",
|
||||
"shareRoom": "Προσκαλέστε κάποιον",
|
||||
@@ -743,9 +805,6 @@
|
||||
"lowDefinition": "Χαμηλής ευκρίνειας",
|
||||
"onlyAudioAvailable": "Μόνο ο ήχος είναι διαθέσιμος",
|
||||
"onlyAudioSupported": "Υποστηρίζουμε μόνο ήχο σε αυτό το πρόγραμμα περιήγησης.",
|
||||
"p2pEnabled": "Λειτουργία Peer to Peer Ενεργοποιημένη",
|
||||
"p2pVideoQualityDescription": "Σε λειτουργία peer-to-peer, η ποιότητα του εισερχόμενου βίντεο μπορεί μόνο να εναλλάσσεται μεταξύ της υψηλής και μόνο ήχου. Οι υπόλοιπες ρυθμίσεις δεν θα ενεργοποιηθούν μέχρι να τερματιστεί η λειτουργία peer to peer.",
|
||||
"recHighDefinitionOnly": "Να προτιμηθεί υψηλή ευκρίνεια.",
|
||||
"sd": "SD",
|
||||
"sdTooltip": "Προβολή βίντεο τυπικής ανάλυσης",
|
||||
"standardDefinition": "Τυπική ανάλυση"
|
||||
@@ -800,32 +859,31 @@
|
||||
"helpView": {
|
||||
"header": "Κέντρο βοήθειας"
|
||||
},
|
||||
"prejoin": {
|
||||
"audioAndVideoError": "Σφάλμα ήχου και βίντεο:",
|
||||
"audioOnlyError": "Σφάλμα ήχου:",
|
||||
"audioTrackError": "Δεν ήταν δυνατό να δημιουργηθεί το κομμάτι ήχου.",
|
||||
"callMe": "Κάλεσέ με",
|
||||
"callMeAtNumber": "Κάλεσε με σε αυτό το νούμερο:",
|
||||
"configuringDevices": "Διαμόρφωση συσκευών",
|
||||
"connectedWithAudioQ": "Είστε συνδεδεμένοι με ήχο;",
|
||||
"copyAndShare": "Αντιγραφή & διαμοιρασμός συνδέσμου συνάντησης",
|
||||
"dialInMeeting": "Καλέστε στη συνάντηση",
|
||||
"dialInPin": "Καλέστε στη συνάντηση και εισάγετε κωδικό PIN:",
|
||||
"dialing": "Γίνεται κλήση",
|
||||
"doNotShow": "Να μην εμφανιστεί αυτό ξανά",
|
||||
"iWantToDialIn": "Θέλω να καλέσω",
|
||||
"joinAudioByPhone": "Σύνδεση με ήχο τηλεφώνου",
|
||||
"joinMeeting": "Σύνδεση στη συνάντηση",
|
||||
"joinWithoutAudio": "Σύνδεση χωρίς ήχο",
|
||||
"initiated": "Η κλήση ξεκίνησε",
|
||||
"linkCopied": "Ο σύνδεσμος αντιγράφηκε στο πρόχειρο",
|
||||
"lookGood": "Ακούγεται ότι το μικρόφωνό σας δουλεύει σωστά",
|
||||
"or": "ή",
|
||||
"calling": "Γίνεται κλήση...",
|
||||
"startWithPhone": "Έναρξη με ήχο τηλεφώνου",
|
||||
"screenSharingError": "Σφάλμα διαμοιρασμού οθόνης:",
|
||||
"videoOnlyError": "Σφάλμα βίντεο:",
|
||||
"videoTrackError": "Δεν μπορεί να δημιουργηθεί το βίντεο",
|
||||
"viewAllNumbers": "προβολή όλων των αριθμών"
|
||||
"lobby": {
|
||||
"allow": "Επίτρεψε",
|
||||
"backToKnockModeButton": "Χωρίς κωδικό, ζητήστε πρόσβαση αντί αυτού",
|
||||
"dialogTitle": "Λειτουργία διαδρόμου",
|
||||
"disableDialogContent": "Η λειτουργία διαδρόμου είναι ενεργοποιημένη. Αυτή η λειτουργία εξασφαλιζει ότι οι ανεπιθύμητοι συμμετέχοντες δεν μπορούν να προστεθούν στη συνάντηση. Θέλετε να την απαεργοποιήσετε;",
|
||||
"disableDialogSubmit": "Απενεργοποίηση",
|
||||
"emailField": "Εισάγετε τη διεύθυνση email σας",
|
||||
"enableDialogPasswordField": "Ορισμός κωδικού (προαιρετικός)",
|
||||
"enableDialogSubmit": "Ενεργοποίηση",
|
||||
"enableDialogText": "Η ενεργοποίηση λειτουργίας διαδρόμου σας επιτρέπει να προστατεύσετε τη συνάντηση σας, επιτρέποντας την είσοδο μόνο μετά από επίσημη έγκριση από έναν διαχειριστή.",
|
||||
"enterPasswordButton": "Εισαγωγή κωδικού συνάντησής",
|
||||
"enterPasswordTitle": "Εισάγετε κωδικό για να προστεθείτε στη συνομιλία",
|
||||
"invalidPassword": "Εσφαλμένος κωδικός",
|
||||
"joiningMessage": "Θα προστεθείτε στη συνάντηση μόλις κάποιος αποδεχτεί το αίτημά σας",
|
||||
"joinWithPasswordMessage": "Γίνεται προσπάθεια εισόδου με κωδικό, παρακαλώ περιμένετε...",
|
||||
"joinRejectedMessage": "Το αίτημα εισόδου σας απορρίφθηκε από έναν διαχειριστή.",
|
||||
"joinTitle": "Προσθήκη σε συνάντηση",
|
||||
"joiningTitle": "Γίνεται αίτηση εισόδου σε συνάντηση...",
|
||||
"joiningWithPasswordTitle": "Γίνεται είσοδος με κωδικό...",
|
||||
"knockButton": "Αίτημα εισόδου",
|
||||
"knockTitle": "Κάποιος θέλει να προστεθεί στη συνάντηση",
|
||||
"nameField": "Εισάγετε το όνομά σας",
|
||||
"passwordField": "Εισάγετε τον κωδικό συνάντησης",
|
||||
"passwordJoinButton": "Είσοδος",
|
||||
"reject": "Απόρριψη",
|
||||
"toggleLabel": "Ενεργοποίηση διαδρόμου"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -195,9 +195,7 @@
|
||||
"dismiss": "Descartar",
|
||||
"displayNameRequired": "¡Hola! ¿Cuál es tu nombre?",
|
||||
"done": "Listo",
|
||||
"e2eeDescription": "<p>El cifrado Extremo-a-Extremo es actualmente <strong>EXPERIMENTAL</strong>. Por favor lea<a href='https://jitsi.org/blog/e2ee/' target='_blank'>este artículo</a> para más detalles.</p><br/><p>Tenga en cuenta que activar el cifrado extremo-a-extremo puede deshabilitar servicios en el servidor como: grabación, transmisión en vivo y participación telefónica. Sin embargo tenga en cuenta que esta reunion solo funcionará con personas que se unan usando un navegador.</p>",
|
||||
"e2eeLabel": "Clave",
|
||||
"e2eeTitle": "Cifrado Extremo-a-Extremo",
|
||||
"e2eeDescription": "El cifrado Extremo-a-Extremo es actualmente EXPERIMENTAL. Tenga en cuenta que activar el cifrado extremo-a-extremo puede deshabilitar servicios en el servidor como: grabación, transmisión en vivo y participación telefónica. Sin embargo tenga en cuenta que esta reunion solo funcionará con personas que se unan usando un navegador.",
|
||||
"e2eeWarning": "ATENCION: No todos los participantes de esta reunión soportan cifrado Extremo-a-Extremo. Si usted habilita el cifrado ellos no podrán verlo ni oirlo.",
|
||||
"enterDisplayName": "Por favor ingresa tu nombre aquí",
|
||||
"error": "Error",
|
||||
@@ -582,7 +580,7 @@
|
||||
},
|
||||
"security": {
|
||||
"about": "Usted puede agregar una contraseña a la reunión. Los participantes necesitaran la contraseña para unirse a la reunión.",
|
||||
"insecureRoomNameWarning": "El nombre de la sala es inseguro. Participantes no desseados pueden llegar a 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"
|
||||
},
|
||||
"settings": {
|
||||
|
||||
@@ -194,9 +194,7 @@
|
||||
"dismiss": "Descartar",
|
||||
"displayNameRequired": "¡Hola! ¿Cuál es tu nombre?",
|
||||
"done": "Listo",
|
||||
"e2eeDescription": "<p>El cifrado Extremo-a-Extremo es actualmente <strong>EXPERIMENTAL</strong>. Por favor lea<a href='https://jitsi.org/blog/e2ee/' target='_blank'>este artículo</a> para más detalles.</p><br/><p>Tenga en cuenta que activar el cifrado extremo-a-extremo puede deshabilitar servicios en el servidor como: grabación, transmisión en vivo y participación telefónica. Sin embargo tenga en cuenta que esta reunion solo funcionará con personas que se unan usando un navegador.</p>",
|
||||
"e2eeLabel": "Clave",
|
||||
"e2eeTitle": "Cifrado Extremo-a-Exremo",
|
||||
"e2eeDescription": "El cifrado Extremo-a-Extremo es actualmente EXPERIMENTAL. Tenga en cuenta que activar el cifrado extremo-a-extremo puede deshabilitar servicios en el servidor como: grabación, transmisión en vivo y participación telefónica. Sin embargo tenga en cuenta que esta reunion solo funcionará con personas que se unan usando un navegador.",
|
||||
"e2eeWarning": "ATENCION: No todos los participantes de esta reunión soportan cifrado Extremo-a-Extremo. Si usted habilita el cifrado ellos no podrán verlo ni oirlo.",
|
||||
"enterDisplayName": "Por favor ingresa tu nombre aquí",
|
||||
"error": "Error",
|
||||
@@ -580,7 +578,7 @@
|
||||
},
|
||||
"security": {
|
||||
"about": "Usted puede agregar una contraseña a la reunión. Los participantes necesitaran la contraseña para unirse a la reunión.",
|
||||
"insecureRoomNameWarning": "El nombre de la sala es inseguro. Participantes no desseados pueden llegar a 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"
|
||||
},
|
||||
"settings": {
|
||||
|
||||
@@ -175,9 +175,6 @@
|
||||
"dismiss": "Baztertu",
|
||||
"displayNameRequired": "Kaixo! Zein da zure izena?",
|
||||
"done": "Eginda",
|
||||
"e2eeDescription": "",
|
||||
"e2eeLabel": "",
|
||||
"e2eeTitle": "",
|
||||
"e2eeWarning": "",
|
||||
"enterDisplayName": "Sartu zure izena hemen",
|
||||
"error": "Errorea",
|
||||
|
||||
@@ -1,21 +1,36 @@
|
||||
{
|
||||
"addPeople": {
|
||||
"add": "Inviter",
|
||||
"addContacts": "Inviter vos contacts",
|
||||
"copyInvite": "Copier l'invitation à la réunion",
|
||||
"copyLink": "Copier le lien de la réunion",
|
||||
"copyStream": "Copier le lien de diffusion en direct",
|
||||
"countryNotSupported": "Cette destination n'est pas actuellement supportée.",
|
||||
"countryReminder": "Appel hors des États-Unis ? Veuillez débuter par le code du pays !",
|
||||
"defaultEmail": "Votre email par défaut",
|
||||
"disabled": "Vous ne pouvez pas inviter quelqu'un.",
|
||||
"failedToAdd": "Erreur lors de l'ajout des participants",
|
||||
"footerText": "Appels sortants désactivés.",
|
||||
"googleEmail": "Gmail",
|
||||
"inviteMoreHeader": "Vous êtes seul(e) dans la réunion",
|
||||
"inviteMoreMailSubject": "Rejoindre une réunion {{appName}}",
|
||||
"inviteMorePrompt": "Inviter d'autres personnes",
|
||||
"linkCopied": "Lien copié dans le presse-papiers",
|
||||
"loading": "Rechercher des personnes et des numéros de téléphone",
|
||||
"loadingNumber": "Validation du numéro de téléphone",
|
||||
"loadingPeople": "Recherche de personnes à inviter",
|
||||
"noResults": "Aucun résultat de recherche correspondant",
|
||||
"noValidNumbers": "Veuillez entrer un numéro de téléphone",
|
||||
"outlookEmail": "Outlook",
|
||||
"searchNumbers": "Ajouter des numéros de téléphone",
|
||||
"searchPeople": "Rechercher une personne",
|
||||
"searchPeopleAndNumbers": "Rechercher des personnes ou ajouter leurs numéros de téléphone",
|
||||
"shareInvite": "Partager l'invitation à la réunion",
|
||||
"shareLink": "Partager le lien de la réunion pour inviter d'autres personnes",
|
||||
"shareStream": "Partager le lien de diffusion en direct",
|
||||
"telephone": "Téléphone : {{number}}",
|
||||
"title": "Inviter une personne à cette réunion"
|
||||
"title": "Inviter une personne à cette réunion",
|
||||
"yahooEmail": "Yahoo"
|
||||
},
|
||||
"audioDevices": {
|
||||
"bluetooth": "Bluetooth",
|
||||
@@ -81,7 +96,7 @@
|
||||
"FETCH_SESSION_ID": "Obtention d’un identifiant de session…",
|
||||
"GET_SESSION_ID_ERROR": "Obtenir une erreur d’identifiant de session : {{code}}",
|
||||
"GOT_SESSION_ID": "Obtention d’un identifiant de session… Terminée",
|
||||
"LOW_BANDWIDTH": "La vidéo de {{displayName}} a été désactivée pour économiser de la ba de passante"
|
||||
"LOW_BANDWIDTH": "La vidéo de {{displayName}} a été désactivée pour économiser de la bande passante"
|
||||
},
|
||||
"connectionindicator": {
|
||||
"address": "Adresse :",
|
||||
@@ -147,6 +162,7 @@
|
||||
"accessibilityLabel": {
|
||||
"liveStreaming": "Diffusion en direct"
|
||||
},
|
||||
"add": "Ajouter",
|
||||
"allow": "Autoriser",
|
||||
"alreadySharedVideoMsg": "Un autre participant est en train de partager sa vidéo. Cette conférence ne permet de partager qu'une seule vidéo à la fois.",
|
||||
"alreadySharedVideoTitle": "Une seule vidéo partagée est autorisée à la fois",
|
||||
@@ -174,10 +190,12 @@
|
||||
"contactSupport": "Contacter le support",
|
||||
"copy": "Copier",
|
||||
"dismiss": "Rejeter",
|
||||
"displayNameRequired": "Salut! Quel est votre nom ?",
|
||||
"displayNameRequired": "Bonjour! Quel est votre nom ?",
|
||||
"done": "Terminé",
|
||||
"enterDisplayName": "Merci de saisir votre nom ici",
|
||||
"error": "Erreur",
|
||||
"grantModeratorDialog": "Êtes-vous sûr de vouloir rendre ce participant modérateur?",
|
||||
"grantModeratorTitle": "Nommer modérateur",
|
||||
"externalInstallationMsg": "Vous devez installer notre extension de partage de bureau.",
|
||||
"externalInstallationTitle": "Extension requise",
|
||||
"goToStore": "Aller sur le webstore",
|
||||
@@ -212,7 +230,7 @@
|
||||
"micUnknownError": "Vous ne pouvez pas utiliser le microphone pour une raison inconnue.",
|
||||
"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": "Etes-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.",
|
||||
"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.",
|
||||
"muteEveryoneTitle": "Couper le micro de tout le monde ?",
|
||||
"muteEveryoneSelf": "vous",
|
||||
"muteEveryoneStartMuted": "Tout le monde démarre avec le micro coupé",
|
||||
@@ -468,6 +486,40 @@
|
||||
"passwordSetRemotely": "défini par un autre participant",
|
||||
"passwordDigitsOnly": "Jusqu'à {{number}} chiffres",
|
||||
"poweredby": "produit par",
|
||||
"prejoin": {
|
||||
"audioAndVideoError": "Erreur audio et video:",
|
||||
"audioOnlyError": "Erreur audio:",
|
||||
"audioTrackError": "N'a pas pu créer la piste audio.",
|
||||
"callMe": "Appelez-moi",
|
||||
"callMeAtNumber": "Appelez-moi à ce numéro:",
|
||||
"configuringDevices": "Configuration des appareils...",
|
||||
"connectedWithAudioQ": "Êtes-vous connecté avec le microphone?",
|
||||
"copyAndShare": "Copier & partager le lien",
|
||||
"dialInMeeting": "Participez à la réunion",
|
||||
"dialInPin": "Participez à la réunion et saisir le code PIN:",
|
||||
"dialing": "Numérotation",
|
||||
"doNotShow": "Ne plus afficher ceci",
|
||||
"errorDialOut": "Impossible de composer le numéro",
|
||||
"errorDialOutDisconnected": "Impossible de composer le numéro. Déconnecté",
|
||||
"errorDialOutFailed": "Impossible de composer le numéro. L'appel a échoué",
|
||||
"errorDialOutStatus": "Erreur lors de l'obtention de l'état d'appel sortant",
|
||||
"errorStatusCode": "Erreur de numérotation, code d'état: {{status}}",
|
||||
"errorValidation": "La validation du numéro a échoué",
|
||||
"iWantToDialIn": "Je veux me connecter",
|
||||
"joinAudioByPhone": "Rejoindre avec l'audio du téléphone",
|
||||
"joinMeeting": "Rejoindre la réunion",
|
||||
"joinWithoutAudio": "Rejoignez sans microphone",
|
||||
"initiated": "Appel lancé",
|
||||
"linkCopied": "Lien copié dans le presse-papiers",
|
||||
"lookGood": "Il semble que votre microphone fonctionne correctement",
|
||||
"or": "ou",
|
||||
"calling": "Appel",
|
||||
"startWithPhone": "Commencez avec l'audio du téléphone",
|
||||
"screenSharingError": "Erreur de partage d'écran:",
|
||||
"videoOnlyError": "Erreur vidéo:",
|
||||
"videoTrackError": "Impossible de créer une piste vidéo.",
|
||||
"viewAllNumbers": "voir tous les numéros"
|
||||
},
|
||||
"presenceStatus": {
|
||||
"busy": "Occupé",
|
||||
"calling": "Appel...",
|
||||
@@ -645,6 +697,8 @@
|
||||
"hangup": "Quitter",
|
||||
"help": "Aide",
|
||||
"invite": "Inviter des participants",
|
||||
"lobbyButtonDisable": "Désactiver le contrôle des participant·e·s",
|
||||
"lobbyButtonEnable": "Activer le contrôle des participant·e·s",
|
||||
"login": "Connexion",
|
||||
"logout": "Déconnexion",
|
||||
"lowerYourHand": "Baisser la main",
|
||||
@@ -738,6 +792,7 @@
|
||||
"domute": "Couper le micro",
|
||||
"domuteOthers": "Couper le micro de tous les autres",
|
||||
"flip": "Balancer",
|
||||
"grantModerator": "Nommer modérateur",
|
||||
"kick": "Exclure",
|
||||
"moderator": "Modérateur",
|
||||
"mute": "Un participant a coupé son micro",
|
||||
@@ -783,5 +838,39 @@
|
||||
},
|
||||
"helpView": {
|
||||
"header": "Centre d'aide"
|
||||
},
|
||||
"lobby": {
|
||||
"knockingParticipantList" : "Liste des participants en attente",
|
||||
"allow": "Autoriser",
|
||||
"backToKnockModeButton": "Aucun mot de passe, demander à rejoindre plutôt",
|
||||
"dialogTitle": "Mode lobby",
|
||||
"disableDialogContent": "Le mode lobby est actuellement activé. Cette fonctionnalité garantit que les participants indésirables ne peuvent pas rejoindre votre réunion. Souhaitez-vous la désactiver?",
|
||||
"disableDialogSubmit": "Désactiver",
|
||||
"emailField": "Saisissez votre adresse email",
|
||||
"enableDialogPasswordField": "Définir le mot de passe (optionel)",
|
||||
"enableDialogSubmit": "Activer",
|
||||
"enableDialogText": "Le mode lobby 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",
|
||||
"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...",
|
||||
"joinRejectedMessage": "Votre requête pour rejoindre une réunion a été refusée par un modérateur.",
|
||||
"joinTitle": "Rejoindre une réunion",
|
||||
"joiningTitle": "Demander à rejoindre une réunion...",
|
||||
"joiningWithPasswordTitle": "Rejoindre avec mot de passe...",
|
||||
"knockButton": "Demander à rejoindre",
|
||||
"knockTitle": "Quelqu'un souhaite rejoindre la réunion",
|
||||
"nameField": "Saisissez votre nom",
|
||||
"passwordField": "Saisissez le mot de passe de la réunion",
|
||||
"passwordJoinButton": "Rejoindre",
|
||||
"reject": "Refuser",
|
||||
"toggleLabel": "Activer le lobby"
|
||||
},
|
||||
"security": {
|
||||
"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é"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -290,9 +290,9 @@
|
||||
"inviteLiveStream": "この会議のライブストリームを表示するには、このリンクをクリックしてください:{{url}}",
|
||||
"invitePhone": "",
|
||||
"invitePhoneAlternatives": "",
|
||||
"inviteURLFirstPartGeneral": "",
|
||||
"inviteURLFirstPartPersonal": "",
|
||||
"inviteURLSecondPart": "",
|
||||
"inviteURLFirstPartGeneral": "あなたはミーティングに招待されました。",
|
||||
"inviteURLFirstPartPersonal": "{{name}} があなたをミーティングに招待しました。\n",
|
||||
"inviteURLSecondPart": "\nミーティングにご参加ください:\n{{url}}\n",
|
||||
"liveStreamURL": "ライブストリーム:",
|
||||
"moreNumbers": "その他の番号",
|
||||
"noNumbers": "ダイヤルイン番号はありません。",
|
||||
@@ -325,7 +325,7 @@
|
||||
"keyboardShortcuts": "キーボードショートカット",
|
||||
"localRecording": "ローカル録画コントロールの表示/非表示",
|
||||
"mute": "マイクの消音 ( ミュート )",
|
||||
"pushToTalk": "話すために押す",
|
||||
"pushToTalk": "プッシュ・トゥ・トーク",
|
||||
"raiseHand": "手を上げる/下げる",
|
||||
"showSpeakerStats": "演説者のデータを表示",
|
||||
"toggleChat": "チャットを表示/非表示",
|
||||
@@ -566,7 +566,7 @@
|
||||
"shortcuts": "ショートカットに切り替える",
|
||||
"show": "",
|
||||
"speakerStats": "スピーカー統計に切り替える",
|
||||
"tileView": "",
|
||||
"tileView": "タイルビュー",
|
||||
"toggleCamera": "カメラを切り替える",
|
||||
"videomute": "ミュートビデオに切り替える",
|
||||
"videoblur": ""
|
||||
@@ -582,9 +582,9 @@
|
||||
"documentClose": "共有ドキュメントを閉じる",
|
||||
"documentOpen": "共有ドキュメントを開く",
|
||||
"enterFullScreen": "フルスクリーン表示",
|
||||
"enterTileView": "タイトルビューを開始",
|
||||
"enterTileView": "タイルビューを開始",
|
||||
"exitFullScreen": "フルスクリーンを終了",
|
||||
"exitTileView": "タイトルビューを終了",
|
||||
"exitTileView": "タイルビューを終了",
|
||||
"feedback": "フィードバックを残す",
|
||||
"hangup": "退出",
|
||||
"invite": "メンバーを招待する",
|
||||
@@ -609,7 +609,7 @@
|
||||
"stopSubtitles": "字幕停止",
|
||||
"stopSharedVideo": "YouTube動画を停止する",
|
||||
"talkWhileMutedPopup": "話そうとしていますか? あなたはミュートされています。",
|
||||
"tileViewToggle": "",
|
||||
"tileViewToggle": "タイルビューを切り替え",
|
||||
"toggleCamera": "カメラを切り替える",
|
||||
"videomute": "カメラの開始 / 停止",
|
||||
"startvideoblur": "",
|
||||
|
||||
1184
lang/main-kab.json
1184
lang/main-kab.json
File diff suppressed because it is too large
Load Diff
@@ -1,60 +1,86 @@
|
||||
{
|
||||
"addPeople": {
|
||||
"add": "초대",
|
||||
"countryNotSupported": "아직 해당 지역을 지원하지 않습니다",
|
||||
"addContacts": "연락처로 초대하세요",
|
||||
"copyInvite": "호의 초대 복사",
|
||||
"copyLink": "회의 링크 복사",
|
||||
"copyStream": "라이브 스트리밍 링크 복사",
|
||||
"countryNotSupported": "아직 해당 지역을 지원하지 않습니다.",
|
||||
"countryReminder": "미국 이외의 지역으로 전화하시겠습니까? 국가 번호로 시작해야합니다!",
|
||||
"disabled": "사람들을 초대 할 수 없습니다",
|
||||
"failedToAdd": "",
|
||||
"footerText": "",
|
||||
"defaultEmail": "기본 이메일",
|
||||
"disabled": "사람들을 초대 할 수 없습니다.",
|
||||
"failedToAdd": "참가자를 추가하지 못했습니다.",
|
||||
"footerText": "전화 걸기가 비활성화되었습니다.",
|
||||
"googleEmail": "Google 이메일",
|
||||
"inviteMoreHeader": "회의에 혼자 참여하고 있습니다.",
|
||||
"inviteMoreMailSubject": "{{appName}} 회의에 참여하세요",
|
||||
"inviteMorePrompt": "더 많은 사람을 초대하세요",
|
||||
"linkCopied": "링크가 클립보드에 복사되었습니다.",
|
||||
"loading": "사람 및 전화번호 검색",
|
||||
"loadingNumber": "전화번호 확인 중",
|
||||
"loadingPeople": "초대할 사람 찾기",
|
||||
"noResults": "일치하는 검색 결과 없음",
|
||||
"noValidNumbers": "전화 번호를 입력하십시오.",
|
||||
"outlookEmail": "Outlook 이메일",
|
||||
"searchNumbers": "전화번호 추가",
|
||||
"searchPeople": "인명 검색",
|
||||
"searchPeopleAndNumbers": "인명 검색 또는 전화번호 추가",
|
||||
"shareInvite": "회의 초대 공유",
|
||||
"shareLink": "다른 사람을 초대하려면 회의 링크를 공유하세요.",
|
||||
"shareStream": "라이브 스트리밍 링크 공유",
|
||||
"telephone": "전화: {{number}}",
|
||||
"title": "이 회의에 사람들을 초대하십시오"
|
||||
"title": "이 회의에 사람들을 초대하십시오",
|
||||
"yahooEmail": "Yahoo 이메일"
|
||||
},
|
||||
"audioDevices": {
|
||||
"bluetooth": "블루투스",
|
||||
"headphones": "헤드폰",
|
||||
"phone": "폰",
|
||||
"speaker": "스피커"
|
||||
"speaker": "스피커",
|
||||
"none": "사용 가능한 오디오 장치가 없습니다."
|
||||
},
|
||||
"audioOnly": {
|
||||
"audioOnly": "음성 전용"
|
||||
},
|
||||
"calendarSync": {
|
||||
"addMeetingURL": "",
|
||||
"confirmAddLink": "",
|
||||
"addMeetingURL": "회의 링크 추가",
|
||||
"confirmAddLink": "이 이벤트에 Jitsi 링크를 추가 하시겠습니까?",
|
||||
"error": {
|
||||
"appConfiguration": "",
|
||||
"generic": "",
|
||||
"notSignedIn": ""
|
||||
"appConfiguration": "캘린더가 제대로 구성되지 않았습니다.",
|
||||
"generic": "오류가 발생했습니다. 캘린더 설정을 확인하거나 캘린더를 새로 고침 해보세요.",
|
||||
"notSignedIn": "캘린더 이벤트를 보기 위해 인증하는 동안 오류가 발생했습니다. 캘린더 설정을 확인하고 다시 로그인하십시오."
|
||||
},
|
||||
"join": "",
|
||||
"joinTooltip": "",
|
||||
"join": "참여",
|
||||
"joinTooltip": "회의에 참여하세요",
|
||||
"nextMeeting": "다음 회의",
|
||||
"noEvents": "",
|
||||
"ongoingMeeting": "",
|
||||
"noEvents": "예정된 예정된 이벤트가 없습니다.",
|
||||
"ongoingMeeting": "진행중인 회의",
|
||||
"permissionButton": "설정 열기",
|
||||
"permissionMessage": "앱에 회의를 나열하려면 캘린더 권한이 필요합니다",
|
||||
"refresh": "",
|
||||
"today": ""
|
||||
"refresh": "달력 새로고침",
|
||||
"today": "오늘"
|
||||
},
|
||||
"chat": {
|
||||
"error": "",
|
||||
"messagebox": "",
|
||||
"error": "오류 : 메시지가 전송되지 않았습니다. 이유 : {{error}}",
|
||||
"fieldPlaceHolder": "메세지를 여기에 입력하세요",
|
||||
"messagebox": "메시지 입력",
|
||||
"messageTo": "{{recipient}}에게 보내는 비공개 메시지",
|
||||
"noMessagesMessage": "아직 회의에 메시지가 없습니다. 여기서 대화를 시작하세요!",
|
||||
"nickname": {
|
||||
"popover": "닉네임을 선택하세요",
|
||||
"title": ""
|
||||
"title": "채팅에서 사용할 닉네임을 입력하세요"
|
||||
},
|
||||
"title": ""
|
||||
"privateNotice": "{{recipient}}에게 보내는 비공개 메시지",
|
||||
"title": "채팅",
|
||||
"you": "당신"
|
||||
},
|
||||
"chromeExtensionBanner": {
|
||||
"installExtensionText": "Google 캘린더 및 Office 365 확장 프로그램을 설치합니다.",
|
||||
"buttonText": "Chrome 확장 프로그램을 설치합니다.",
|
||||
"dontShowAgain": "다시 보지 않기"
|
||||
},
|
||||
"connectingOverlay": {
|
||||
"joiningRoom": ""
|
||||
"joiningRoom": "회의에 연결 중 ..."
|
||||
},
|
||||
"connection": {
|
||||
"ATTACHED": "첨부",
|
||||
@@ -66,7 +92,10 @@
|
||||
"DISCONNECTED": "연결 끊김",
|
||||
"DISCONNECTING": "연결 종료 중",
|
||||
"ERROR": "에러",
|
||||
"RECONNECTING": "네트워크 문제가 발생했습니다. 다시 연결 중..."
|
||||
"RECONNECTING": "네트워크 문제가 발생했습니다. 다시 연결 중...",
|
||||
"GET_SESSION_ID_ERROR": "세션 ID 가져 오기 오류 : {{code}}",
|
||||
"GOT_SESSION_ID": "세션 ID를 가져 오는 중 ... 완료",
|
||||
"LOW_BANDWIDTH": "대역폭을 절약하기 위해 {{displayName}}의 동영상이 중지되었습니다."
|
||||
},
|
||||
"connectionindicator": {
|
||||
"address": "주소:",
|
||||
@@ -95,15 +124,18 @@
|
||||
"turn": " (turn)"
|
||||
},
|
||||
"dateUtils": {
|
||||
"earlier": "",
|
||||
"today": "",
|
||||
"yesterday": ""
|
||||
"earlier": "일찍이",
|
||||
"today": "오늘",
|
||||
"yesterday": "어제"
|
||||
},
|
||||
"deepLinking": {
|
||||
"appNotInstalled": "중계 서비스에 참여하려면 모바일 앱 설치가 필요합니다",
|
||||
"appNotInstalled": "회의에 참여하려면 모바일 앱 설치가 필요합니다",
|
||||
"description": "{{app}} 데스크톱 앱에서 회의를 시작했습니다. {{app}} 웹 응용 프로그램에서 다시 시도하거나 실행하십시오.",
|
||||
"descriptionWithoutWeb": "",
|
||||
"downloadApp": "앱 다운로드",
|
||||
"ifDoNotHaveApp": "앱이 설치되지 않은 경우:",
|
||||
"ifHaveApp": "앱이 설치되어 있는 경우:",
|
||||
"joinInApp": "앱을 사용하여 회의에 참여하세요.",
|
||||
"launchWebButton": "웹에서 실행",
|
||||
"openApp": "방으로 이동하기",
|
||||
"title": "{{app}}에서 회의 시작…",
|
||||
@@ -126,8 +158,9 @@
|
||||
"accessibilityLabel": {
|
||||
"liveStreaming": "실시간 스트리밍:"
|
||||
},
|
||||
"add": "추가",
|
||||
"allow": "허락",
|
||||
"alreadySharedVideoMsg": "",
|
||||
"alreadySharedVideoMsg": "다른 참가자가 이미 비디오를 공유하고 있습니다. 이 회의는 한 번에 하나의 공유 비디오 만 허용합니다.",
|
||||
"alreadySharedVideoTitle": "한 번에 하나의 공유 비디오 만 허용됩니다",
|
||||
"applicationWindow": "응용 프로그램 창",
|
||||
"Back": "뒤로가기",
|
||||
@@ -145,64 +178,64 @@
|
||||
"conferenceReloadMsg": "문제를 해결하려고 노력하고 있습니다. {{seconds}} 초 안에 다시 연결중입니다.",
|
||||
"conferenceReloadTitle": "불행하게도 문제가 발생했습니다",
|
||||
"confirm": "확인",
|
||||
"confirmNo": "",
|
||||
"confirmYes": "",
|
||||
"confirmNo": "아니요",
|
||||
"confirmYes": "예",
|
||||
"connectError": "죄송합니다. 문제가 발생하여 회의에 연결할 수 없습니다",
|
||||
"connectErrorWithMsg": "죄송합니다. 뭔가 잘못되어 회의에 연결할 수 없습니다: {{msg}}",
|
||||
"connecting": "연결 중",
|
||||
"contactSupport": "지원 연락처",
|
||||
"copy": "복사",
|
||||
"dismiss": "",
|
||||
"displayNameRequired": "",
|
||||
"displayNameRequired": "당신의 이름은 무엇입니까?",
|
||||
"done": "완료",
|
||||
"enterDisplayName": "",
|
||||
"enterDisplayName": "당신의 이름을 입력해주세요.",
|
||||
"error": "에러",
|
||||
"externalInstallationMsg": "데스크톱 공유 확장 프로그램을 설치해야합니다",
|
||||
"externalInstallationTitle": "확장 프로그램이 필요합니다",
|
||||
"goToStore": "웹 스토어로 이동",
|
||||
"gracefulShutdown": "서비스는 현재 유지 관리를 위해 중단되었습니다. 나중에 다시 시도 해주십시오.",
|
||||
"IamHost": "내가 호스트",
|
||||
"incorrectRoomLockPassword": "",
|
||||
"incorrectRoomLockPassword": "잘못된 비밀번호",
|
||||
"incorrectPassword": "잘못된 사용자 이름 또는 비밀번호",
|
||||
"inlineInstallationMsg": "데스크톱 공유 확장 프로그램을 설치해야합니다",
|
||||
"inlineInstallExtension": "지금 설치",
|
||||
"internalError": "죄송합니다. 뭔가 잘못 됐습니다. 다음 오류가 발생했습니다: {{error}}",
|
||||
"internalErrorTitle": "내부 에러",
|
||||
"kickMessage": "",
|
||||
"kickParticipantButton": "",
|
||||
"kickParticipantDialog": "",
|
||||
"kickParticipantTitle": "",
|
||||
"kickTitle": "",
|
||||
"kickMessage": "자세한 내용은 {{participantDisplayName}}에 문의하세요.",
|
||||
"kickParticipantButton": "추방",
|
||||
"kickParticipantDialog": "이 참가자를 정말 추방 하시겠습니까?",
|
||||
"kickParticipantTitle": "이 참가자를 추방 하시겠습니까?",
|
||||
"kickTitle": "{{participantDisplayName}} 님이 회의에서 퇴장했습니다.",
|
||||
"liveStreaming": "실시간 스트리밍",
|
||||
"liveStreamingDisabledForGuestTooltip": "",
|
||||
"liveStreamingDisabledTooltip": "",
|
||||
"liveStreamingDisabledForGuestTooltip": "게스트는 라이브 스트리밍을 시작할 수 없습니다.",
|
||||
"liveStreamingDisabledTooltip": "라이브 스트림 시작이 비활성화되었습니다.",
|
||||
"lockMessage": "회의를 비공개하지 못했습니다",
|
||||
"lockRoom": "",
|
||||
"lockRoom": "회의 추가 $t(lockRoomPasswordUppercase)",
|
||||
"lockTitle": "비공개 실패",
|
||||
"logoutQuestion": "로그 아웃하고 컨퍼런스를 중지하시겠습니까?",
|
||||
"logoutTitle": "로그아웃",
|
||||
"maxUsersLimitReached": "",
|
||||
"maxUsersLimitReachedTitle": "",
|
||||
"maxUsersLimitReached": "회의의 최대 참가자 수에 도달했습니다. 회의 소유자에게 연락하거나 나중에 다시 시도하십시오!",
|
||||
"maxUsersLimitReachedTitle": "최대 참가자 수에 도달했습니다.",
|
||||
"micConstraintFailedError": "마이크가 필요한 제약 조건 중 일부를 충족하지 못합니다",
|
||||
"micNotFoundError": "마이크를 찾을 수 없습니다",
|
||||
"micNotSendingData": "",
|
||||
"micNotSendingDataTitle": "",
|
||||
"micNotSendingData": "컴퓨터의 설정으로 이동하여 마이크 음소거를 해제하고 레벨을 조정하세요.",
|
||||
"micNotSendingDataTitle": "시스템 설정에 의해 마이크가 음소거되었습니다.",
|
||||
"micPermissionDeniedError": "마이크를 사용할 수있는 권한을 부여하지 않았습니다. 회의에 계속 참여할 수는 있지만 다른 사람들은 듣지 않습니다. 검색 주소창의 카메라 버튼을 사용하여 문제를 해결하십시오.",
|
||||
"micUnknownError": "알 수 없는 이유로 마이크를 사용할 수 없습니다",
|
||||
"muteParticipantBody": "당신이 다른 사람들의 음소거를 해제 할 수는 없지만 언제든지 다른 사람들은 스스로 음소거를 해제할 수 있습니다.",
|
||||
"muteParticipantButton": "음소거",
|
||||
"muteParticipantDialog": "",
|
||||
"muteParticipantTitle": "",
|
||||
"muteParticipantTitle": "이 참가자를 음소거 하시겠습니까?",
|
||||
"Ok": "확인",
|
||||
"passwordLabel": "",
|
||||
"passwordNotSupported": "미팅 비밀번호 설정은 지원되지 않습니다",
|
||||
"passwordNotSupportedTitle": "",
|
||||
"passwordRequired": "",
|
||||
"passwordLabel": "잠긴 회의 입니다. 회의에 참여하려면 비밀번호를 입력하세요.",
|
||||
"passwordNotSupported": "회의 비밀번호 설정은 지원되지 않습니다",
|
||||
"passwordNotSupportedTitle": "비밀번호 미지원",
|
||||
"passwordRequired": "비밀번호 필수",
|
||||
"popupError": "브라우저가이 사이트의 팝업 창을 차단하고 있습니다. 브라우저의 보안 설정에서 팝업을 활성화하고 다시 시도하십시오.",
|
||||
"popupErrorTitle": "팝업 차단됨",
|
||||
"recording": "레코딩",
|
||||
"recordingDisabledForGuestTooltip": "",
|
||||
"recordingDisabledTooltip": "",
|
||||
"recordingDisabledForGuestTooltip": "게스트는 녹음을 시작할 수 없습니다.",
|
||||
"recordingDisabledTooltip": "녹화이 비활성화 되었습니다.",
|
||||
"rejoinNow": "지금 재가입",
|
||||
"remoteControlAllowedMessage": "{{user}}이(가) 원격 제어 요청을 수락했습니다",
|
||||
"remoteControlDeniedMessage": "{{user}}이(가) 원격 제어 요청을 거부했습니다",
|
||||
@@ -212,25 +245,30 @@
|
||||
"remoteControlStopMessage": "원격 제어 세션이 종료되었습니다",
|
||||
"remoteControlTitle": "원격 데스크탑 컨트롤",
|
||||
"Remove": "제거",
|
||||
"removePassword": "",
|
||||
"removePassword": "비밀번호 제거",
|
||||
"removeSharedVideoMsg": "공유한 동영상을 삭제하시겠습니까?",
|
||||
"removeSharedVideoTitle": "공유된 동영상 삭제",
|
||||
"reservationError": "예약 시스템 오류",
|
||||
"reservationErrorMsg": "오류 코드: {{code}}, 메시지: {{msg}}",
|
||||
"retry": "재시도",
|
||||
"screenSharingAudio": "오디오 공유",
|
||||
"screenSharingFailedToInstall": "죄송합니다. 화면 공유 확장 프로그램을 설치하지 못했습니다.",
|
||||
"screenSharingFailedToInstallTitle": "화면 공유 확장 프로그램을 설치하지 못했습니다",
|
||||
"screenSharingFirefoxPermissionDeniedError": "화면을 공유하는 동안 문제가 발생했습니다. 그렇게 할 수 있는 권한을 부여했는지 확인하십시오.",
|
||||
"screenSharingFirefoxPermissionDeniedTitle": "죄송합니다. 화면 공유를 시작할 수 없었습니다!",
|
||||
"screenSharingPermissionDeniedError": "죄송합니다. 화면 공유 확장 권한으로 문제가 발생했습니다. 다시 로드하고 재시도하십시오.",
|
||||
"sendPrivateMessage": "최근에 비공개 메시지를 받았습니다. 비공개로 답장을 보내시겠습니까, 아니면 그룹에 메시지를 보내시겠습니까?",
|
||||
"sendPrivateMessageCancel": "그룹에 보내기",
|
||||
"sendPrivateMessageOk": "비공개로 보내기",
|
||||
"sendPrivateMessageTitle": "비공개로 보낼까요?",
|
||||
"serviceUnavailable": "서비스를 사용할 수 없음",
|
||||
"sessTerminated": "통화 종료",
|
||||
"Share": "공유",
|
||||
"shareVideoLinkError": "올바른 YouTube 링크를 제공하십시오",
|
||||
"shareVideoTitle": "비디오 공유",
|
||||
"shareYourScreen": "화면공유",
|
||||
"shareYourScreenDisabled": "",
|
||||
"shareYourScreenDisabledForGuest": "",
|
||||
"shareYourScreenDisabled": "화면 공유가 비활성화 되었습니다.",
|
||||
"shareYourScreenDisabledForGuest": "게스트는 화면을 공유 할 수 없습니다.",
|
||||
"startLiveStreaming": "라이브 스트리밍 시작",
|
||||
"startRecording": "레코딩 시작",
|
||||
"startRemoteControlErrorMessage": "원격 제어 세션을 시작하는 동안 오류가 발생했습니다",
|
||||
@@ -245,17 +283,20 @@
|
||||
"tokenAuthFailed": "죄송합니다. 통화에 참여하실 수 없습니다.",
|
||||
"tokenAuthFailedTitle": "인증 실패",
|
||||
"transcribing": "",
|
||||
"unlockRoom": "",
|
||||
"unlockRoom": "회의 비밀번호 제거",
|
||||
"userPassword": "사용자 비밀번호",
|
||||
"WaitForHostMsg": "",
|
||||
"WaitForHostMsgWOk": "",
|
||||
"WaitForHostMsg": "<b>{{room}}</b> 회의가 시작되지 않았습니다. 호스트 인 경우 인증하십시오. 그렇지 않으면 호스트가 도착할 때까지 기다리십시오.",
|
||||
"WaitForHostMsgWOk": "<b>{{room}}</b> 회의가 아직 시작되지 않았습니다. 호스트 인 경우 확인을 눌러 인증하십시오. 그렇지 않으면 호스트가 도착할 때까지 기다리십시오.",
|
||||
"WaitingForHost": "호스트를 기다리는 중입니다…",
|
||||
"Yes": "",
|
||||
"Yes": "예",
|
||||
"yourEntireScreen": "전체 화면"
|
||||
},
|
||||
"dialOut": {
|
||||
"statusMessage": "지금은 {{status}}입니다"
|
||||
},
|
||||
"documentSharing": {
|
||||
"title": "문서 공유"
|
||||
},
|
||||
"feedback": {
|
||||
"average": "보통",
|
||||
"bad": "나쁨",
|
||||
@@ -266,49 +307,49 @@
|
||||
"veryGood": "매우 좋음"
|
||||
},
|
||||
"incomingCall": {
|
||||
"answer": "",
|
||||
"audioCallTitle": "",
|
||||
"decline": "",
|
||||
"productLabel": "",
|
||||
"videoCallTitle": ""
|
||||
"answer": "응답",
|
||||
"audioCallTitle": "수신 전화",
|
||||
"decline": "거절",
|
||||
"productLabel": "Jitsi Meet에서",
|
||||
"videoCallTitle": "수신 화상 전화"
|
||||
},
|
||||
"info": {
|
||||
"accessibilityLabel": "",
|
||||
"addPassword": "",
|
||||
"cancelPassword": "",
|
||||
"accessibilityLabel": "정보 보기",
|
||||
"addPassword": "$t(lockRoomPassword) 추가",
|
||||
"cancelPassword": "$t(lockRoomPassword) 취소",
|
||||
"conferenceURL": "링크:",
|
||||
"country": "지역",
|
||||
"dialANumber": "",
|
||||
"dialANumber": "회의에 참여하려면이 번호 중 하나를 누른 다음 PIN을 입력하십시오.",
|
||||
"dialInConferenceID": "PIN:",
|
||||
"dialInNotSupported": "죄송합니다. 현재 전화를 걸 수 없습니다.",
|
||||
"dialInNumber": "Dial-in:",
|
||||
"dialInSummaryError": "",
|
||||
"dialInSummaryError": "지금 전화 접속 정보를 가져 오는 중에 오류가 발생했습니다. 나중에 다시 시도하십시오.",
|
||||
"dialInTollFree": "",
|
||||
"genericError": "일반적인 오류가 발생했습니다",
|
||||
"inviteLiveStream": "이 회의의 실시간 스트림을 보려면이 링크를 클릭하십시오: {{url}}",
|
||||
"invitePhone": "",
|
||||
"invitePhoneAlternatives": "",
|
||||
"inviteURLFirstPartGeneral": "",
|
||||
"inviteURLFirstPartPersonal": "",
|
||||
"inviteURLSecondPart": "",
|
||||
"inviteURLFirstPartGeneral": "회의에 초대되었습니다.",
|
||||
"inviteURLFirstPartPersonal": "{{name}}이 회의에 초대하였습니다.\n",
|
||||
"inviteURLSecondPart": "\n회의에 참여하기:\n{{url}}\n",
|
||||
"liveStreamURL": "실시간 스트리밍:",
|
||||
"moreNumbers": "더 많은 번호",
|
||||
"noNumbers": "전화 접속 번호 없음",
|
||||
"noPassword": "없음",
|
||||
"noRoom": "전화 접속이 가능한 방을 지정하지 않았습니다",
|
||||
"numbers": "전화 접속 번호",
|
||||
"password": "",
|
||||
"password": "비밀번호",
|
||||
"title": "공유",
|
||||
"tooltip": "링크 공유 및 회의에 대한 정보",
|
||||
"label": ""
|
||||
"label": "회의 정보"
|
||||
},
|
||||
"inviteDialog": {
|
||||
"alertText": "",
|
||||
"alertText": "일부 참가자를 초대하지 못했습니다.",
|
||||
"header": "초대",
|
||||
"searchCallOnlyPlaceholder": "",
|
||||
"searchPeopleOnlyPlaceholder": "",
|
||||
"searchPlaceholder": "",
|
||||
"send": ""
|
||||
"searchCallOnlyPlaceholder": "전화 번호 입력",
|
||||
"searchPeopleOnlyPlaceholder": "참가자 검색",
|
||||
"searchPlaceholder": "참가자 또는 전화 번호",
|
||||
"send": "전송"
|
||||
},
|
||||
"inlineDialogFailure": {
|
||||
"msg": "약간의 문제가 있습니다",
|
||||
@@ -321,7 +362,7 @@
|
||||
"focusRemote": "다른 발신자의 동영상에 포커스",
|
||||
"fullScreen": "전체화면 표시 또는 종료",
|
||||
"keyboardShortcuts": "키보드 단축키",
|
||||
"localRecording": "",
|
||||
"localRecording": "로컬 녹음 컨트롤 표시 또는 숨기기",
|
||||
"mute": "마이크 음소거 또는 음소거 해제",
|
||||
"pushToTalk": "대화 요청",
|
||||
"raiseHand": "말하기 요청/해제",
|
||||
@@ -341,24 +382,26 @@
|
||||
"enterStreamKey": "YouTube 실시간 스트리밍 키를 입력하십시오",
|
||||
"error": "실시간 스트리밍에 실패했습니다. 다시 시도하십시오.",
|
||||
"errorAPI": "YouTube 방송에 액세스하는 중에 오류가 발생했습니다. 다시 로그인하십시오.",
|
||||
"errorLiveStreamNotEnabled": "",
|
||||
"expandedOff": "",
|
||||
"expandedOn": "",
|
||||
"expandedPending": "",
|
||||
"errorLiveStreamNotEnabled": "{{email}}에 의해 라이브 스트리밍이 활성화되지 않았습니다. 라이브 스트리밍을 활성화하거나 라이브 스트리밍이 활성화 된 계정으로 로그인하십시오.",
|
||||
"expandedOff": "라이브 스트리밍이 중지되었습니다",
|
||||
"expandedOn": "현재 회의가 YouTube로 스트리밍되고 있습니다.",
|
||||
"expandedPending": "라이브 스트리밍이 시작됩니다 ...",
|
||||
"failedToStart": "실시간 스트리밍 시작 실패",
|
||||
"getStreamKeyManually": "",
|
||||
"invalidStreamKey": "",
|
||||
"getStreamKeyManually": "실시간 스트림을 가져올 수 없습니다. YouTube에서 실시간 스트림 키를 받아보세요.",
|
||||
"invalidStreamKey": "라이브 스트림 키가 잘못되었을 수 있습니다.",
|
||||
"off": "실시간 스트리밍이 중지됨",
|
||||
"on": "실시간 스트리밍",
|
||||
"pending": "실시간 스트리밍 시작…",
|
||||
"serviceName": "실시간 스트리밍 서비스",
|
||||
"signedInAs": "",
|
||||
"signedInAs": "현재 다음 계정으로 로그인되어 있습니다.",
|
||||
"signIn": "Google로 로그인",
|
||||
"signInCTA": "YouTube에서 로그인하거나 실시간 스트리밍 키를 입력하십시오",
|
||||
"signOut": "",
|
||||
"signOut": "로그아웃",
|
||||
"start": "실시간 스트리밍 시작",
|
||||
"streamIdHelp": "도움말?",
|
||||
"unavailableTitle": "실시간 스트리밍을 사용할 수 없음"
|
||||
"unavailableTitle": "실시간 스트리밍을 사용할 수 없음",
|
||||
"youtubeTerms": "YouTube 서비스 약관",
|
||||
"googlePrivacyPolicy": "Google 개인 정보 보호 정책"
|
||||
},
|
||||
"localRecording": {
|
||||
"clientState": {
|
||||
@@ -381,50 +424,50 @@
|
||||
"notModerator": ""
|
||||
},
|
||||
"moderator": "",
|
||||
"no": "",
|
||||
"no": "아니요",
|
||||
"participant": "",
|
||||
"participantStats": "",
|
||||
"sessionToken": "",
|
||||
"start": "레코딩 시작",
|
||||
"stop": "레코딩 종료",
|
||||
"yes": ""
|
||||
"yes": "예"
|
||||
},
|
||||
"lockRoomPassword": "패스워드",
|
||||
"lockRoomPasswordUppercase": "패스워드",
|
||||
"me": "Me",
|
||||
"lockRoomPassword": "비밀번호",
|
||||
"lockRoomPasswordUppercase": "비밀번호",
|
||||
"me": "나",
|
||||
"notify": {
|
||||
"connectedOneMember": "",
|
||||
"connectedThreePlusMembers": "",
|
||||
"connectedTwoMembers": "",
|
||||
"connectedOneMember": "{{name}}님이 회의에 참여했습니다.",
|
||||
"connectedThreePlusMembers": "{{name}}님 외 {{count}}명이 회의에 참여했습니다.",
|
||||
"connectedTwoMembers": "{{first}}님과 {{second}}님이 회의에 참여했습니다.",
|
||||
"disconnected": "연결이 끊김",
|
||||
"focus": "컨퍼런스 포커스",
|
||||
"focusFail": "{{component}}을 사용할 수 없음 - {{ms}} 초 후에 다시 시도하십시오",
|
||||
"grantedTo": "{{to}}에게 방장 권한이 부여되었습니다!",
|
||||
"invitedOneMember": "",
|
||||
"invitedThreePlusMembers": "",
|
||||
"invitedTwoMembers": "",
|
||||
"kickParticipant": "",
|
||||
"me": "",
|
||||
"invitedOneMember": "{{name}}님이 초대되었습니다.",
|
||||
"invitedThreePlusMembers": "{{name}}님 외 {{count}}명이 초대되었습니다.",
|
||||
"invitedTwoMembers": "{{first}}님과 {{second}}님이 초대되었습니다.",
|
||||
"kickParticipant": "{{kicker}}님이 {{kicked}}님을 추방했습니다.",
|
||||
"me": "나",
|
||||
"moderator": "방장 권한이 부여되었습니다!",
|
||||
"muted": "음소거로 대화가 시작되었습니다",
|
||||
"mutedTitle": "음소거 상태입니다!",
|
||||
"mutedRemotelyTitle": "",
|
||||
"mutedRemotelyDescription": "",
|
||||
"passwordRemovedRemotely": "",
|
||||
"passwordSetRemotely": "",
|
||||
"raisedHand": "",
|
||||
"mutedRemotelyTitle": "{{participantDisplayName}}에 의해 음소거되었습니다!",
|
||||
"mutedRemotelyDescription": "말할 준비가되면 언제든지 음소거를 해제 할 수 있습니다.",
|
||||
"passwordRemovedRemotely": "다른 참가자가 $t(lockRoomPasswordUppercase)를 제거했습니다.",
|
||||
"passwordSetRemotely": "다른 참가자가 $t(lockRoomPasswordUppercase)를 설정했습니다.",
|
||||
"raisedHand": "{{name}}님이 말하고 싶어합니다.",
|
||||
"somebody": "누군가",
|
||||
"startSilentTitle": "",
|
||||
"startSilentDescription": "",
|
||||
"startSilentTitle": "오디오 출력없이 참여했습니다!",
|
||||
"startSilentDescription": "오디오를 사용하려면 회의에 다시 참여하세요.",
|
||||
"suboptimalExperienceDescription": "{{appName}}에 대한 귀하의 경험이 없으시다면 <a href='{{recommendedBrowserPageLink}}' target='_blank'>완벽하게 지원되는 브라우저</a> 중 하나를 사용해보십시오.",
|
||||
"suboptimalExperienceTitle": "브라우저 경고",
|
||||
"unmute": "",
|
||||
"newDeviceCameraTitle": "",
|
||||
"newDeviceAudioTitle": "",
|
||||
"newDeviceAction": ""
|
||||
"unmute": "음소거 해제",
|
||||
"newDeviceCameraTitle": "새 카메라 감지",
|
||||
"newDeviceAudioTitle": "새 오디오 장치 감지",
|
||||
"newDeviceAction": "사용"
|
||||
},
|
||||
"passwordSetRemotely": "",
|
||||
"passwordDigitsOnly": "",
|
||||
"passwordSetRemotely": "다른 참가자가 설정",
|
||||
"passwordDigitsOnly": "최대 {{number}} 자리",
|
||||
"poweredby": "powered by",
|
||||
"presenceStatus": {
|
||||
"busy": "바쁨",
|
||||
@@ -447,27 +490,27 @@
|
||||
"title": "프로필"
|
||||
},
|
||||
"recording": {
|
||||
"authDropboxText": "",
|
||||
"availableSpace": "",
|
||||
"authDropboxText": "Dropbox에 업로드",
|
||||
"availableSpace": "사용 가능한 공간 : {{spaceLeft}}MB (약 {{duration}}분 녹화)",
|
||||
"beta": "베타",
|
||||
"busy": "레코딩 자원을 확보하고 있습니다. 몇 분 후에 다시 시도하십시오.",
|
||||
"busyTitle": "모든 레코더가 현재 사용 중입니다",
|
||||
"error": "레코딩이 실패했습니다. 다시 시도하십시오.",
|
||||
"expandedOff": "레코딩이 중지됨",
|
||||
"expandedOn": "",
|
||||
"expandedPending": "",
|
||||
"expandedOn": "회의가 현재 녹화 중입니다.",
|
||||
"expandedPending": "녹화가 시작됩니다 ...",
|
||||
"failedToStart": "레코딩을 시작하지 못했습니다",
|
||||
"fileSharingdescription": "",
|
||||
"fileSharingdescription": "회의 참가자와 녹음 공유",
|
||||
"live": "라이브",
|
||||
"loggedIn": "",
|
||||
"loggedIn": "{{userName}}으로 로그인했습니다.",
|
||||
"off": "레코딩이 중지됨",
|
||||
"on": "레코딩",
|
||||
"pending": "참석할 멤버를 기다리는 중입니다…",
|
||||
"rec": "REC",
|
||||
"serviceDescription": "",
|
||||
"rec": "녹음",
|
||||
"serviceDescription": "녹음은 녹음 서비스에 의해 저장됩니다.",
|
||||
"serviceName": "레코딩 서비스",
|
||||
"signIn": "",
|
||||
"signOut": "",
|
||||
"signIn": "로그인",
|
||||
"signOut": "로그아웃",
|
||||
"unavailable": "죄송합니다. {{serviceName}}은 현재 사용할 수 없습니다. 저희는 문제를 해결하기 위해 노력하고 있습니다. 나중에 다시 시도 해주십시오.",
|
||||
"unavailableTitle": "레코딩을 사용할 수 없습니다"
|
||||
},
|
||||
@@ -476,18 +519,18 @@
|
||||
},
|
||||
"settings": {
|
||||
"calendar": {
|
||||
"about": "",
|
||||
"about": "{{appName}} 캘린더 통합은 예정된 일정을 읽을 수 있도록 캘린더에 안전하게 액세스하는 데 사용됩니다.",
|
||||
"disconnect": "연결 끊김",
|
||||
"microsoftSignIn": "",
|
||||
"signedIn": "",
|
||||
"title": ""
|
||||
"microsoftSignIn": "Microsoft로 로그인",
|
||||
"signedIn": "현재 {{email}}의 캘린더 일정에 액세스하고 있습니다. 캘린더 이벤트 액세스를 중지하려면 아래 연결 해제 버튼을 클릭하세요.",
|
||||
"title": "캘린더"
|
||||
},
|
||||
"devices": "",
|
||||
"devices": "장치",
|
||||
"followMe": "모두 나와 같은 설정 상태로",
|
||||
"language": "",
|
||||
"loggedIn": "",
|
||||
"moderator": "",
|
||||
"more": "",
|
||||
"language": "언어",
|
||||
"loggedIn": "{{name}}으로 로그인",
|
||||
"moderator": "마이크",
|
||||
"more": "더보기",
|
||||
"name": "이름",
|
||||
"noDevice": "없음",
|
||||
"selectAudioOutput": "오디오 출력",
|
||||
@@ -495,26 +538,28 @@
|
||||
"selectMic": "오디오",
|
||||
"startAudioMuted": "모두가 음소거를 시작합니다",
|
||||
"startVideoMuted": "모두가 비디오 비활성화로 시작합니다",
|
||||
"title": "세티"
|
||||
"title": "설정"
|
||||
},
|
||||
"settingsView": {
|
||||
"advanced": "고급",
|
||||
"alertOk": "확인",
|
||||
"alertCancel": "취소",
|
||||
"alertTitle": "경고",
|
||||
"alertURLText": "입력된 서버 URL이 잘못되었습니다",
|
||||
"buildInfoSection": "",
|
||||
"buildInfoSection": "빌드 정보",
|
||||
"conferenceSection": "회의",
|
||||
"displayName": "유저이름",
|
||||
"email": "이메일",
|
||||
"header": "세티",
|
||||
"header": "설정",
|
||||
"profileSection": "프로필",
|
||||
"serverURL": "서버 URL",
|
||||
"startWithAudioMuted": "오디오 음소거 상태로 시작",
|
||||
"startWithVideoMuted": "비디오 비활성화 상태로 시작",
|
||||
"version": ""
|
||||
"version": "버전"
|
||||
},
|
||||
"share": {
|
||||
"dialInfoText": "",
|
||||
"mainText": ""
|
||||
"mainText": "회의에 참여하려면 다음 링크를 클릭하십시오.\n{{roomUrl}}"
|
||||
},
|
||||
"speaker": "스피커",
|
||||
"speakerStats": {
|
||||
@@ -561,11 +606,11 @@
|
||||
"sharedvideo": "",
|
||||
"shareRoom": "",
|
||||
"shareYourScreen": "",
|
||||
"shortcuts": "단축키 토그",
|
||||
"shortcuts": "단축키 전환",
|
||||
"show": "",
|
||||
"speakerStats": "",
|
||||
"tileView": "",
|
||||
"toggleCamera": "카메라 토ㄱ",
|
||||
"toggleCamera": "카메라 전환",
|
||||
"videomute": "",
|
||||
"videoblur": ""
|
||||
},
|
||||
@@ -575,54 +620,58 @@
|
||||
"audioRoute": "음성 장비 선택하기",
|
||||
"authenticate": "인증 중",
|
||||
"callQuality": "품질 설정하기",
|
||||
"chat": "",
|
||||
"closeChat": "",
|
||||
"documentClose": "",
|
||||
"documentOpen": "",
|
||||
"chat": "대화 열기/닫기",
|
||||
"closeChat": "대화 닫기",
|
||||
"documentClose": "문서 공유 닫기",
|
||||
"documentOpen": "문서 공유 열기",
|
||||
"download": "앱 다운로드",
|
||||
"enterFullScreen": "전체화면 보기",
|
||||
"enterTileView": "",
|
||||
"enterTileView": "타일보기 시작",
|
||||
"exitFullScreen": "전체화면 취소",
|
||||
"exitTileView": "",
|
||||
"exitTileView": "타일보기 종료",
|
||||
"feedback": "피드백 남기기",
|
||||
"hangup": "",
|
||||
"invite": "",
|
||||
"login": "",
|
||||
"hangup": "떠나기",
|
||||
"invite": "초대",
|
||||
"login": "로그인",
|
||||
"logout": "로그아웃",
|
||||
"lowerYourHand": "",
|
||||
"lowerYourHand": "손을 내려주세요",
|
||||
"moreActions": "추가 액션",
|
||||
"mute": "마이크",
|
||||
"openChat": "",
|
||||
"moreOptions": "옵션 더보기",
|
||||
"mute": "음소거 설정/해제",
|
||||
"muteEveryone": "모두 음소거",
|
||||
"openChat": "대화 열기",
|
||||
"pip": "",
|
||||
"profile": "",
|
||||
"privateMessage": "비공개 메시지 보내기",
|
||||
"profile": "프로필 수정",
|
||||
"raiseHand": "말하기 요청/해제",
|
||||
"raiseYourHand": "",
|
||||
"Settings": "세티",
|
||||
"sharedvideo": "",
|
||||
"shareRoom": "",
|
||||
"shortcuts": "",
|
||||
"raiseYourHand": "손 들어주세요",
|
||||
"Settings": "설정",
|
||||
"sharedvideo": "YouTube 비디오 공유",
|
||||
"shareRoom": "초대하기",
|
||||
"shortcuts": "단축키보기",
|
||||
"speakerStats": "접속자 통계",
|
||||
"startScreenSharing": "",
|
||||
"startSubtitles": "",
|
||||
"stopScreenSharing": "",
|
||||
"stopSubtitles": "",
|
||||
"stopSharedVideo": "",
|
||||
"talkWhileMutedPopup": "",
|
||||
"tileViewToggle": "",
|
||||
"toggleCamera": "카메라 토ㄱ",
|
||||
"videomute": "",
|
||||
"startvideoblur": "",
|
||||
"stopvideoblur": ""
|
||||
"startScreenSharing": "화면 공유 시작",
|
||||
"startSubtitles": "자막 시작",
|
||||
"stopScreenSharing": "화면 공유 중지",
|
||||
"stopSubtitles": "자막 중지",
|
||||
"stopSharedVideo": "UouTube 비디오 공유 중지",
|
||||
"talkWhileMutedPopup": "음소거 상태입니다.",
|
||||
"tileViewToggle": "타일뷰 전환",
|
||||
"toggleCamera": "카메라 전환",
|
||||
"videomute": "카메라 시작/중지",
|
||||
"startvideoblur": "내 배경을 흐리게",
|
||||
"stopvideoblur": "배경 흐림 비활성화"
|
||||
},
|
||||
"transcribing": {
|
||||
"ccButtonTooltip": "",
|
||||
"ccButtonTooltip": "자막 시작/종료",
|
||||
"error": "레코딩이 실패했습니다. 다시 시도하십시오.",
|
||||
"expandedLabel": "",
|
||||
"failedToStart": "",
|
||||
"labelToolTip": "",
|
||||
"off": "",
|
||||
"expandedLabel": "현재 스크립트 작성 중",
|
||||
"failedToStart": "스크립트 작성을 시작하지 못했습니다.",
|
||||
"labelToolTip": "회의가 기록되고 있습니다.",
|
||||
"off": "스크립트 작성이 중지되었습니다.",
|
||||
"pending": "참석할 멤버를 기다리는 중입니다…",
|
||||
"start": "",
|
||||
"stop": "",
|
||||
"start": "자막 표시 시작",
|
||||
"stop": "자막 표시 중지",
|
||||
"tr": ""
|
||||
},
|
||||
"userMedia": {
|
||||
@@ -649,8 +698,8 @@
|
||||
},
|
||||
"videoStatus": {
|
||||
"audioOnly": "오디오 전용",
|
||||
"audioOnlyExpanded": "",
|
||||
"callQuality": "",
|
||||
"audioOnlyExpanded": "낮은 대역폭 모드에 있습니다. 이 모드에서는 오디오 및 화면 공유 만 수신합니다.",
|
||||
"callQuality": "비디오 품질",
|
||||
"hd": "HD",
|
||||
"highDefinition": "고해상도",
|
||||
"labelTooiltipNoVideo": "비디오 없음",
|
||||
@@ -666,12 +715,12 @@
|
||||
"domute": "음소거",
|
||||
"flip": "플립",
|
||||
"kick": "내보내기",
|
||||
"moderator": "",
|
||||
"mute": "",
|
||||
"moderator": "중재자",
|
||||
"mute": "참가자 음소거",
|
||||
"muted": "음소거됨",
|
||||
"remoteControl": "원격 제어",
|
||||
"show": "",
|
||||
"videomute": ""
|
||||
"show": "화면에 표시",
|
||||
"videomute": "참가자가 카메라를 중지했습니다."
|
||||
},
|
||||
"welcomepage": {
|
||||
"accessibilityLabel": {
|
||||
@@ -683,22 +732,33 @@
|
||||
"audio": "음성",
|
||||
"video": "비디오"
|
||||
},
|
||||
"calendar": "",
|
||||
"connectCalendarButton": "",
|
||||
"connectCalendarText": "",
|
||||
"enterRoomTitle": "",
|
||||
"calendar": "캘린더",
|
||||
"connectCalendarButton": "캘린더를 연결하세요",
|
||||
"connectCalendarText": "{{app}}에서 모든 회의를 보려면 캘린더를 연결하세요. 또한 캘린더에 {{provider}} 회의를 추가하고 클릭 한 번으로 시작하세요.",
|
||||
"enterRoomTitle": "새 회의 시작",
|
||||
"getHelp": "도움 받기",
|
||||
"roomNameAllowedChars": "회의 이름은 이러한 문자를 포함 할 수 없습니다.: ?, &, :, ', \", %, #.",
|
||||
"go": "계속",
|
||||
"goSmall": "계속",
|
||||
"join": "가입",
|
||||
"info": "",
|
||||
"info": "정보",
|
||||
"privacy": "개인정보",
|
||||
"recentList": "",
|
||||
"recentListDelete": "",
|
||||
"recentListEmpty": "",
|
||||
"reducedUIText": "",
|
||||
"recentList": "최근",
|
||||
"recentListDelete": "삭제",
|
||||
"recentListEmpty": "최근 목록이 현재 비어 있습니다. 팀과 채팅하면 여기에서 최근 회의를 모두 찾을 수 있습니다.",
|
||||
"reducedUIText": "{{app}}에 오신 것을 환영합니다!",
|
||||
"roomname": "방 이름 입력",
|
||||
"roomnameHint": "",
|
||||
"sendFeedback": "",
|
||||
"roomnameHint": "참여하려는 방의 이름 또는 URL을 입력하십시오. 이름을 정하고 만나는 사람들에게 같은 이름을 입력하도록 알리면됩니다.",
|
||||
"sendFeedback": "피드백 보내기",
|
||||
"terms": "이용약관",
|
||||
"title": ""
|
||||
"title": "안전하고 모든 기능을 갖춘 완전 무료 화상 회의"
|
||||
},
|
||||
"lonelyMeetingExperience": {
|
||||
"button": "초대하기",
|
||||
"youAreAlone": "회의에 참여자가 없습니다."
|
||||
},
|
||||
"helpView": {
|
||||
"header": "지원 센터"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -175,9 +175,7 @@
|
||||
"dismiss": "Dismiss",
|
||||
"displayNameRequired": "हाय! तुझे नाव काय आहे?",
|
||||
"done": "पूर्ण झाले",
|
||||
"e2eeDescription": "<p>एंड-टू-एंड एनक्रिप्शन सध्या आहे <strong>प्रायोगिक</strong>. कृपया पहा <a href='https://jitsi.org/blog/e2ee/' target='_blank'>this post</a>तपशीलांसाठी.</p><br/><p>कृपया लक्षात ठेवा की एंड-टू-एंड एन्क्रिप्शन चालू केल्याने सर्व्हर-साइड प्रदान सेवा प्रभावीपणे अक्षम होईल: रेकॉर्डिंग, थेट प्रवाह आणि फोन सहभाग. हे देखील लक्षात ठेवा की मीटिंग केवळ समाविष्ट करण्यायोग्य प्रवाहांसाठी समर्थन असलेल्या ब्राउझरमधून सामील झालेल्या लोकांसाठीच कार्य करेल.</p>",
|
||||
"e2eeLabel": "Key",
|
||||
"e2eeTitle": "एंड-टू-एंड एनक्रिप्शन",
|
||||
"e2eeDescription": "एंड-टू-एंड एनक्रिप्शन सध्या आहे प्रायोगिक. कृपया लक्षात ठेवा की एंड-टू-एंड एन्क्रिप्शन चालू केल्याने सर्व्हर-साइड प्रदान सेवा प्रभावीपणे अक्षम होईल: रेकॉर्डिंग, थेट प्रवाह आणि फोन सहभाग. हे देखील लक्षात ठेवा की मीटिंग केवळ समाविष्ट करण्यायोग्य प्रवाहांसाठी समर्थन असलेल्या ब्राउझरमधून सामील झालेल्या लोकांसाठीच कार्य करेल.",
|
||||
"e2eeWarning": "चेतावणी:या बैठकीतील सर्व सहभागींना एंड-टू-एंड एनक्रिप्शनसाठी समर्थन असल्याचे दिसत नाही. आपण सक्षम केल्यास ते आपल्याला पाहण्यास किंवा ऐकण्यास सक्षम राहणार नाहीत.",
|
||||
"enterDisplayName": "कृपया आपले नाव येथे प्रविष्ट करा",
|
||||
"error": "त्रुटी",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -15,7 +15,22 @@
|
||||
"searchPeople": "Cercar de monde",
|
||||
"searchPeopleAndNumbers": "Cercar de monde o apondre lor numèros de telefòn",
|
||||
"telephone": "Telefòn : {{number}}",
|
||||
"title": "Convidatz de monde a vòstra conferéncia"
|
||||
"title": "Convidatz de monde a vòstra conferéncia",
|
||||
"shareStream": "Partejar la ligam de la difusion en dirècte",
|
||||
"copyStream": "Copiar lo ligam de la difusion en dirècte",
|
||||
"yahooEmail": "Yahoo Email",
|
||||
"outlookEmail": "Outlook Email",
|
||||
"shareLink": "Partejar lo ligam de la conferéncia per convidar de monde",
|
||||
"shareInvite": "Partejar invitacion conferéncia",
|
||||
"linkCopied": "Ligam copiat al quichapapièrs",
|
||||
"inviteMorePrompt": "Convidar mai de monde",
|
||||
"inviteMoreMailSubject": "Rejónher la conferéncia {{appName}}",
|
||||
"inviteMoreHeader": "Sètz l’unica persona de la conferéncia",
|
||||
"googleEmail": "Google Email",
|
||||
"defaultEmail": "Vòstre email per defaut",
|
||||
"copyLink": "Copiar lo ligam de la conferéncia",
|
||||
"copyInvite": "Copiar l’invitacion a la conferéncia",
|
||||
"addContacts": "Convidatz vòstres contactes"
|
||||
},
|
||||
"audioDevices": {
|
||||
"bluetooth": "Bluetooth",
|
||||
@@ -122,7 +137,10 @@
|
||||
"launchWebButton": "Lançar del navigador",
|
||||
"openApp": "Telecargar l’aplicacion",
|
||||
"title": "Aviada de vòstra conferéncia dins {{app}}…",
|
||||
"tryAgainButton": "Tornar ensajar del burèu"
|
||||
"tryAgainButton": "Tornar ensajar del burèu",
|
||||
"joinInApp": "Rejónher la conferéncia en utilizant l’aplicacion",
|
||||
"ifHaveApp": "S’avètz ja l’aplicacion :",
|
||||
"ifDoNotHaveApp": "S’avètz pas encara l’aplicacion :"
|
||||
},
|
||||
"defaultLink": "ex. {{url}}",
|
||||
"defaultNickname": "ex. Joan Delpuèch",
|
||||
@@ -238,7 +256,7 @@
|
||||
"screenSharingFailedToInstallTitle": "Fracàs de l'installacion de partatge d'ecran",
|
||||
"screenSharingFirefoxPermissionDeniedError": "Quicòm a fach mèuca quand èrem a ensajar de partejar vòstre ecran. Mercés de verificar qu’avètz donat l’autorizacion de lo partejar.",
|
||||
"screenSharingFirefoxPermissionDeniedTitle": "Ops ! Avèm pas pogut aviar lo partatge d’ecran.",
|
||||
"screenSharingPermissionDeniedError": "Òups ! Quicòm s'es pas ben passat amb l'autorizacion de vòstra extension de partatge d'ecran. Mercés de recargar e tornar ensajar.",
|
||||
"screenSharingPermissionDeniedError": "Òps ! Quicòm s'es pas ben passat amb l'autorizacion de vòstra autorizacion de partatge d'ecran. Mercés de recargar e tornar ensajar.",
|
||||
"sendPrivateMessage": "Avètz recentament recebut un messatge privat. Avètz ensajat d’i respondre en privat, o volètz enviar lo messatge al grop ?",
|
||||
"sendPrivateMessageCancel": "Enviar al grop",
|
||||
"sendPrivateMessageOk": "Enviar en privat",
|
||||
@@ -257,7 +275,7 @@
|
||||
"stopLiveStreaming": "Arrestar lo dirècte",
|
||||
"stopRecording": "Arrestar l'enregistrament",
|
||||
"stopRecordingWarning": "Sètz segur que volètz arrestar l'enregistrament?",
|
||||
"stopStreamingWarning": "Sètz segur que volètz arrestar lo dirècte?",
|
||||
"stopStreamingWarning": "Volètz vertadièrament arrestar lo dirècte ?",
|
||||
"streamKey": "Clau del dirècte",
|
||||
"Submit": "Validar",
|
||||
"thankYou": "Mercé d'aver utilizat {{appName}} !",
|
||||
@@ -273,14 +291,11 @@
|
||||
"Yes": "Òc",
|
||||
"yourEntireScreen": "Vòstre ecran complet",
|
||||
"screenSharingAudio": "Partejar l’àudio",
|
||||
"muteEveryoneStartMuted": "",
|
||||
"muteEveryoneSelf": "",
|
||||
"muteEveryoneTitle": "",
|
||||
"muteEveryoneDialog": "",
|
||||
"muteEveryoneElseTitle": "Copar lo son a totes levat {{whom}} ?",
|
||||
"muteEveryoneElseDialog": "",
|
||||
"e2eeTitle": "Chiframent del cap a la fin",
|
||||
"e2eeLabel": "Clau"
|
||||
"muteEveryoneStartMuted": "D'ara enlà tot lo monde comença mut",
|
||||
"muteEveryoneSelf": "vos",
|
||||
"muteEveryoneTitle": "Rendre mut tot lo monde ?",
|
||||
"muteEveryoneDialog": "Volètz vertadièrament copar lo son a tot lo monde ? Poiretz pas lo restablir, mas eles poiràn o far quora que vòlgan.",
|
||||
"muteEveryoneElseTitle": "Copar lo son a totes levat {{whom}} ?"
|
||||
},
|
||||
"dialOut": {
|
||||
"statusMessage": "ara es {{status}}"
|
||||
@@ -383,7 +398,7 @@
|
||||
"invalidStreamKey": "La clau de difusion en dirècte es benlèu pas corrècta.",
|
||||
"off": "La difusion en dirècte es estada arrestada",
|
||||
"offBy": "{{name}} a arrestat la difusion en dirècte",
|
||||
"on": "La difusion en dirècte es estada arrestada",
|
||||
"on": "Difusion en dirècte",
|
||||
"onBy": "{{name}} a començat la difusion en dirècte",
|
||||
"pending": "Començar lo dirècte…",
|
||||
"serviceName": "Servici de difusion en dirècte",
|
||||
@@ -460,7 +475,9 @@
|
||||
"newDeviceAudioTitle": "Nòu periferic àudio detectat",
|
||||
"newDeviceAction": "Utilizar",
|
||||
"oldElectronClientDescription3": " ara !",
|
||||
"oldElectronClientDescription2": "darrièra compilacion"
|
||||
"oldElectronClientDescription2": "darrièra compilacion",
|
||||
"oldElectronClientDescription1": "Sembla qu’utilizatz una version anciana del client Jitsi Meet qu’es conegut per conténer de problèmas de seguretat. Mercés de vos assegurar de metre a jorn ",
|
||||
"OldElectronAPPTitle": "Problèma de seguretat !"
|
||||
},
|
||||
"passwordSetRemotely": "causit per qualqu'un mai",
|
||||
"passwordDigitsOnly": "Fins a {{number}} chifras",
|
||||
@@ -559,7 +576,9 @@
|
||||
"startWithAudioMuted": "Començar sens son",
|
||||
"startWithVideoMuted": "Començar sens vièdo",
|
||||
"version": "Version",
|
||||
"alertCancel": "Anullar"
|
||||
"alertCancel": "Anullar",
|
||||
"disableCrashReportingWarning": "Volètz vertadièrament desactivar lo rapòrt de plantatge ? Lo paramètre serà aplicat aprèp la reaviada de l’aplicacion.",
|
||||
"disableCrashReporting": "Desactivar lo rapòrt de plantatge"
|
||||
},
|
||||
"share": {
|
||||
"dialInfoText": "\n\n=====\n\nVolètz sonar de vòstre telefòn estant ?\n\n{{defaultDialInNumber}}Clicatz lo ligam per veire los numèros de telefòn d’aquesta conferéncia\n{{dialInfoPageUrl}}",
|
||||
@@ -620,9 +639,10 @@
|
||||
"toggleCamera": "Passar a la camèra",
|
||||
"videomute": "Silenciar la vidèo",
|
||||
"videoblur": "Enfoscar o non la vidèo",
|
||||
"muteEveryone": "",
|
||||
"muteEveryone": "Rendre mut tot lo monde",
|
||||
"moreOptions": "Mostrar mai d’opcions",
|
||||
"e2ee": "Chiframent del cap a la fin"
|
||||
"e2ee": "Chiframent del cap a la fin",
|
||||
"security": "Opcions de seguretat"
|
||||
},
|
||||
"addPeople": "Ajustar de monde a vòstra sonada",
|
||||
"audioOnlyOff": "Desactivar lo mòde connexion febla",
|
||||
@@ -674,12 +694,13 @@
|
||||
"startvideoblur": "Trebolar mon rèire-plan",
|
||||
"stopvideoblur": "Desactivar lo borrolatge del rèire-plan",
|
||||
"noisyAudioInputDesc": "",
|
||||
"noisyAudioInputTitle": "",
|
||||
"noisyAudioInputTitle": "Vòstre microfòn sembla brusent !",
|
||||
"noAudioSignalDialInLinkDesc": "",
|
||||
"noAudioSignalDialInDesc": "",
|
||||
"muteEveryone": "",
|
||||
"muteEveryone": "Rendre mut tot lo monde",
|
||||
"moreOptions": "Autras opcions",
|
||||
"e2ee": "Chiframent del cap a la fin"
|
||||
"e2ee": "Chiframent del cap a la fin",
|
||||
"security": "Opcions de seguretat"
|
||||
},
|
||||
"transcribing": {
|
||||
"ccButtonTooltip": "Aviar / Arrestat los sostítols",
|
||||
@@ -743,7 +764,7 @@
|
||||
"remoteControl": "Contraròtle alonhat",
|
||||
"show": "Mostrar davant",
|
||||
"videomute": "Lo participant a arrestat la camèra",
|
||||
"domuteOthers": ""
|
||||
"domuteOthers": "Rendre mut totes los autres"
|
||||
},
|
||||
"welcomepage": {
|
||||
"accessibilityLabel": {
|
||||
@@ -780,8 +801,8 @@
|
||||
"header": "Centre d’ajuda"
|
||||
},
|
||||
"lonelyMeetingExperience": {
|
||||
"youAreAlone": "",
|
||||
"button": ""
|
||||
"youAreAlone": "Sètz l’unica persona de la conferéncia",
|
||||
"button": "Convidar d’autres"
|
||||
},
|
||||
"chromeExtensionBanner": {
|
||||
"dontShowAgain": "Me mostrar pas mai aquò",
|
||||
@@ -798,6 +819,53 @@
|
||||
"callMe": "Sona-me",
|
||||
"audioTrackError": "Creacion impossibla de la pista àudio.",
|
||||
"audioOnlyError": "Error àudio :",
|
||||
"audioAndVideoError": "Error àudio e vidèo :"
|
||||
"audioAndVideoError": "Error àudio e vidèo :",
|
||||
"dialing": "A sonar",
|
||||
"viewAllNumbers": "veire totes los numèros",
|
||||
"videoTrackError": "Creacion d’una pista àudio impossibla.",
|
||||
"videoOnlyError": "Error vidèo :",
|
||||
"screenSharingError": "Error de partatge d’ecran :",
|
||||
"startWithPhone": "Començar amb l’àudio del telefòn",
|
||||
"calling": "A sonar",
|
||||
"lookGood": "Sembla que lo microfòn fonciona pas coma cal",
|
||||
"linkCopied": "Ligam copiat al quichapapièrs",
|
||||
"initiated": "Sonada aviada",
|
||||
"joinWithoutAudio": "Rejónher sens àudio",
|
||||
"joinMeeting": "Rejónher la conferéncia",
|
||||
"joinAudioByPhone": "Rejónher amb l’àudio del telefòn"
|
||||
},
|
||||
"lobby": {
|
||||
"reject": "Regetar",
|
||||
"passwordJoinButton": "Rejónher",
|
||||
"passwordField": "Picatz lo senhal de la conferéncia",
|
||||
"nameField": "Escrivètz vòstre nom",
|
||||
"knockTitle": "Qualqu’un vòl rejónher la conferéncia",
|
||||
"knockButton": "Demandar a rejónher",
|
||||
"joiningWithPasswordTitle": "A rejónher amb senhal...",
|
||||
"joiningTitle": "Demanda a rejónher la conferéncia...",
|
||||
"joinTitle": "Rejónher la conferéncia",
|
||||
"joinRejectedMessage": "Un moderator a regetat vòstra demanda de participacion.",
|
||||
"joinWithPasswordMessage": "Ensag de participacion amb senhal, volgatz esperar...",
|
||||
"joiningMessage": "Dintraretz dins la conferéncia tre que qualqu’un aurà acceptat vòstra demanda",
|
||||
"invalidPassword": "Senhal invalid",
|
||||
"enterPasswordTitle": "Dintratz lo senhal per rejónher la conferéncia",
|
||||
"enterPasswordButton": "Dintratz lo senhal de la conferéncia",
|
||||
"enableDialogSubmit": "Activar",
|
||||
"enableDialogPasswordField": "Definir un senhal (opcional)",
|
||||
"emailField": "Picata vòstra adreça electronica",
|
||||
"disableDialogSubmit": "Desactivar",
|
||||
"backToKnockModeButton": "Cap de senhal, demandar a participar a la plaça",
|
||||
"allow": "Autorizar"
|
||||
},
|
||||
"security": {
|
||||
"securityOptions": "Opcions de seguretat",
|
||||
"insecureRoomNameWarning": "Lo nom de la sala es pas segur. De monde indesirables poirián rejónher vòstra conferéncia.",
|
||||
"aboutReadOnly": "Los participants que son moderators pòdon ajustar un $t(lockRoomPassword) a la conferéncia. Los participants deuràn fornir lo $t(lockRoomPassword) abans d’aver l’autorizacion de rejónher la conferéncia.",
|
||||
"about": "Podètz ajustar un $t(lockRoomPassword) per rejónher una conferéncia. Los participants deuràn fornir lo $t(lockRoomPassword) abans d’obténer l’autorizacion de dintrar dins la conferéncia."
|
||||
},
|
||||
"e2ee": {
|
||||
"labelToolTip": "La comunicacion àudio e vidèo d’aquesta sonada es chifrada del cap a la fin"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,21 +1,36 @@
|
||||
{
|
||||
"addPeople": {
|
||||
"add": "Zaproś",
|
||||
"addContacts": "Zaproś kontakty",
|
||||
"copyInvite": "Kopiuj zaproszenie na spotkanie",
|
||||
"copyLink": "Kopiuj link spotkania",
|
||||
"copyStream": "Kopiuj link transmisji na żywo",
|
||||
"countryNotSupported": "Nie obsługujemy jeszcze tej lokalizacji.",
|
||||
"countryReminder": "Dzwonisz spoza USA? Upewnij się, że zaczynasz od kodu kraju!",
|
||||
"defaultEmail": "Domyślna poczta",
|
||||
"disabled": "Nie możesz zapraszać ludzi.",
|
||||
"failedToAdd": "Błąd dodawania uczestników",
|
||||
"footerText": "Wybieranie numeru jest wyłączone.",
|
||||
"googleEmail": "Poczta Google",
|
||||
"inviteMoreHeader": "Jesteś jedynym uczestnikiem tego spotkania",
|
||||
"inviteMoreMailSubject": "Dołącz do spotkania {{appName}}",
|
||||
"inviteMorePrompt": "Zaproś innych uczestników",
|
||||
"linkCopied": "Link skopiowany do schowka",
|
||||
"loading": "Szukaj ludzi i numerów telefonów",
|
||||
"loadingNumber": "Weryfikacja numeru telefonu",
|
||||
"loadingPeople": "Wyszukiwanie osób do zaproszenia",
|
||||
"noResults": "Brak pasujących wyników wyszukiwania",
|
||||
"noValidNumbers": "Proszę wpisać numer telefonu",
|
||||
"outlookEmail": "Poczta Outlook",
|
||||
"searchNumbers": "Dodaj numery telefonów",
|
||||
"searchPeople": "Szukaj ludzi",
|
||||
"searchPeopleAndNumbers": "Wyszukaj osoby i dodaj ich numery telefonu",
|
||||
"shareInvite": "Udostępnij zaproszenie na spotkanie",
|
||||
"shareLink": "Udostępnij link do spotkania, aby zaprosić innych uczestników",
|
||||
"shareStream": "Udostępnij link transmisji na żywo",
|
||||
"telephone": "Telefon: {{number}}",
|
||||
"title": "Zaproś ludzi na to spotkanie"
|
||||
"title": "Zaproś uczestników na to spotkanie",
|
||||
"yahooEmail": "Poczta Yahoo"
|
||||
},
|
||||
"audioDevices": {
|
||||
"bluetooth": "Bluetooth",
|
||||
@@ -47,10 +62,10 @@
|
||||
},
|
||||
"chat": {
|
||||
"error": "Błąd: Twoja wiadomość nie została wysłana. Powód: {{error}}",
|
||||
"fieldPlaceHolder": "",
|
||||
"fieldPlaceHolder": "Wpisz wiadomość tutaj",
|
||||
"messagebox": "Wpisz wiadomość",
|
||||
"messageTo": "Prywatna wiadomość do {{recipient}}",
|
||||
"noMessagesMessage": "",
|
||||
"noMessagesMessage": "Aktualnie brak wiadomości w tym spotkaniu. Rozpocznij konwersację!",
|
||||
"nickname": {
|
||||
"popover": "Wybierz swój nick",
|
||||
"title": "Wpisz swoją nazwę, aby użyć rozmowy"
|
||||
@@ -59,8 +74,13 @@
|
||||
"title": "Rozmowa",
|
||||
"you": "Ty"
|
||||
},
|
||||
"connectingOverlay": {
|
||||
"joiningRoom": "Łączenie z Twoim spotkaniem…"
|
||||
"chromeExtensionBanner": {
|
||||
"installExtensionText": "Zainstaluj rozszerzenie integrujące Kalendarz Google i Office 365",
|
||||
"buttonText": "Zainstaluj rozszerzenie Chrome",
|
||||
"dontShowAgain": "Nie pokazuj ponownie"
|
||||
},
|
||||
"connectingOverlay": {
|
||||
"joiningRoom": "Łączenie ze spotkaniem…"
|
||||
},
|
||||
"connection": {
|
||||
"ATTACHED": "Załącznik",
|
||||
@@ -72,7 +92,10 @@
|
||||
"DISCONNECTED": "Rozłączony",
|
||||
"DISCONNECTING": "Rozłączanie",
|
||||
"ERROR": "Błąd",
|
||||
"RECONNECTING": "Wystąpił problem w sieci. Ponowienie połączenia..."
|
||||
"FETCH_SESSION_ID": "Uzyskiwanie id sesji...",
|
||||
"GET_SESSION_ID_ERROR": "Nie można uzyskać id sesji. Błąd: {{code}}",
|
||||
"GOT_SESSION_ID": "Uzyskiwanie id sesji... Gotowe",
|
||||
"LOW_BANDWIDTH": "Wideo {{displayName}} zostało wyłączone w celu oszczędności zasobów"
|
||||
},
|
||||
"connectionindicator": {
|
||||
"address": "Adres:",
|
||||
@@ -80,14 +103,14 @@
|
||||
"bitrate": "Szybkość transmisji:",
|
||||
"bridgeCount": "Liczba serwerów: ",
|
||||
"connectedTo": "Podłączone do:",
|
||||
"e2e_rtt": "E2E RTT:",
|
||||
"framerate": "Klatek na sekundę:",
|
||||
"less": "Pokaż mniej",
|
||||
"localaddress_0": "Adres lokalny:",
|
||||
"localaddress_1": "Adresy lokalne:",
|
||||
"localaddress_2": "Adresy lokalne:",
|
||||
"localport_0": "Port lokalny:",
|
||||
"localport_1": "Porty lokalne:",
|
||||
"localport_2": "Porty lokalne:",
|
||||
"localaddress": "Adres lokalny:",
|
||||
"localaddress_plural": "Adresy lokalne:",
|
||||
"localport": "Port lokalny:",
|
||||
"localport_plural": "Porty lokalne:",
|
||||
"maxEnabledResolution": "send max",
|
||||
"more": "Pokaż więcej",
|
||||
"packetloss": "Utrata pakietów:",
|
||||
"quality": {
|
||||
@@ -97,17 +120,14 @@
|
||||
"nonoptimal": "Nieoptymalne",
|
||||
"poor": "Słabe"
|
||||
},
|
||||
"remoteaddress_0": "Adres zdalny:",
|
||||
"remoteaddress_1": "Adresy zdalne:",
|
||||
"remoteaddress_2": "Adresy zdalne:",
|
||||
"remoteport_0": "Port zdalny:",
|
||||
"remoteport_1": "Porty zdalne:",
|
||||
"remoteport_2": "Porty zdalne:",
|
||||
"remoteaddress": "Adres zdalny:",
|
||||
"remoteaddress_plural": "Adresy zdalne:",
|
||||
"remoteport": "Port zdalny:",
|
||||
"remoteport_plural": "Porty zdalne:",
|
||||
"resolution": "Rozdzielczość:",
|
||||
"status": "Połączenie:",
|
||||
"transport_0": "Transport:",
|
||||
"transport_1": "Transporty:",
|
||||
"transport_2": "Transporty:"
|
||||
"transport": "Transport:",
|
||||
"transport_plural": "Transporty:"
|
||||
},
|
||||
"dateUtils": {
|
||||
"earlier": "Wcześniej",
|
||||
@@ -119,13 +139,15 @@
|
||||
"description": "Nic się nie wydarzyło? Spróbowaliśmy uruchomić Twoje spotkanie w aplikacji stacjonarnej {{app}}. Spróbuj ponownie lub uruchom spotkanie w aplikacji webowej {{app}}.",
|
||||
"descriptionWithoutWeb": "Nic się nie wydarzyło? Spróbowaliśmy uruchomić Twoje spotkanie w aplikacji stacjonarnej {{app}}.",
|
||||
"downloadApp": "Pobierz aplikację",
|
||||
"ifDoNotHaveApp": "Jeśli nie masz jeszcze aplikacji:",
|
||||
"ifHaveApp": "Jeśli już masz aplikację:",
|
||||
"joinInApp": "Dołącz do spotkania używając aplikacji",
|
||||
"launchWebButton": "Uruchom przez przeglądarkę",
|
||||
"openApp": "Kontynuuj w aplikacji",
|
||||
"title": "Trwa uruchamianie Twojego spotkania w {{app}}…",
|
||||
"tryAgainButton": "Spróbuj ponownie w aplikacji stacjonarnej"
|
||||
},
|
||||
"defaultLink": "np. {{url}}",
|
||||
"defaultNickname": "np. Ziutek Kowalski",
|
||||
"defaultNickname": "np. Jan Kowalski",
|
||||
"deviceError": {
|
||||
"cameraError": "Błąd dostępu do Twojej kamery",
|
||||
"cameraPermission": "Błąd podczas otrzymywania uprawnień do kamery",
|
||||
@@ -142,6 +164,7 @@
|
||||
"accessibilityLabel": {
|
||||
"liveStreaming": "Transmisja na żywo"
|
||||
},
|
||||
"add": "Dodaj",
|
||||
"allow": "Pozwól",
|
||||
"alreadySharedVideoMsg": "Inny użytkownik już prezentuje wideo. Ta konferencja pozwala tylko na prezentację jednego wideo w tym samym czasie.",
|
||||
"alreadySharedVideoTitle": "Tylko jedna prezentacja wideo jest dozwolona w tym samym czasie",
|
||||
@@ -168,20 +191,24 @@
|
||||
"connecting": "Nawiązywanie połączenia",
|
||||
"contactSupport": "Skontaktuj się ze wsparciem",
|
||||
"copy": "Kopiuj",
|
||||
"copied": "Skopiowano",
|
||||
"dismiss": "Odrzuć",
|
||||
"displayNameRequired": "Cześć! Jak się nazywasz?",
|
||||
"done": "Zrobione",
|
||||
"e2eeDescription": "Szyfrowanie End-to-End jest aktualnie w fazie EKSPERYMENTALNEJ. Proszę mieć na uwadze fakt, że szyfrowanie end-to-end wyłączy oferowane przez serwer usługi takie jak: nagrywanie, streaming na żywo i dołączanie uczestników przez telefon. Proszę mieć również na uwadze fakt, że takie spotkanie zadziałą tylko dla uczestników korzystających z przeglądarek wspierających wstawiane strumienie.",
|
||||
"e2eeLabel": "Klucz E2EE",
|
||||
"e2eeNoKey": "brak",
|
||||
"e2eeToggleSet": "Ustaw klucz",
|
||||
"e2eeSet": "Ustaw",
|
||||
"e2eeWarning": "UWAGA: Niektórzy uczestnicy tego spotkania nie mają włączonej obsługi szyfrowania E2EE. Jeśli włączysz tą funkcję ci uczestnicy nie będą mieli z tobą kontaktu.",
|
||||
"enterDisplayName": "Wpisz tutaj swoje imię",
|
||||
"error": "Błąd",
|
||||
"externalInstallationMsg": "Zainstaluj rozszerzenie naszego współdzielenia ekranu.",
|
||||
"externalInstallationTitle": "Wymagane rozszerzenie",
|
||||
"goToStore": "Idź do sklepu",
|
||||
"gracefulShutdown": "Aktualnie serwis jest konserwowany. Prosze spróbować później.",
|
||||
"gracefulShutdown": "Usługa aktualnie jest niedostępna. Prosze spróbować później.",
|
||||
"grantModeratorDialog": "Czy na pewno chcesz przyznać temu uczestnikowi prawa moderatora?",
|
||||
"grantModeratorTitle": "Przyznaj prawa moderatora",
|
||||
"IamHost": "Jestem gospodarzem",
|
||||
"incorrectRoomLockPassword": "Hasło nieprawidłowe",
|
||||
"incorrectPassword": "Niepoprawna nazwa użytkownika lub hasło",
|
||||
"inlineInstallationMsg": "Zainstaluj rozszerzenie naszego współdzielenia ekranu.",
|
||||
"inlineInstallExtension": "Zainstaluj teraz",
|
||||
"internalError": "Ups! Coś poszło nie tak. Wystąpił następujący błąd: {{error}}",
|
||||
"internalErrorTitle": "Błąd wewnętrzny",
|
||||
"kickMessage": "Możesz skontaktować się z {{participantDisplayName}}, aby uzyskać więcej szczegółów.",
|
||||
@@ -189,7 +216,8 @@
|
||||
"kickParticipantDialog": "Czy na pewno chcesz usunąć tego uczestnika?",
|
||||
"kickParticipantTitle": "Usunąć tego uczestnika?",
|
||||
"kickTitle": "Ups! {{participantDisplayName}} usunął Cię z tego spotkania",
|
||||
"liveStreaming": "Strumień live",
|
||||
"liveStreaming": "Strumień na żywo",
|
||||
"liveStreamingDisabledBecauseOfActiveRecordingTooltip": "Nie możliwe podczas aktywnego nagrywania",
|
||||
"liveStreamingDisabledForGuestTooltip": "Goście nie mogą używać transmisji na żywo.",
|
||||
"liveStreamingDisabledTooltip": "Rozpoczęcie transmisji na żywo jest wyłączone.",
|
||||
"lockMessage": "Zabezpieczenie konferencji nie powiodło się.",
|
||||
@@ -205,6 +233,12 @@
|
||||
"micNotSendingDataTitle": "Twój mikrofon jest wyciszony przez ustawienia systemowe",
|
||||
"micPermissionDeniedError": "Nie udzieliłeś pozwolenia na użycie twojego mikrofonu. Nadal możesz uczestniczyc w konferencji ale inni nie będą cię słyszeli. Użyj przycisku kamera aby to naprawić.",
|
||||
"micUnknownError": "Z nieznanej przyczyny nie można użyć mikrofonu.",
|
||||
"muteEveryoneElseDialog": "Gdy wyciszysz wszystkich nie będziesz miał możliwości wyłączyć ich wyciszenia, ale oni będą mogli samodzielnie wyłączyć wyciszenie w dowolnym momencie.",
|
||||
"muteEveryoneElseTitle": "Wyciszyć wszystkich za wyjątkiem {{whom}}?",
|
||||
"muteEveryoneDialog": "Czy na pewno wyciszyć wszystkich? Nie będziesz miał możliwości wyłączyć ich wyciszenia, ale oni będą mogli samodzielnie wyłączyć wyciszenie w dowolnym momencie.",
|
||||
"muteEveryoneTitle": "Wyciszyć wszystkich?",
|
||||
"muteEveryoneSelf": "siebie",
|
||||
"muteEveryoneStartMuted": "Od tego momentu wszyscy są wyciszeni",
|
||||
"muteParticipantBody": "Nie możesz wyłączyć ich wyciszenia, ale oni mogą samodzielnie wyłączyć wyciszenie w dowolnym momencie.",
|
||||
"muteParticipantButton": "Wyciszenie",
|
||||
"muteParticipantDialog": "Czy na pewno wyciszyć tego uczestnika? Nie będziesz mógł wyłączyć wyciszenia uczestników, ale oni mogą samodzielnie wyłączyć wyciszenie w dowolnym momencie.",
|
||||
@@ -216,9 +250,11 @@
|
||||
"passwordRequired": "$t(lockRoomPasswordUppercase) jest wymagane",
|
||||
"popupError": "Twoja przeglądarka blokuje wyskakujące okienka pochodzące z tej witryny. Włącz wyświetlanie wyskakujących okienek w ustawieniach bezpieczeństwa Twojej przeglądarki i spróbuj ponownie.",
|
||||
"popupErrorTitle": "Wyskakujące okienko zostało zablokowane",
|
||||
"readMore": "więcej",
|
||||
"recording": "Nagrywanie",
|
||||
"recordingDisabledForGuestTooltip": "Goście nie mogą rozpocząć nagrywania.",
|
||||
"recordingDisabledTooltip": "Rozpoczęcie nagrywania wyłączone.",
|
||||
"recordingDisabledBecauseOfActiveLiveStreamingTooltip": "Nie możliwe podczas aktywnej transmisji na żywo",
|
||||
"recordingDisabledForGuestTooltip": "Goście nie mogą uruchamiać nagrywania.",
|
||||
"recordingDisabledTooltip": "Start recording disabled.",
|
||||
"rejoinNow": "Połącz ponownie teraz",
|
||||
"remoteControlAllowedMessage": "{{user}} zaakceptował Twoją prośbę o kontrolę zdalną!",
|
||||
"remoteControlDeniedMessage": "{{user}} odrzucił Twoją prośbę o kontrolę zdalną!",
|
||||
@@ -229,27 +265,26 @@
|
||||
"remoteControlTitle": "Zdalna kontrola komputera",
|
||||
"Remove": "Usuń",
|
||||
"removePassword": "Usuń $t(lockRoomPassword)",
|
||||
"removeSharedVideoMsg": "Na pewno chcesz usunąć współdzielone wideo?",
|
||||
"removeSharedVideoTitle": "Usuń wideo współdzielone",
|
||||
"removeSharedVideoMsg": "Na pewno chcesz usunąć udostępnione wideo?",
|
||||
"removeSharedVideoTitle": "Usuń wideo udostępnione",
|
||||
"reservationError": "Błąd systemu rezerwacji",
|
||||
"reservationErrorMsg": "Kod błędu: {{code}}, treść: {{msg}}",
|
||||
"retry": "Ponów",
|
||||
"screenSharingFailedToInstall": "Ups! Nie udało się zainstalować wtyczki do współdzielenia ekranu.",
|
||||
"screenSharingFailedToInstallTitle": "Nie udało się zainstalować wtyczki do współdzielenia ekranu",
|
||||
"screenSharingFirefoxPermissionDeniedError": "Coś poszło nie tak podczas próby współdzielenia Twojego ekranu. Upewnij się, że udzieliłeś zgody na tą próbę. ",
|
||||
"screenSharingFirefoxPermissionDeniedTitle": "Ups! Nie byliśmy w stanie rozpocząć współdzielenia ekranu!",
|
||||
"screenSharingPermissionDeniedError": "Ups! Coś poszło nie tak z prawami dostępu do wtyczki współdzielenia ekranu. Wczytaj ponownie i spróbuj jeszcze raz.",
|
||||
"screenSharingAudio": "Udostępnianie audio",
|
||||
"screenSharingFailed": "Oops! Coś poszło nie tak. Nie można uruchomić udostępniania ekranu!",
|
||||
"screenSharingFailedTitle": "Niepowodzenie udostępniania ekranu!",
|
||||
"screenSharingPermissionDeniedError": "Oops! Coś poszło nie tak z uprawnieniami udostępniania ekranu. Odśwież stronę i spróbuj ponownie.",
|
||||
"sendPrivateMessage": "Niedawno otrzymałeś prywatną wiadomość. Czy zamierzałeś odpowiedzieć na nią prywatnie, czy chcesz wysłać wiadomość do grupy?",
|
||||
"sendPrivateMessageCancel": "Wyślij do grupy",
|
||||
"sendPrivateMessageOk": "Wyślij prywatnie",
|
||||
"sendPrivateMessageTitle": "Wysłać prywatnie?",
|
||||
"serviceUnavailable": "Usługa jest niedostępna",
|
||||
"sessTerminated": "Połączenie przerwane",
|
||||
"Share": "Współdziel",
|
||||
"Share": "Udostępnij",
|
||||
"shareVideoLinkError": "Podaj proszę prawidłowy link youtube.",
|
||||
"shareVideoTitle": "Współdziel wideo",
|
||||
"shareYourScreen": "Włącz współdzielenie ekranu",
|
||||
"shareYourScreenDisabled": "Współdzielenie ekranu wyłączone.",
|
||||
"shareVideoTitle": "Udostępnij wideo",
|
||||
"shareYourScreen": "Włącz udostępnianie ekranu",
|
||||
"shareYourScreenDisabled": "Udostępnianie ekranu wyłączone.",
|
||||
"shareYourScreenDisabledForGuest": "Goście nie mogą współdzielić ekranu.",
|
||||
"startLiveStreaming": "Rozpocznij transmisję na żywo",
|
||||
"startRecording": "Rozpocznij nagrywanie",
|
||||
@@ -267,8 +302,8 @@
|
||||
"transcribing": "Transkrypcja",
|
||||
"unlockRoom": "Usuń spotkanie $t(lockRoomPassword)",
|
||||
"userPassword": "hasło użytkownika",
|
||||
"WaitForHostMsg": "Konferencja <b>{{room}}</b> jeszcze się nie rozpoczęła. Jeśli jesteś gospodarzem, prosimy o uwierzytelnienie. Jeśli nie, prosimy czekać na przybycie gospodarza.",
|
||||
"WaitForHostMsgWOk": "Konferencja <b>{{room}}</b> jeszcze się nie zaczęła. Jeśli jesteś jej gospodarzem, wybierz Ok, aby się uwierzytelnić. Jeśli nie, prosimy czekać na przybycie gospodarza.",
|
||||
"WaitForHostMsg": "Spotkanie <b>{{room}}</b> jeszcze się nie rozpoczęło. Jeśli jesteś gospodarzem, prosimy o uwierzytelnienie. Jeśli nie, prosimy czekać na przybycie gospodarza.",
|
||||
"WaitForHostMsgWOk": "Spotkanie <b>{{room}}</b> jeszcze się nie rozoczęło. Jeśli jesteś jej gospodarzem, wybierz Ok, aby się uwierzytelnić. Jeśli nie, prosimy czekać na przybycie gospodarza.",
|
||||
"WaitingForHost": "Oczekiwanie na gospodarza…",
|
||||
"Yes": "Tak",
|
||||
"yourEntireScreen": "Cały Twój ekran"
|
||||
@@ -277,7 +312,13 @@
|
||||
"statusMessage": "jest teraz {{status}}"
|
||||
},
|
||||
"documentSharing": {
|
||||
"title": "Współdzielony dokument"
|
||||
"title": "Udostępniony dokument"
|
||||
},
|
||||
"e2ee": {
|
||||
"labelToolTip": "To połączenie audio i wideo jest szyfrowane"
|
||||
},
|
||||
"embedMeeting": {
|
||||
"title": "Osadź to spotkanie"
|
||||
},
|
||||
"feedback": {
|
||||
"average": "Średnio",
|
||||
@@ -321,7 +362,7 @@
|
||||
"noRoom": "Nie podano pokoju do wdzwonienia.",
|
||||
"numbers": "Numery do wdzwonienia",
|
||||
"password": "$t(lockRoomPasswordUppercase):",
|
||||
"title": "Współdziel",
|
||||
"title": "Udostępnij",
|
||||
"tooltip": "Udostępnij odnośnik i informacje do wdzwonienia się na to spotkanie",
|
||||
"label": "Poinformuj o spotkaniu"
|
||||
},
|
||||
@@ -349,7 +390,7 @@
|
||||
"pushToTalk": "Naciśnij, aby mówić",
|
||||
"raiseHand": "Podnieś lub opuść rękę",
|
||||
"showSpeakerStats": "Pokaż statystyki mówcy",
|
||||
"toggleChat": "Otwórz lub zamknij rozmowę",
|
||||
"toggleChat": "Otwórz lub zamknij czat",
|
||||
"toggleFilmstrip": "Wyświetl lub ukryj miniaturki video",
|
||||
"toggleScreensharing": "Przełącz pomiędzy kamerą i wspóldzieleniem ekranu",
|
||||
"toggleShortcuts": "Wyświetl lub ukryj skróty klawiaturowe",
|
||||
@@ -357,6 +398,8 @@
|
||||
"videoQuality": "Zarządzanie jakością połączeń"
|
||||
},
|
||||
"liveStreaming": {
|
||||
"limitNotificationDescriptionWeb": "Ze względu na duże zapotrzebowanie twoje strumieniowanie będzie ograniczone do {{limit}} minut. Aby strumieniować bez ograniczeń wybróbuj <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"limitNotificationDescriptionNative": "Twoje strumieniowanie będzie ograniczone do {{limit}} minut. Aby strumieniować bez ograniczeń wybróbuj {{app}}.",
|
||||
"busy": "Pracujemy nad zwolnieniem zasobów transmisyjnych. Spróbuj ponownie za kilka minut.",
|
||||
"busyTitle": "Wszyscy transmitujący są aktualnie zajęci",
|
||||
"changeSignIn": "Przełącz konta.",
|
||||
@@ -365,7 +408,7 @@
|
||||
"enterStreamKey": "Wpisz tutaj swój klucz transmisji na żywo YouTube.",
|
||||
"error": "Transmitowanie na żywo nie powiodło się. Spróbuj ponownie.",
|
||||
"errorAPI": "Wystąpił błąd podczas uzyskiwania dostępu do transmisji w YouTube. Proszę spróbować zalogować się ponownie.",
|
||||
"errorLiveStreamNotEnabled": "",
|
||||
"errorLiveStreamNotEnabled": "Strumieniowanie na żywo nie jest włączone dla {{email}}. Proszę włączyć strumieniowanie na żywo lub zalogować się na konto z włączoną funkcją strumieniowania.",
|
||||
"expandedOff": "Transmisja na żywo została zatrzymana",
|
||||
"expandedOn": "Spotkanie jest obecnie transmitowane na YouTube.",
|
||||
"expandedPending": "Transmisja na żywo rozpoczyna się…",
|
||||
@@ -384,7 +427,9 @@
|
||||
"signOut": "Wyloguj się",
|
||||
"start": "Rozpocznij transmisję na żywo",
|
||||
"streamIdHelp": "Co to jest?",
|
||||
"unavailableTitle": "Transmisja na żywo jest niedostępna"
|
||||
"unavailableTitle": "Transmisja na żywo jest niedostępna",
|
||||
"youtubeTerms": "Warunki użytkowania YouTube",
|
||||
"googlePrivacyPolicy": "Polityka prywatności Google"
|
||||
},
|
||||
"localRecording": {
|
||||
"clientState": {
|
||||
@@ -396,17 +441,17 @@
|
||||
"duration": "Długość",
|
||||
"durationNA": "N/D",
|
||||
"encoding": "Kodowanie",
|
||||
"label": "",
|
||||
"label": "LOR",
|
||||
"labelToolTip": "Nagrywanie lokalne jest włączone",
|
||||
"localRecording": "Nagrywanie lokalne",
|
||||
"me": "To ja",
|
||||
"messages": {
|
||||
"engaged": "Włączono nagrywanie lokalne.",
|
||||
"finished": "",
|
||||
"finishedModerator": "",
|
||||
"finished": "Sesja nagrywania {{token}} została zakończona. Proszę przesłać nagrane pliki do moderatora.",
|
||||
"finishedModerator": "Sesja nagrywania {{token}} została zakończona. Nagranie lokalnej ścieżki zostało zapisane. Poproś pozostałych uczestników, aby przesłali swoje nagrania.",
|
||||
"notModerator": "Nie jesteś moderatorem. Nie możesz rozpoczynać i zatrzymywać lokalnego nagrywania."
|
||||
},
|
||||
"moderator": "Moderujący",
|
||||
"moderator": "Moderator",
|
||||
"no": "Nie",
|
||||
"participant": "Uczestnik",
|
||||
"participantStats": "Statystyki uczestników",
|
||||
@@ -422,10 +467,10 @@
|
||||
"connectedOneMember": "{{name}} dołączył do spotkania",
|
||||
"connectedThreePlusMembers": "{{name}} i {{count}} innych osób dołączyło do spotkania",
|
||||
"connectedTwoMembers": "{{first}} i {{second}} dołączyli do spotkania",
|
||||
"disconnected": "rozłączone",
|
||||
"disconnected": "Rozłączono",
|
||||
"focus": "Fokus konferencji",
|
||||
"focusFail": "{{component}} jest niedostępny - ponowienie w ciągu {{ms}} sec",
|
||||
"grantedTo": "Prawa moderatora przyznane {{to}}!",
|
||||
"grantedTo": "Prawa moderatora przyznane dla {{to}}!",
|
||||
"invitedOneMember": "{{name}} został zaproszony",
|
||||
"invitedThreePlusMembers": "{{name}} i {{count}} innych osób zostało zaproszone",
|
||||
"invitedTwoMembers": "{{first}} i {{second}} zostali zaproszeni",
|
||||
@@ -442,16 +487,56 @@
|
||||
"somebody": "Ktoś",
|
||||
"startSilentTitle": "Dołączyłeś bez wyjścia dźwiękowego!",
|
||||
"startSilentDescription": "Ponownie dołącz do spotkania, aby włączyć dźwięk",
|
||||
"suboptimalBrowserWarning": "",
|
||||
"suboptimalBrowserWarning": "Obawiamy się, że Twoje wrażenia ze spotkania nie będą zbyt dobre. Staramy się poprawić tą sytuację, a póki co użyj do spotkania jednej z <a href='{{recommendedBrowserPageLink}}' target='_blank'>przeglądarek w pełni obsługiwanych</a>.",
|
||||
"suboptimalExperienceTitle": "Ostrzeżenie przeglądarki",
|
||||
"unmute": "Wyłącz wyciszenie",
|
||||
"newDeviceCameraTitle": "Wykryto nową kamerę",
|
||||
"newDeviceAudioTitle": "Wykryto nowe urządzenie dźwiękowe",
|
||||
"newDeviceAction": "Użyj"
|
||||
"newDeviceAction": "Użyj",
|
||||
"OldElectronAPPTitle": "Luka bezpieczeństwa!",
|
||||
"oldElectronClientDescription1": "Najprawdopodobniej używasz starej wersji klienta Jitsi Meet, który jest podatny na luki bezpieczeństwa. Proszę zaktualizować do ",
|
||||
"oldElectronClientDescription2": "najnowszej wersji",
|
||||
"oldElectronClientDescription3": " teraz!"
|
||||
},
|
||||
"passwordSetRemotely": "wybrane przez innego uczestnika",
|
||||
"passwordDigitsOnly": "",
|
||||
"passwordDigitsOnly": "Do {{number}} cyfr",
|
||||
"poweredby": "napędzane dzięki",
|
||||
"prejoin": {
|
||||
"audioAndVideoError": "Błąd audio i wideo:",
|
||||
"audioOnlyError": "Błąd audio:",
|
||||
"audioTrackError": "Nie można utworzyć ścieżki audio.",
|
||||
"calling": "Wybieranie",
|
||||
"callMe": "Zadzwoń do mnie",
|
||||
"callMeAtNumber": "Zadzwoń do mnie pod ten numer:",
|
||||
"configuringDevices": "Konfigurowanie urządzeń...",
|
||||
"connectedWithAudioQ": "Jesteś połączony głosowo?",
|
||||
"copyAndShare": "Kopiuj i udostępnij link spotkania",
|
||||
"dialInMeeting": "Wdzwoń się na spotkanie",
|
||||
"dialInPin": "Wdzwoń się na spotkanie i wprowadź kod PIN:",
|
||||
"dialing": "Wybieranie",
|
||||
"doNotShow": "Nie pokazuj ponownie",
|
||||
"errorDialOut": "Nie udało się wybrać numeru",
|
||||
"errorDialOutDisconnected": "Nie udało się wybrać numeru. Rozłączono",
|
||||
"errorDialOutFailed": "Nie udało się wybrać numeru. Połączenie nieudane",
|
||||
"errorDialOutStatus": "Błąd podczas uzyskiwania stanu połączenia",
|
||||
"errorStatusCode": "Błąd wybierania, kod statusu: {{status}}",
|
||||
"errorValidation": "Weryfikacja numeru zakończona niepowodzeniem",
|
||||
"iWantToDialIn": "Chcę się wdzwonić",
|
||||
"joinAudioByPhone": "Dołącz przez telefon",
|
||||
"joinMeeting": "Dołącz do spotkania",
|
||||
"joinWithoutAudio": "Dołącz bez dzwięku",
|
||||
"initiated": "Połączenie zainicjowane",
|
||||
"linkCopied": "Link skopiowany do schowka",
|
||||
"lookGood": "Wygląda na to, że Twój mikrofon działa poprawnie",
|
||||
"or": "lub",
|
||||
"premeeting": "Przed spotkaniem",
|
||||
"showScreen": "Włącz ekran Przed spotkaniem",
|
||||
"startWithPhone": "Uruchom przez telefon",
|
||||
"screenSharingError": "Błąd udostępniania ekranu:",
|
||||
"videoOnlyError": "Błąd wideo:",
|
||||
"videoTrackError": "Nie można utworzyć ścieżki wideo.",
|
||||
"viewAllNumbers": "zobacz numery"
|
||||
},
|
||||
"presenceStatus": {
|
||||
"busy": "Zajęte",
|
||||
"calling": "Dzwonienie…",
|
||||
@@ -474,8 +559,10 @@
|
||||
},
|
||||
"raisedHand": "Chcesz się odezwać ?",
|
||||
"recording": {
|
||||
"limitNotificationDescriptionWeb": "Ze względu na duże zapotrzebowanie twoje nagrywanie będzie ograniczone do {{limit}} minut. Aby strumieniować bez ograniczeń wybróbuj <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"limitNotificationDescriptionNative": "Ze względu na duże zapotrzebowanie twoje nagrywanie będzie ograniczone do {{limit}} minut. Aby strumieniować bez ograniczeń wybróbuj <3>{{app}}</3>.",
|
||||
"authDropboxText": "Prześlij na Dropbox",
|
||||
"availableSpace": "",
|
||||
"availableSpace": "Dostępna przestrzeń: {{spaceLeft}} MB (około {{duration}} minut nagrania)",
|
||||
"beta": "BETA",
|
||||
"busy": "Pracujemy nad uwolnieniem zasobów nagrywania. Proszę spróbować ponownie za kilka minut.",
|
||||
"busyTitle": "Wszystkie urządzenia nagrywania są obecnie zajete",
|
||||
@@ -484,7 +571,7 @@
|
||||
"expandedOn": "Spotkanie jest obecnie nagrywane.",
|
||||
"expandedPending": "Nagrywanie się rozpoczyna…",
|
||||
"failedToStart": "Nagrywanie nie jest możliwe",
|
||||
"fileSharingdescription": "Współdziel nagranie z uczestnikami spotkania",
|
||||
"fileSharingdescription": "Udostępnij nagranie uczestnikom spotkania",
|
||||
"live": "NA ŻYWO",
|
||||
"loggedIn": "Zalogowano jako {{userName}}",
|
||||
"off": "Nagrywanie zatrzymane",
|
||||
@@ -497,24 +584,31 @@
|
||||
"serviceName": "Usługa nagrywania",
|
||||
"signIn": "Zaloguj się",
|
||||
"signOut": "Wyloguj się",
|
||||
"unavailable": "",
|
||||
"unavailable": "Ups! {{serviceName}} w tej chwili niedostępny. Próbujemy rozwiązać ten problem. Spróbuj ponownie później.",
|
||||
"unavailableTitle": "Nagrywanie niedostępne"
|
||||
},
|
||||
"sectionList": {
|
||||
"pullToRefresh": "Przeciągnij, aby odświeżyć"
|
||||
},
|
||||
"security": {
|
||||
"about": "Możesz dodać a $t(lockRoomPassword) do spotkania. Uczestnicy będą musieli wprowadzić $t(lockRoomPassword) zanim zostaną dołączeni do spotkania.",
|
||||
"aboutReadOnly": "Uczestnicy posiadający uprawnienia do moderacji mogą ustawić $t(lockRoomPassword) do spotkania. Uczestnicy będą musieli wprowadzić $t(lockRoomPassword) zanim zostaną dołączeni do spotkania.",
|
||||
"insecureRoomNameWarning": "Nazwa pokoju nie jest bezpieczna. Niepowołaniu uczestnicy mogą dołączyć do spotkania. Proszę rozważyć ustawienie hasła spotkania używając przycisku Opcje zabezpieczeń.",
|
||||
"securityOptions": "Opcje zabezpieczeń"
|
||||
},
|
||||
"settings": {
|
||||
"calendar": {
|
||||
"about": "",
|
||||
"about": "{{appName}} integracji kalendarza służy do bezpiecznego dostępu do kalendarza, aby można było odczytywać nadchodzące wydarzenia.",
|
||||
"disconnect": "Rozłącz",
|
||||
"microsoftSignIn": "Zaloguj się z Microsoft",
|
||||
"signedIn": "",
|
||||
"signedIn": "Dostęp do wydarzeń kalendarza dla {{email}}. Kliknij poniższy przycisk Rozłącz aby zatrzymać dostęp do wydarzeń kalendarza.",
|
||||
"title": "Kalendarz"
|
||||
},
|
||||
"devices": "Urządzenia",
|
||||
"followMe": "Wszyscy widzą mnie",
|
||||
"language": "Język",
|
||||
"loggedIn": "Zalogowano jako {{name}}",
|
||||
"microphones": "Mikrofony",
|
||||
"moderator": "Moderacja",
|
||||
"more": "Więcej",
|
||||
"name": "Nazwa",
|
||||
@@ -522,41 +616,45 @@
|
||||
"selectAudioOutput": "Wyjście audio",
|
||||
"selectCamera": "Kamera",
|
||||
"selectMic": "Mikrofon",
|
||||
"speakers": "Głośniki",
|
||||
"startAudioMuted": "Wycisz wszystkich dołączających",
|
||||
"startVideoMuted": "Ukryj wszystkich dołączających",
|
||||
"title": "Ustawienia"
|
||||
},
|
||||
"settingsView": {
|
||||
"advanced": "",
|
||||
"advanced": "Zaawansowane",
|
||||
"alertOk": "OK",
|
||||
"alertCancel": "Anuluj",
|
||||
"alertTitle": "Uwaga",
|
||||
"alertURLText": "Wprowadzony adres URL serwera jest nieprawidłowy",
|
||||
"buildInfoSection": "Informacja o kompilacji",
|
||||
"conferenceSection": "Konferencja",
|
||||
"disableCallIntegration": "",
|
||||
"disableP2P": "",
|
||||
"disableCallIntegration": "Wyłącz natywną integrację połczeń tel.",
|
||||
"disableP2P": "Wyłącz tryb Peer-To-Peer",
|
||||
"disableCrashReporting": "Wyłącz raportowanie błędów",
|
||||
"disableCrashReportingWarning": "Czy na pewno chcesz wyłączyć raportowanie błędów? Ustawienie zacznie funkcjonować po restarcie aplikacji.",
|
||||
"displayName": "Wyświetlana nazwa",
|
||||
"email": "E-mail",
|
||||
"header": "Ustawienia",
|
||||
"profileSection": "Profil",
|
||||
"serverURL": "Adres URL serwera",
|
||||
"showAdvanced": "",
|
||||
"showAdvanced": "Pokaż ustawienia zawansowane",
|
||||
"startWithAudioMuted": "Rozpocznij z wyciszonym dźwiękiem",
|
||||
"startWithVideoMuted": "Rozpocznij z wyłączonym obrazem",
|
||||
"version": "Wersja"
|
||||
},
|
||||
"share": {
|
||||
"dialInfoText": "",
|
||||
"dialInfoText": "\n\n=====\n\nChcesz wdzwonić się ze swojego telefonu?\n\n{{defaultDialInNumber}}Kliknij w ten link aby zobaczyć numery wdzwaniania na to spotkanie\n{{dialInfoPageUrl}}",
|
||||
"mainText": "Kliknij na poniższy odnośnik, aby dołączyć do spotkania:\n{{roomUrl}}"
|
||||
},
|
||||
"speaker": "Głośnik",
|
||||
"speaker": "Mówca",
|
||||
"speakerStats": {
|
||||
"hours": "{{count}} godz.",
|
||||
"minutes": "{{count}} min.",
|
||||
"name": "Nazwa",
|
||||
"seconds": "{{count}} sek.",
|
||||
"speakerStats": "Statystyki mówców",
|
||||
"speakerTime": ""
|
||||
"speakerTime": "Czas mówcy"
|
||||
},
|
||||
"startupoverlay": {
|
||||
"policyText": " ",
|
||||
@@ -576,70 +674,89 @@
|
||||
"chat": "Przełączanie okna rozmowy",
|
||||
"document": "Przełączanie wspólnego dokumentu",
|
||||
"download": "Pobierz nasze aplikacje",
|
||||
"embedMeeting": "Osadź spotkanie",
|
||||
"e2ee": "Szyfrowanie End-to-End",
|
||||
"feedback": "Zostaw swoją opinię",
|
||||
"fullScreen": "Przełączanie trybu pełnoekranowego",
|
||||
"grantModerator": "Przyznaj prawa moderowania",
|
||||
"hangup": "Zostaw rozmowę",
|
||||
"help": "Pomoc",
|
||||
"invite": "Zapraszaj ludzi",
|
||||
"invite": "Zaproś uczestników",
|
||||
"kick": "Usuń uczestnika",
|
||||
"lobbyButton": "Włącz/wyłącz tryb lobby",
|
||||
"localRecording": "Przełączanie lokalnych urządzeń sterujących zapisem danych",
|
||||
"lockRoom": "Przełączenie hasła spotkania",
|
||||
"moreActions": "Przełączanie menu więcej działań",
|
||||
"moreActionsMenu": "Więcej działań w menu",
|
||||
"moreOptions": "Pokaż więcej opcji",
|
||||
"mute": "Uruchamianie wyciszonego audycji",
|
||||
"muteEveryone": "Wycisz wszystkich",
|
||||
"pip": "Tryb przełączania obrazu-w-obrazie",
|
||||
"privateMessage": "Wyślij wiadomość prywatną",
|
||||
"profile": "Edytuj swój profil",
|
||||
"raiseHand": "Przełączyć rękę w górę",
|
||||
"recording": "Przełączanie nagrywania",
|
||||
"remoteMute": "Wycisz uczestnika",
|
||||
"security": "Opcje zabezpieczeń",
|
||||
"Settings": "Ustawienia przełączania",
|
||||
"sharedvideo": "Przełącz udostępnianie obrazu na YouTube",
|
||||
"shareRoom": "Zaproś kogoś",
|
||||
"shareYourScreen": "Przełączanie podziału ekranu",
|
||||
"shortcuts": "Przełączanie skrótów klawiszowych",
|
||||
"show": "",
|
||||
"show": "Pokaż na scenie",
|
||||
"speakerStats": "Przełączanie statystyk dotyczących mówców",
|
||||
"tileView": "Przełącz widok kafelkowy",
|
||||
"toggleCamera": "Przełączanie kamery",
|
||||
"toggleFilmstrip": "Przełącz filmstrip",
|
||||
"videomute": "Przełączanie wyciszonego filmu wideo",
|
||||
"videoblur": "Przełącz rozmazanie obrazu"
|
||||
},
|
||||
"addPeople": "Dodaj ludzi do swojego telefonu",
|
||||
"addPeople": "Dodaj ludzi do swojej rozmowy",
|
||||
"audioOnlyOff": "Wyłącz tryb słabego łącza",
|
||||
"audioOnlyOn": "Włącz tryb słabego łącza",
|
||||
"audioRoute": "Wybierz urządzenie dźwiękowe",
|
||||
"authenticate": "Uwierzytelnianie",
|
||||
"callQuality": "Zarządzanie jakością obrazu",
|
||||
"chat": "Otwórz / Zamknij rozmowę",
|
||||
"closeChat": "Zamknij rozmowę",
|
||||
"documentClose": "Zamknij wspólny dokument",
|
||||
"documentOpen": "Otwarty współdzielony dokument",
|
||||
"chat": "Otwórz / Zamknij okno czatu",
|
||||
"closeChat": "Zamknij czat",
|
||||
"documentClose": "Zamknij udostępniony dokument",
|
||||
"documentOpen": "Otwarty udostępniony dokument",
|
||||
"download": "Pobierz nasze aplikacje",
|
||||
"enterFullScreen": "Wyświetlanie pełnego ekranu",
|
||||
"enterTileView": "Wejdź w kafelkowy widok",
|
||||
"exitFullScreen": "Wyświetlanie pełnego ekranu",
|
||||
"exitTileView": "Wyjdź z kafelkowego widoku",
|
||||
"e2ee": "Szyfrowanie End-to-End",
|
||||
"embedMeeting": "Osadź spotkanie",
|
||||
"enterFullScreen": "Wyświetl na pełnym ekranie",
|
||||
"enterTileView": "Wyświetl widok kafelkowy",
|
||||
"exitFullScreen": "Zamknij pełny ekran",
|
||||
"exitTileView": "Zamknij widok kafelkowy",
|
||||
"feedback": "Zostaw swoją opinię",
|
||||
"hangup": "Opuść",
|
||||
"hangup": "Opuść spotkanie",
|
||||
"help": "Pomoc",
|
||||
"invite": "Zapraszaj ludzi",
|
||||
"invite": "Zaproś uczestników",
|
||||
"lobbyButtonDisable": "Wyłącz tryb lobby",
|
||||
"lobbyButtonEnable": "Włącz tryb lobby",
|
||||
"login": "Zaloguj",
|
||||
"logout": "Wyloguj",
|
||||
"lowerYourHand": "Opuść rękę",
|
||||
"moreActions": "Więcej działań",
|
||||
"moreOptions": "Więcej opcji",
|
||||
"mute": "Włącz / Wyłącz mikrofon",
|
||||
"noAudioSignalTitle": "",
|
||||
"noAudioSignalDesc": "",
|
||||
"noAudioSignalDescSuggestion": "",
|
||||
"openChat": "Otwórz rozmowę",
|
||||
"muteEveryone": "Wycisz wszystkich",
|
||||
"noAudioSignalTitle": "Brak sygnału audio!",
|
||||
"noAudioSignalDesc": "Jeżeli celowo nie wyciszyłeś mikrofonu w ustawieniach systemowych spróbuj innego urządzenia.",
|
||||
"noAudioSignalDescSuggestion": "Jeżeli celowo nie wyciszyłeś mikrofonu w ustawieniach systemowych spróbuj sugerowanego urządzenia.",
|
||||
"noAudioSignalDialInDesc": "Możesz się również wdzwonić korzystając z numerów:",
|
||||
"noAudioSignalDialInLinkDesc": "Numery wdzwaniania",
|
||||
"noisyAudioInputTitle": "Twój mikrofon powoduje zakłócenia!",
|
||||
"noisyAudioInputDesc": "Wygląda na to, że Twój mikrofon powoduje zakłócenia.",
|
||||
"openChat": "Otwórz czat",
|
||||
"pip": "Wprowadź tryb obrazu w obrazie",
|
||||
"privateMessage": "Wyślij wiadomość prywatną",
|
||||
"profile": "Edytuj swój profil",
|
||||
"raiseHand": "Podnieś / Opuść rękę",
|
||||
"raiseYourHand": "Podnieś rękę",
|
||||
"security": "Opcje zabezpieczeń",
|
||||
"Settings": "Ustawienia",
|
||||
"sharedvideo": "Udostępnij wideo w Youtube",
|
||||
"sharedvideo": "Udostępnij wideo z Youtube",
|
||||
"shareRoom": "Zaproś kogoś",
|
||||
"shortcuts": "Wyświetl skróty",
|
||||
"speakerStats": "Statystyki mówców",
|
||||
@@ -657,7 +774,7 @@
|
||||
},
|
||||
"transcribing": {
|
||||
"ccButtonTooltip": "Uruchom / Zatrzymaj napisy",
|
||||
"error": "Przepisywanie się nie powiodło. Proszę spróbować ponownie.",
|
||||
"error": "Przepisywanie nie powiodło się. Proszę spróbować ponownie.",
|
||||
"expandedLabel": "Transkrypcja jest obecnie włączona",
|
||||
"failedToStart": "Błąd uruchomienia transkrypcji",
|
||||
"labelToolTip": "Spotkanie jest transkrybowane",
|
||||
@@ -680,7 +797,7 @@
|
||||
"safariGrantPermissions": "Wybierz <b><i>OK</i></b>, gdy przegladarka zapyta o pozwolenie."
|
||||
},
|
||||
"videoSIPGW": {
|
||||
"busy": "",
|
||||
"busy": "Pracujemy nad uwolnieniem zasobów. Prosimy spróbować za kilka minut.",
|
||||
"busyTitle": "Usługa pokoju jest obecnie zajęta",
|
||||
"errorAlreadyInvited": "{{displayName}} jest już zaproszony",
|
||||
"errorInvite": "Konferencja nie została jeszcze ustanowiona. Prosimy spróbować ponownie później.",
|
||||
@@ -709,13 +826,15 @@
|
||||
},
|
||||
"videothumbnail": {
|
||||
"domute": "Wyciszenie",
|
||||
"domuteOthers": "Wycisz pozostałych",
|
||||
"flip": "Odwrócenie",
|
||||
"grantModerator": "Przyznaj prawa moderatora",
|
||||
"kick": "Wyrzuć",
|
||||
"moderator": "Moderujący",
|
||||
"moderator": "Moderator",
|
||||
"mute": "Uczestnik ma wyciszone audio",
|
||||
"muted": "Wyciszony",
|
||||
"remoteControl": "Kontrola zdalna",
|
||||
"show": "",
|
||||
"show": "Pokaż na scenie",
|
||||
"videomute": "Uczestnik zatrzymał kamerę"
|
||||
},
|
||||
"welcomepage": {
|
||||
@@ -730,22 +849,64 @@
|
||||
},
|
||||
"calendar": "Kalendarz",
|
||||
"connectCalendarButton": "Podłącz swój kalendarz",
|
||||
"connectCalendarText": "",
|
||||
"connectCalendarText": "Podłącz swój kalendarz aby przeglądać wszystkie Twoje spotkania w {{app}}. Dodaj spotkania {{provider}} do swojego kalendarza i uruchamiaj je jednym kliknięciem.",
|
||||
"enterRoomTitle": "Rozpocznij nowe spotkanie",
|
||||
"roomNameAllowedChars": "Nazwa spotkania nie powinna zawierać żadnego z tych znaków: ?, &, :, ', \", %, #.",
|
||||
"go": "IDŹ",
|
||||
"goSmall": "IDŹ",
|
||||
"join": "",
|
||||
"getHelp": "Pomoc",
|
||||
"go": "Dalej",
|
||||
"goSmall": "Dalej",
|
||||
"info": "Informacje",
|
||||
"join": "Utwórz / Dołącz",
|
||||
"moderatedMessage": "lub <a href=\"{{url}}\" rel=\"noopener noreferrer\" target=\"_blank\">zarezerwuj adres spotkania</a> jeśli jesteś jedynym moderatorem.",
|
||||
"privacy": "Polityka prywatności",
|
||||
"recentList": "Niedawno",
|
||||
"recentListDelete": "Usuń",
|
||||
"recentListEmpty": "Twoja ostatnia lista jest obecnie pusta. Rozmawiaj ze swoim zespołem, a wszystkie ostatnie spotkania znajdziesz tutaj.",
|
||||
"reducedUIText": "Witamy w {{app}}!",
|
||||
"roomNameAllowedChars": "Nazwa spotkania nie powinna zawierać znaków: ?, &, :, ', \", %, #.",
|
||||
"roomname": "Podaj nazwę sali konferencyjnej",
|
||||
"roomnameHint": "Wprowadź nazwę lub adres URL pokoju, do którego chcesz dołączyć. Możesz wymyślić nazwę, po prostu pozwól, aby osoby, z którymi się spotykasz, znały ją tak, aby wpisały tę samą nazwę.",
|
||||
"sendFeedback": "Wyślij opinię",
|
||||
"terms": "Warunki korzystania",
|
||||
"title": "Bezpieczna, w pełni funkcjonalna i całkowicie bezpłatna wideokonferencja"
|
||||
},
|
||||
"lonelyMeetingExperience": {
|
||||
"button": "Zaproś innych uczestników",
|
||||
"youAreAlone": "Tylko ty uczestniczysz w tym spotkaniu"
|
||||
},
|
||||
"helpView": {
|
||||
"header": "Centrum pomocy"
|
||||
},
|
||||
"lobby": {
|
||||
"knockingParticipantList": "Oczekujący uczestnicy",
|
||||
"allow": "Zezwól",
|
||||
"backToKnockModeButton": "Brak hasła, poproś o dołączenie",
|
||||
"dialogTitle": "Lobby",
|
||||
"disableDialogContent": "Lobby jest aktualnie włączone. Ta funkcjonalność zapewnia, że niechciani uczetnicy nie mogą dołączyć do spotkania. Czy chcesz wyłączyć tę opcję?",
|
||||
"disableDialogSubmit": "Wyłącz",
|
||||
"emailField": "Podaj adres email",
|
||||
"enableDialogPasswordField": "Ustaw hasło (opcjonalne)",
|
||||
"enableDialogSubmit": "Włącz",
|
||||
"enableDialogText": "Lobby umożliwia zabezpieczenie spotkania przed dostępem niechcianych osób. Uczestnik może dołączyć do spotkania tylko po zaakceptowaniu przez moderatora.",
|
||||
"enterPasswordButton": "Hasło spotkania",
|
||||
"enterPasswordTitle": "Wprowadź hasło aby dołączyć",
|
||||
"invalidPassword": "Nieprawidłowe hasło",
|
||||
"joiningMessage": "Dołączysz do spotkania po zaakceptowaniu Twojej prośby",
|
||||
"joinWithPasswordMessage": "Dołączanie z hasłem, proszę czekać...",
|
||||
"joinRejectedMessage": "Twoja prośba została odrzucona przez moderatora.",
|
||||
"joinTitle": "Dołącz do spotkania",
|
||||
"joiningTitle": "Dołączanie do spotkania...",
|
||||
"joiningWithPasswordTitle": "Dołączanie z hasłem...",
|
||||
"knockButton": "Poproś o dołączenie",
|
||||
"knockTitle": "Ktoś chce dołączyć do spotkania",
|
||||
"nameField": "Podaj swoje imię",
|
||||
"notificationLobbyAccessDenied": "{{targetParticipantName}} został odrzucony przez {{originParticipantName}}",
|
||||
"notificationLobbyAccessGranted": "{{targetParticipantName}} został zaakceptowany przez {{originParticipantName}}",
|
||||
"notificationLobbyDisabled": "Lobby zostało wyłączone przez {{originParticipantName}}",
|
||||
"notificationLobbyEnabled": "Lobby zostało włączone przez {{originParticipantName}}",
|
||||
"notificationTitle": "Lobby",
|
||||
"passwordField": "Wprowadź hasło",
|
||||
"passwordJoinButton": "Dołącz",
|
||||
"reject": "Odrzuć",
|
||||
"toggleLabel": "Włącz / Wyłącz lobby"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -269,7 +269,7 @@
|
||||
"userPassword": "senha do usuário",
|
||||
"WaitForHostMsg": "A conferência <b>{{room}}</b> ainda não começou. Se você é o anfitrião, faça a autenticação. Do contrário, aguarde a chegada do anfitrião.",
|
||||
"WaitForHostMsgWOk": "A conferência <b>{{room}}</b> ainda não começou. Se você é o anfitrião, pressione Ok para autenticar. Do contrário, aguarde a chegada do anfitrião.",
|
||||
"WaitingForHost": "Esperando o hospedeiro...",
|
||||
"WaitingForHost": "Esperando o anfitrião...",
|
||||
"Yes": "Sim",
|
||||
"yourEntireScreen": "Toda sua tela",
|
||||
"screenSharingAudio": "Compartilhar áudio",
|
||||
|
||||
@@ -1,28 +1,43 @@
|
||||
{
|
||||
"addPeople": {
|
||||
"add": "Пригласить",
|
||||
"addContacts": "Пригласите других людей",
|
||||
"copyInvite": "Скопировать приглашение на встречу",
|
||||
"copyLink": "Скопировать ссылку на встречу",
|
||||
"copyStream": "Скопировать ссылку на прямую транасляцию",
|
||||
"countryNotSupported": "Эта страна пока не поддерживается.",
|
||||
"countryReminder": "Вызов не в США? Пожалуйста, убедитесь, что указали код страны!",
|
||||
"defaultEmail": "Ваш адрес электронной почты",
|
||||
"disabled": "Поиск не дал результата.",
|
||||
"failedToAdd": "Не удалось добавить участников",
|
||||
"footerText": "Вызов номера отключен.",
|
||||
"googleEmail": "Электронная почта Google",
|
||||
"inviteMoreHeader": "Сейчас вы одни в этой встрече",
|
||||
"inviteMoreMailSubject": "Присоединиться к встрече {{appName}} ",
|
||||
"inviteMorePrompt": "Пригласить других людей",
|
||||
"linkCopied": "Ссылка скопирована в буфер обмена",
|
||||
"loading": "Поиск людей и номеров телефонов",
|
||||
"loadingNumber": "Проверка номера телефона",
|
||||
"loadingPeople": "Поиск людей для приглашения",
|
||||
"noResults": "Поиск не дал результата",
|
||||
"noValidNumbers": "Пожалуйста, введите номер телефона",
|
||||
"outlookEmail": "Электронная почта Outlook",
|
||||
"searchNumbers": "Добавить номера телефонов",
|
||||
"searchPeople": "Поиск людей",
|
||||
"searchPeopleAndNumbers": "Поиск людей или добавление их телефонов",
|
||||
"shareInvite": "Поделиться приглашением на встречу",
|
||||
"shareLink": "Поделиться ссылкой на встречу чтобы пригласить других",
|
||||
"shareStream": "Поделиться ссылкой на прямую трансляцию",
|
||||
"telephone": "Номер: {{number}}",
|
||||
"title": "Пригласить людей на эту встречу"
|
||||
"title": "Пригласить людей на эту встречу",
|
||||
"yahooEmail": "Электронная почта Yahoo"
|
||||
},
|
||||
"audioDevices": {
|
||||
"bluetooth": "Bluetooth",
|
||||
"headphones": "Наушники",
|
||||
"none": "Не обнаружены звуковые устройства",
|
||||
"phone": "Телефон",
|
||||
"speaker": "Колонка",
|
||||
"none": "Не обнаружены звуковые устройства"
|
||||
"speaker": "Колонка"
|
||||
},
|
||||
"audioOnly": {
|
||||
"audioOnly": "Только звук"
|
||||
@@ -48,21 +63,21 @@
|
||||
"chat": {
|
||||
"error": "Ошибка: Ваше сообщение не было отправлено. Причина: {{error}}",
|
||||
"fieldPlaceHolder": "Введите здесь ваше сообщение",
|
||||
"messagebox": "Введите сообщение",
|
||||
"messageTo": "Личное сообщение пользователю {{recipient}}",
|
||||
"noMessagesMessage": "В конференции пока нет никаких сообщений. Начните разговор!",
|
||||
"messagebox": "Введите сообщение",
|
||||
"nickname": {
|
||||
"popover": "Выберите имя",
|
||||
"title": "Введите имя для использования чата"
|
||||
},
|
||||
"noMessagesMessage": "В конференции пока нет никаких сообщений. Начните разговор!",
|
||||
"privateNotice": "Личное сообщение пользователю {{recipient}}",
|
||||
"title": "Чат",
|
||||
"you": "вы"
|
||||
},
|
||||
"chromeExtensionBanner": {
|
||||
"installExtensionText": "Установите расширение для интеграции с Google Календарь и Office 365",
|
||||
"buttonText": "Установить расширение Chrome",
|
||||
"dontShowAgain": "Не показывай мне это снова"
|
||||
"dontShowAgain": "Не показывай мне это снова",
|
||||
"installExtensionText": "Установите расширение для интеграции с Google Календарь и Office 365"
|
||||
},
|
||||
"connectingOverlay": {
|
||||
"joiningRoom": "Пытаемся присоединиться к вашей конференции..."
|
||||
@@ -77,10 +92,11 @@
|
||||
"DISCONNECTED": "Отключено",
|
||||
"DISCONNECTING": "Отключение",
|
||||
"ERROR": "Ошибка",
|
||||
"RECONNECTING": "Проблема с сетью. Переподключение...",
|
||||
"FETCH_SESSION_ID": "Получение идентификатора сеанса…",
|
||||
"GET_SESSION_ID_ERROR": "Ошибка получения идентификатора сеанса: {{code}}",
|
||||
"GOT_SESSION_ID": "Получение идентификатора сеанса… Готово",
|
||||
"LOW_BANDWIDTH": "Видео для {{displayName}} приостановлено из-за низкой пропускной способности",
|
||||
"GOT_SESSION_ID": "Получение идентификатора сеанса … Готово",
|
||||
"GET_SESSION_ID_ERROR": "Ошибка получения идентификатора сеанса: {{code}}"
|
||||
"RECONNECTING": "Проблема с сетью. Переподключение..."
|
||||
},
|
||||
"connectionindicator": {
|
||||
"address": "Адрес:",
|
||||
@@ -115,8 +131,7 @@
|
||||
"status": "Связь:",
|
||||
"transport_0": "Метод отправки:",
|
||||
"transport_1": "Метода отправки:",
|
||||
"transport_2": "Методов отправки:",
|
||||
"e2e_rtt": ""
|
||||
"transport_2": "Методов отправки:"
|
||||
},
|
||||
"dateUtils": {
|
||||
"earlier": "Ранее",
|
||||
@@ -128,6 +143,9 @@
|
||||
"description": "Ничего не случилось? Мы попытались запустить вашу встречу в настольном приложении {{app}}. Повторите попытку или запустите ее в веб-приложении {{app}}.",
|
||||
"descriptionWithoutWeb": "Ничего не произошло? Мы попытались запустить вашу конференцию в настольном приложении {{app}}",
|
||||
"downloadApp": "Скачать приложение",
|
||||
"ifDoNotHaveApp": "Если у вас еще нет приложения:",
|
||||
"ifHaveApp": "Если вы уже установили приложение:",
|
||||
"joinInApp": "Подключиться к этой встрече используя приложение",
|
||||
"launchWebButton": "Запустить в браузере",
|
||||
"openApp": "Перейти к приложению",
|
||||
"title": "Запуск вашей встречи в {{app}}...",
|
||||
@@ -147,15 +165,29 @@
|
||||
"selectADevice": "Выбор устройства",
|
||||
"testAudio": "Протестировать звук"
|
||||
},
|
||||
"dialOut": {
|
||||
"statusMessage": "сейчас {{status}}"
|
||||
},
|
||||
"dialog": {
|
||||
"Back": "Назад",
|
||||
"Cancel": "Отмена",
|
||||
"IamHost": "Я организатор",
|
||||
"Ok": "Ok",
|
||||
"Remove": "Удалить",
|
||||
"Share": "Поделиться",
|
||||
"Submit": "ОК",
|
||||
"WaitForHostMsg": "Конференция <b>{{room}}</b> еще не началась. Если вы организатор, пожалуйста, авторизируйтесь. В противном случае дождитесь организатора.",
|
||||
"WaitForHostMsgWOk": "Конференция <b>{{room}}</b> еще не началась. Если вы организатор, пожалуйста, нажмите Ok для аутентификации. В противном случае, дождитесь организатора.",
|
||||
"WaitingForHost": "Ждем организатора...",
|
||||
"Yes": "Да",
|
||||
"accessibilityLabel": {
|
||||
"liveStreaming": "Трансляция"
|
||||
},
|
||||
"add": "Добавить",
|
||||
"allow": "Разрешить",
|
||||
"alreadySharedVideoMsg": "Другой участник уже поделился ссылкой на видео. Данная конференция позволяет одновременно делиться только одним видео.",
|
||||
"alreadySharedVideoTitle": "Допускается показ только одного видео",
|
||||
"applicationWindow": "Окно приложения",
|
||||
"Back": "Назад",
|
||||
"cameraConstraintFailedError": "Камера не отвечает определенным требованиям.",
|
||||
"cameraNotFoundError": "Камера не обнаружена.",
|
||||
"cameraNotSendingData": "Ошибка доступа к камере. Пожалуйста, проверьте, не использует ли камеру какая-нибудь другая программа. Вы можете также выбрать другое устройство из меню настроек или попробовать перезапустить приложение.",
|
||||
@@ -163,7 +195,6 @@
|
||||
"cameraPermissionDeniedError": "Нет доступа к камере. Вы можете участвовать во встрече, но другие не будут вас видеть. Используйте значок камеры в адресной строке браузера, чтобы устранить проблему.",
|
||||
"cameraUnknownError": "Неизвестная ошибка использования камеры.",
|
||||
"cameraUnsupportedResolutionError": "Ваша камера не поддерживает необходимое разрешение видео.",
|
||||
"Cancel": "Отмена",
|
||||
"close": "Закрыть",
|
||||
"conferenceDisconnectMsg": "Следует проверить интернет-соединение. Попытка восстановления связи через {{seconds}} с.",
|
||||
"conferenceDisconnectTitle": "Вы отключены.",
|
||||
@@ -176,21 +207,29 @@
|
||||
"connectErrorWithMsg": "Ошибка. Невозможно установить связь для вашей встречи: {{msg}}",
|
||||
"connecting": "Подключение",
|
||||
"contactSupport": "Связь с поддержкой",
|
||||
"copied": "Скопировано",
|
||||
"copy": "Копировать",
|
||||
"dismiss": "Отклонить",
|
||||
"displayNameRequired": "Привет! Как тебя зовут?",
|
||||
"done": "Готово",
|
||||
"e2eeDescription": "Сквозное шифрование в настоящее время является ЭКСПЕРИМЕНТАЛЬНЫМ. Имейте в виду, что включение сквозного шифрования эффективно отключит сервисы, предоставляемые на стороне сервера, такие как: запись, потоковое вещание и участие по телефону. Также имейте в виду, что собрание будет работать только для людей, присоединяющихся из браузеров с поддержкой вставляемых потоков.",
|
||||
"e2eeLabel": "E2EE ключ",
|
||||
"e2eeNoKey": "Отсутствует",
|
||||
"e2eeSet": "Установить",
|
||||
"e2eeToggleSet": "Установить ключ",
|
||||
"e2eeWarning": "ПРЕДУПРЕЖДЕНИЕ. Похоже, что не все участники этой встречи поддерживают сквозное шифрование. Если вы включите его, они не смогут вас ни видеть, ни слышать.",
|
||||
"enterDisplayName": "Пожалуйста, введите свое имя",
|
||||
"error": "Ошибка",
|
||||
"externalInstallationMsg": "Вам необходимо установить наше дополнение для совместного использования рабочего стола.",
|
||||
"externalInstallationTitle": "Требуется расширение",
|
||||
"goToStore": "Перейти к интернет-магазину",
|
||||
"gracefulShutdown": "Технические работы. Пожалуйста, попробуйте позже.",
|
||||
"IamHost": "Я организатор",
|
||||
"incorrectRoomLockPassword": "Неверный пароль",
|
||||
"grantModeratorDialog": "Вы уверены, что хотите сделать этого участника модератором?",
|
||||
"grantModeratorTitle": "Сделать модератором",
|
||||
"incorrectPassword": "Ошибка имени пользователя или пароля",
|
||||
"inlineInstallationMsg": "Вам необходимо установить наше дополнение для совместного использования рабочего стола.",
|
||||
"incorrectRoomLockPassword": "Неверный пароль",
|
||||
"inlineInstallExtension": "Установить",
|
||||
"inlineInstallationMsg": "Вам необходимо установить наше дополнение для совместного использования рабочего стола.",
|
||||
"internalError": "Что-то пошло не так. Ошибка: {{error}}",
|
||||
"internalErrorTitle": "Внутренняя ошибка",
|
||||
"kickMessage": "Вы можете связаться с {{participantDisplayName}} для получения более подробной информации.",
|
||||
@@ -199,6 +238,7 @@
|
||||
"kickParticipantTitle": "Выгнать этого участника?",
|
||||
"kickTitle": "Ай! {{participantDisplayName}} выгнал вас из конференции.",
|
||||
"liveStreaming": "Трансляция",
|
||||
"liveStreamingDisabledBecauseOfActiveRecordingTooltip": "Невозможно пока активна запись",
|
||||
"liveStreamingDisabledForGuestTooltip": "Гости не могут начать трансляцию",
|
||||
"liveStreamingDisabledTooltip": "Возможность трансляции отключена",
|
||||
"lockMessage": "Не удалось запереть конференцию",
|
||||
@@ -214,18 +254,25 @@
|
||||
"micNotSendingDataTitle": "Ваш микрофон отключен системными настройками",
|
||||
"micPermissionDeniedError": "Нет доступа к микрофону. Вы можете участвовать во встрече, но другие не будут вас слышать. Используйте значок камеры в адресной строке браузера, чтобы устранить проблему.",
|
||||
"micUnknownError": "Неизвестная ошибка использования микрофона.",
|
||||
"muteParticipantBody": "Вы не можете включить им звук, но они могут сделать это сами в любое время.",
|
||||
"muteParticipantButton": "Выключить звук",
|
||||
"muteEveryoneDialog": "Вы уверены, что хотите отключить микрофоны у всех? Вы не сможете включить их, но они могут включить себя в любой момент.",
|
||||
"muteEveryoneElseDialog": "После отключения микрофонов у участников вы не сможете включить их, но они могут включить себя в любой момент.",
|
||||
"muteEveryoneElseTitle": "Заглушить всех, за исключением {{whom}}?",
|
||||
"muteEveryoneSelf": "себя",
|
||||
"muteEveryoneStartMuted": "Теперь у всех микрофоны выключены",
|
||||
"muteEveryoneTitle": "Заглушить всех?",
|
||||
"muteParticipantBody": "Вы не можете включить им микрофон, но они могут сделать это сами в любое время.",
|
||||
"muteParticipantButton": "Заглушить",
|
||||
"muteParticipantDialog": "Вы уверены, что хотите отключить микрофон у данного пользователя? Вы не сможете отменить это действие, однако он сможет сам снова включить микрофон в любое время.",
|
||||
"muteParticipantTitle": "Приглушить этого участника?",
|
||||
"Ok": "Ok",
|
||||
"passwordLabel": "$t(lockRoomPasswordUppercase)",
|
||||
"muteParticipantTitle": "Заглушить этого участника?",
|
||||
"passwordLabel": "Встреча была защищена участником. Пожалуйста, введите $t(lockRoomPasswordUppercase) чтобы присоединиться.",
|
||||
"passwordNotSupported": "Установка $t(lockRoomPassword) для конференции не поддерживается.",
|
||||
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) не поддерживается",
|
||||
"passwordRequired": "Требуется $t(lockRoomPasswordUppercase)",
|
||||
"popupError": "Ваш браузер блокирует всплывающие окна этого сайта. Пожалуйста, разрешите всплывающие окна в настройках безопасности браузера и попробуйте снова.",
|
||||
"popupErrorTitle": "Заблокировано всплывающее окно",
|
||||
"readMore": "больше",
|
||||
"recording": "Запись",
|
||||
"recordingDisabledBecauseOfActiveLiveStreamingTooltip": "Невозможно пока активно потоковое вещание",
|
||||
"recordingDisabledForGuestTooltip": "Гости не могут записывать",
|
||||
"recordingDisabledTooltip": "Невозможно начать запись",
|
||||
"rejoinNow": "Подключиться снова",
|
||||
@@ -236,13 +283,15 @@
|
||||
"remoteControlShareScreenWarning": "Если нажмете \"Разрешить\", то поделитесь своим экраном!",
|
||||
"remoteControlStopMessage": "Сессия удаленного управления завершена!",
|
||||
"remoteControlTitle": "Удаленное управление рабочим столом",
|
||||
"Remove": "Удалить",
|
||||
"removePassword": "Убрать $t(lockRoomPassword)",
|
||||
"removeSharedVideoMsg": "Уверены, что хотите убрать видео, которым поделились?",
|
||||
"removeSharedVideoTitle": "Убрать видео",
|
||||
"reservationError": "Ошибка системы резервирования",
|
||||
"reservationErrorMsg": "Код ошибки: {{code}}, сообщение: {{msg}}",
|
||||
"retry": "Повторить",
|
||||
"screenSharingAudio": "Поделиться аудио",
|
||||
"screenSharingFailed": "Ой! Кажется что-то пошло не так, мы не можем начать показ экрана!",
|
||||
"screenSharingFailedTitle": "Сбой показа экрана!",
|
||||
"screenSharingFailedToInstall": "Ошибка установки расширения для показа экрана.",
|
||||
"screenSharingFailedToInstallTitle": "Расширение для показа экрана не установлено",
|
||||
"screenSharingFirefoxPermissionDeniedError": "Что-то пошло не так, когда мы пытались поделиться вашим экраном. Пожалуйста, убедитесь, что вы дали нам разрешение на это. ",
|
||||
@@ -254,7 +303,6 @@
|
||||
"sendPrivateMessageTitle": "Отправить личное сообщение?",
|
||||
"serviceUnavailable": "Служба недоступна",
|
||||
"sessTerminated": "Связь прервана",
|
||||
"Share": "Поделиться",
|
||||
"shareVideoLinkError": "Пожалуйста, укажите корректную ссылку Youtube.",
|
||||
"shareVideoTitle": "Поделиться видео",
|
||||
"shareYourScreen": "Показать экран",
|
||||
@@ -268,7 +316,6 @@
|
||||
"stopRecordingWarning": "Уверены, что хотите остановить запись?",
|
||||
"stopStreamingWarning": "Уверены, что хотите остановить трансляцию?",
|
||||
"streamKey": "Ключ трансляции",
|
||||
"Submit": "ОК",
|
||||
"thankYou": "Спасибо, что используете {{appName}}!",
|
||||
"token": "токен",
|
||||
"tokenAuthFailed": "Извините, вам не разрешено присоединиться к этому сеансу связи.",
|
||||
@@ -276,21 +323,17 @@
|
||||
"transcribing": "Расшифровка",
|
||||
"unlockRoom": "Убрать $t(lockRoomPassword)",
|
||||
"userPassword": "пароль пользователя",
|
||||
"WaitForHostMsg": "Конференция <b>{{room}}</b> еще не началась. Если вы организатор, пожалуйста, авторизируйтесь. В противном случае дождитесь организатора.",
|
||||
"WaitForHostMsgWOk": "Конференция <b>{{room}}</b> еще не началась. Если вы организатор, пожалуйста, нажмите Ok для аутентификации. В противном случае, дождитесь организатора.",
|
||||
"WaitingForHost": "Ждем организатора...",
|
||||
"Yes": "Да",
|
||||
"yourEntireScreen": "Весь экран",
|
||||
"muteEveryoneElseTitle": "Заглушить всех, за исключением {{whom}}?",
|
||||
"screenSharingAudio": "Поделиться аудио",
|
||||
"muteEveryoneSelf": "себя"
|
||||
},
|
||||
"dialOut": {
|
||||
"statusMessage": "сейчас {{status}}"
|
||||
"yourEntireScreen": "Весь экран"
|
||||
},
|
||||
"documentSharing": {
|
||||
"title": "Общий Документ"
|
||||
},
|
||||
"e2ee": {
|
||||
"labelToolTip": "Аудио и видео связь по этому вызову защищена сквозным шифрованием"
|
||||
},
|
||||
"embedMeeting": {
|
||||
"title": "Встроить эту встречу"
|
||||
},
|
||||
"feedback": {
|
||||
"average": "Средне",
|
||||
"bad": "Плохо",
|
||||
@@ -300,6 +343,9 @@
|
||||
"veryBad": "Очень плохо",
|
||||
"veryGood": "Очень хорошо"
|
||||
},
|
||||
"helpView": {
|
||||
"header": "Справка"
|
||||
},
|
||||
"incomingCall": {
|
||||
"answer": "Ответ",
|
||||
"audioCallTitle": "Входящий звонок",
|
||||
@@ -313,8 +359,8 @@
|
||||
"cancelPassword": "Отменить $t(lockRoomPassword)",
|
||||
"conferenceURL": "Ссылка:",
|
||||
"country": "Страна",
|
||||
"dialANumber": "Чтобы присоединиться к конференции, наберите один из этих номеров и введите pin-код",
|
||||
"dialInConferenceID": "PIN:",
|
||||
"dialANumber": "Чтобы присоединиться к конференции, наберите один из этих номеров и введите пин-код",
|
||||
"dialInConferenceID": "ПИН:",
|
||||
"dialInNotSupported": "К сожалению, набор номера в настоящее время не поддерживается.",
|
||||
"dialInNumber": "Номер:",
|
||||
"dialInSummaryError": "Ошибка получения информации о наборе номера. Пожалуйста, повторите попытку позже",
|
||||
@@ -326,6 +372,7 @@
|
||||
"inviteURLFirstPartGeneral": "Вас приглашают присоединиться к конференции.",
|
||||
"inviteURLFirstPartPersonal": "{{name}} приглашает Вас присоединиться к конференции. \n",
|
||||
"inviteURLSecondPart": "\nПрисоединиться к конференции:\n{{url}}\n",
|
||||
"label": "Информация о конференции",
|
||||
"liveStreamURL": "Трансляция:",
|
||||
"moreNumbers": "Больше номеров",
|
||||
"noNumbers": "Нет номеров для набора.",
|
||||
@@ -334,8 +381,13 @@
|
||||
"numbers": "Номера для набора",
|
||||
"password": "$t(lockRoomPasswordUppercase):",
|
||||
"title": "Поделиться",
|
||||
"tooltip": "Поделитесь ссылкой и номером для подключения к этой конференции",
|
||||
"label": "Информация о конференции"
|
||||
"tooltip": "Поделитесь ссылкой и номером для подключения к этой конференции"
|
||||
},
|
||||
"inlineDialogFailure": {
|
||||
"msg": "Небольшая заминка.",
|
||||
"retry": "Попробовать снова",
|
||||
"support": "Поддержка",
|
||||
"supportMsg": "Если это продолжится, свяжитесь с"
|
||||
},
|
||||
"inviteDialog": {
|
||||
"alertText": "Не удалось пригласить некоторых участников.",
|
||||
@@ -345,12 +397,6 @@
|
||||
"searchPlaceholder": "Участник или номер телефона",
|
||||
"send": "Отправить"
|
||||
},
|
||||
"inlineDialogFailure": {
|
||||
"msg": "Небольшая заминка.",
|
||||
"retry": "Попробовать снова",
|
||||
"support": "Поддержка",
|
||||
"supportMsg": "Если это продолжится, свяжитесь с"
|
||||
},
|
||||
"keyboardShortcuts": {
|
||||
"focusLocal": "Фокус на ваше видео",
|
||||
"focusRemote": "Фокус на видео другого участника",
|
||||
@@ -383,23 +429,55 @@
|
||||
"expandedPending": "Начинается прямая трансляция...",
|
||||
"failedToStart": "Ошибка трансляции видео",
|
||||
"getStreamKeyManually": "Прямые трансляций не найдены. Попробуйте получить ключ прямой трансляции от YouTube.",
|
||||
"googlePrivacyPolicy": "Политика конфиденциальности Google",
|
||||
"invalidStreamKey": "Похоже ключ прямой трансляции неверен.",
|
||||
"limitNotificationDescriptionNative": "Ваша трансляция будет ограничена {{limit}} мин. Для неограниченного просмотра попробуйте {{app}}.",
|
||||
"limitNotificationDescriptionWeb": "Из-за высокой нагрузки ваша потоковая передача будет ограничена {{limit}} мин. Для неограниченной потоковой передачи попробуйте <a href={{url}} rel='noopener noreferrer' target='_blank'> {{app}} </a>.",
|
||||
"off": "Трансляция остановлена",
|
||||
"offBy": "{{name}} остановил прямую трансляцию",
|
||||
"on": "Трансляция",
|
||||
"onBy": "{{name}} начал прямую трансляцию",
|
||||
"pending": "Начинаем трансляцию...",
|
||||
"serviceName": "Служба трансляции",
|
||||
"signedInAs": "В настоящее время вы вошли в систему как:",
|
||||
"signIn": "Войти через Google",
|
||||
"signInCTA": "Войдите или введите свой ключ трансляции YouTube.",
|
||||
"signOut": "Выход",
|
||||
"signedInAs": "В настоящее время вы вошли в систему как:",
|
||||
"start": "Начать трансляцию",
|
||||
"streamIdHelp": "Что это?",
|
||||
"unavailableTitle": "Трансляция недоступна",
|
||||
"googlePrivacyPolicy": "Политика конфиденциальности Google",
|
||||
"youtubeTerms": "Условия использования YouTube"
|
||||
},
|
||||
"lobby": {
|
||||
"disableDialogContent": "В настоящее время включен режим лобби. Эта функция гарантирует, что нежелательные участники не смогут присоединиться к вашей встрече. Вы хотите его отключить?",
|
||||
"disableDialogSubmit": "Отключить",
|
||||
"emailField": "Введите ваш адрес электронной почты",
|
||||
"enableDialogPasswordField": "Установите пароль (необязательно)",
|
||||
"enableDialogSubmit": "Включить",
|
||||
"enableDialogText": "Режим лобби позволяет защитить вашу встречу, позволяя людям входить только после официального одобрения модератором.",
|
||||
"enterPasswordButton": "Введите пароль встречи",
|
||||
"enterPasswordTitle": "Введите пароль чтобы присоединиться к встрече",
|
||||
"invalidPassword": "Неверный пароль",
|
||||
"joinRejectedMessage": "Ваш запрос на присоединение был отклонен модератором.",
|
||||
"joinTitle": "Присоединиться к встрече",
|
||||
"joinWithPasswordMessage": "Пытаюсь присоединиться с паролем, подождите...",
|
||||
"joiningMessage": "Вы присоединитесь к встрече, как только кто-то примет ваш запрос",
|
||||
"joiningTitle": "Просьба присоединиться к встрече...",
|
||||
"joiningWithPasswordTitle": "Присоединение с паролем...",
|
||||
"knockButton": "Попросить присоединиться",
|
||||
"knockTitle": "Кто-то хочет присоединиться к встрече",
|
||||
"knockingParticipantList": "Список ожидающих участников",
|
||||
"nameField": "Введите ваше имя",
|
||||
"notificationLobbyAccessDenied": "{{originParticipantName}} запретил присоединиться {{targetParticipantName}}",
|
||||
"notificationLobbyAccessGranted": "{{originParticipantName}}разрешил присоединиться {{targetParticipantName}} ",
|
||||
"notificationLobbyDisabled": "Лобби отключено пользователем {{originParticipantName}}",
|
||||
"notificationLobbyEnabled": "Лобби включено пользователем {{originParticipantName}}",
|
||||
"notificationTitle": "Лобби",
|
||||
"passwordField": "Введите пароль встречи",
|
||||
"passwordJoinButton": "Присоединиться",
|
||||
"reject": "Отказать",
|
||||
"toggleLabel": "Включить лобби"
|
||||
},
|
||||
"localRecording": {
|
||||
"clientState": {
|
||||
"off": "Отключен",
|
||||
@@ -431,8 +509,15 @@
|
||||
},
|
||||
"lockRoomPassword": "пароль",
|
||||
"lockRoomPasswordUppercase": "Пароль",
|
||||
"lonelyMeetingExperience": {
|
||||
"button": "Пригласить",
|
||||
"getHelp": "Получить помощь",
|
||||
"title": "Защищенная, полнофункциональная и совершенно бесплатная система видеоконференций",
|
||||
"youAreAlone": "Вы один в видеоконференции"
|
||||
},
|
||||
"me": "я",
|
||||
"notify": {
|
||||
"OldElectronAPPTitle": "Уязвимость в системе безопасности!",
|
||||
"connectedOneMember": "{{name}} присоединился к конференции",
|
||||
"connectedThreePlusMembers": "{{name}} и {{count}} других пользователей присоединились к конференции",
|
||||
"connectedTwoMembers": "{{first}} и {{second}} присоединились к конференции",
|
||||
@@ -447,25 +532,64 @@
|
||||
"me": "Я",
|
||||
"moderator": "Получены права модератора!",
|
||||
"muted": "Вы начали разговор без звука.",
|
||||
"mutedTitle": "Вы без звука!",
|
||||
"mutedRemotelyTitle": "{{participantDisplayName}} отключил Вам микрофон!",
|
||||
"mutedRemotelyDescription": "Вы всегда можете включить микрофон, когда будете готовы говорить. Отключите его, когда закончите, чтобы не транслировать шумы в конференцию.",
|
||||
"mutedRemotelyTitle": "{{participantDisplayName}} отключил Вам микрофон!",
|
||||
"mutedTitle": "Вы без звука!",
|
||||
"newDeviceAction": "Использовать",
|
||||
"newDeviceAudioTitle": "Обнаружено новое аудиоустройство",
|
||||
"newDeviceCameraTitle": "Обнаружена новая камера",
|
||||
"oldElectronClientDescription1": "Похоже, вы используете старую версию клиента Jitsi Meet, которая имеет известные уязвимости в системе безопасности. Убедитесь, что вы обновили до нашей ",
|
||||
"oldElectronClientDescription2": "последней версии",
|
||||
"oldElectronClientDescription3": " сейчас!",
|
||||
"passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) удален другим участником.",
|
||||
"passwordSetRemotely": "Другой участник установил $t(lockRoomPasswordUppercase)",
|
||||
"raisedHand": "{{name}} хотел бы выступить.",
|
||||
"somebody": "Кто-то",
|
||||
"startSilentTitle": "У вас отсутствует звук!",
|
||||
"startSilentDescription": "Перезайдите в конференцию, чтобы включить звук",
|
||||
"startSilentTitle": "У вас отсутствует звук!",
|
||||
"suboptimalBrowserWarning": "К сожалению, ваш браузер не полностью поддерживает данную систему вэбконференций. Мы работаем над проблемой, однако, пока рекомендуем вам воспользоваться <a href='{{recommendedBrowserPageLink}}' target='_blank'> следующими браузерами</a>.",
|
||||
"suboptimalExperienceTitle": "Предупреждение браузера",
|
||||
"unmute": "Включить микрофон",
|
||||
"newDeviceCameraTitle": "Обнаружена новая камера",
|
||||
"newDeviceAudioTitle": "Обнаружено новое аудиоустройство",
|
||||
"newDeviceAction": "Использовать"
|
||||
"unmute": "Включить микрофон"
|
||||
},
|
||||
"passwordSetRemotely": "установлен другим участником",
|
||||
"passwordDigitsOnly": "До {{number}} цифр",
|
||||
"passwordSetRemotely": "установлен другим участником",
|
||||
"poweredby": "работает на",
|
||||
"prejoin": {
|
||||
"audioAndVideoError": "Ошибка звука и видео:",
|
||||
"audioOnlyError": "Ошибка звука:",
|
||||
"audioTrackError": "Не удалось создать аудио дорожку.",
|
||||
"callMe": "Позвоните мне",
|
||||
"callMeAtNumber": "Позвоните мне по этому номеру:",
|
||||
"calling": "Вызываем",
|
||||
"configuringDevices": "Настраиваются устройства...",
|
||||
"connectedWithAudioQ": "Вы подключили звук?",
|
||||
"copyAndShare": "Скопировать и поделиться ссылкой на встречу",
|
||||
"dialInMeeting": "Дозвониться до встречи",
|
||||
"dialInPin": "Дозвониться до встречи и ввести ПИН код:",
|
||||
"dialing": "Дозвон",
|
||||
"doNotShow": "Не показывать снова",
|
||||
"errorDialOut": "Не удалось дозвониться",
|
||||
"errorDialOutDisconnected": "Не удалось дозвониться. Отключено",
|
||||
"errorDialOutFailed": "Не удалось дозвониться. Сбой вызова",
|
||||
"errorDialOutStatus": "Ошибка получения статуса вызова",
|
||||
"errorStatusCode": "Ошибка вызова, код статуса: {{status}}",
|
||||
"errorValidation": "Проверка номера не удалась",
|
||||
"iWantToDialIn": "Я хочу дозвониться",
|
||||
"initiated": "Вызов инициирован",
|
||||
"joinAudioByPhone": "Подключиться с телефонной связью",
|
||||
"joinMeeting": "Присоединиться ко встрече",
|
||||
"joinWithoutAudio": "Присоединиться без звука",
|
||||
"linkCopied": "Ссылка скопирована в буфер обмена",
|
||||
"lookGood": "Кажется ваш микрофон работает правильно",
|
||||
"or": "или",
|
||||
"premeeting": "Перед подключением",
|
||||
"screenSharingError": "Ошибка показа экрана:",
|
||||
"showScreen": "Включить экран перед подключением",
|
||||
"startWithPhone": "Начать с телефонной связью",
|
||||
"videoOnlyError": "Ошибка видео:",
|
||||
"videoTrackError": "Не удалось создать видео дорожку.",
|
||||
"viewAllNumbers": "посмотреть всех участников"
|
||||
},
|
||||
"presenceStatus": {
|
||||
"busy": "Занят",
|
||||
"calling": "Вызываю...",
|
||||
@@ -499,14 +623,16 @@
|
||||
"expandedPending": "Начинаем запись конференции...",
|
||||
"failedToStart": "Ошибка начала записи",
|
||||
"fileSharingdescription": "Поделиться записью с участниками конференции",
|
||||
"live": "Прямая трансляция",
|
||||
"limitNotificationDescriptionNative": "Из-за высокой нагрузки ваша запись будет ограничена {{limit}} мин. Для неограниченного количества записей попробуйте <3> {{app}} </3>.",
|
||||
"limitNotificationDescriptionWeb": "Из-за высокой нагрузки ваша запись будет ограничена {{limit}} мин. Для неограниченного количества записей попробуйте <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"live": "В ЭФИРЕ",
|
||||
"loggedIn": "Вошел как {{userName}}",
|
||||
"off": "Запись остановлена",
|
||||
"offBy": "{{name}} остановил запись",
|
||||
"on": "Запись",
|
||||
"onBy": "{{name}} включил запись",
|
||||
"pending": "Подготовка записи конференции. . .",
|
||||
"rec": "Идет запись",
|
||||
"rec": "ИДЕТ ЗАПИСЬ",
|
||||
"serviceDescription": "Ваша запись будет сохранена соответствующей службой",
|
||||
"serviceName": "Служба записи",
|
||||
"signIn": "Вход",
|
||||
@@ -517,6 +643,12 @@
|
||||
"sectionList": {
|
||||
"pullToRefresh": "Потяните для обновления"
|
||||
},
|
||||
"security": {
|
||||
"about": "Вы можете добавить к собранию $t(lockRoomPassword). Участникам необходимо будет предоставить $t(lockRoomPassword), прежде чем им будет разрешено присоединиться к собранию.",
|
||||
"aboutReadOnly": "Участники-модераторы могут добавить к собранию $t(lockRoomPassword). Участникам необходимо будет предоставить $t(lockRoomPassword), прежде чем им будет разрешено присоединиться к собранию.",
|
||||
"insecureRoomNameWarning": "Имя комнаты небезопасно. Нежелательные участники могут присоединиться к вашей конференции. Подумайте о том, чтобы защитить вашу встречу используя настройки безопасности.",
|
||||
"securityOptions": "Настройки безопасности"
|
||||
},
|
||||
"settings": {
|
||||
"calendar": {
|
||||
"about": "Интеграция с календарем {{appName}} используется для безопасного доступа к вашему календарю и синхронизации запланированных мероприятий.",
|
||||
@@ -529,6 +661,7 @@
|
||||
"followMe": "Все следуют за мной",
|
||||
"language": "Язык",
|
||||
"loggedIn": "Вошел как {{name}}",
|
||||
"microphones": "Микрофоны",
|
||||
"moderator": "Модератор",
|
||||
"more": "Больше опций",
|
||||
"name": "Имя",
|
||||
@@ -536,11 +669,10 @@
|
||||
"selectAudioOutput": "Звуковой выход",
|
||||
"selectCamera": "Камера",
|
||||
"selectMic": "Микрофон",
|
||||
"speakers": "Динамики",
|
||||
"startAudioMuted": "Все начинают с выключенным звуком",
|
||||
"startVideoMuted": "Все начинают в скрытом режиме",
|
||||
"title": "Настройки",
|
||||
"speakers": "Динамики",
|
||||
"microphones": "Микрофоны"
|
||||
"title": "Настройки"
|
||||
},
|
||||
"settingsView": {
|
||||
"advanced": "Дополнительные",
|
||||
@@ -550,6 +682,8 @@
|
||||
"buildInfoSection": "Информация о сборке",
|
||||
"conferenceSection": "Номера для набора",
|
||||
"disableCallIntegration": "Отключить встроенную интеграцию вызовов",
|
||||
"disableCrashReporting": "Отключить отправку отчетов о сбоях",
|
||||
"disableCrashReportingWarning": "Вы действительно хотите отключить отчеты о сбоях? Настройка будет применена после перезапуска приложения.",
|
||||
"disableP2P": "Отключить режим Peer-To-Peer",
|
||||
"displayName": "Отображаемое имя",
|
||||
"email": "Email",
|
||||
@@ -565,7 +699,7 @@
|
||||
"dialInfoText": "\n\n=====\n\nПросто хотите набрать номер на Вашем телефоне?\n\n{{defaultDialInNumber}}Щелкните на эту ссылку, чтобы просмотреть телефонные номера для этой конференции\n{{dialInfoPageUrl}}",
|
||||
"mainText": "Нажмите на ссылку чтобы присоединиться к конференции:\n{{roomUrl}}"
|
||||
},
|
||||
"speaker": "Колонка",
|
||||
"speaker": "Спикер",
|
||||
"speakerStats": {
|
||||
"hours": "{{count}}ч",
|
||||
"minutes": "{{count}}м",
|
||||
@@ -584,7 +718,9 @@
|
||||
"title": "Видеосвязь прервана. Причина: этот компьютер перешел в режим сна."
|
||||
},
|
||||
"toolbar": {
|
||||
"Settings": "Настройки",
|
||||
"accessibilityLabel": {
|
||||
"Settings": "Вкл/Выкл меню настроек",
|
||||
"audioOnly": "Вкл/Выкл только звук",
|
||||
"audioRoute": "Выбрать аудиоустройство",
|
||||
"callQuality": "Качество связи",
|
||||
@@ -592,36 +728,41 @@
|
||||
"chat": "Показать/скрыть окно чата",
|
||||
"document": "Закрыть общий документ",
|
||||
"download": "Скачать приложение",
|
||||
"e2ee": "Сквозное шифрование",
|
||||
"embedMeeting": "Встроить встречу",
|
||||
"feedback": "Оставить отзыв",
|
||||
"fullScreen": "Полноэкранный/оконный режим",
|
||||
"grantModerator": "Сделать модератором",
|
||||
"hangup": "Завершить звонок",
|
||||
"help": "Справка",
|
||||
"invite": "Пригласить",
|
||||
"kick": "Выкинуть участника",
|
||||
"lobbyButton": "Вкл/Выкл режим лобби",
|
||||
"localRecording": "Вкл/Выкл кнопки записи",
|
||||
"lockRoom": "Установить пароль",
|
||||
"moreActions": "Показать/скрыть меню доп. настроек",
|
||||
"moreOptions": "Меню доп. настроек",
|
||||
"moreActionsMenu": "Меню доп. настроек",
|
||||
"moreOptions": "Меню доп. настроек",
|
||||
"mute": "Вкл/Выкл звук",
|
||||
"muteEveryone": "Выкл. микрофон у всех",
|
||||
"pip": "Вкл/Выкл режим Картинка-в-картинке",
|
||||
"privateMessage": "Отправить личное сообщение",
|
||||
"profile": "Редактировать профиль",
|
||||
"raiseHand": "Поднять руку",
|
||||
"recording": "Вкл/Выкл запись",
|
||||
"remoteMute": "Отключить участнику микрофон",
|
||||
"Settings": "Вкл/Выкл меню настроек",
|
||||
"sharedvideo": "Вкл/Выкл Youtube - трансляцию",
|
||||
"security": "Настройки безопасности",
|
||||
"shareRoom": "Отправить приглашение",
|
||||
"shareYourScreen": "Вкл/Выкл демонстрацию экрана",
|
||||
"sharedvideo": "Вкл/Выкл Youtube - трансляцию",
|
||||
"shortcuts": "Вкл/Выкл значки",
|
||||
"show": "Показать крупным планом",
|
||||
"speakerStats": "Вкл/Выкл статистику",
|
||||
"tileView": "Вкл/Выкл плитку",
|
||||
"toggleCamera": "Переключить камеру",
|
||||
"videomute": "Вкл/Выкл видео",
|
||||
"muteEveryone": "Выкл. микрофон у всех",
|
||||
"videoblur": "Вкл/Выкл размытие фона"
|
||||
"toggleFilmstrip": "Включить диафильм",
|
||||
"videoblur": "Вкл/Выкл размытие фона",
|
||||
"videomute": "Вкл/Выкл видео"
|
||||
},
|
||||
"addPeople": "Добавить людей к вашему сеансу связи",
|
||||
"audioOnlyOff": "Отключить режим экономии пропуской способности",
|
||||
@@ -634,6 +775,8 @@
|
||||
"documentClose": "Закрыть общий документ",
|
||||
"documentOpen": "Открыть общий документ",
|
||||
"download": "Скачать приложение",
|
||||
"e2ee": "Сквозное шифрование",
|
||||
"embedMeeting": "Встроить встречу",
|
||||
"enterFullScreen": "Полный экран",
|
||||
"enterTileView": "Общий план",
|
||||
"exitFullScreen": "Полный экран",
|
||||
@@ -642,39 +785,44 @@
|
||||
"hangup": "Выход",
|
||||
"help": "Справка",
|
||||
"invite": "Пригласить",
|
||||
"lobbyButtonDisable": "Отключить режим лобби",
|
||||
"lobbyButtonEnable": "Включить режим лобби",
|
||||
"login": "Войти",
|
||||
"logout": "Завершить сеанс",
|
||||
"lowerYourHand": "Опустить руку",
|
||||
"moreActions": "Больше",
|
||||
"moreActions": "Больше действий",
|
||||
"moreOptions": "Больше настроек",
|
||||
"mute": "Микрофон (вкл./выкл.)",
|
||||
"muteEveryone": "Выкл. микрофон у всех",
|
||||
"noAudioSignalTitle": "От вашего микрофона не идет звуковой сигнал!",
|
||||
"noAudioSignalDesc": "Если вы специально не отключали микрофон в системных настройках, подумайте о том, чтобы поменять его.",
|
||||
"noAudioSignalDescSuggestion": "Если вы специально не отключали микрофон в системных настройках, вы можете попробовать использовать следующее устройство:",
|
||||
"noisyAudioInputTitle": "Похоже, ваш микрофон создает шум!",
|
||||
"noAudioSignalDialInDesc": "Вы можете также дозвониться используя:",
|
||||
"noAudioSignalDialInLinkDesc": "Номера для дозвона",
|
||||
"noAudioSignalTitle": "От вашего микрофона не идет звуковой сигнал!",
|
||||
"noisyAudioInputDesc": "Возможно, ваш микрофон создает шум. Вы можете выключить его или смените устройство.",
|
||||
"noisyAudioInputTitle": "Похоже, ваш микрофон создает шум!",
|
||||
"openChat": "Открыть чат",
|
||||
"pip": "Вкл режим Картинка-в-картинке",
|
||||
"privateMessage": "Отправить личное сообщение",
|
||||
"profile": "Редактировать профиль",
|
||||
"raiseHand": "Хочу говорить",
|
||||
"raiseYourHand": "Поднять руку",
|
||||
"Settings": "Настройки",
|
||||
"sharedvideo": "Видео YouTube",
|
||||
"security": "Настройки безопасности",
|
||||
"shareRoom": "Отправить приглашение",
|
||||
"sharedvideo": "Видео YouTube",
|
||||
"shortcuts": "Комбинации клавиш",
|
||||
"speakerStats": "Статистика",
|
||||
"startScreenSharing": "Начать трансляцию с экрана",
|
||||
"startSubtitles": "Включить субтитры",
|
||||
"startvideoblur": "Размыть фон на видео",
|
||||
"stopScreenSharing": "Остановить трансляцию с экрана",
|
||||
"stopSubtitles": "Отключить субтитры",
|
||||
"stopSharedVideo": "Остановить видео на YouTube",
|
||||
"stopSubtitles": "Отключить субтитры",
|
||||
"stopvideoblur": "Отключить размытие фона",
|
||||
"talkWhileMutedPopup": "Пытаетесь говорить? У вас отключен звук.",
|
||||
"tileViewToggle": "Вкл/выкл плитку",
|
||||
"toggleCamera": "Вкл/выкл камеру",
|
||||
"videomute": "Камера",
|
||||
"startvideoblur": "Размыть фон на видео",
|
||||
"stopvideoblur": "Отключить размытие фона"
|
||||
"videomute": "Камера"
|
||||
},
|
||||
"transcribing": {
|
||||
"ccButtonTooltip": "Вкл. / Выкл. субтитры",
|
||||
@@ -685,8 +833,7 @@
|
||||
"off": "Расшифровка остановлена",
|
||||
"pending": "Подготовка расшифровки конференции...",
|
||||
"start": "Вкл/Выкл показ субтитров",
|
||||
"stop": "Вкл/Выкл показ субтитров",
|
||||
"tr": ""
|
||||
"stop": "Вкл/Выкл показ субтитров"
|
||||
},
|
||||
"userMedia": {
|
||||
"androidGrantPermissions": "Выберите <b><i>Разрешить</i></b>, когда браузер спросит о разрешениях.",
|
||||
@@ -732,6 +879,7 @@
|
||||
"domute": "Выключить звук",
|
||||
"domuteOthers": "Выключить остальных",
|
||||
"flip": "Отразить",
|
||||
"grantModerator": "Сделать модератором",
|
||||
"kick": "Выкинуть",
|
||||
"moderator": "Модератор",
|
||||
"mute": "Без звука",
|
||||
@@ -754,26 +902,22 @@
|
||||
"connectCalendarButton": "Привязать календарь",
|
||||
"connectCalendarText": "Подключите календарь, чтобы увидеть все ваши конференции в {{app}}. Кроме того, добавив {{provider}} конференций в календарь, вы сможете запускать их одним щелчком мышки.",
|
||||
"enterRoomTitle": "Начать новую видеоконференцию",
|
||||
"roomNameAllowedChars": "Название конференции не должно содержать следующие символы: ?, &, :, ', \", %, #.",
|
||||
"getHelp": "Справка",
|
||||
"go": "ОК",
|
||||
"goSmall": "ОК",
|
||||
"join": "СОЗДАТЬ / ПРИСОЕДИНИТЬСЯ",
|
||||
"info": "Инфо",
|
||||
"join": "СОЗДАТЬ / ПРИСОЕДИНИТЬСЯ",
|
||||
"moderatedMessage": "Или заранее <a href=\"{{url}}\" rel=\"noopener noreferrer\" target=\"_blank\">зарезервируйте URL-адрес встречи</a>, где вы будете единственным модератором.",
|
||||
"privacy": "Приватность",
|
||||
"recentList": "Недавние",
|
||||
"recentListDelete": "Удалить",
|
||||
"recentListEmpty": "Сейчас ваш список недавно проведенных конференций пуст. По мере вашего пользования сервисом он будет пополняться.",
|
||||
"reducedUIText": "Добро пожаловать в {{app}}!",
|
||||
"roomNameAllowedChars": "Название конференции не должно содержать следующие символы: ?, &, :, ', \", %, #.",
|
||||
"roomname": "Укажите название комнаты",
|
||||
"roomnameHint": "Укажите название комнаты или ее адрес. Можете сами создать название и передать его будущим участникам встречи, чтобы они использовали именно его.",
|
||||
"sendFeedback": "Обратная связь",
|
||||
"terms": "Условия",
|
||||
"title": "Защищенная, полнофункциональная и совершенно бесплатная система видеоконференций"
|
||||
},
|
||||
"lonelyMeetingExperience": {
|
||||
"button": "Пригласить",
|
||||
"youAreAlone": "Вы один в видеоконференции",
|
||||
"title": "Защищенная, полнофункциональная и совершенно бесплатная система видеоконференций",
|
||||
"getHelp": "Получить помощь"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -189,9 +189,6 @@
|
||||
"dismiss": "Prekliči",
|
||||
"displayNameRequired": "Pozdravljeni! Kako vam je ime?",
|
||||
"done": "Končano",
|
||||
"e2eeDescription": "<p>End-to-End Encryption is currently <strong>EXPERIMENTAL</strong>. Please see <a href='https://jitsi.org/blog/e2ee/' target='_blank'>this post</a> for details.</p><br/><p>Please keep in mind that turning on end-to-end encryption will effectively disable server-side provided services such as: recording, live streaming and phone participation. Also keep in mind that the meeting will only work for people joining from browsers with support for insertable streams.</p>",
|
||||
"e2eeLabel": "Key",
|
||||
"e2eeTitle": "End-to-End Encryption",
|
||||
"e2eeWarning": "WARNING: Not all participants in this meeting seem to have support for End-to-End encryption. If you enable it they won't be able to see nor hear you.",
|
||||
"enterDisplayName": "Prosimo vnesite svoje ime",
|
||||
"error": "Napaka",
|
||||
|
||||
@@ -71,9 +71,8 @@
|
||||
},
|
||||
"privateNotice": "{{recipient}} için özel mesaj",
|
||||
"title": "Sohbet",
|
||||
"you": "sen",
|
||||
|
||||
|
||||
"you": "sen"
|
||||
|
||||
},
|
||||
"connectingOverlay": {
|
||||
"joiningRoom": "Toplantıya bağlanılıyor..."
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user