mirror of
https://gitcode.com/GitHub_Trending/ji/jitsi-meet.git
synced 2026-01-05 22:32:31 +00:00
Compare commits
199 Commits
saghul-pat
...
4296
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
335b43036d | ||
|
|
b3ca51c7d0 | ||
|
|
f9d545c531 | ||
|
|
5f5468995f | ||
|
|
bf7aa39947 | ||
|
|
ad948bdbe2 | ||
|
|
29366a0029 | ||
|
|
0bec7c7ab7 | ||
|
|
29805edd02 | ||
|
|
11fd5363ce | ||
|
|
1790c71c80 | ||
|
|
36d95ed51f | ||
|
|
ef0af1a8c0 | ||
|
|
b85cd2348f | ||
|
|
035f720a50 | ||
|
|
c8444a9a0d | ||
|
|
7f5751b918 | ||
|
|
fc6bd3667c | ||
|
|
2c42dd0773 | ||
|
|
1891ce0b24 | ||
|
|
e34c5673b2 | ||
|
|
41ba55a6a9 | ||
|
|
758b60f92b | ||
|
|
fcc69b92bb | ||
|
|
a697caea03 | ||
|
|
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 | ||
|
|
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 | ||
|
|
4f169988a3 | ||
|
|
ec6ed6e8ec | ||
|
|
7b429afee6 | ||
|
|
cab830aad1 | ||
|
|
bd42c81cb8 | ||
|
|
f230fd4d04 | ||
|
|
eed57e7999 | ||
|
|
8115f86f59 | ||
|
|
28e5edfb50 | ||
|
|
e936c6dc2c | ||
|
|
8efd0f0829 | ||
|
|
a49f04f25b | ||
|
|
bcffe0bba5 | ||
|
|
482ba23954 | ||
|
|
e87167dd2d | ||
|
|
cf047a3c90 | ||
|
|
a8b8612304 | ||
|
|
95a5b8a8c1 | ||
|
|
5867eaf560 | ||
|
|
9143bb42d1 | ||
|
|
0e5dac623e | ||
|
|
0c09ded76b | ||
|
|
929622b27c | ||
|
|
430125a8bd | ||
|
|
66505666df | ||
|
|
e5cffc71c4 | ||
|
|
e3d66db3d7 | ||
|
|
e8e2b3c341 | ||
|
|
abb724e173 | ||
|
|
6e679f952f | ||
|
|
80d7e5fb7f | ||
|
|
7646618e5a | ||
|
|
6533071c4c | ||
|
|
6aed9bc0c8 | ||
|
|
b7b861259b | ||
|
|
df64dd8f18 | ||
|
|
8758c222c6 | ||
|
|
29dc63fbcb | ||
|
|
475a2ae596 | ||
|
|
338c960215 | ||
|
|
e6093e0706 | ||
|
|
d1d968997e | ||
|
|
45570bc0e7 | ||
|
|
f4bcad02d8 | ||
|
|
26f7951894 | ||
|
|
35dabb1a27 | ||
|
|
c3b79802b2 | ||
|
|
e6dbe65193 | ||
|
|
ff23f81dfe | ||
|
|
bc66c9063a | ||
|
|
974ef4a382 | ||
|
|
3bf82b573c | ||
|
|
b4b4339a1a | ||
|
|
6773aed67f | ||
|
|
d740752522 | ||
|
|
d93b219c7f | ||
|
|
10cd150a07 | ||
|
|
a31f3c0c76 | ||
|
|
af39186a5f | ||
|
|
d4d1d0aa70 | ||
|
|
3a88f4939c | ||
|
|
fe221fe4be | ||
|
|
1caaa47f5e | ||
|
|
a2c4d17e4d | ||
|
|
ce1de9e1e7 | ||
|
|
3e7abf3da0 | ||
|
|
8b4f1789a6 | ||
|
|
444e2b90df | ||
|
|
7de88995a5 | ||
|
|
f0c6e934ce | ||
|
|
78b01d2c97 | ||
|
|
bf60be1654 | ||
|
|
5202a7e5b8 | ||
|
|
2af0c0ba17 | ||
|
|
fbb6486b5f | ||
|
|
a113151563 | ||
|
|
470fda3467 | ||
|
|
edea6316ab | ||
|
|
adac9ee5f8 | ||
|
|
af8bd876e6 |
5
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
5
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<!--
|
||||
Thank you for your pull request. Please provide a thorough description below.
|
||||
|
||||
Contributors guide: https://github.com/jitsi/jitsi-meet/blob/master/CONTRIBUTING.md
|
||||
-->
|
||||
@@ -123,3 +123,32 @@ in the agreement, unfortunately, we cannot accept your contribution.
|
||||
respective variable, function, property is non-public i.e. private, protected,
|
||||
or internal. In contrast, the lack of an underscore at the beginning of a name
|
||||
signals public API.
|
||||
|
||||
### Feature layout
|
||||
|
||||
When adding a new feature, this would be the usual layout.
|
||||
|
||||
```
|
||||
react/features/sample/
|
||||
├── actionTypes.js
|
||||
├── actions.js
|
||||
├── components
|
||||
│ ├── AnotherComponent.js
|
||||
│ ├── OneComponent.js
|
||||
│ └── index.js
|
||||
├── middleware.js
|
||||
└── reducer.js
|
||||
```
|
||||
|
||||
The middleware must be imported in `react/features/app/` specifically
|
||||
in `middlewares.any`, `middlewares.native.js` or `middlewares.web.js` where appropriate.
|
||||
Likewise for the reducer.
|
||||
|
||||
An `index.js` file must not be provided for exporting actions, action types and
|
||||
component. Features / files requiring those must import them explicitly.
|
||||
|
||||
This has not always been the case and the entire codebase hasn't been migrated to
|
||||
this model but new features should follow this new layout.
|
||||
|
||||
When working on an old feature, adding the necessary changes to migrate to the new
|
||||
model is encouraged.
|
||||
|
||||
4
Makefile
4
Makefile
@@ -74,7 +74,7 @@ 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:
|
||||
@@ -82,7 +82,7 @@ deploy-local:
|
||||
|
||||
.NOTPARALLEL:
|
||||
dev: deploy-init deploy-css deploy-rnnoise-binary deploy-lib-jitsi-meet deploy-libflac
|
||||
$(WEBPACK_DEV_SERVER)
|
||||
$(WEBPACK_DEV_SERVER) --detect-circular-deps
|
||||
|
||||
source-package:
|
||||
mkdir -p source_package/jitsi-meet/css && \
|
||||
|
||||
@@ -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.**
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
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"
|
||||
|
||||
@@ -16,9 +16,15 @@
|
||||
|
||||
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 +37,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 +55,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
|
||||
//
|
||||
|
||||
@@ -85,16 +113,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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -21,4 +21,4 @@ android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
|
||||
appVersion=20.3.0
|
||||
sdkVersion=2.8.2
|
||||
sdkVersion=2.9.0
|
||||
|
||||
@@ -22,7 +22,6 @@ import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
|
||||
import com.calendarevents.CalendarEventsPackage;
|
||||
import com.facebook.react.ReactInstanceManager;
|
||||
import com.facebook.react.bridge.Callback;
|
||||
import com.facebook.react.bridge.ReactContext;
|
||||
@@ -167,13 +166,7 @@ public class JitsiMeetActivityDelegate {
|
||||
}
|
||||
|
||||
public static void onRequestPermissionsResult(
|
||||
final int requestCode,
|
||||
final String[] permissions,
|
||||
final int[] grantResults) {
|
||||
CalendarEventsPackage.onRequestPermissionsResult(
|
||||
requestCode,
|
||||
permissions,
|
||||
grantResults);
|
||||
final int requestCode, final String[] permissions, final int[] grantResults) {
|
||||
permissionsCallback = new Callback() {
|
||||
@Override
|
||||
public void invoke(Object... args) {
|
||||
|
||||
238
conference.js
238
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';
|
||||
@@ -22,7 +22,7 @@ import {
|
||||
maybeRedirectToWelcomePage,
|
||||
redirectToStaticPage,
|
||||
reloadWithStoredParams
|
||||
} from './react/features/app';
|
||||
} from './react/features/app/actions';
|
||||
import {
|
||||
AVATAR_ID_COMMAND,
|
||||
AVATAR_URL_COMMAND,
|
||||
@@ -48,6 +48,7 @@ import {
|
||||
import {
|
||||
checkAndNotifyForNewDevice,
|
||||
getAvailableDevices,
|
||||
getDefaultDeviceId,
|
||||
notifyCameraError,
|
||||
notifyMicError,
|
||||
setAudioOutputDeviceId,
|
||||
@@ -94,6 +95,8 @@ import {
|
||||
createLocalPresenterTrack,
|
||||
createLocalTracksF,
|
||||
destroyLocalTracks,
|
||||
getLocalJitsiAudioTrack,
|
||||
getLocalJitsiVideoTrack,
|
||||
isLocalVideoTrackMuted,
|
||||
isLocalTrackMuted,
|
||||
isUserInteractionRequiredForUnmute,
|
||||
@@ -101,7 +104,10 @@ import {
|
||||
trackAdded,
|
||||
trackRemoved
|
||||
} from './react/features/base/tracks';
|
||||
import { getJitsiMeetGlobalNS } from './react/features/base/util';
|
||||
import {
|
||||
getBackendSafePath,
|
||||
getJitsiMeetGlobalNS
|
||||
} 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';
|
||||
@@ -115,9 +121,7 @@ import { suspendDetected } from './react/features/power-monitor';
|
||||
import {
|
||||
initPrejoin,
|
||||
isPrejoinPageEnabled,
|
||||
isPrejoinPageVisible,
|
||||
replacePrejoinAudioTrack,
|
||||
replacePrejoinVideoTrack
|
||||
isPrejoinPageVisible
|
||||
} from './react/features/prejoin';
|
||||
import { createRnnoiseProcessorPromise } from './react/features/rnnoise';
|
||||
import { toggleScreenshotCaptureEffect } from './react/features/screenshot-capture';
|
||||
@@ -292,12 +296,6 @@ class ConferenceConnector {
|
||||
logger.error('CONFERENCE FAILED:', err, ...params);
|
||||
|
||||
switch (err) {
|
||||
case JitsiConferenceErrors.CONNECTION_ERROR: {
|
||||
const [ msg ] = params;
|
||||
|
||||
APP.UI.notifyConnectionFailed(msg);
|
||||
break;
|
||||
}
|
||||
|
||||
case JitsiConferenceErrors.NOT_ALLOWED_ERROR: {
|
||||
// let's show some auth not allowed page
|
||||
@@ -332,14 +330,6 @@ class ConferenceConnector {
|
||||
APP.UI.notifyGracefulShutdown();
|
||||
break;
|
||||
|
||||
case JitsiConferenceErrors.CONFERENCE_DESTROYED: {
|
||||
const [ reason ] = params;
|
||||
|
||||
APP.UI.hideStats();
|
||||
APP.UI.notifyConferenceDestroyed(reason);
|
||||
break;
|
||||
}
|
||||
|
||||
// FIXME FOCUS_DISCONNECTED is a confusing event name.
|
||||
// What really happens there is that the library is not ready yet,
|
||||
// because Jicofo is not available, but it is going to give it another
|
||||
@@ -421,6 +411,10 @@ function disconnect() {
|
||||
return Promise.resolve();
|
||||
};
|
||||
|
||||
if (!connection) {
|
||||
return onDisconnected();
|
||||
}
|
||||
|
||||
return connection.disconnect().then(onDisconnected, onDisconnected);
|
||||
}
|
||||
|
||||
@@ -1258,7 +1252,7 @@ export default {
|
||||
items[key] = param[1];
|
||||
}
|
||||
|
||||
if (typeof items.e2eekey !== undefined) {
|
||||
if (typeof items.e2eekey !== 'undefined') {
|
||||
APP.store.dispatch(setE2EEKey(items.e2eekey));
|
||||
|
||||
// Clean URL in browser history.
|
||||
@@ -1364,7 +1358,13 @@ export default {
|
||||
const options = config;
|
||||
const { email, name: nick } = getLocalParticipant(APP.store.getState());
|
||||
|
||||
const { locationURL } = APP.store.getState()['features/base/connection'];
|
||||
const state = APP.store.getState();
|
||||
const { locationURL } = state['features/base/connection'];
|
||||
const { tenant } = state['features/base/jwt'];
|
||||
|
||||
if (tenant) {
|
||||
options.siteID = tenant;
|
||||
}
|
||||
|
||||
if (options.enableDisplayNameInStats && nick) {
|
||||
options.statisticsDisplayName = nick;
|
||||
@@ -1376,7 +1376,7 @@ export default {
|
||||
|
||||
options.applicationName = interfaceConfig.APP_NAME;
|
||||
options.getWiFiStatsMethod = this._getWiFiStatsMethod;
|
||||
options.confID = `${locationURL.host}${locationURL.pathname}`;
|
||||
options.confID = `${locationURL.host}${getBackendSafePath(locationURL.pathname)}`;
|
||||
options.createVADProcessor = createRnnoiseProcessorPromise;
|
||||
|
||||
// Disable CallStats, if requessted.
|
||||
@@ -1407,31 +1407,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 => {
|
||||
/**
|
||||
* When the prejoin page is visible there is no conference object
|
||||
* created. The prejoin tracks are managed separately,
|
||||
* so this updates the prejoin video track.
|
||||
*/
|
||||
if (isPrejoinPageVisible(APP.store.getState())) {
|
||||
return APP.store.dispatch(replacePrejoinVideoTrack(newStream))
|
||||
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());
|
||||
})
|
||||
@@ -1472,28 +1473,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 => {
|
||||
/**
|
||||
* When the prejoin page is visible there is no conference object
|
||||
* created. The prejoin tracks are managed separately,
|
||||
* so this updates the prejoin audio stream.
|
||||
*/
|
||||
if (isPrejoinPageVisible(APP.store.getState())) {
|
||||
return APP.store.dispatch(replacePrejoinAudioTrack(newStream))
|
||||
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)
|
||||
@@ -1673,8 +1675,6 @@ export default {
|
||||
* @private
|
||||
*/
|
||||
_createDesktopTrack(options = {}) {
|
||||
let externalInstallation = false;
|
||||
let DSExternalInstallationInProgress = false;
|
||||
const didHaveVideo = !this.isLocalVideoMuted();
|
||||
|
||||
const getDesktopStreamPromise = options.desktopStream
|
||||
@@ -1683,43 +1683,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 => {
|
||||
@@ -1743,15 +1707,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;
|
||||
});
|
||||
},
|
||||
@@ -1955,70 +1912,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({
|
||||
@@ -2425,11 +2348,20 @@ export default {
|
||||
micDeviceId => {
|
||||
const audioWasMuted = this.isLocalAudioMuted();
|
||||
|
||||
// When the 'default' mic needs to be selected, we need to
|
||||
// pass the real device id to gUM instead of 'default' in order
|
||||
// to get the correct MediaStreamTrack from chrome because of the
|
||||
// following bug.
|
||||
// https://bugs.chromium.org/p/chromium/issues/detail?id=997689
|
||||
const hasDefaultMicChanged = micDeviceId === 'default';
|
||||
|
||||
sendAnalytics(createDeviceChangedEvent('audio', 'input'));
|
||||
createLocalTracksF({
|
||||
devices: [ 'audio' ],
|
||||
cameraDeviceId: null,
|
||||
micDeviceId
|
||||
micDeviceId: hasDefaultMicChanged
|
||||
? getDefaultDeviceId(APP.store.getState(), 'audioInput')
|
||||
: micDeviceId
|
||||
})
|
||||
.then(([ stream ]) => {
|
||||
// if audio was muted before changing the device, mute
|
||||
@@ -2453,6 +2385,12 @@ export default {
|
||||
return this.useAudioStream(stream);
|
||||
})
|
||||
.then(() => {
|
||||
if (hasDefaultMicChanged) {
|
||||
// workaround for the default device to be shown as selected in the
|
||||
// settings even when the real device id was passed to gUM because of the
|
||||
// above mentioned chrome bug.
|
||||
this.localAudio._realDeviceId = this.localAudio.deviceId = 'default';
|
||||
}
|
||||
logger.log(`switched local audio device: ${this.localAudio?.getDeviceId()}`);
|
||||
|
||||
this._updateAudioDeviceId();
|
||||
@@ -2506,6 +2444,8 @@ export default {
|
||||
if (state === 'stop'
|
||||
|| state === 'start'
|
||||
|| state === 'playing') {
|
||||
const localParticipant = getLocalParticipant(APP.store.getState());
|
||||
|
||||
room.removeCommand(this.commands.defaults.SHARED_VIDEO);
|
||||
room.sendCommandOnce(this.commands.defaults.SHARED_VIDEO, {
|
||||
value: url,
|
||||
@@ -2513,7 +2453,8 @@ export default {
|
||||
state,
|
||||
time,
|
||||
muted: isMuted,
|
||||
volume
|
||||
volume,
|
||||
from: localParticipant.id
|
||||
}
|
||||
});
|
||||
} else {
|
||||
@@ -2754,11 +2695,20 @@ export default {
|
||||
checkAndNotifyForNewDevice(newAvailDevices.videoInput, oldDevices.videoInput));
|
||||
}
|
||||
|
||||
// When the 'default' mic needs to be selected, we need to
|
||||
// pass the real device id to gUM instead of 'default' in order
|
||||
// to get the correct MediaStreamTrack from chrome because of the
|
||||
// following bug.
|
||||
// https://bugs.chromium.org/p/chromium/issues/detail?id=997689
|
||||
const hasDefaultMicChanged = newDevices.audioinput === 'default';
|
||||
|
||||
promises.push(
|
||||
mediaDeviceHelper.createLocalTracksAfterDeviceListChanged(
|
||||
createLocalTracksF,
|
||||
newDevices.videoinput,
|
||||
newDevices.audioinput)
|
||||
hasDefaultMicChanged
|
||||
? getDefaultDeviceId(APP.store.getState(), 'audioInput')
|
||||
: newDevices.audioinput)
|
||||
.then(tracks => {
|
||||
// If audio or video muted before, or we unplugged current
|
||||
// device and selected new one, then mute new track.
|
||||
@@ -2783,6 +2733,12 @@ export default {
|
||||
// Use the new stream or null if we failed to obtain it.
|
||||
return useStream(tracks.find(track => track.getType() === mediaType) || null)
|
||||
.then(() => {
|
||||
if (hasDefaultMicChanged) {
|
||||
// workaround for the default device to be shown as selected in the
|
||||
// settings even when the real device id was passed to gUM because of
|
||||
// the above mentioned chrome bug.
|
||||
this.localAudio._realDeviceId = this.localAudio.deviceId = 'default';
|
||||
}
|
||||
mediaType === 'audio'
|
||||
? this._updateAudioDeviceId()
|
||||
: this._updateVideoDeviceId();
|
||||
|
||||
107
config.js
107
config.js
@@ -44,6 +44,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
|
||||
@@ -54,6 +58,13 @@ var config = {
|
||||
// Disables the auto-play behavior of *all* newly created video element.
|
||||
// This is useful when the client runs on a host with limited resources.
|
||||
// noAutoPlayVideo: false
|
||||
|
||||
// Enable / disable 500 Kbps bitrate cap on desktop tracks. When enabled,
|
||||
// simulcast is turned off for the desktop share. If presenter is turned
|
||||
// on while screensharing is in progress, the max bitrate is automatically
|
||||
// adjusted to 2.5 Mbps. This takes a value between 0 and 1 which determines
|
||||
// the probability for this to be enabled.
|
||||
// capScreenshareBitrate: 1 // 0 to disable
|
||||
},
|
||||
|
||||
// Disables ICE/UDP by filtering out local and remote UDP candidates in
|
||||
@@ -100,6 +111,11 @@ 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
|
||||
// opusMaxAvgBitrate: 20000,
|
||||
|
||||
// Video
|
||||
|
||||
// Sets the preferred resolution (height) for local video. Defaults to 720.
|
||||
@@ -147,22 +163,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,
|
||||
@@ -210,6 +210,21 @@ var config = {
|
||||
// Default value for the channel "last N" attribute. -1 for unlimited.
|
||||
channelLastN: -1,
|
||||
|
||||
// // Options for the recording limit notification.
|
||||
// recordingLimit: {
|
||||
//
|
||||
// // The recording limit in minutes. Note: This number appears in the notification text
|
||||
// // but doesn't enforce the actual recording time limit. This should be configured in
|
||||
// // jibri!
|
||||
// limit: 60,
|
||||
//
|
||||
// // The name of the app with unlimited recordings.
|
||||
// appName: 'Unlimited recordings APP',
|
||||
//
|
||||
// // The URL of the app with unlimited recordings.
|
||||
// appURL: 'https://unlimited.recordings.app.com/'
|
||||
// },
|
||||
|
||||
// Disables or enables RTX (RFC 4588) (defaults to false).
|
||||
// disableRtx: false,
|
||||
|
||||
@@ -238,11 +253,14 @@ var config = {
|
||||
// is set in Jicofo and set to 2).
|
||||
// minParticipants: 2,
|
||||
|
||||
// Use XEP-0215 to fetch STUN and TURN servers.
|
||||
// Use the TURN servers discovered via XEP-0215 for the jitsi-videobridge
|
||||
// connection
|
||||
// useStunTurn: true,
|
||||
|
||||
// Enable IPv6 support.
|
||||
// useIPv6: true,
|
||||
// Use TURN/UDP servers for the jitsi-videobridge connection (by default
|
||||
// we filter out TURN/UDP because it is usually not needed since the
|
||||
// bridge itself is reachable via UDP)
|
||||
// useTurnUdp: false
|
||||
|
||||
// Enables / disables a data communication channel with the Videobridge.
|
||||
// Values can be 'datachannel', 'websocket', true (treat it as
|
||||
@@ -254,9 +272,6 @@ var config = {
|
||||
// UI
|
||||
//
|
||||
|
||||
// Use display name as XMPP nickname.
|
||||
// useNicks: false,
|
||||
|
||||
// Require users to always specify a display name.
|
||||
// requireDisplayName: true,
|
||||
|
||||
@@ -297,9 +312,14 @@ 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 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,
|
||||
|
||||
// Stats
|
||||
//
|
||||
|
||||
@@ -317,10 +337,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
|
||||
@@ -350,9 +370,9 @@ 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' }
|
||||
],
|
||||
]
|
||||
|
||||
// Sets the ICE transport policy for the p2p connection. At the time
|
||||
// of this writing the list of possible values are 'all' and 'relay',
|
||||
@@ -364,7 +384,7 @@ var config = {
|
||||
|
||||
// If set to true, it will prefer to use H.264 for P2P calls (if H.264
|
||||
// is supported).
|
||||
preferH264: true
|
||||
// preferH264: true
|
||||
|
||||
// If set to true, disable H.264 video codec by stripping it out of the
|
||||
// SDP.
|
||||
@@ -386,6 +406,15 @@ var config = {
|
||||
// The Amplitude APP Key:
|
||||
// amplitudeAPPKey: '<APP_KEY>'
|
||||
|
||||
// Configuration for the rtcstats server:
|
||||
// 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
|
||||
@@ -490,6 +519,28 @@ var config = {
|
||||
// If set to true all muting operations of remote participants will be disabled.
|
||||
// disableRemoteMute: true,
|
||||
|
||||
/**
|
||||
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 fields are mandatory and the response must have the shape:
|
||||
{
|
||||
// The hex value for the colour used as background
|
||||
backgroundColor: '#fff',
|
||||
// The url for the image used as background
|
||||
backgroundImageUrl: 'https://example.com/background-img.png',
|
||||
// The anchor url used when clicking the logo image
|
||||
logoClickUrl: 'https://example-company.org',
|
||||
// The url used for the image used as logo
|
||||
logoImageUrl: 'https://example.com/logo-img.png'
|
||||
}
|
||||
*/
|
||||
// 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
|
||||
|
||||
@@ -1,18 +1,19 @@
|
||||
/* 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 {
|
||||
connectionEstablished,
|
||||
connectionFailed
|
||||
} from './react/features/base/connection';
|
||||
} from './react/features/base/connection/actions';
|
||||
import {
|
||||
isFatalJitsiConnectionError,
|
||||
JitsiConnectionErrors,
|
||||
JitsiConnectionEvents
|
||||
} from './react/features/base/lib-jitsi-meet';
|
||||
import { setPrejoinDisplayNameRequired } from './react/features/prejoin/actions';
|
||||
|
||||
const logger = Logger.getLogger(__filename);
|
||||
|
||||
@@ -113,6 +114,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 +171,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);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
.audio-preview {
|
||||
&-content {
|
||||
background: #2A3A4B;
|
||||
font-size: 15px;
|
||||
line-height: 24px;
|
||||
max-height: 456px;
|
||||
@@ -32,7 +33,7 @@
|
||||
margin-left: 48px;
|
||||
|
||||
&--selected {
|
||||
background: rgba(28,32,37,0.5);
|
||||
background: #1C2025;
|
||||
cursor: initial;
|
||||
margin-left: 0;
|
||||
padding-left: 21px;
|
||||
@@ -55,7 +56,7 @@
|
||||
|
||||
&:hover {
|
||||
.audio-preview-entry {
|
||||
background: rgba(255,255,255, 0.2);
|
||||
background: #3F4E5E;
|
||||
margin-left: 0;
|
||||
padding-left: 48px;
|
||||
|
||||
@@ -80,8 +81,23 @@
|
||||
|
||||
&-microphone {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
.audio-preview-entry {
|
||||
background: #3F4E5E;
|
||||
margin-left: 0;
|
||||
padding-left: 48px;
|
||||
|
||||
&--selected {
|
||||
padding-left: 21px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.audio-preview-entry-text {
|
||||
max-width: 196px;
|
||||
}
|
||||
}
|
||||
|
||||
&-icon {
|
||||
border-radius: 50%;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -115,8 +135,9 @@ form {
|
||||
.leftwatermark {
|
||||
left: 32px;
|
||||
top: 32px;
|
||||
background-image: url($defaultWatermarkLink);
|
||||
background-position: center left;
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
.rightwatermark {
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
41
css/_e2ee.scss
Normal file
41
css/_e2ee.scss
Normal file
@@ -0,0 +1,41 @@
|
||||
#e2ee-section {
|
||||
.title {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.description {
|
||||
font-size: 13px;
|
||||
margin: 15px 0;
|
||||
|
||||
.read-more {
|
||||
cursor: pointer;
|
||||
opacity: .7;
|
||||
}
|
||||
}
|
||||
|
||||
.key-field {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
||||
label {
|
||||
font-size: 14px;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@
|
||||
top: 30px;
|
||||
right: 30px;
|
||||
transition: right 0.5s;
|
||||
z-index: $zindex3;
|
||||
z-index: $filmstripVideosZ + 1;
|
||||
|
||||
.circular-label {
|
||||
align-items: center;
|
||||
|
||||
144
css/_lobby.scss
Normal file
144
css/_lobby.scss
Normal file
@@ -0,0 +1,144 @@
|
||||
#lobby-screen {
|
||||
.content {
|
||||
|
||||
.container {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.spinner {
|
||||
margin: 30px;
|
||||
}
|
||||
|
||||
.joining-message {
|
||||
margin: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.form {
|
||||
align-items: stretch;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-width: 400px;
|
||||
}
|
||||
|
||||
.participant-info {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#lobby-section {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.description {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.control-row {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
margin-top: 15px;
|
||||
|
||||
label {
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#knocking-participant-list {
|
||||
background-color: $newToolbarBackgroundColor;
|
||||
border: 1px solid rgba(255, 255, 255, .4);
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
left: 0;
|
||||
margin: 20px;
|
||||
position: fixed;
|
||||
top: 20;
|
||||
transition: top 1s ease;
|
||||
z-index: 100;
|
||||
|
||||
&.toolbox-visible {
|
||||
// Same as toolbox subject position
|
||||
top: 120px;
|
||||
}
|
||||
|
||||
.title {
|
||||
background-color: rgba(0, 0, 0, .2);
|
||||
font-size: 1.2em;
|
||||
padding: 15px
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: none;
|
||||
padding: 0 15px 15px 15px;
|
||||
|
||||
li {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
margin: 8px 0;
|
||||
|
||||
.details {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: column;
|
||||
justify-content: space-evenly;
|
||||
margin: 0 30px 0 10px;
|
||||
}
|
||||
|
||||
button {
|
||||
align-self: unset;
|
||||
margin: 0 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
input {
|
||||
align-self: stretch;
|
||||
background-color: transparent;
|
||||
border: 1px solid #B8C7E0;
|
||||
border-radius: 4px;
|
||||
color: white;
|
||||
padding: 12px 8px;
|
||||
|
||||
&:focus {
|
||||
border-color: rgb(3, 118, 218);
|
||||
}
|
||||
}
|
||||
|
||||
button {
|
||||
align-self: stretch;
|
||||
margin: 8px 0;
|
||||
padding: 12px;
|
||||
transition: .2s transform ease;
|
||||
|
||||
&:disabled {
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
transform: scale(1.05);
|
||||
|
||||
&:disabled {
|
||||
transform: none;
|
||||
}
|
||||
}
|
||||
|
||||
&.borderLess {
|
||||
background-color: transparent;
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
&.primary {
|
||||
background-color: rgb(3, 118, 218);
|
||||
border-width: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -96,6 +96,11 @@
|
||||
padding: 0 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.prejoin-dialog-btn.primary,
|
||||
.action-btn.prejoin-dialog-btn.text {
|
||||
width: 310px;
|
||||
}
|
||||
}
|
||||
|
||||
.prejoin-dialog-callout {
|
||||
|
||||
@@ -1,18 +1,4 @@
|
||||
.prejoin {
|
||||
&-full-page {
|
||||
background: #1C2025;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: $toolbarZ + 1;
|
||||
}
|
||||
|
||||
&-input-area-container {
|
||||
position: absolute;
|
||||
bottom: 48px;
|
||||
width: 100%;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
&-input-area {
|
||||
margin: 0 auto;
|
||||
@@ -27,65 +13,6 @@
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
&-btn {
|
||||
border-radius: 3px;
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
font-size: 15px;
|
||||
line-height: 24px;
|
||||
padding: 7px 16px;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
width: 286px;
|
||||
|
||||
&--primary {
|
||||
background: #0376DA;
|
||||
border: 1px solid #0376DA;
|
||||
}
|
||||
|
||||
&--secondary {
|
||||
background: #2A3A4B;
|
||||
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;
|
||||
|
||||
.prejoin-btn-icon {
|
||||
& > svg {
|
||||
fill: #AFB6BC;
|
||||
}
|
||||
}
|
||||
|
||||
.prejoin-btn-options {
|
||||
border-left: 1px solid #AFB6BC;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-btn-options {
|
||||
align-items: center;
|
||||
border-left: 1px solid #fff;
|
||||
display: flex;
|
||||
height: 100%;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
width: 40px;
|
||||
}
|
||||
|
||||
&-text-btns {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
@@ -109,13 +36,7 @@
|
||||
}
|
||||
|
||||
&-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%;
|
||||
}
|
||||
}
|
||||
@@ -179,25 +100,6 @@
|
||||
margin: 200px auto 0 auto;
|
||||
}
|
||||
|
||||
&-btn-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-top: 32px;
|
||||
width: 100%;
|
||||
|
||||
&> div {
|
||||
margin: 0 12px;
|
||||
}
|
||||
|
||||
.settings-button-small-icon {
|
||||
right: -8px;
|
||||
|
||||
&--hovered {
|
||||
right: -10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-overlay {
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
@@ -217,22 +119,20 @@
|
||||
|
||||
&-status {
|
||||
align-items: center;
|
||||
bottom: 0;
|
||||
align-self: stretch;
|
||||
color: #fff;
|
||||
display: flex;
|
||||
font-size: 13px;
|
||||
min-height: 24px;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
z-index: 1;
|
||||
|
||||
&--warning {
|
||||
background: rgba(241, 173, 51, 0.5)
|
||||
background: rgba(241, 173, 51, 0.7)
|
||||
}
|
||||
&--ok {
|
||||
background: rgba(49, 183, 106, 0.5);
|
||||
background: rgba(49, 183, 106, 0.7);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -291,63 +191,3 @@
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.prejoin-copy {
|
||||
&-meeting {
|
||||
cursor: pointer;
|
||||
color: #fff;
|
||||
font-size: 15px;
|
||||
font-weight: 300;
|
||||
line-height: 24px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
&-url {
|
||||
max-width: 278px;
|
||||
padding: 8px 10px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
&-badge {
|
||||
border-radius: 4px;
|
||||
height: 100%;
|
||||
line-height: 38px;
|
||||
position: absolute;
|
||||
padding-left: 10px;
|
||||
text-align: left;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
|
||||
&--hover {
|
||||
background: #1C2025;
|
||||
}
|
||||
|
||||
&--done {
|
||||
background: #31B76A;
|
||||
}
|
||||
}
|
||||
|
||||
&-icon {
|
||||
position: absolute;
|
||||
right: 8px;
|
||||
top: 8px;
|
||||
|
||||
&--white {
|
||||
&> svg > path {
|
||||
fill: #fff
|
||||
}
|
||||
}
|
||||
|
||||
&--light {
|
||||
&> svg > path {
|
||||
fill: #D1DBE8;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-textarea {
|
||||
position: absolute;
|
||||
left: -9999px;
|
||||
}
|
||||
}
|
||||
|
||||
281
css/_premeeting-screens.scss
Normal file
281
css/_premeeting-screens.scss
Normal file
@@ -0,0 +1,281 @@
|
||||
/**
|
||||
* 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: radial-gradient(50% 50% at 50% 50%, #5D95C7 0%, #376288 100%), #FFFFFF;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
font-size: 1.3em;
|
||||
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;
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: column;
|
||||
justify-content: flex-end;
|
||||
z-index: $toolbarZ + 2;
|
||||
|
||||
.title {
|
||||
color: #fff;
|
||||
font-size: 24px;
|
||||
line-height: 32px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.copy-meeting {
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
color: #fff;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
font-size: 15px;
|
||||
font-weight: 300;
|
||||
justify-content: center;
|
||||
line-height: 24px;
|
||||
margin-bottom: 16px;
|
||||
|
||||
.url {
|
||||
display: flex;
|
||||
padding: 8px 10px;
|
||||
|
||||
&:hover {
|
||||
background: #1C2025;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
&.done {
|
||||
background: #31B76A;
|
||||
}
|
||||
|
||||
.jitsi-icon {
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.copy-meeting-text {
|
||||
width: 266px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
align-self: stretch;
|
||||
}
|
||||
|
||||
textarea {
|
||||
border-width: 0;
|
||||
height: 0;
|
||||
opacity: 0;
|
||||
padding: 0;
|
||||
width: 0;
|
||||
}
|
||||
}
|
||||
|
||||
input.field {
|
||||
background-color: transparent;
|
||||
border: 1px solid transparent;
|
||||
color: white;
|
||||
outline-width: 0;
|
||||
padding: 8px 0;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
|
||||
&.focused {
|
||||
border-bottom: 1px solid white;
|
||||
}
|
||||
|
||||
&.error::placeholder {
|
||||
color: $defaultWarningColor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.media-btn-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin: 32px 0;
|
||||
width: 100%;
|
||||
|
||||
&> div {
|
||||
margin: 0 12px;
|
||||
}
|
||||
|
||||
.settings-button-small-icon {
|
||||
right: -8px;
|
||||
|
||||
&--hovered {
|
||||
right: -10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#preview {
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
|
||||
&.no-video {
|
||||
background: radial-gradient(50% 50% at 50% 50%, #5B6F80 0%, #365067 100%), #FFFFFF;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.preview-avatar-container {
|
||||
width: 100%;
|
||||
height: 80%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
background: #A4B8D1;
|
||||
}
|
||||
|
||||
video {
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
position: absolute;
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -35,6 +35,10 @@
|
||||
cursor: initial;
|
||||
color: #fff;
|
||||
background-color: #a4b8d1;
|
||||
|
||||
&:hover {
|
||||
background-color: #a4b8d1;
|
||||
}
|
||||
}
|
||||
|
||||
svg {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -101,7 +101,6 @@ $sidebarWidth: 375px;
|
||||
* Misc.
|
||||
*/
|
||||
$borderRadius: 4px;
|
||||
$defaultWatermarkLink: '../images/watermark.png';
|
||||
$popoverMenuPadding: 13px;
|
||||
$happySoftwareBackground: transparent;
|
||||
$desktopAppDragBarHeight: 25px;
|
||||
@@ -270,4 +269,3 @@ $chromeExtensionBannerTop: 80px;
|
||||
$chromeExtensionBannerRight: 16px;
|
||||
$chromeExtensionBannerTopInMeeting: 10px;
|
||||
$chromeExtensionBannerRightInMeeeting: 10px;
|
||||
|
||||
|
||||
@@ -181,6 +181,13 @@
|
||||
visibility: hidden;
|
||||
z-index: $zindex2;
|
||||
}
|
||||
|
||||
&.shift-right {
|
||||
&#largeVideoContainer {
|
||||
margin-left: $sidebarWidth;
|
||||
width: calc(100% - #{$sidebarWidth});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#localVideoWrapper {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -40,9 +40,6 @@
|
||||
#remotePresenceMessage {
|
||||
display: none !important;
|
||||
}
|
||||
#largeVideoContainer {
|
||||
background-color: $defaultBackground !important;
|
||||
}
|
||||
|
||||
/**
|
||||
* Thumbnail popover menus can overlap other thumbnails. Setting an auto
|
||||
|
||||
@@ -76,6 +76,7 @@ $flagsImagePath: "../images/";
|
||||
@import 'filmstrip/vertical_filmstrip';
|
||||
@import 'filmstrip/vertical_filmstrip_overrides';
|
||||
@import 'labels';
|
||||
@import 'lobby';
|
||||
@import 'unsupported-browser/main';
|
||||
@import 'modals/invite/add-people';
|
||||
@import 'deep-linking/main';
|
||||
@@ -96,5 +97,7 @@ $flagsImagePath: "../images/";
|
||||
@import 'country-picker';
|
||||
@import 'modals/invite/invite_more';
|
||||
@import 'modals/security/security';
|
||||
@import 'premeeting-screens';
|
||||
@import 'e2ee';
|
||||
|
||||
/* Modules END */
|
||||
|
||||
@@ -208,6 +208,12 @@
|
||||
padding: 8px 16px;
|
||||
background: #0376DA;
|
||||
}
|
||||
|
||||
&.disabled {
|
||||
& > a {
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.stream {
|
||||
|
||||
@@ -3,35 +3,54 @@
|
||||
color: #fff;
|
||||
font-size: 15px;
|
||||
line-height: 24px;
|
||||
|
||||
&.password {
|
||||
|
||||
&.password-section {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
|
||||
&-actions {
|
||||
a {
|
||||
cursor: pointer;
|
||||
text-decoration: none;
|
||||
font-size: 14px;
|
||||
color: #6FB1EA;
|
||||
}
|
||||
.description {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
& > :first-child:not(:last-child) {
|
||||
margin-right: 24px;
|
||||
.password {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 15px;
|
||||
|
||||
&-actions {
|
||||
a {
|
||||
cursor: pointer;
|
||||
text-decoration: none;
|
||||
font-size: 14px;
|
||||
color: #6FB1EA;
|
||||
}
|
||||
|
||||
& > :first-child:not(:last-child) {
|
||||
margin-right: 24px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.separator-line {
|
||||
margin: 24px 0 24px -20px;
|
||||
padding: 0 20px;
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
background: #5E6D7A;
|
||||
|
||||
&:last-child {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.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;
|
||||
|
||||
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" }
|
||||
};
|
||||
|
||||
@@ -46,8 +46,12 @@ VirtualHost "jitmeet.example.com"
|
||||
"speakerstats";
|
||||
"turncredentials";
|
||||
"conference_duration";
|
||||
"muc_lobby_rooms";
|
||||
}
|
||||
c2s_require_encryption = false
|
||||
lobby_muc = "lobby.jitmeet.example.com"
|
||||
main_muc = "conference.jitmeet.example.com"
|
||||
-- muc_lobby_whitelist = { "recorder.jitmeet.example.com" } -- Here we can whitelist jibri to enter lobby enabled rooms
|
||||
|
||||
Component "conference.jitmeet.example.com" "muc"
|
||||
storage = "memory"
|
||||
@@ -81,3 +85,9 @@ Component "speakerstats.jitmeet.example.com" "speakerstats_component"
|
||||
|
||||
Component "conferenceduration.jitmeet.example.com" "conference_duration_component"
|
||||
muc_component = "conference.jitmeet.example.com"
|
||||
|
||||
Component "lobby.jitmeet.example.com" "muc"
|
||||
storage = "memory"
|
||||
restrict_room_creation = true
|
||||
muc_room_locking = false
|
||||
muc_room_default_public_jids = true
|
||||
|
||||
@@ -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 {
|
||||
|
||||
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,136 +1,23 @@
|
||||
/* eslint-disable no-unused-vars, no-var, max-len */
|
||||
/* eslint sort-keys: ["error", "asc", {"caseSensitive": false}] */
|
||||
|
||||
var interfaceConfig = {
|
||||
// TO FIX: this needs to be handled from SASS variables. There are some
|
||||
// methods allowing to use variables both in css and js.
|
||||
DEFAULT_BACKGROUND: '#474747',
|
||||
|
||||
/**
|
||||
* 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
|
||||
INVITATION_POWERED_BY: true,
|
||||
|
||||
/**
|
||||
* If we should show authentication block in profile
|
||||
*/
|
||||
AUTHENTICATION_ENABLE: true,
|
||||
|
||||
/**
|
||||
* 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',
|
||||
'e2ee', '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,
|
||||
RANDOM_AVATAR_URL_PREFIX: false,
|
||||
RANDOM_AVATAR_URL_SUFFIX: 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
|
||||
@@ -157,51 +44,114 @@ 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',
|
||||
|
||||
/**
|
||||
* 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 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)
|
||||
@@ -209,6 +159,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', '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,15 +269,15 @@ var interfaceConfig = {
|
||||
// List of undocumented settings
|
||||
/**
|
||||
INDICATOR_FONT_SIZES
|
||||
MOBILE_DYNAMIC_LINK
|
||||
PHONE_NUMBER_REGEX
|
||||
*/
|
||||
|
||||
// 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 */
|
||||
|
||||
@@ -287,13 +287,13 @@ PODS:
|
||||
- React-jsinspector (0.61.5-jitsi.1)
|
||||
- react-native-background-timer (2.1.1):
|
||||
- React
|
||||
- react-native-calendar-events (1.7.3):
|
||||
- react-native-calendar-events (2.0.0):
|
||||
- React
|
||||
- react-native-keep-awake (4.0.0):
|
||||
- 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
|
||||
@@ -365,7 +365,7 @@ PODS:
|
||||
- React
|
||||
- RNSVG (9.7.1):
|
||||
- React
|
||||
- RNWatch (0.2.0):
|
||||
- RNWatch (0.4.3):
|
||||
- React
|
||||
- Yoga (1.14.0)
|
||||
|
||||
@@ -566,10 +566,10 @@ SPEC CHECKSUMS:
|
||||
React-jsiexecutor: de1c37cf59ae9adcbf2be82eea0e090dc3f3205e
|
||||
React-jsinspector: b76c4e84a7833bb4c90549d59ed53ec299ff912b
|
||||
react-native-background-timer: 0d34748e53a972507c66963490c775321a88f6f2
|
||||
react-native-calendar-events: 2fe35a9294af05de0ed819d3a1b5dac048d2c010
|
||||
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
|
||||
@@ -586,7 +586,7 @@ SPEC CHECKSUMS:
|
||||
RNGoogleSignin: 39336070b35fc4cea6a98cf111e00480317be0ae
|
||||
RNSound: c980916b596cc15c8dcd2f6ecd3b13c4881dbe20
|
||||
RNSVG: aac12785382e8fd4f28d072fe640612e34914631
|
||||
RNWatch: 09738b339eceb66e4d80a2371633ca5fb380fa42
|
||||
RNWatch: a5320c959c75e72845c07985f3e935e58998f1d3
|
||||
Yoga: 7b4209fda2441f99d54dd6cf4c82b094409bb68f
|
||||
|
||||
PODFILE CHECKSUM: 082858daebbe170e7a490de433e7f2a99e0c3701
|
||||
|
||||
@@ -36,6 +36,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;
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.8.1</string>
|
||||
<string>2.9.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
lang/languages-mr.json
Normal file
38
lang/languages-mr.json
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"en": "English",
|
||||
"af": "Afrikaans",
|
||||
"az": "",
|
||||
"bg": "Bulgarian",
|
||||
"cs": "Czech",
|
||||
"de": "German",
|
||||
"el": "Greek",
|
||||
"eo": "Esperanto",
|
||||
"es": "Spanish",
|
||||
"fr": "French",
|
||||
"hy": "Armenian",
|
||||
"it": "Italian",
|
||||
"ja": "Japanese",
|
||||
"ko": "Korean",
|
||||
"nb": "",
|
||||
"oc": "Occitan",
|
||||
"pl": "Polish",
|
||||
"ptBR": "Portuguese (Brazil)",
|
||||
"ru": "Russian",
|
||||
"sk": "",
|
||||
"sl": "",
|
||||
"sv": "Swedish",
|
||||
"tr": "Turkish",
|
||||
"vi": "Vietnamese",
|
||||
"zhCN": "Chinese (China)",
|
||||
"zhTW": "Chinese (Taiwan)",
|
||||
"nl": "Dutch",
|
||||
"hu": "Hungarian",
|
||||
"hr": "Croatian",
|
||||
"frCA": "French (Canadian)",
|
||||
"fi": "Finnish",
|
||||
"et": "Estonian",
|
||||
"esUS": "Spanish (Latin America)",
|
||||
"enGB": "English (United Kingdom)",
|
||||
"da": "Danish",
|
||||
"ca": "Catalan"
|
||||
}
|
||||
@@ -38,5 +38,11 @@
|
||||
"lt": "Lituanian",
|
||||
"id": "Indonesian",
|
||||
"he": "Ebrèu",
|
||||
"eu": "Basc"
|
||||
"eu": "Basc",
|
||||
"mr": "Marathi",
|
||||
"sl": "Eslovèn",
|
||||
"ro": "Romanian",
|
||||
"ar": "Arabi"
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,38 +1,45 @@
|
||||
{
|
||||
"en": "Engleză",
|
||||
"af": "Afrikaans",
|
||||
"az": "",
|
||||
"ar": "Arabă",
|
||||
"bg": "Bulgară",
|
||||
"ca": "Catalană",
|
||||
"cs": "Cehă",
|
||||
"da": "Daneză",
|
||||
"de": "Germană",
|
||||
"el": "Greacă",
|
||||
"enGB": "Engleză (Regatul Unit)",
|
||||
"eo": "Esperanto",
|
||||
"es": "Spaniolă",
|
||||
"esUS": "Spaniolă (America Latină)",
|
||||
"et": "Estonă",
|
||||
"eu": "Bască",
|
||||
"fi": "Finlandeză",
|
||||
"fr": "Franceză",
|
||||
"hy": "Armeniana",
|
||||
"frCA": "Franceză (Canada)",
|
||||
"he": "Ebraică",
|
||||
"hr": "Croată",
|
||||
"hu": "Maghiară",
|
||||
"hy": "Armeană",
|
||||
"id": "Indoneziană",
|
||||
"it": "Italiană",
|
||||
"ja": "Japoneză",
|
||||
"ko": "Koreană",
|
||||
"nb": "",
|
||||
"oc": "Occitan",
|
||||
"lt": "Lituaniană",
|
||||
"nl": "Olandeză",
|
||||
"oc": "Occitană",
|
||||
"pl": "Poloneză",
|
||||
"ptBR": "Portugheză (Brazilia)",
|
||||
"ru": "Rusă",
|
||||
"ro": "Română",
|
||||
"sc": "Sardă",
|
||||
"sk": "Slovacă",
|
||||
"sl": "Slovenă",
|
||||
"sv": "Suedeză",
|
||||
"th": "Thailandeză",
|
||||
"tr": "Turcă",
|
||||
"uk": "Ucraineană",
|
||||
"vi": "Vietnameză",
|
||||
"zhCN": "Chineză (China)",
|
||||
"zhTW": "Chineză (Taiwan)",
|
||||
"nl": "Olandeză",
|
||||
"hu": "Maghiară",
|
||||
"hr": "Croată",
|
||||
"frCA": "Franceză (Canadia)",
|
||||
"fi": "Finlandeză",
|
||||
"et": "Estoniană",
|
||||
"esUS": "Spaniolă (America Latină)",
|
||||
"enGB": "Engleză (Regatul Unit)",
|
||||
"da": "Daneză",
|
||||
"că": "Catalană"
|
||||
"zhTW": "Chineză (Taiwan)"
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
"fr": "French",
|
||||
"frCA": "French (Canadian)",
|
||||
"he": "Hebrew",
|
||||
"mr":"Marathi",
|
||||
"hr": "Croatian",
|
||||
"hu": "Hungarian",
|
||||
"hy": "Armenian",
|
||||
|
||||
@@ -1,11 +1,20 @@
|
||||
{
|
||||
"addPeople": {
|
||||
"add": "Einladen",
|
||||
"addContacts": "Laden Sie Ihre Kontakte ein",
|
||||
"copyInvite": "Sitzungseinladung kopieren",
|
||||
"copyLink": "Meeting-Link kopieren",
|
||||
"copyStream": "Live-Streaming-Link 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.",
|
||||
"inviteMoreHeader": "Sie sind alleine in der Sitzung",
|
||||
"inviteMoreMailSubject": "An {{appName}} Meeting teilnehmen",
|
||||
"inviteMorePrompt": "Mehr Leute einladen",
|
||||
"linkCopied": "Link in die Zwischenablage kopiert",
|
||||
"loading": "Suche nach Teilnehmern und Telefonnummern",
|
||||
"loadingNumber": "Telefonnummer wird überprüft",
|
||||
"loadingPeople": "Suche nach einzuladenden Teilnehmern",
|
||||
@@ -14,6 +23,9 @@
|
||||
"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",
|
||||
"telephone": "Telefon: {{number}}",
|
||||
"title": "Teilnehmer zu dieser Konferenz einladen"
|
||||
},
|
||||
@@ -518,6 +530,11 @@
|
||||
"sectionList": {
|
||||
"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",
|
||||
"insecureRoomNameWarning": "Der Raumname ist unsicher. Unerwünschte Teilnehmer könnten Ihrer Konferenz beitreten",
|
||||
"securityOptions": "Sicherheitsoptionen"
|
||||
},
|
||||
"settings": {
|
||||
"calendar": {
|
||||
"about": "Die Kalenderintegration von {{appName}} wird verwendet, um ein sicheres Zugreifen auf Ihren Kalender und Auslesen der bevorstehenden Termine zu ermöglichen.",
|
||||
@@ -612,6 +629,7 @@
|
||||
"raiseHand": "„Melden“ ein-/ausschalten",
|
||||
"recording": "Aufzeichnung ein-/ausschalten",
|
||||
"remoteMute": "Teilnehmer stummschalten",
|
||||
"security": "Sicherheitsoptionen",
|
||||
"Settings": "Einstellungen ein-/ausschalten",
|
||||
"sharedvideo": "YouTube-Videofreigabe ein-/ausschalten",
|
||||
"shareRoom": "Person einladen",
|
||||
@@ -663,6 +681,7 @@
|
||||
"profile": "Profil bearbeiten",
|
||||
"raiseHand": "Hand erheben",
|
||||
"raiseYourHand": "Melden",
|
||||
"security": "Sicherheitsoptionen",
|
||||
"Settings": "Einstellungen",
|
||||
"sharedvideo": "YouTube-Video teilen",
|
||||
"shareRoom": "Person einladen",
|
||||
|
||||
@@ -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": "Από άκρη σε άκρη κρυπτογράφηση",
|
||||
"e2eeWarning": "<br /><p><strong>ΠΡΟΕΙΔΟΠΟΊΗΣΗ:</strong> Δε φαίνεται να έχουν όλοι οι συμμετέχοντες στη συνάντηση αυτή υποστήριξη για από άκρη σε άκρη κρυπτογράφηση. Αν την ενεργοποιήσετε, δεν θα μπορέσουν να σας δουν ούτε να σας ακούσουν.</p>",
|
||||
"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,10 +195,8 @@
|
||||
"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",
|
||||
"e2eeWarning": "<br /><p><strong>ATENCION:</strong> 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.</p>",
|
||||
"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",
|
||||
"externalInstallationMsg": "Necesita instalar nuestra extensión para compartir escritorio.",
|
||||
|
||||
@@ -194,10 +194,8 @@
|
||||
"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",
|
||||
"e2eeWarning": "<br /><p><strong>ATENCION:</strong> 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.</p>",
|
||||
"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",
|
||||
"externalInstallationMsg": "Necesita instalar nuestra extensión para compartir escritorio.",
|
||||
|
||||
@@ -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 diffision 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,7 +190,7 @@
|
||||
"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",
|
||||
@@ -468,6 +484,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...",
|
||||
@@ -679,7 +729,6 @@
|
||||
"videomute": "Démarrer / Arrêter la caméra",
|
||||
"startvideoblur": "Flouter mon arrière plan",
|
||||
"stopvideoblur": "Désactiver le flou d'arrière-plan",
|
||||
"muteEveryone": "Mettre tout le monde en sourdine",
|
||||
"noAudioSignalDialInDesc": "Vous pouvez également composer un numéro en utilisant :",
|
||||
"noAudioSignalDialInLinkDesc": "Numéros d'appel"
|
||||
},
|
||||
@@ -784,5 +833,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": "ダイヤルイン番号はありません。",
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"addPeople": {
|
||||
"add": "",
|
||||
"add": "Nced…",
|
||||
"countryNotSupported": "",
|
||||
"countryReminder": "",
|
||||
"disabled": "",
|
||||
"disabled": "insa",
|
||||
"failedToAdd": "",
|
||||
"footerText": "",
|
||||
"loading": "",
|
||||
"footerText": "aḍris n uḍar",
|
||||
"loading": "tulya",
|
||||
"loadingNumber": "",
|
||||
"loadingPeople": "",
|
||||
"noResults": "",
|
||||
"noResults": "ulac agemmuḍ",
|
||||
"noValidNumbers": "",
|
||||
"searchNumbers": "",
|
||||
"searchPeople": "",
|
||||
@@ -19,7 +19,7 @@
|
||||
},
|
||||
"audioDevices": {
|
||||
"bluetooth": "Bluetooth",
|
||||
"headphones": "",
|
||||
"headphones": "Aṣawaḍ uqeṛṛu",
|
||||
"phone": "Tiliɣri",
|
||||
"speaker": "Asawaḍ"
|
||||
},
|
||||
@@ -34,7 +34,7 @@
|
||||
"generic": "",
|
||||
"notSignedIn": ""
|
||||
},
|
||||
"join": "",
|
||||
"join": "Semlil",
|
||||
"joinTooltip": "",
|
||||
"nextMeeting": "",
|
||||
"noEvents": "",
|
||||
@@ -42,7 +42,7 @@
|
||||
"permissionButton": "",
|
||||
"permissionMessage": "",
|
||||
"refresh": "",
|
||||
"today": ""
|
||||
"today": "Ass-a"
|
||||
},
|
||||
"chat": {
|
||||
"error": "",
|
||||
@@ -51,7 +51,7 @@
|
||||
"popover": "Fren meffer isem",
|
||||
"title": ""
|
||||
},
|
||||
"title": ""
|
||||
"title": "Asqerdec"
|
||||
},
|
||||
"connectingOverlay": {
|
||||
"joiningRoom": ""
|
||||
@@ -62,16 +62,16 @@
|
||||
"AUTHFAIL": "",
|
||||
"CONNECTED": "Yeqqen",
|
||||
"CONNECTING": "Tuqqna",
|
||||
"CONNFAIL": "",
|
||||
"DISCONNECTED": "Yeffeɣ",
|
||||
"DISCONNECTING": "Yeffeɣ",
|
||||
"ERROR": "",
|
||||
"RECONNECTING": ""
|
||||
"CONNFAIL": "La connexion a échoué",
|
||||
"DISCONNECTED": "Ur yeqqin ara",
|
||||
"DISCONNECTING": "Tufɣa",
|
||||
"ERROR": "Tuccḍa",
|
||||
"RECONNECTING": "Tulsa n tuqqna"
|
||||
},
|
||||
"connectionindicator": {
|
||||
"address": "Tansa:",
|
||||
"bandwidth": "",
|
||||
"bitrate": "",
|
||||
"bitrate": "Aktum imisin",
|
||||
"bridgeCount": "",
|
||||
"connectedTo": "",
|
||||
"framerate": "",
|
||||
@@ -83,7 +83,7 @@
|
||||
"more": "Sken-d ugar",
|
||||
"packetloss": "",
|
||||
"quality": {
|
||||
"good": "Yelha",
|
||||
"good": "Telha",
|
||||
"inactive": "D arurmid",
|
||||
"lost": "Yexser",
|
||||
"nonoptimal": "",
|
||||
@@ -94,21 +94,21 @@
|
||||
"remoteport_plural": "",
|
||||
"remoteport": "",
|
||||
"resolution": "",
|
||||
"status": "Tuqqna",
|
||||
"status": "Tuqqna:",
|
||||
"transport_plural": "Tumnayt:",
|
||||
"transport": "Tumnayin:",
|
||||
"turn": ""
|
||||
},
|
||||
"dateUtils": {
|
||||
"earlier": "",
|
||||
"today": "",
|
||||
"yesterday": ""
|
||||
"today": "Ass-a",
|
||||
"yesterday": "Iḍelli"
|
||||
},
|
||||
"deepLinking": {
|
||||
"appNotInstalled": "",
|
||||
"description": "",
|
||||
"descriptionWithoutWeb": "",
|
||||
"downloadApp": "Zdem asnas",
|
||||
"downloadApp": "Sider-d asnas",
|
||||
"launchWebButton": "",
|
||||
"openApp": "",
|
||||
"title": "",
|
||||
@@ -116,9 +116,9 @@
|
||||
},
|
||||
"defaultLink": "md. {{url}}",
|
||||
"deviceError": {
|
||||
"cameraError": "Ugur deg unekcum i tkamirat-inek",
|
||||
"cameraError": "Ugur deg unekcum ɣer tkamirat-inek",
|
||||
"cameraPermission": "Ugur deg usɛay n tsiregt n tkamirat",
|
||||
"microphoneError": "Ugur deg unekcum i usawaḍ-inek",
|
||||
"microphoneError": "Ugur deg unekcum ɣer usawaḍ-inek",
|
||||
"microphonePermission": "Ugur deg usɛay n tsiregt n usawaḍ"
|
||||
},
|
||||
"deviceSelection": {
|
||||
@@ -135,33 +135,33 @@
|
||||
"alreadySharedVideoMsg": "",
|
||||
"alreadySharedVideoTitle": "",
|
||||
"applicationWindow": "",
|
||||
"Back": "",
|
||||
"Back": "Retour",
|
||||
"cameraConstraintFailedError": "",
|
||||
"cameraNotFoundError": "Ur tettwawef ara tkamirat.",
|
||||
"cameraNotFoundError": "Ur nufi ara takamirat.",
|
||||
"cameraNotSendingData": "",
|
||||
"cameraNotSendingDataTitle": "",
|
||||
"cameraPermissionDeniedError": "",
|
||||
"cameraUnknownError": "",
|
||||
"cameraUnsupportedResolutionError": "",
|
||||
"Cancel": "Semmet",
|
||||
"close": "",
|
||||
"Cancel": "Sefsex",
|
||||
"close": "Mdel",
|
||||
"conferenceDisconnectMsg": "",
|
||||
"conferenceDisconnectTitle": "",
|
||||
"conferenceDisconnectTitle": "Suffren-k.",
|
||||
"conferenceReloadMsg": "",
|
||||
"conferenceReloadTitle": "",
|
||||
"confirm": "",
|
||||
"confirmNo": "",
|
||||
"confirmYes": "",
|
||||
"confirm": "Sentem",
|
||||
"confirmNo": "Uhu",
|
||||
"confirmYes": "Ih",
|
||||
"connectError": "",
|
||||
"connectErrorWithMsg": "",
|
||||
"connecting": "Tuqqna",
|
||||
"connecting": "Yetteqqen",
|
||||
"contactSupport": "Anermis n tallelt",
|
||||
"copy": "Nɣel",
|
||||
"dismiss": "",
|
||||
"dismiss": "Agwi",
|
||||
"displayNameRequired": "",
|
||||
"done": "Ula d yiwen ",
|
||||
"enterDisplayName": "",
|
||||
"error": "",
|
||||
"error": "Tuccḍa",
|
||||
"externalInstallationMsg": "",
|
||||
"externalInstallationTitle": "",
|
||||
"goToStore": "",
|
||||
@@ -172,7 +172,7 @@
|
||||
"inlineInstallationMsg": "",
|
||||
"inlineInstallExtension": "Sbedd tura",
|
||||
"internalError": "",
|
||||
"internalErrorTitle": "",
|
||||
"internalErrorTitle": "Agul zdaxel",
|
||||
"kickMessage": "",
|
||||
"kickParticipantButton": "",
|
||||
"kickParticipantDialog": "",
|
||||
@@ -185,7 +185,7 @@
|
||||
"lockRoom": "",
|
||||
"lockTitle": "",
|
||||
"logoutQuestion": "",
|
||||
"logoutTitle": "",
|
||||
"logoutTitle": "Tufɣa",
|
||||
"maxUsersLimitReached": "",
|
||||
"maxUsersLimitReachedTitle": "",
|
||||
"micConstraintFailedError": "",
|
||||
@@ -198,14 +198,14 @@
|
||||
"muteParticipantButton": "Kkes imesli",
|
||||
"muteParticipantDialog": "",
|
||||
"muteParticipantTitle": "",
|
||||
"Ok": "",
|
||||
"Ok": "IH",
|
||||
"passwordLabel": "",
|
||||
"passwordNotSupported": "",
|
||||
"passwordNotSupportedTitle": "",
|
||||
"passwordRequired": "",
|
||||
"popupError": "",
|
||||
"popupErrorTitle": "",
|
||||
"recording": "",
|
||||
"recording": "Asekles",
|
||||
"recordingDisabledForGuestTooltip": "",
|
||||
"recordingDisabledTooltip": "",
|
||||
"rejoinNow": "",
|
||||
@@ -222,7 +222,7 @@
|
||||
"removeSharedVideoTitle": "",
|
||||
"reservationError": "",
|
||||
"reservationErrorMsg": "",
|
||||
"retry": "",
|
||||
"retry": "Ɛreḍ tikkelt nniḍen",
|
||||
"screenSharingFailedToInstall": "",
|
||||
"screenSharingFailedToInstallTitle": "",
|
||||
"screenSharingFirefoxPermissionDeniedError": "",
|
||||
@@ -230,7 +230,7 @@
|
||||
"screenSharingPermissionDeniedError": "",
|
||||
"serviceUnavailable": "",
|
||||
"sessTerminated": "",
|
||||
"Share": "",
|
||||
"Share": "Bḍu",
|
||||
"shareVideoLinkError": "",
|
||||
"shareVideoTitle": "Bḍu tavidyut",
|
||||
"shareYourScreen": "Bḍut agdil-nwen",
|
||||
@@ -244,8 +244,8 @@
|
||||
"stopRecordingWarning": "",
|
||||
"stopStreamingWarning": "",
|
||||
"streamKey": "",
|
||||
"Submit": "",
|
||||
"thankYou": "",
|
||||
"Submit": "Azen",
|
||||
"thankYou": "tanemmirt",
|
||||
"token": "",
|
||||
"tokenAuthFailed": "",
|
||||
"tokenAuthFailedTitle": "",
|
||||
@@ -255,8 +255,10 @@
|
||||
"WaitForHostMsg": "",
|
||||
"WaitForHostMsgWOk": "",
|
||||
"WaitingForHost": "",
|
||||
"Yes": "",
|
||||
"yourEntireScreen": ""
|
||||
"Yes": "Ih",
|
||||
"yourEntireScreen": "",
|
||||
"add": "Rnu",
|
||||
"e2eeLabel": "Tasarut"
|
||||
},
|
||||
"dialOut": {
|
||||
"statusMessage": ""
|
||||
@@ -271,18 +273,18 @@
|
||||
"veryGood": "Yelha maḍi"
|
||||
},
|
||||
"incomingCall": {
|
||||
"answer": "",
|
||||
"answer": "Tiririt",
|
||||
"audioCallTitle": "",
|
||||
"decline": "",
|
||||
"decline": "Agwi",
|
||||
"productLabel": "",
|
||||
"videoCallTitle": ""
|
||||
},
|
||||
"info": {
|
||||
"accessibilityLabel": "",
|
||||
"accessibilityLabel": "Sken talɣut",
|
||||
"addPassword": "",
|
||||
"cancelPassword": "",
|
||||
"conferenceURL": "",
|
||||
"country": "",
|
||||
"conferenceURL": "Aseγwen:",
|
||||
"country": "Tamurt",
|
||||
"dialANumber": "",
|
||||
"dialInConferenceID": "",
|
||||
"dialInNotSupported": "",
|
||||
@@ -303,36 +305,36 @@
|
||||
"noRoom": "",
|
||||
"numbers": "",
|
||||
"password": "",
|
||||
"title": "",
|
||||
"title": "Bḍu",
|
||||
"tooltip": "",
|
||||
"label": ""
|
||||
},
|
||||
"inviteDialog": {
|
||||
"alertText": "",
|
||||
"header": "",
|
||||
"header": "Nced…",
|
||||
"searchCallOnlyPlaceholder": "",
|
||||
"searchPeopleOnlyPlaceholder": "",
|
||||
"searchPlaceholder": "",
|
||||
"send": ""
|
||||
"send": "Azen"
|
||||
},
|
||||
"inlineDialogFailure": {
|
||||
"msg": "Yewwet-aɣ-tt wugur ciṭṭuḥ",
|
||||
"retry": "Ɛreḍ daɣen",
|
||||
"msg": "Yewwet-aɣ-tt ciṭṭuḥ wugur.",
|
||||
"retry": "Ɛreḍ tikkelt nniḍen",
|
||||
"support": "Tallalt",
|
||||
"supportMsg": ""
|
||||
},
|
||||
"keyboardShortcuts": {
|
||||
"focusLocal": "Asersi n tavidiyut innu",
|
||||
"focusRemote": "Asersi n tivdyutin n wiyaḍ",
|
||||
"fullScreen": "Rmed neɣ kkes agdil aččuran",
|
||||
"fullScreen": "Rmed neɣ ffeɣ seg ugdil aččuran",
|
||||
"keyboardShortcuts": "Inegzumen n unasiw ",
|
||||
"localRecording": "Sken neɣ ffer isenqaden idiganen n usekles",
|
||||
"mute": "Rmed neɣ sens asawaḍ",
|
||||
"pushToTalk": "Sit akken ad temmeslayeḍ",
|
||||
"raiseHand": "sali neɣ ṣub afus-ik",
|
||||
"raiseHand": "Sali neɣ ṣub afus-ik",
|
||||
"showSpeakerStats": "Sken addaden n umendid",
|
||||
"toggleChat": "Ldi neɣ mdel agalis n usqardec",
|
||||
"toggleFilmstrip": "Sken neɣ ffer tinfulin n tvidyut",
|
||||
"toggleFilmstrip": "Sken neɣ ffer tinfulin n tvidyutin",
|
||||
"toggleScreensharing": "Uɣal gar tkamiṛat d beṭṭu n ugdil",
|
||||
"toggleShortcuts": "Sken neɣ ffer inegzumen n unasiw",
|
||||
"videoMute": "Sekker neɣ ḥbes takamiṛat innek"
|
||||
@@ -341,10 +343,10 @@
|
||||
"busy": "",
|
||||
"busyTitle": "",
|
||||
"changeSignIn": "",
|
||||
"choose": "",
|
||||
"choose": "fren",
|
||||
"chooseCTA": "",
|
||||
"enterStreamKey": "",
|
||||
"error": "",
|
||||
"error": "tuccḍa",
|
||||
"errorAPI": "",
|
||||
"errorLiveStreamNotEnabled": "",
|
||||
"expandedOff": "",
|
||||
@@ -353,28 +355,28 @@
|
||||
"failedToStart": "Ur yesmurres wusrid deg uqlaɛ",
|
||||
"getStreamKeyManually": "",
|
||||
"invalidStreamKey": "",
|
||||
"off": "",
|
||||
"on": "",
|
||||
"off": "sens",
|
||||
"on": "rmed",
|
||||
"pending": "",
|
||||
"serviceName": "",
|
||||
"signedInAs": "",
|
||||
"signIn": "",
|
||||
"signedInAs": "iqqen am",
|
||||
"signIn": "Qqen s Google",
|
||||
"signInCTA": "",
|
||||
"signOut": "",
|
||||
"signOut": "Ffeɣ",
|
||||
"start": "",
|
||||
"streamIdHelp": "",
|
||||
"streamIdHelp": "D acu wa?",
|
||||
"unavailableTitle": ""
|
||||
},
|
||||
"localRecording": {
|
||||
"clientState": {
|
||||
"off": "",
|
||||
"on": "",
|
||||
"unknown": ""
|
||||
"off": "insa",
|
||||
"on": "irmed",
|
||||
"unknown": "D arussin"
|
||||
},
|
||||
"dialogTitle": "",
|
||||
"duration": "",
|
||||
"durationNA": "",
|
||||
"encoding": "",
|
||||
"duration": "Tanzagt",
|
||||
"durationNA": "N/A",
|
||||
"encoding": "Encodage",
|
||||
"label": "",
|
||||
"labelToolTip": "",
|
||||
"localRecording": "",
|
||||
@@ -385,17 +387,17 @@
|
||||
"finishedModerator": "",
|
||||
"notModerator": ""
|
||||
},
|
||||
"moderator": "",
|
||||
"no": "",
|
||||
"moderator": "Aseɣyad",
|
||||
"no": "uhu",
|
||||
"participant": "",
|
||||
"participantStats": "",
|
||||
"sessionToken": "",
|
||||
"start": "",
|
||||
"stop": "",
|
||||
"yes": ""
|
||||
"yes": "Ih"
|
||||
},
|
||||
"lockRoomPassword": "",
|
||||
"lockRoomPasswordUppercase": "",
|
||||
"lockRoomPassword": "awal uffir",
|
||||
"lockRoomPasswordUppercase": "Mot de passe",
|
||||
"me": "nek",
|
||||
"notify": {
|
||||
"connectedOneMember": "",
|
||||
@@ -411,7 +413,7 @@
|
||||
"kickParticipant": "",
|
||||
"me": "Nekk",
|
||||
"moderator": "",
|
||||
"muted": "Tebdam asqerdec deg tsusmi.",
|
||||
"muted": "Tebdiḍ asqerdec s tsusmi.",
|
||||
"mutedTitle": "",
|
||||
"mutedRemotelyTitle": "",
|
||||
"mutedRemotelyDescription": "",
|
||||
@@ -423,32 +425,32 @@
|
||||
"startSilentDescription": "",
|
||||
"suboptimalExperienceDescription": "",
|
||||
"suboptimalExperienceTitle": "",
|
||||
"unmute": "",
|
||||
"unmute": "Susem",
|
||||
"newDeviceCameraTitle": "",
|
||||
"newDeviceAudioTitle": "",
|
||||
"newDeviceAction": ""
|
||||
"newDeviceAction": "Seqdec"
|
||||
},
|
||||
"passwordSetRemotely": "Yettwaɛeyyen sɣur yimekki nniḍen",
|
||||
"passwordDigitsOnly": "",
|
||||
"poweredby": "Yemmug-d sɣur",
|
||||
"poweredby": "yemmug-d sɣur",
|
||||
"presenceStatus": {
|
||||
"busy": "",
|
||||
"calling": "",
|
||||
"connected": "Yeqqen",
|
||||
"connecting": "Tuqqna",
|
||||
"connecting2": "Tuqqna",
|
||||
"connecting": "Yetteqqen…",
|
||||
"connecting2": "Yetteqqen*…",
|
||||
"disconnected": "Yeffeɣ",
|
||||
"expired": "",
|
||||
"ignored": "",
|
||||
"expired": "Yemmut",
|
||||
"ignored": "Ignoré",
|
||||
"initializingCall": "",
|
||||
"invited": "",
|
||||
"rejected": "",
|
||||
"rejected": "Yerrad",
|
||||
"ringing": ""
|
||||
},
|
||||
"profile": {
|
||||
"setDisplayNameLabel": "Fernet azun",
|
||||
"setEmailInput": "Sekcem amayel",
|
||||
"setEmailLabel": "Fernet amayel-nwen Gravatar",
|
||||
"setDisplayNameLabel": "Fren azun",
|
||||
"setEmailInput": "Sekcem-d imayl",
|
||||
"setEmailLabel": "Fren imayl-inek n Gravatar",
|
||||
"title": "Amaɣnu"
|
||||
},
|
||||
"recording": {
|
||||
@@ -466,13 +468,13 @@
|
||||
"live": "",
|
||||
"loggedIn": "",
|
||||
"off": "",
|
||||
"on": "",
|
||||
"on": "Asekles",
|
||||
"pending": "",
|
||||
"rec": "",
|
||||
"serviceDescription": "",
|
||||
"serviceName": "",
|
||||
"signIn": "",
|
||||
"signOut": "",
|
||||
"signIn": "Qqen",
|
||||
"signOut": "Ffeɣ",
|
||||
"unavailable": "",
|
||||
"unavailableTitle": ""
|
||||
},
|
||||
@@ -485,15 +487,15 @@
|
||||
"disconnect": "Yeffeɣ",
|
||||
"microsoftSignIn": "",
|
||||
"signedIn": "",
|
||||
"title": ""
|
||||
"title": "Awitay"
|
||||
},
|
||||
"devices": "",
|
||||
"followMe": "Yal amdan iy-ṭararen",
|
||||
"language": "",
|
||||
"devices": "Périphériques",
|
||||
"followMe": "Yal amdan iy-ṭṭafaren",
|
||||
"language": "Langue ",
|
||||
"loggedIn": "",
|
||||
"moderator": "",
|
||||
"more": "",
|
||||
"name": "",
|
||||
"moderator": "Aseɣyad",
|
||||
"more": "Ugar",
|
||||
"name": "ISem",
|
||||
"noDevice": "Ula d yiwen ",
|
||||
"selectAudioOutput": "",
|
||||
"selectCamera": "Takamiṛatt",
|
||||
@@ -503,19 +505,21 @@
|
||||
"title": "Iɣewwaren"
|
||||
},
|
||||
"settingsView": {
|
||||
"alertOk": "",
|
||||
"alertTitle": "",
|
||||
"alertOk": "IH",
|
||||
"alertTitle": "Asmigel",
|
||||
"alertURLText": "",
|
||||
"buildInfoSection": "",
|
||||
"conferenceSection": "",
|
||||
"displayName": "",
|
||||
"email": "",
|
||||
"displayName": "Isem n uskan",
|
||||
"email": "Imayl",
|
||||
"header": "Iɣewwaren",
|
||||
"profileSection": "Amaɣnu",
|
||||
"serverURL": "",
|
||||
"serverURL": "URL n uqeddac",
|
||||
"startWithAudioMuted": "",
|
||||
"startWithVideoMuted": "",
|
||||
"version": ""
|
||||
"version": "Version",
|
||||
"alertCancel": "Semmet",
|
||||
"advanced": "Talqayt"
|
||||
},
|
||||
"share": {
|
||||
"dialInfoText": "",
|
||||
@@ -523,20 +527,20 @@
|
||||
},
|
||||
"speaker": "Asawaḍ",
|
||||
"speakerStats": {
|
||||
"hours": "",
|
||||
"minutes": "",
|
||||
"name": "",
|
||||
"seconds": "",
|
||||
"hours": "isragen",
|
||||
"minutes": "tisedatin",
|
||||
"name": "Isem",
|
||||
"seconds": "tisnatin",
|
||||
"speakerStats": "",
|
||||
"speakerTime": ""
|
||||
},
|
||||
"startupoverlay": {
|
||||
"policyText": "",
|
||||
"policyText": " ",
|
||||
"title": "{{app}} yesra ad yesseqdec asawaḍ d tkamirat-inek."
|
||||
},
|
||||
"suspendedoverlay": {
|
||||
"rejoinKeyTitle": "Kcem",
|
||||
"text": "Sit deg <i>Kcem</i> d taqeffalt ad teqqneḍ.",
|
||||
"text": "Sit deg taqeffalt <i>Kcem</i> akken ad teqqneḍ.",
|
||||
"title": "Asarag-inek s uvidyu yettwaseḥbes acku aselkim-agi igen."
|
||||
},
|
||||
"toolbar": {
|
||||
@@ -544,8 +548,8 @@
|
||||
"audioOnly": "Rmed/Sens imesli kan",
|
||||
"audioRoute": "",
|
||||
"callQuality": "",
|
||||
"cc": "",
|
||||
"chat": "Eg-d asfaylu n udiwenni",
|
||||
"cc": "Commuter les sous-titres",
|
||||
"chat": "Ffer/Sken-d asfaylu n udiwenni",
|
||||
"document": "Ldi / Mdel zzmam yettwabḍan",
|
||||
"feedback": "",
|
||||
"fullScreen": "",
|
||||
@@ -572,9 +576,11 @@
|
||||
"tileView": "",
|
||||
"toggleCamera": "",
|
||||
"videomute": "",
|
||||
"videoblur": ""
|
||||
"videoblur": "",
|
||||
"privateMessage": "Azen izen uslig",
|
||||
"help": "Tallelt"
|
||||
},
|
||||
"addPeople": "Rnut-d imdanen i tiɣri-nwen",
|
||||
"addPeople": "Rnu-d imdanen ɣer tiɣri-inek",
|
||||
"audioOnlyOff": "",
|
||||
"audioOnlyOn": "",
|
||||
"audioRoute": "",
|
||||
@@ -589,17 +595,17 @@
|
||||
"exitFullScreen": "",
|
||||
"exitTileView": "",
|
||||
"feedback": "",
|
||||
"hangup": "Eǧǧ",
|
||||
"hangup": "Ffeɣ",
|
||||
"invite": "",
|
||||
"login": "Kcem",
|
||||
"logout": "",
|
||||
"login": "Qqen",
|
||||
"logout": "Tufɣa",
|
||||
"lowerYourHand": "",
|
||||
"moreActions": "",
|
||||
"mute": "D asusam / D arasusam",
|
||||
"moreActions": "Ugar n tigawin",
|
||||
"mute": "Sgugem / Kkes tigugmi",
|
||||
"openChat": "",
|
||||
"pip": "",
|
||||
"profile": "Ẓreg amaɣnu-ik ",
|
||||
"raiseHand": "sali neɣ ṣub afus-ik",
|
||||
"raiseHand": "Sali / Ṣub afus-ik",
|
||||
"raiseYourHand": "",
|
||||
"Settings": "Iɣewwaren",
|
||||
"sharedvideo": "Bḍu tavidyut n Youtube",
|
||||
@@ -616,7 +622,10 @@
|
||||
"toggleCamera": "",
|
||||
"videomute": "Seqleɛ / Seḥbes takamirat",
|
||||
"startvideoblur": "",
|
||||
"stopvideoblur": ""
|
||||
"stopvideoblur": "",
|
||||
"privateMessage": "Azen izen uslig",
|
||||
"moreOptions": "Ugar n textirin",
|
||||
"help": "Tallelt"
|
||||
},
|
||||
"transcribing": {
|
||||
"ccButtonTooltip": "",
|
||||
@@ -631,16 +640,16 @@
|
||||
"tr": ""
|
||||
},
|
||||
"userMedia": {
|
||||
"androidGrantPermissions": "Fren <b><i>Sireg</i></b> Mara d-yessuter yiminig-ik tisurag.",
|
||||
"chromeGrantPermissions": "Fren <b><i>Sireg</i></b> Mara d-yessuter yiminig-ik tisurag.",
|
||||
"edgeGrantPermissions": "Fren <b><i>OK</i></b> mara d-yessuter yiminig tisurag.",
|
||||
"androidGrantPermissions": "Fren <b><i>Sireg</i></b> mara d-yessuter yiminig-ik tisurag.",
|
||||
"chromeGrantPermissions": "Fren <b><i>Sireg</i></b> mara d-yessuter yiminig-ik tisurag.",
|
||||
"edgeGrantPermissions": "Fren <b><i>Ih</i></b> mara d-yessuter yiminig tisurag.",
|
||||
"electronGrantPermissions": "Ttxil-k efk-d tasiregt n beṭṭu n tkamiṛat d umikṛufun-ik",
|
||||
"firefoxGrantPermissions": "Fren <b><i>Bḍu abenk yettwafernen</i></b> mara d-yessuter yiminig-ik tisurag.",
|
||||
"iexplorerGrantPermissions": "Fren <b><i>OK</i></b> mara d-yessuter yiminig tisurag.",
|
||||
"iexplorerGrantPermissions": "Fren <b><i>Ih</i></b> mara d-yessuter yiminig tisurag.",
|
||||
"nwjsGrantPermissions": "Ttxil-k efk-d tasiregt n beṭṭu n tkamiṛat d umikṛufun-ik",
|
||||
"operaGrantPermissions": "Fren <b><i>Sireg</i></b> Mara d-yessuter yiminig-ik tisurag.",
|
||||
"react-nativeGrantPermissions": "Fren <b><i>Sireg</i></b> Mara d-yessuter yiminig-ik tisurag.",
|
||||
"safariGrantPermissions": "Fren <b><i>OK</i></b> mara d-yessuter yiminig tisurag."
|
||||
"react-nativeGrantPermissions": "Fren <b><i>Sireg</i></b> mara d-yessuter yiminig-ik tisurag.",
|
||||
"safariGrantPermissions": "Fren <b><i>Ih</i></b> mara d-yessuter yiminig tisurag."
|
||||
},
|
||||
"videoSIPGW": {
|
||||
"busy": "",
|
||||
@@ -669,11 +678,11 @@
|
||||
},
|
||||
"videothumbnail": {
|
||||
"domute": "Kkes imesli",
|
||||
"flip": "",
|
||||
"flip": "Tuttya",
|
||||
"kick": "",
|
||||
"moderator": "",
|
||||
"moderator": "Aseɣyad",
|
||||
"mute": "",
|
||||
"muted": "Kkes imesli",
|
||||
"muted": "Tettwasgugem",
|
||||
"remoteControl": "Asenqed agemmaḍ",
|
||||
"show": "",
|
||||
"videomute": ""
|
||||
@@ -681,29 +690,35 @@
|
||||
"welcomepage": {
|
||||
"accessibilityLabel": {
|
||||
"join": "Sit iwakken ad tedduḍ",
|
||||
"roomname": "Aru isem n tzeqqa"
|
||||
"roomname": "Sekcem-d isem n tzeqqa"
|
||||
},
|
||||
"appDescription": "",
|
||||
"audioVideoSwitch": {
|
||||
"audio": "Taɣect",
|
||||
"video": "Tavidyut"
|
||||
},
|
||||
"calendar": "",
|
||||
"calendar": "Awitay",
|
||||
"connectCalendarButton": "Qqen awitay-inek",
|
||||
"connectCalendarText": "",
|
||||
"enterRoomTitle": "",
|
||||
"go": "DDU",
|
||||
"join": "KCEM",
|
||||
"info": "",
|
||||
"join": "SNULFU-D / KCEM",
|
||||
"info": "Talɣut",
|
||||
"privacy": "Tabaḍnit",
|
||||
"recentList": "",
|
||||
"recentListDelete": "",
|
||||
"recentList": "Melmi kan",
|
||||
"recentListDelete": "Kkes",
|
||||
"recentListEmpty": "",
|
||||
"reducedUIText": "",
|
||||
"roomname": "Aru isem n tzeqqa",
|
||||
"roomname": "Sekcem-d isem n tzeqqa",
|
||||
"roomnameHint": "Sekcem isem neɣ URL n texxamt wuɣur tebɣiḍ ad tedduḍ. Tzemreḍ ad tgeḍ isem, eǧǧ kan imdanen ara temlileḍ ad t-isinen iwakken ad skecmen yiwen n yisem.",
|
||||
"sendFeedback": "Azen rray-ik",
|
||||
"terms": "Tiwtilin",
|
||||
"title": ""
|
||||
"title": "",
|
||||
"goSmall": "Ddu",
|
||||
"getHelp": "Awi tallelt"
|
||||
},
|
||||
"prejoin": {
|
||||
"or": "neɣ",
|
||||
"doNotShow": "Ur d-skan ara tikkelt-nniḍen"
|
||||
}
|
||||
}
|
||||
|
||||
815
lang/main-mr.json
Normal file
815
lang/main-mr.json
Normal file
@@ -0,0 +1,815 @@
|
||||
{
|
||||
"addPeople": {
|
||||
"add": "आमंत्रित करा",
|
||||
"countryNotSupported": "आम्ही अद्याप या गंतव्याचे समर्थन करत नाही.",
|
||||
"countryReminder": "यूएस बाहेर कॉल करीत आहे? कृपया आपण देशाच्या कोडसह प्रारंभ केल्याचे सुनिश्चित करा!",
|
||||
"disabled": "आपण लोकांना आमंत्रित करू शकत नाही.",
|
||||
"failedToAdd": "सहभागी जोडण्यात अयशस्वी",
|
||||
"footerText": "डायल आउट करणे अक्षम केले आहे.",
|
||||
"loading": "लोक आणि फोन नंबर शोधत आहे",
|
||||
"loadingNumber": "फोन नंबर सत्यापित करीत आहे",
|
||||
"loadingPeople": "लोकांना आमंत्रित करण्यासाठी शोधत आहे",
|
||||
"noResults": "कोणतेही जुळणारे शोध परिणाम नाहीत",
|
||||
"noValidNumbers": "कृपया एक फोन नंबर प्रविष्ट करा",
|
||||
"searchNumbers": "फोन नंबर जोडा",
|
||||
"searchPeople": "लोकांचा शोध घ्या",
|
||||
"searchPeopleAndNumbers": "लोक शोधा किंवा त्यांचा फोन नंबर जोडा",
|
||||
"telephone": "दूरध्वनी: {{number}}",
|
||||
"title": "या संमेलनात लोकांना आमंत्रित करा"
|
||||
},
|
||||
"audioDevices": {
|
||||
"bluetooth": "ब्लूटुथ",
|
||||
"headphones": "हेडफोन",
|
||||
"phone": "फोन",
|
||||
"speaker": "स्पीकर",
|
||||
"none": "कोणतेही ऑडिओ डिव्हाइस उपलब्ध नाहीत"
|
||||
},
|
||||
"audioOnly": {
|
||||
"audioOnly": "कमी बँडविड्थ"
|
||||
},
|
||||
"calendarSync": {
|
||||
"addMeetingURL": "मीटिंगचा दुवा जोडा",
|
||||
"confirmAddLink": "आपण या कार्यक्रमास एक Jitsi दुवा जोडू इच्छिता?",
|
||||
"error": {
|
||||
"appConfiguration": "कॅलेंडर समाकलन योग्यरित्या कॉन्फिगर केलेले नाही.",
|
||||
"generic": "त्रुटी आढळली आहे. कृपया आपल्या कॅलेंडर सेटिंग्ज तपासा किंवा कॅलेंडर रीफ्रेश करा.",
|
||||
"notSignedIn": "कॅलेंडर इव्हेंट पाहण्यासाठी प्रमाणीकरण करताना त्रुटी आली. कृपया आपल्या कॅलेंडर सेटिंग्ज तपासा आणि पुन्हा लॉग इन करण्याचा प्रयत्न करा."
|
||||
},
|
||||
"join": "सामील व्हा",
|
||||
"joinTooltip": "बैठकीत सामील व्हा",
|
||||
"nextMeeting": "पुढील बैठक",
|
||||
"noEvents": "कोणतेही आगामी कार्यक्रम शेड्यूल केलेले नाहीत.",
|
||||
"ongoingMeeting": "चालू बैठक",
|
||||
"permissionButton": "सेटिंग्ज उघडा",
|
||||
"permissionMessage": "अॅपमधील आपली संमेलने पहाण्यासाठी कॅलेंडर परवानगी आवश्यक आहे.",
|
||||
"refresh": "रीफ्रेश कॅलेंडर",
|
||||
"today": "आज"
|
||||
},
|
||||
"chat": {
|
||||
"error": "Error: तुमचा संदेश पाठविला गेला नाही. कारणः {{error}}",
|
||||
"fieldPlaceHolder": "आपला संदेश येथे टाइप करा",
|
||||
"messagebox": "एक संदेश टाइप करा",
|
||||
"messageTo": "यांना खाजगी संदेश {{recipient}}",
|
||||
"noMessagesMessage": "अद्याप मीटिंगमध्ये कोणतेही संदेश नाहीत. येथे संभाषण सुरू करा!",
|
||||
"nickname": {
|
||||
"popover": "टोपणनाव निवडा",
|
||||
"title": "चॅट वापरण्यासाठी टोपणनाव प्रविष्ट करा"
|
||||
},
|
||||
"privateNotice": "यांना खाजगी संदेश{{recipient}}",
|
||||
"title": "गप्पा",
|
||||
"you": "आपण"
|
||||
},
|
||||
"chromeExtensionBanner": {
|
||||
"installExtensionText": "Google कॅलेंडर आणि ऑफिस 365 एकत्रिकरणासाठी विस्तार स्थापित करा",
|
||||
"buttonText": "Chrome विस्तार स्थापित करा",
|
||||
"dontShowAgain": "मला हे पुन्हा दर्शवू नका"
|
||||
},
|
||||
"connectingOverlay": {
|
||||
"joiningRoom": "आपल्याला आपल्या संमेलनात कनेक्ट करीत आहे ..."
|
||||
},
|
||||
"connection": {
|
||||
"ATTACHED": "जोडले",
|
||||
"AUTHENTICATING": "प्रमाणीकरण करीत आहे",
|
||||
"AUTHFAIL": "प्रमाणीकरण अयशस्वी",
|
||||
"CONNECTED": "जोडलेले",
|
||||
"CONNECTING": "कनेक्ट करीत आहे",
|
||||
"CONNFAIL": "संपर्क खंडित",
|
||||
"DISCONNECTED": "डिस्कनेक्ट केलेले",
|
||||
"DISCONNECTING": "डिस्कनेक्ट करत आहे",
|
||||
"ERROR": "त्रुटी",
|
||||
"FETCH_SESSION_ID": "सत्र आयडी प्राप्त करीत आहे ...",
|
||||
"GET_SESSION_ID_ERROR": "सत्र-आयडी त्रुटी मिळवा:{{code}}",
|
||||
"GOT_SESSION_ID": "सत्र-आयडी मिळवित आहे ... पूर्ण झाले",
|
||||
"LOW_BANDWIDTH": "बँडविड्थ जतन करण्यासाठी {{displayName}}चा व्हिडिओ बंद केला गेला आहे"
|
||||
},
|
||||
"connectionindicator": {
|
||||
"address": "पत्ता:",
|
||||
"bandwidth": "अंदाजे बँडविड्थ:",
|
||||
"bitrate": "बिटरेट:",
|
||||
"bridgeCount": "सर्व्हर संख्या:",
|
||||
"connectedTo": "यांना जोडलेले:",
|
||||
"e2e_rtt": "E2E आरटीटी:",
|
||||
"framerate": "फ्रेम दर:",
|
||||
"less": "कमी दाखवा",
|
||||
"localaddress": "स्थानिक पत्ता:",
|
||||
"localaddress_plural": "स्थानिक पत्ते:",
|
||||
"localport": "स्थानिक बंदर:",
|
||||
"localport_plural": "स्थानिक बंदरे:",
|
||||
"more": "अजून दाखवा",
|
||||
"packetloss": "पॅकेट तोटा",
|
||||
"quality": {
|
||||
"good": "चांगले",
|
||||
"inactive": "निष्क्रिय",
|
||||
"lost": "हरवले",
|
||||
"nonoptimal": "नॉनओप्टिमल",
|
||||
"poor": "गरीब"
|
||||
},
|
||||
"remoteaddress": "दूरस्थ पत्ता:",
|
||||
"remoteaddress_plural": "दूरस्थ पत्ते:",
|
||||
"remoteport": "रिमोट पोर्ट:",
|
||||
"remoteport_plural": "दूरस्थ बंदरे:",
|
||||
"resolution": "ठराव:",
|
||||
"status": "कनेक्शन:",
|
||||
"transport": "वाहतूक:",
|
||||
"transport_plural": "परिवहन:"
|
||||
},
|
||||
"dateUtils": {
|
||||
"earlier": "यापूर्वी",
|
||||
"today": "आज",
|
||||
"yesterday": "काल"
|
||||
},
|
||||
"deepLinking": {
|
||||
"appNotInstalled": "आपल्या फोनवर या संमेलनात सामील होण्यासाठी आपल्यास {{app}}मोबाइल अॅप आवश्यक आहे.",
|
||||
"description": "काहीच घडलं नाही? आम्ही आपली बैठक {{app}} डेस्कटॉप अॅपमध्ये लाँच करण्याचा प्रयत्न केला. पुन्हा प्रयत्न करा किंवा {{app}} वेब अॅपमध्ये लाँच करा",
|
||||
"descriptionWithoutWeb": "काहीच घडलं नाही? आम्ही आपली बैठक {{app}} डेस्कटॉप अॅपमध्ये लाँच करण्याचा प्रयत्न केला.",
|
||||
"downloadApp": "अॅप डाउनलोड करा",
|
||||
"launchWebButton": "वेबमध्ये लाँच करा",
|
||||
"openApp": "अॅप वर सुरू ठेवा",
|
||||
"title": " {{app}}मध्ये आपली बैठक सुरू करत आहे",
|
||||
"tryAgainButton": "डेस्कटॉपवर पुन्हा प्रयत्न करा"
|
||||
},
|
||||
"defaultLink": "उदा. {{url}}",
|
||||
"defaultNickname": " उदा. जेन गुलाबी",
|
||||
"deviceError": {
|
||||
"cameraError": "आपल्या कॅमेर्यावर प्रवेश करण्यात अयशस्वी",
|
||||
"cameraPermission": "कॅमेर्याची परवानगी घेण्यात त्रुटी",
|
||||
"microphoneError": "आपल्या मायक्रोफोनवर प्रवेश करण्यात अयशस्वी",
|
||||
"microphonePermission": "मायक्रोफोन परवानगी प्राप्त करताना त्रुटी"
|
||||
},
|
||||
"deviceSelection": {
|
||||
"noPermission": "परवानगी दिली नाही",
|
||||
"previewUnavailable": "पूर्वावलोकन अनुपलब्ध",
|
||||
"selectADevice": "एक डिव्हाइस निवडा",
|
||||
"testAudio": "चाचणी आवाज प्ले करा"
|
||||
},
|
||||
"dialog": {
|
||||
"accessibilityLabel": {
|
||||
"liveStreaming": "थेट प्रसारण"
|
||||
},
|
||||
"allow": "परवानगी द्या",
|
||||
"alreadySharedVideoMsg": "दुसरा सहभागी आधीपासूनच व्हिडिओ सामायिक करीत आहे. ही परिषद एका वेळी फक्त एकच सामायिक व्हिडिओ परवानगी देते.",
|
||||
"alreadySharedVideoTitle": "एकावेळी फक्त सामायिक केलेला व्हिडिओ अनुमत आहे",
|
||||
"applicationWindow": "अनुप्रयोग विंडो",
|
||||
"Back": "Back",
|
||||
"cameraConstraintFailedError": "आपला कॅमेरा काही आवश्यक मर्यादा पूर्ण करीत नाही.",
|
||||
"cameraNotFoundError": "कॅमेरा आढळला नाही.",
|
||||
"cameraNotSendingData": "आम्ही आपल्या कॅमेर्यावर प्रवेश करण्यात अक्षम आहोत. कृपया एखादा दुसरा अनुप्रयोग हे डिव्हाइस वापरत आहे की नाही ते तपासा, सेटिंग्ज मेनूमधून दुसरे डिव्हाइस निवडा किंवा अनुप्रयोग रीलोड करण्याचा प्रयत्न करा.",
|
||||
"cameraNotSendingDataTitle": "कॅमेर्यावर प्रवेश करण्यात अक्षम",
|
||||
"cameraPermissionDeniedError": "आपल्याला आपला कॅमेरा वापरण्याची परवानगी नाही. आपण अद्याप परिषदेत सामील होऊ शकता परंतु इतर आपल्याला पाहणार नाहीत. हे निश्चित करण्यासाठी अॅड्रेस बारमधील कॅमेरा बटण वापरा.",
|
||||
"cameraUnknownError": "अज्ञात कारणासाठी कॅमेरा वापरू शकत नाही.",
|
||||
"cameraUnsupportedResolutionError": "आपला कॅमेरा आवश्यक व्हिडिओ रिझोल्यूशनला समर्थन देत नाही.",
|
||||
"Cancel": "रद्द करा",
|
||||
"close": "बंद",
|
||||
"conferenceDisconnectMsg": "आपण आपले नेटवर्क कनेक्शन तपासू शकता. सेकंदात पुन्हा कनेक्ट करत आहे {{seconds}}..",
|
||||
"conferenceDisconnectTitle": "आपण डिस्कनेक्ट झाला आहात.",
|
||||
"conferenceReloadMsg": "आम्ही हे निश्चित करण्याचा प्रयत्न करीत आहोत. पुन्हा कनेक्ट करत आहे. {{seconds}} sec...",
|
||||
"conferenceReloadTitle": "दुर्दैवाने, काहीतरी चूक झाली",
|
||||
"confirm": "पुष्टी",
|
||||
"confirmNo": "नाही",
|
||||
"confirmYes": "होय",
|
||||
"connectError": "अरेरे! काहीतरी चूक झाली आणि आम्ही परिषदेत कनेक्ट होऊ शकलो नाही.",
|
||||
"connectErrorWithMsg": "अरेरे! काहीतरी चूक झाली आणि आम्ही परिषदेत कनेक्ट होऊ शकलो नाही:{{msg}}",
|
||||
"connecting": "कनेक्ट करीत आहे",
|
||||
"contactSupport": "समर्थन संपर्क",
|
||||
"copy": "Copy",
|
||||
"dismiss": "Dismiss",
|
||||
"displayNameRequired": "हाय! तुझे नाव काय आहे?",
|
||||
"done": "पूर्ण झाले",
|
||||
"e2eeDescription": "एंड-टू-एंड एनक्रिप्शन सध्या आहे प्रायोगिक. कृपया लक्षात ठेवा की एंड-टू-एंड एन्क्रिप्शन चालू केल्याने सर्व्हर-साइड प्रदान सेवा प्रभावीपणे अक्षम होईल: रेकॉर्डिंग, थेट प्रवाह आणि फोन सहभाग. हे देखील लक्षात ठेवा की मीटिंग केवळ समाविष्ट करण्यायोग्य प्रवाहांसाठी समर्थन असलेल्या ब्राउझरमधून सामील झालेल्या लोकांसाठीच कार्य करेल.",
|
||||
"e2eeWarning": "चेतावणी:या बैठकीतील सर्व सहभागींना एंड-टू-एंड एनक्रिप्शनसाठी समर्थन असल्याचे दिसत नाही. आपण सक्षम केल्यास ते आपल्याला पाहण्यास किंवा ऐकण्यास सक्षम राहणार नाहीत.",
|
||||
"enterDisplayName": "कृपया आपले नाव येथे प्रविष्ट करा",
|
||||
"error": "त्रुटी",
|
||||
"externalInstallationMsg": "आपल्याला आमचा डेस्कटॉप सामायिकरण विस्तार स्थापित करणे आवश्यक आहे.",
|
||||
"externalInstallationTitle": "विस्तार आवश्यक",
|
||||
"goToStore": "वेब स्टोअरवर जा",
|
||||
"gracefulShutdown": "आमची सेवा सध्या देखभालीसाठी बंद आहे. कृपया पुन्हा प्रयत्न करा.",
|
||||
"IamHost": "मी यजमान आहे",
|
||||
"incorrectRoomLockPassword": "चुकीचा संकेतशब्द",
|
||||
"incorrectPassword": "वापरकर्त्याचे नाव अथवा पासवर्ड चुकीचा",
|
||||
"inlineInstallationMsg": "आपल्याला आमचा डेस्कटॉप सामायिकरण विस्तार स्थापित करणे आवश्यक आहे.",
|
||||
"inlineInstallExtension": "स्थापित करा",
|
||||
"internalError": "अरेरे! काहीतरी चूक झाली. पुढील त्रुटी आली:{{error}}",
|
||||
"internalErrorTitle": "अंतर्गत त्रुटी",
|
||||
"kickMessage": "अधिक तपशीलांसाठी आपण {{participantDisplayName}} वर संपर्क साधू शकता.",
|
||||
"kickParticipantButton": "लाथ मारा",
|
||||
"kickParticipantDialog": "आपणास खात्री आहे की आपण या सहभागीस लाथ मारायची आहे?",
|
||||
"kickParticipantTitle": "या सहभागीला बाहेर करा?",
|
||||
"kickTitle": "Ouch! {{participantDisplayName}} kicked you out of the meeting",
|
||||
"liveStreaming": "थेट प्रवाह",
|
||||
"liveStreamingDisabledForGuestTooltip": "अतिथी थेट प्रवाह सुरू करू शकत नाहीत.",
|
||||
"liveStreamingDisabledTooltip": "थेट प्रवाह अक्षम करा.",
|
||||
"lockMessage": "परिषद लॉक करण्यात अयशस्वी.",
|
||||
"lockRoom": "मीटिंग जोडा $t(lockRoomPasswordUppercase)",
|
||||
"lockTitle": "लॉक अयशस्वी",
|
||||
"logoutQuestion": "आपणास खात्री आहे की आपण लॉगआउट आणि परिषद थांबवू इच्छिता?",
|
||||
"logoutTitle": "बाहेर पडणे",
|
||||
"maxUsersLimitReached": "जास्तीत जास्त सहभागी होण्याची मर्यादा गाठली आहे. परिषद भरली आहे. कृपया मीटिंग मालकाशी संपर्क साधा किंवा नंतर पुन्हा प्रयत्न करा!",
|
||||
"maxUsersLimitReachedTitle": "जास्तीत जास्त सहभागींची मर्यादा गाठली",
|
||||
"micConstraintFailedError": "आपला मायक्रोफोन आवश्यक असलेल्या काही मर्यादा पूर्ण करीत नाही.",
|
||||
"micNotFoundError": "मायक्रोफोन सापडला नाही.",
|
||||
"micNotSendingData": "आपला माईक सशब्द करण्यासाठी आणि त्याचा स्तर समायोजित करण्यासाठी आपल्या संगणकाच्या सेटिंग्जवर जा",
|
||||
"micNotSendingDataTitle": "आपले माइक आपल्या सिस्टम सेटिंग्जद्वारे निःशब्द केले आहे",
|
||||
"micPermissionDeniedError": "आपल्याला आपला मायक्रोफोन वापरण्याची परवानगी नाही. आपण अद्याप परिषदेत सामील होऊ शकता परंतु इतर आपले ऐकणार नाहीत. हे निश्चित करण्यासाठी अॅड्रेस बारमधील कॅमेरा बटण वापरा.",
|
||||
"micUnknownError": "Cannot use microphone for an unknown reason.",
|
||||
"muteEveryoneElseDialog": "एकदा नि: शब्द झाल्यास आपण त्यांना ध्वनीमुद्रित करण्यास सक्षम राहणार नाही परंतु ते कधीही स्वत: ला सशब्द करू शकतात.",
|
||||
"muteEveryoneElseTitle": "सोडून सर्वांना नि: शब्द करा{{whom}}?",
|
||||
"muteEveryoneDialog": "आपली खात्री आहे की आपण प्रत्येकाला निःशब्द करू इच्छिता? आपण त्यांना सशब्द करण्यास सक्षम राहणार नाही परंतु ते कधीही स्वत: ला सशब्द करू शकतात.",
|
||||
"muteEveryoneTitle": "सर्वांना नि: शब्द करा?",
|
||||
"muteEveryoneSelf": "तू स्वतः",
|
||||
"muteEveryoneStartMuted": "आतापासून प्रत्येकजण निःशब्द होऊ लागतो",
|
||||
"muteParticipantBody": "आपण त्यांना सशब्द करण्यास सक्षम राहणार नाही परंतु ते कधीही स्वत: ला सशब्द करू शकतात.",
|
||||
"muteParticipantButton": "नि: शब्द करा",
|
||||
"muteParticipantDialog": "आपली खात्री आहे की आपण या सहभागीस नि: शब्द करू इच्छिता? आपण त्यांना सशब्द करण्यास सक्षम राहणार नाही परंतु ते कधीही स्वत: ला सशब्द करू शकतात.",
|
||||
"muteParticipantTitle": "हा सहभागी नि: शब्द करायचा?",
|
||||
"Ok": "Ok",
|
||||
"passwordLabel": "संमेलनास एका सहभागीने लॉक केले आहे. कृपया सामील होण्यासाठी $t(lockRoomPassword) प्रविष्ट करा.",
|
||||
"passwordNotSupported": "मीटिंग सेट करणे $t(lockRoomPassword) समर्थित नाही..",
|
||||
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) समर्थित नाही",
|
||||
"passwordRequired": "$t(lockRoomPasswordUppercase)आवश्यक",
|
||||
"popupError": "आपला ब्राउझर या साइटवरील पॉप-अप विंडोज अवरोधित करत आहे. कृपया आपल्या ब्राउझरच्या सुरक्षा सेटिंग्जमध्ये पॉप-अप सक्षम करा आणि पुन्हा प्रयत्न करा.",
|
||||
"popupErrorTitle": "पॉप-अप अवरोधित",
|
||||
"recording": "मुद्रित करणे",
|
||||
"recordingDisabledForGuestTooltip": "अतिथी रेकॉर्डिंग प्रारंभ करू शकत नाहीत.",
|
||||
"recordingDisabledTooltip": "रेकॉर्डिंग प्रारंभ अक्षम.",
|
||||
"rejoinNow": "आता पुन्हा सामील व्हा",
|
||||
"remoteControlAllowedMessage": "{{user}} आपली रिमोट कंट्रोल विनंती मान्य केली!",
|
||||
"remoteControlDeniedMessage": "{{user}} आपली रिमोट कंट्रोल विनंती नाकारली!",
|
||||
"remoteControlErrorMessage": "वरून रिमोट कंट्रोल परवानग्यांची विनंती करण्याचा प्रयत्न करताना एक त्रुटी आली {{user}}!",
|
||||
"remoteControlRequestMessage": "आपण{{user}} ला डेस्कटॉप दूरस्थपणे नियंत्रित करण्यास अनुमती द्याल?",
|
||||
"remoteControlShareScreenWarning": "लक्षात ठेवा की आपण \"Allow\" दाबल्यास आपण आपली स्क्रीन सामायिक कराल!",
|
||||
"remoteControlStopMessage": "रिमोट कंट्रोल सत्र संपले!",
|
||||
"remoteControlTitle": "दूरस्थ डेस्कटॉप नियंत्रण",
|
||||
"Remove": "काढा",
|
||||
"removePassword": "काढा $t(lockRoomPassword)",
|
||||
"removeSharedVideoMsg": " आपली खात्री आहे की आपण आपला सामायिक केलेला व्हिडिओ काढू इच्छिता?",
|
||||
"removeSharedVideoTitle": "सामायिक केलेला व्हिडिओ काढा",
|
||||
"reservationError": "आरक्षण प्रणाली त्रुटी",
|
||||
"reservationErrorMsg": "Error code: {{code}}, message: {{msg}}",
|
||||
"retry": "पुन्हा प्रयत्न करा",
|
||||
"screenSharingAudio": "ऑडिओ सामायिक करा",
|
||||
"screenSharingFailedToInstall": "अरेरे! आपला स्क्रीन सामायिकरण विस्तार स्थापित करण्यात अयशस्वी.",
|
||||
"screenSharingFailedToInstallTitle": "स्क्रीन सामायिकरण विस्तार स्थापित करण्यात अयशस्वी",
|
||||
"screenSharingFirefoxPermissionDeniedError": "आम्ही आपली स्क्रीन सामायिक करण्याचा प्रयत्न करीत असताना काहीतरी चुकीचे झाले. कृपया याची खात्री करा की आपण आम्हाला तसे करण्यास परवानगी दिली आहे.",
|
||||
"screenSharingFirefoxPermissionDeniedTitle": "अरेरे! आम्ही स्क्रीन सामायिकरण प्रारंभ करण्यास सक्षम नाही!",
|
||||
"screenSharingPermissionDeniedError": "अरेरे! आपल्या स्क्रीन सामायिकरण विस्तार परवानग्यांसह काहीतरी चूक झाली. कृपया रीलोड करा आणि पुन्हा प्रयत्न करा.",
|
||||
"sendPrivateMessage": "आपल्याला अलीकडे एक खाजगी संदेश प्राप्त झाला आहे. त्यास खाजगीरित्या उत्तर देण्याचा आपला हेतू होता की आपण आपला संदेश गटाला पाठवू इच्छिता?",
|
||||
"sendPrivateMessageCancel": "गटाला पाठवा",
|
||||
"sendPrivateMessageOk": "खाजगी पाठवा",
|
||||
"sendPrivateMessageTitle": "खाजगी पाठवायचे?",
|
||||
"serviceUnavailable": "सेवा अनुपलब्ध",
|
||||
"sessTerminated": "कॉल संपुष्टात आला",
|
||||
"Share": "सामायिक करा",
|
||||
"shareVideoLinkError": "कृपया योग्य YouTube दुवा प्रदान करा.",
|
||||
"shareVideoTitle": "एक व्हिडिओ सामायिक करा",
|
||||
"shareYourScreen": "आपली स्क्रीन सामायिक करा",
|
||||
"shareYourScreenDisabled": "स्क्रीन सामायिकरण अक्षम केले.",
|
||||
"shareYourScreenDisabledForGuest": "अतिथी स्क्रीन सामायिकरण करू शकत नाहीत.",
|
||||
"startLiveStreaming": "थेट प्रवाह सुरू करा",
|
||||
"startRecording": "रेकॉर्डिंग प्रारंभ करा",
|
||||
"startRemoteControlErrorMessage": "रिमोट कंट्रोल सत्र सुरू करण्याचा प्रयत्न करताना एक त्रुटी आली!",
|
||||
"stopLiveStreaming": "थेट प्रवाह थांबवा",
|
||||
"stopRecording": "रेकॉर्डिंग थांबवा",
|
||||
"stopRecordingWarning": "आपली खात्री आहे की आपण रेकॉर्डिंग थांबवू इच्छिता?",
|
||||
"stopStreamingWarning": "आपणास खात्री आहे की आपण थेट प्रवाह थांबवू इच्छिता?",
|
||||
"streamKey": "थेट प्रवाह की",
|
||||
"Submit": "प्रस्तुत करणे",
|
||||
"thankYou": "वापरल्याबद्दल धन्यवाद {{appName}}!",
|
||||
"token": "टोकन",
|
||||
"tokenAuthFailed": "क्षमस्व, आपणास या कॉलमध्ये सामील होण्याची परवानगी नाही.",
|
||||
"tokenAuthFailedTitle": "प्रमाणीकरण अयशस्वी",
|
||||
"transcribing": "लिप्यंतरण",
|
||||
"unlockRoom": "मीटिंग काढा $t(lockRoomPassword)",
|
||||
"userPassword": "user password",
|
||||
"WaitForHostMsg": "परिषद <b>{{room}}</b>अद्याप सुरू झाले नाही. आपण होस्ट असल्यास कृपया अधिकृत करा. अन्यथा, कृपया होस्ट येण्याची प्रतीक्षा करा.",
|
||||
"WaitForHostMsgWOk": "परिषद <b>{{room}}</b> अद्याप सुरू झाले नाही. आपण होस्ट असल्यास कृपया प्रमाणीकरणासाठी ओके दाबा. अन्यथा, कृपया होस्ट येण्याची प्रतीक्षा करा.",
|
||||
"WaitingForHost": " होस्टची प्रतीक्षा करीत आहे ...",
|
||||
"Yes": "होय",
|
||||
"yourEntireScreen": "आपली संपूर्ण स्क्रीन"
|
||||
},
|
||||
"dialOut": {
|
||||
"statusMessage": "आता आहे {{status}}"
|
||||
},
|
||||
"documentSharing": {
|
||||
"title": "सामायिक दस्तऐवज"
|
||||
},
|
||||
"e2ee": {
|
||||
"labelToolTip": "या बैठकीतील सर्व सहभागींनी एंड-टू-एंड एनक्रिप्शन सक्षम केले आहे"
|
||||
},
|
||||
"feedback": {
|
||||
"average": "सरासरी",
|
||||
"bad": "वाईट",
|
||||
"detailsLabel": " त्याबद्दल आम्हाला सांगा.",
|
||||
"good": "चांगले",
|
||||
"rateExperience": "आपल्या भेटीचा अनुभव रेट करा",
|
||||
"veryBad": "फार वाईट",
|
||||
"veryGood": "खुप छान"
|
||||
},
|
||||
"incomingCall": {
|
||||
"answer": "उत्तर",
|
||||
"audioCallTitle": " कॉल येत आहे",
|
||||
"decline": "काढून टाकणे",
|
||||
"productLabel": "Jitsi Meet पासून",
|
||||
"videoCallTitle": "येणारा व्हिडिओ कॉल"
|
||||
},
|
||||
"info": {
|
||||
"accessibilityLabel": "माहिती दर्शवा",
|
||||
"addPassword": "जोडा $t(lockRoomPassword)",
|
||||
"cancelPassword": " रद्द करा $t(lockRoomPassword)",
|
||||
"conferenceURL": "दुवा:",
|
||||
"country": "देश",
|
||||
"dialANumber": "आपल्या संमेलनात सामील होण्यासाठी, यापैकी एक क्रमांक डायल करा आणि नंतर पिन प्रविष्ट करा.",
|
||||
"dialInConferenceID": "PIN:",
|
||||
"dialInNotSupported": "क्षमस्व, सध्या डायल करणे समर्थित नाही.",
|
||||
"dialInNumber": "डायल-इन:",
|
||||
"dialInSummaryError": "आता डायल-इन माहिती आणताना त्रुटी. कृपया पुन्हा प्रयत्न करा.",
|
||||
"dialInTollFree": "कर मुक्त",
|
||||
"genericError": "अरेरे, काहीतरी चूक झाली.",
|
||||
"inviteLiveStream": "या सभेचा थेट प्रवाह पाहण्यासाठी, या दुव्यावर क्लिक करा: {{url}}",
|
||||
"invitePhone": "त्याऐवजी फोनद्वारे सामील होण्यासाठी, हे टॅप करा:{{number}},,{{conferenceID}}#\n",
|
||||
"invitePhoneAlternatives": "वेगळा डायल-इन नंबर शोधत आहात? \nमीटिंग डायल-इन नंबर पहा: {{url}}\n\n\nIf also dialing-in through a room phone, join without connecting to audio: {{silentUrl}}",
|
||||
"inviteURLFirstPartGeneral": " आपल्याला बैठकीत सामील होण्यासाठी आमंत्रित केले आहे.",
|
||||
"inviteURLFirstPartPersonal": "{{name}} आपल्याला मीटिंगसाठी आमंत्रित करीत आहे.\n",
|
||||
"inviteURLSecondPart": "\nसभेमध्ये सामील व्हा:\n{{url}}\n",
|
||||
"liveStreamURL": "थेट प्रसारण:",
|
||||
"moreNumbers": "अधिक संख्या",
|
||||
"noNumbers": "डायल-इन नंबर नाहीत.",
|
||||
"noPassword": "काहीही नाही",
|
||||
"noRoom": "डायल-इन करण्यासाठी कोणतीही खोली निर्दिष्ट केलेली नाही.",
|
||||
"numbers": "डायल-इन क्रमांक",
|
||||
"password": "$t(lockRoomPasswordUppercase):",
|
||||
"title": "सामायिक करा",
|
||||
"tooltip": "या संमेलनासाठी दुवा आणि डायल-इन माहिती सामायिक करा",
|
||||
"label": "संमेलनाची माहिती"
|
||||
},
|
||||
"inviteDialog": {
|
||||
"alertText": "काही सहभागींना आमंत्रित करण्यात अयशस्वी.",
|
||||
"header": "आमंत्रित करा",
|
||||
"searchCallOnlyPlaceholder": " फोन नंबर प्रविष्ट करा",
|
||||
"searchPeopleOnlyPlaceholder": "सहभागींचा शोध घ्या",
|
||||
"searchPlaceholder": "सहभागी किंवा फोन नंबर",
|
||||
"send": "पाठवा"
|
||||
},
|
||||
"inlineDialogFailure": {
|
||||
"msg": "आम्ही जरा अडखळलो.",
|
||||
"retry": "पुन्हा प्रयत्न करा",
|
||||
"support": "आधार",
|
||||
"supportMsg": "हे असेच होत राहिल्यास संपर्क साधा"
|
||||
},
|
||||
"keyboardShortcuts": {
|
||||
"focusLocal": "आपल्या व्हिडिओवर लक्ष द्या",
|
||||
"focusRemote": "दुसर्या व्यक्तीच्या व्हिडिओवर लक्ष द्या",
|
||||
"fullScreen": "पूर्ण स्क्रीन पहा किंवा बाहेर पडा",
|
||||
"keyboardShortcuts": "कीबोर्ड शॉर्टकट",
|
||||
"localRecording": "स्थानिक रेकॉर्डिंग नियंत्रणे दर्शवा किंवा लपवा",
|
||||
"mute": "आपला मायक्रोफोन नि: शब्द करा किंवा सशब्द करा",
|
||||
"pushToTalk": "बोलण्यासाठी दाबा",
|
||||
"raiseHand": "आपला हात वर करा किंवा कमी करा",
|
||||
"showSpeakerStats": "स्पीकरची आकडेवारी दर्शवा",
|
||||
"toggleChat": "गप्पा उघडा किंवा बंद करा",
|
||||
"toggleFilmstrip": "व्हिडिओ लघुप्रतिमा दर्शवा किंवा लपवा",
|
||||
"toggleScreensharing": "कॅमेरा आणि स्क्रीन सामायिकरण दरम्यान स्विच करा",
|
||||
"toggleShortcuts": "कीबोर्ड शॉर्टकट दर्शवा किंवा लपवा",
|
||||
"videoMute": "आपला कॅमेरा प्रारंभ करा किंवा थांबवा",
|
||||
"videoQuality": "कॉल गुणवत्ता व्यवस्थापित करा"
|
||||
},
|
||||
"liveStreaming": {
|
||||
"busy": " आम्ही प्रवाह स्त्रोत मुक्त करण्याचे कार्य करीत आहोत. कृपया काही मिनिटांत पुन्हा प्रयत्न करा.",
|
||||
"busyTitle": "सर्व स्ट्रीमर सध्या व्यस्त आहेत",
|
||||
"changeSignIn": "खाती स्विच करा.",
|
||||
"choose": "थेट प्रवाह निवडा",
|
||||
"chooseCTA": "प्रवाह पर्याय निवडा. आपण सध्या म्हणून लॉग इन आहात {{email}}.",
|
||||
"enterStreamKey": " येथे आपली YouTube थेट प्रवाह की प्रविष्ट करा.",
|
||||
"error": "थेट प्रवाह अयशस्वी. कृपया पुन्हा प्रयत्न करा.",
|
||||
"errorAPI": "आपल्या YouTube प्रसारणामध्ये प्रवेश करताना त्रुटी आली. कृपया पुन्हा लॉग इन करून पहा.",
|
||||
"errorLiveStreamNotEnabled": "{{email}}. वर थेट प्रवाह सक्षम केलेले नाही. कृपया थेट प्रवाह सक्षम करा किंवा थेट प्रवाह सक्षम केलेल्या खात्यात लॉग इन करा",
|
||||
"expandedOff": "थेट प्रवाह थांबला आहे",
|
||||
"expandedOn": "या संमेलनाचे सध्या युट्यूबवर प्रसारण केले जात आहे.",
|
||||
"expandedPending": "थेट प्रवाह सुरू केला जात आहे ",
|
||||
"failedToStart": "थेट प्रवाह सुरू करण्यात अयशस्वी",
|
||||
"getStreamKeyManually": "आम्ही कोणतेही थेट प्रवाह आणण्यात सक्षम नाही. YouTube वरून आपली थेट प्रवाह की मिळवण्याचा प्रयत्न करा.",
|
||||
"invalidStreamKey": "थेट प्रवाह की चुकीची असू शकते.",
|
||||
"off": "थेट प्रवाह थांबला",
|
||||
"offBy": "{{name}} थेट प्रवाह थांबविला",
|
||||
"on": "थेट प्रवाह",
|
||||
"onBy": "{{name}} थेट प्रवाह सुरू केला",
|
||||
"pending": "थेट प्रवाह सुरू करत आहे ...",
|
||||
"serviceName": "थेट प्रवाह सेवा",
|
||||
"signedInAs": "आपण सध्या म्हणून साइन इन केले आहे:",
|
||||
"signIn": "Google सह साइन इन करा",
|
||||
"signInCTA": "YouTube वरून साइन इन करा किंवा आपली थेट प्रवाह की प्रविष्ट करा.",
|
||||
"signOut": "साइन आउट करा",
|
||||
"start": "थेट प्रवाह सुरू करा",
|
||||
"streamIdHelp": "हे काय आहे?",
|
||||
"unavailableTitle": "थेट प्रवाह अनुपलब्ध",
|
||||
"youtubeTerms": "YouTube सेवा अटी",
|
||||
"googlePrivacyPolicy": "Google गोपनीयता धोरण"
|
||||
},
|
||||
"localRecording": {
|
||||
"clientState": {
|
||||
"off": "बंद",
|
||||
"on": "चालू",
|
||||
"unknown": "अज्ञात"
|
||||
},
|
||||
"dialogTitle": "स्थानिक रेकॉर्डिंग नियंत्रणे",
|
||||
"duration": "कालावधी",
|
||||
"durationNA": "N/A",
|
||||
"encoding": "एन्कोडिंग",
|
||||
"label": "LOR",
|
||||
"labelToolTip": "स्थानिक रेकॉर्डिंग गुंतलेली आहे",
|
||||
"localRecording": "स्थानिक रेकॉर्डिंग",
|
||||
"me": "Me",
|
||||
"messages": {
|
||||
"engaged": "स्थानिक रेकॉर्डिंग व्यस्त",
|
||||
"finished": " रेकॉर्डिंग सत्र {{token}} . समाप्त. कृपया रेकॉर्ड केलेली फाईल नियंत्रकावर पाठवा.",
|
||||
"finishedModerator": "रेकॉर्डिंग सत्र {{token}}. समाप्त. लोकल ट्रॅकचे रेकॉर्डिंग सेव्ह केले गेले आहे. कृपया इतर सहभागींना त्यांचे रेकॉर्डिंग सबमिट करण्यास सांगा.",
|
||||
"notModerator": "आपण नियंत्रक नाही. आपण स्थानिक रेकॉर्डिंग प्रारंभ करू किंवा थांबवू शकत नाही."
|
||||
},
|
||||
"moderator": "नियंत्रक",
|
||||
"no": "No",
|
||||
"participant": "नियंत्रक",
|
||||
"participantStats": "सहभागी आकडेवारी",
|
||||
"sessionToken": "सत्र टोकन",
|
||||
"start": "रेकॉर्डिंग प्रारंभ करा",
|
||||
"stop": "रेकॉर्डिंग थांबवा",
|
||||
"yes": "होय"
|
||||
},
|
||||
"lockRoomPassword": "संकेतशब्द",
|
||||
"lockRoomPasswordUppercase": "संकेतशब्द",
|
||||
"me": "मी",
|
||||
"notify": {
|
||||
"connectedOneMember": "{{name}} बैठकीत सामील झाले",
|
||||
"connectedThreePlusMembers": "{{name}} आणि {{count}} इतर बैठकीत सामील झाले",
|
||||
"connectedTwoMembers": "{{first}} आणि {{second}} बैठकीत सामील झाले",
|
||||
"disconnected": "डिस्कनेक्ट झाले",
|
||||
"focus": "परिषद लक्ष",
|
||||
"focusFail": "{{component}} उपलब्ध नाही - पुन्हा प्रयत्न करा {{ms}} सेकंद",
|
||||
"grantedTo": "नियंत्रक अधिकार यांना दिले {{to}}!",
|
||||
"invitedOneMember": "{{name}}आमंत्रित केले गेले आहे",
|
||||
"invitedThreePlusMembers": "{{name}} आणि {{count}} इतरांना आमंत्रित केले गेले आहे",
|
||||
"invitedTwoMembers": "{{first}} आणि {{second}} आमंत्रित केले गेले आहे",
|
||||
"kickParticipant": "{{kicked}} was kicked by {{kicker}}",
|
||||
"me": "Me",
|
||||
"moderator": "नियंत्रक अधिकार मंजूर!",
|
||||
"muted": "आपण संभाषण निःशब्द केले आहे.",
|
||||
"mutedTitle": "आपण निःशब्द आहात!",
|
||||
"mutedRemotelyTitle": "आपण द्वारे निःशब्द केले गेले आहे {{participantDisplayName}}!",
|
||||
"mutedRemotelyDescription": "आपण बोलण्यास तयार असता तेव्हा आपण नेहमी सशब्द करू शकता. आपण संमेलनापासून आवाज दूर ठेवण्यासाठी पूर्ण झाल्यावर परत नि: शब्द करा.",
|
||||
"passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) दुसर्या सहभागीने काढले",
|
||||
"passwordSetRemotely": "$t(lockRoomPasswordUppercase) दुसर्या सहभागीने सेट केलेले",
|
||||
"raisedHand": "{{name}} बोलायला आवडेल.",
|
||||
"somebody": "कुणीतरी",
|
||||
"startSilentTitle": "आपण ऑडिओ आउटपुटसह सामील झालात!",
|
||||
"startSilentDescription": "ऑडिओ सक्षम करण्यासाठी संमेलनात पुन्हा सामील व्हा",
|
||||
"suboptimalBrowserWarning": " आम्हाला भीती वाटते की येथे आपल्या भेटीचा अनुभव इतका उत्कृष्ट होणार नाही. आम्ही यामध्ये सुधारणा करण्याचे मार्ग शोधत आहोत, परंतु तोपर्यंत कृपया त्यापैकी एक वापरून पहा <a href='static/recommendedBrowsers.html' target='_blank'>fully supported browsers</a>.",
|
||||
"suboptimalExperienceTitle": "ब्राउझर चेतावणी",
|
||||
"unmute": "सशब्द करा",
|
||||
"newDeviceCameraTitle": "नवीन कॅमेरा आढळला",
|
||||
"newDeviceAudioTitle": "नवीन ऑडिओ डिव्हाइस आढळले",
|
||||
"newDeviceAction": "वापरा",
|
||||
"OldElectronAPPTitle": "सुरक्षा असुरक्षा!",
|
||||
"oldElectronClientDescription1": "आपण सुरक्षा असुरक्षा ज्ञात असलेल्या जितसी मीट क्लायंटची जुनी आवृत्ती वापरत असल्याचे दिसून येत आहे. कृपया आमच्याकडे आपण अद्यतनित असल्याची खात्री करा",
|
||||
"oldElectronClientDescription2": "नवीनतम बिल्ड",
|
||||
"oldElectronClientDescription3": " आता!"
|
||||
},
|
||||
"passwordSetRemotely": "दुसर्या सहभागीने सेट केलेले",
|
||||
"passwordDigitsOnly": " पर्यंत {{number}} अंक",
|
||||
"poweredby": "द्वारा समर्थित",
|
||||
"prejoin": {
|
||||
|
||||
"audioAndVideoError": "ऑडिओ आणि व्हिडिओ त्रुटी:",
|
||||
"audioOnlyError": "ऑडिओ त्रुटी:",
|
||||
"audioTrackError": "ऑडिओ ट्रॅक तयार करू शकलो नाही.",
|
||||
"callMe": "मला कॉल करा",
|
||||
"callMeAtNumber": "मला या नंबरवर कॉल करा:",
|
||||
"configuringDevices": "डिव्हाइस कॉन्फिगर करीत आहे ...",
|
||||
"connectedWithAudioQ": "आपण ऑडिओशी कनेक्ट आहात?",
|
||||
"copyAndShare": "मीटिंगचा दुवा कॉपी आणि सामायिक करा",
|
||||
"dialInMeeting": "बैठकीत डायल करा",
|
||||
"dialInPin": "संमेलनात डायल करा आणि पिन कोड प्रविष्ट करा:",
|
||||
"dialing": "डायल करत आहे",
|
||||
"iWantToDialIn": "मला डायल करायचे आहे",
|
||||
"joinAudioByPhone": "फोन ऑडिओसह सामील व्हा",
|
||||
"joinMeeting": "बैठकीत सामील व्हा",
|
||||
"joinWithoutAudio": "ऑडिओशिवाय सामील व्हा",
|
||||
"initiated": "कॉल सुरू झाला",
|
||||
"linkCopied": "क्लिपबोर्डवर दुवा कॉपी केला",
|
||||
"lookGood": "स्पीकर आणि मायक्रोफोन चांगले दिसतात",
|
||||
"or": "किंवा",
|
||||
"calling": "कॉल करीत आहे",
|
||||
"startWithPhone": "फोन ऑडिओसह प्रारंभ करा",
|
||||
"screenSharingError": "स्क्रीन सामायिकरण त्रुटी:",
|
||||
"videoOnlyError": "व्हिडिओ त्रुटी:",
|
||||
"videoTrackError": "व्हिडिओ ट्रॅक तयार करू शकलो नाही.",
|
||||
"viewAllNumbers": "सर्व संख्या पहा"
|
||||
},
|
||||
"presenceStatus": {
|
||||
"busy": "व्यस्त",
|
||||
"calling": "कॉल करीत आहे ...",
|
||||
"connected": "जोडलेले",
|
||||
"connecting": "कनेक्ट करीत आहे ...",
|
||||
"connecting2": "कनेक्ट करीत आहे ...",
|
||||
"disconnected": "डिस्कनेक्ट केलेले",
|
||||
"expired": "कालबाह्य",
|
||||
"ignored": "दुर्लक्षित",
|
||||
"initializingCall": "कॉल प्रारंभ करीत आहे ...",
|
||||
"invited": "आमंत्रित केले",
|
||||
"rejected": "नाकारले",
|
||||
"ringing": "रिंग होत आहे ..."
|
||||
},
|
||||
"profile": {
|
||||
"setDisplayNameLabel": " आपले प्रदर्शन नाव सेट करा",
|
||||
"setEmailInput": "ई-मेल प्रविष्ट करा",
|
||||
"setEmailLabel": "आपला गुरुतर ईमेल सेट करा",
|
||||
"title": "प्रोफाइल"
|
||||
},
|
||||
"raisedHand": "बोलायला आवडेल",
|
||||
"recording": {
|
||||
"authDropboxText": " ड्रॉपबॉक्सवर अपलोड करा",
|
||||
"availableSpace": "उपलब्ध जागा: {{spaceLeft}} MB (approximately {{duration}} रेकॉर्डिंग मिनिटे)",
|
||||
"beta": "BETA",
|
||||
"busy": "आम्ही रेकॉर्डिंग संसाधने मुक्त करण्यावर कार्य करीत आहोत. कृपया काही मिनिटांत पुन्हा प्रयत्न करा.",
|
||||
"busyTitle": "सर्व रेकॉर्डर सध्या व्यस्त आहेत",
|
||||
"error": "रेकॉर्डिंग अयशस्वी. कृपया पुन्हा प्रयत्न करा.",
|
||||
"expandedOff": "रेकॉर्डिंग थांबले आहे",
|
||||
"expandedOn": "सभेची नोंद सध्या घेतली जात आहे.",
|
||||
"expandedPending": "रेकॉर्डिंग सुरू केले जात आहे ...",
|
||||
"failedToStart": "रेकॉर्डिंग सुरू करण्यात अयशस्वी",
|
||||
"fileSharingdescription": "मीटिंगमधील सहभागींसह रेकॉर्डिंग सामायिक करा",
|
||||
"live": "LIVE",
|
||||
"loggedIn": "म्हणून लॉग इन केले {{userName}}",
|
||||
"off": "रेकॉर्डिंग थांबले",
|
||||
"offBy": "{{name}} रेकॉर्डिंग थांबविले",
|
||||
"on": "Recording",
|
||||
"onBy": "{{name}} रेकॉर्डिंग सुरू केले",
|
||||
"pending": "मीटिंग रेकॉर्ड करण्याची तयारी करत आहे ...",
|
||||
"rec": "REC",
|
||||
"serviceDescription": "आपले रेकॉर्डिंग रेकॉर्डिंग सेवेद्वारे जतन केले जाईल",
|
||||
"serviceName": "रेकॉर्डिंग सेवा",
|
||||
"signIn": "साइन इन करा",
|
||||
"signOut": "साइन आउट करा",
|
||||
"unavailable": " अरेरे! {{serviceName}} currently सध्या अनुपलब्ध आहे. आम्ही या समस्येचे निराकरण करण्याचे काम करीत आहोत. कृपया पुन्हा प्रयत्न करा.",
|
||||
"unavailableTitle": "रेकॉर्डिंग अनुपलब्ध"
|
||||
},
|
||||
"sectionList": {
|
||||
"pullToRefresh": "रीफ्रेश करण्यासाठी खेचा"
|
||||
},
|
||||
"settings": {
|
||||
"calendar": {
|
||||
"about": " {{appName}} कॅलेंडर समाकलन सुरक्षितपणे आपल्या कॅलेंडरमध्ये प्रवेश करण्यासाठी वापरले जाते जेणेकरून ते आगामी कार्यक्रम वाचू शकतील.",
|
||||
"disconnect": "डिस्कनेक्ट करा",
|
||||
"microsoftSignIn": "मायक्रोसॉफ्ट सह साइन इन करा",
|
||||
"signedIn": "सध्या {{email}} साठी कॅलेंडर इव्हेंटमध्ये प्रवेश करत आहे. कॅलेंडर इव्हेंटमध्ये प्रवेश करणे थांबविण्यासाठी खालील डिस्कनेक्ट बटणावर क्लिक करा",
|
||||
"title": "कॅलेंडर"
|
||||
},
|
||||
"devices": "उपकरणे",
|
||||
"followMe": "प्रत्येकजण माझ्या मागे येतो",
|
||||
"language": "भाषा",
|
||||
"loggedIn": "{{name}} म्हणून लॉग इन केले",
|
||||
"microphones": "मायक्रोफोन",
|
||||
"moderator": "नियंत्रक",
|
||||
"more": "अधिक",
|
||||
"name": "नाव",
|
||||
"noDevice": "काहीही नाही",
|
||||
"selectAudioOutput": "ऑडिओ आउटपुट",
|
||||
"selectCamera": "कॅमेरा",
|
||||
"selectMic": "मायक्रोफोन",
|
||||
"speakers": "स्पीकर्स",
|
||||
"startAudioMuted": " प्रत्येकजण निःशब्द होतो",
|
||||
"startVideoMuted": "प्रत्येकजण दडलेला सुरू होतो",
|
||||
"title": "सेटिंग्ज"
|
||||
},
|
||||
"settingsView": {
|
||||
"advanced": "प्रगत",
|
||||
"alertOk": "ठीक आहे",
|
||||
"alertTitle": "चेतावणी",
|
||||
"alertURLText": "प्रविष्ट केलेली सर्व्हर URL अवैध आहे",
|
||||
"buildInfoSection": "बिल्ड माहिती",
|
||||
"conferenceSection": "परिषद",
|
||||
"disableCallIntegration": "नेटिव्ह कॉल एकत्रीकरण अक्षम करा",
|
||||
"disableP2P": " पीअर-टू-पीअर मोड अक्षम करा",
|
||||
"displayName": " नाव प्रदर्शन",
|
||||
"email": "ईमेल",
|
||||
"header": "सेटिंग्ज",
|
||||
"profileSection": "प्रोफाइल",
|
||||
"serverURL": "सर्व्हर URL",
|
||||
"showAdvanced":"प्रगत सेटिंग्ज दर्शवा",
|
||||
"startWithAudioMuted": "ऑडिओ नि: शब्द सह प्रारंभ करा",
|
||||
"startWithVideoMuted": "निःशब्द व्हिडिओसह प्रारंभ करा",
|
||||
"version": "आवृत्ती"
|
||||
},
|
||||
"share": {
|
||||
"dialInfoText": "\n\n=====\n\nफक्त आपल्या फोनवर डायल करू इच्छिता?\n\n{{defaultDialInNumber}} या संमेलनासाठी फोन नंबर डायल पाहण्यासाठी या दुव्यावर क्लिक करा\n{{dialInfoPageUrl}}",
|
||||
"mainText": "संमेलनात सामील होण्यासाठी खालील दुव्यावर क्लिक करा:\n{{roomUrl}}"
|
||||
},
|
||||
"speaker": "स्पीकर",
|
||||
"speakerStats": {
|
||||
"hours": "{{count}}h",
|
||||
"minutes": "{{count}}m",
|
||||
"name": "नाव",
|
||||
"seconds": "{{count}}s",
|
||||
"speakerStats": "स्पीकर आकडेवारी",
|
||||
"speakerTime": "स्पीकर वेळ"
|
||||
},
|
||||
"startupoverlay": {
|
||||
"policyText": " ",
|
||||
"title": "{{app}} आपला मायक्रोफोन आणि कॅमेरा वापरण्याची आवश्यकता आहे."
|
||||
},
|
||||
"suspendedoverlay": {
|
||||
"rejoinKeyTitle": "पुन्हा जॉइन करा",
|
||||
"text": " पुन्हा कनेक्ट करण्यासाठी <i>Rejoin</i> बटण दाबा.",
|
||||
"title": "आपला व्हिडिओ कॉल व्यत्यय आला कारण हा संगणक झोपायला गेला."
|
||||
},
|
||||
"toolbar": {
|
||||
"accessibilityLabel": {
|
||||
|
||||
},
|
||||
"addPeople": "आपल्या कॉलमध्ये लोकांना जोडा",
|
||||
"audioOnlyOff": "कमी बँडविड्थ मोड अक्षम करा",
|
||||
"audioOnlyOn": "कमी बँडविड्थ मोड सक्षम करा",
|
||||
"audioRoute": "ध्वनी यंत्र निवडा",
|
||||
"authenticate": "प्रमाणित करा",
|
||||
"callQuality": "व्हिडिओ गुणवत्ता व्यवस्थापित करा",
|
||||
"chat": "गप्पा / बंद करा उघडा",
|
||||
"closeChat": "गप्पा बंद करा",
|
||||
"documentClose": "सामायिक दस्तऐवज बंद करा",
|
||||
"documentOpen": "सामायिक दस्तऐवज उघडा",
|
||||
"download": "आमचे अॅप्स डाउनलोड करा",
|
||||
"e2ee": "एंड-टू-एंड एनक्रिप्शन",
|
||||
"enterFullScreen": "पूर्ण स्क्रीन पहा",
|
||||
"enterTileView": "टाइल दृश्य प्रविष्ट करा",
|
||||
"exitFullScreen": "पूर्ण स्क्रीनमधून बाहेर पडा",
|
||||
"exitTileView": "बाहेर पडा टाइल दृश्य",
|
||||
"feedback": "अभिप्राय द्या",
|
||||
"hangup": "सोडा",
|
||||
"help": "मदत करा",
|
||||
"invite": "लोकांना आमंत्रित करा",
|
||||
"login": "लॉगिन",
|
||||
"logout": "बाहेर पडणे",
|
||||
"lowerYourHand": "बाहेर पडणे",
|
||||
"moreActions": "अधिक क्रिया",
|
||||
"moreOptions": "अधिक पर्याय",
|
||||
"mute": "नि: शब्द / सशब्द करा",
|
||||
"muteEveryone": "सर्वांना नि: शब्द करा",
|
||||
"noAudioSignalTitle": "आपल्या माइकवरून कोणतेही इनपुट येत नाही!",
|
||||
"noAudioSignalDesc": "आपण सिस्टम सेटिंग्ज किंवा हार्डवेअरवरून हेतुपुरस्सर नि: शब्द न केल्यास, डिव्हाइस बदलण्याचा विचार करा.",
|
||||
"noAudioSignalDescSuggestion": "आपण सिस्टम सेटिंग्ज किंवा हार्डवेअरवरून हेतुपुरस्सर नि: शब्द न केल्यास, सूचित डिव्हाइसवर स्विच करण्याचा विचार करा.",
|
||||
"noAudioSignalDialInDesc": "आपण हे वापरून डायल-इन देखील करू शकता:",
|
||||
"noAudioSignalDialInLinkDesc": "डायल-इन क्रमांक",
|
||||
"noisyAudioInputTitle": "आपला मायक्रोफोन गोंगाट करणारा दिसत आहे!",
|
||||
"noisyAudioInputDesc": "आपला मायक्रोफोन आवाज देत असल्यासारखे दिसत आहे, कृपया डिव्हाइस नि: शब्द करणे किंवा बदलणे याचा विचार करा.",
|
||||
"openChat": "खुली गप्पा",
|
||||
"pip": "पिक्चर-इन-पिक्चर मोड प्रविष्ट करा",
|
||||
"privateMessage": "खाजगी संदेश पाठवा",
|
||||
"profile": "आपले प्रोफाइल संपादित करा",
|
||||
"raiseHand": "हात वर करा / कमी करा",
|
||||
"raiseYourHand": "तुझा हात वर कर",
|
||||
"Settings": "सेटिंग्ज",
|
||||
"sharedvideo": "एक YouTube व्हिडिओ सामायिक करा",
|
||||
"shareRoom": "एखाद्यास आमंत्रित करा",
|
||||
"shortcuts": "शॉर्टकट पहा",
|
||||
"speakerStats": "स्पीकर आकडेवारी",
|
||||
"startScreenSharing": "स्क्रीन सामायिकरण प्रारंभ करा",
|
||||
"startSubtitles": "उपशीर्षके प्रारंभ करा",
|
||||
"stopScreenSharing": "स्क्रीन सामायिकरण थांबवा",
|
||||
"stopSubtitles": "उपशीर्षके थांबवा",
|
||||
"stopSharedVideo": "YouTube व्हिडिओ थांबवा",
|
||||
"talkWhileMutedPopup": "बोलण्याचा प्रयत्न करीत आहात? आपण निःशब्द आहात.",
|
||||
"tileViewToggle": "टाइल दृश्य टॉगल करा",
|
||||
"toggleCamera": "टॉगल कॅमेरा",
|
||||
"videomute": "कॅमेरा प्रारंभ / थांबवा",
|
||||
"startvideoblur": "माझी पार्श्वभूमी अस्पष्ट करा",
|
||||
"stopvideoblur": "पार्श्वभूमी डाग अक्षम करा"
|
||||
},
|
||||
"transcribing": {
|
||||
"ccButtonTooltip": "उपशीर्षके प्रारंभ / थांबवा",
|
||||
"error": "लिप्यंतरण अयशस्वी. कृपया पुन्हा प्रयत्न करा.",
|
||||
"expandedLabel": "लिप्यंतरण चालू आहे",
|
||||
"failedToStart": "लिप्यंतरण सुरू करण्यात अयशस्वी",
|
||||
"labelToolTip": "सभेचे प्रतिलेखन केले जात आहे",
|
||||
"off": "लिप्यंतरण थांबविले",
|
||||
"pending": "संमेलनाची नक्कल करण्याची तयारी करत आहे ...",
|
||||
"start": "उपशीर्षके दर्शविणे प्रारंभ करा",
|
||||
"stop": "उपशीर्षके दर्शविणे थांबवा",
|
||||
"tr": "टीआर"
|
||||
},
|
||||
"userMedia": {
|
||||
"androidGrantPermissions": "निवडा <b><i>परवानगी द्या</i></b> जेव्हा आपला ब्राउझर परवानग्या विचारतो.",
|
||||
"chromeGrantPermissions": "निवडा <b><i>परवानगी द्या</i></b> जेव्हा आपला ब्राउझर परवानग्या विचारतो.",
|
||||
"edgeGrantPermissions": "निवडा <b><i> होय</i></b> जेव्हा आपला ब्राउझर परवानग्या विचारतो.",
|
||||
"electronGrantPermissions": "कृपया आपला कॅमेरा आणि मायक्रोफोन वापरण्यास परवानगी द्या",
|
||||
"firefoxGrantPermissions": "Select <b><i>निवडलेले डिव्हाइस सामायिक करा</i></b> जेव्हा आपला ब्राउझर परवानग्या विचारतो.",
|
||||
"iexplorerGrantPermissions": "निवडा <b><i>ठीक आहे</i></b> जेव्हा आपला ब्राउझर परवानग्या विचारतो.",
|
||||
"nwjsGrantPermissions": "कृपया आपला कॅमेरा आणि मायक्रोफोन वापरण्यास परवानगी द्या",
|
||||
"operaGrantPermissions": "निवडा <b><i>परवानगी द्या</i></b> जेव्हा आपला ब्राउझर परवानग्या विचारतो.",
|
||||
"react-nativeGrantPermissions": "निवडा <b><i>परवानगी द्या</i></b>जेव्हा आपला ब्राउझर परवानग्या विचारतो.",
|
||||
"safariGrantPermissions": "निवडा <b><i>ठीक आहे</i></b> जेव्हा आपला ब्राउझर परवानग्या विचारतो."
|
||||
},
|
||||
"videoSIPGW": {
|
||||
"busy": "आम्ही स्त्रोत मुक्त करण्याचे काम करत आहोत. कृपया काही मिनिटांत पुन्हा प्रयत्न करा.",
|
||||
"busyTitle": " परिषद खोलीत सेवा सध्या व्यस्त आहे",
|
||||
"errorAlreadyInvited": " {{displayName}} आधीच आमंत्रित आहे",
|
||||
"errorInvite": "परिषद अद्याप स्थापन केलेली नाही. कृपया पुन्हा प्रयत्न करा.",
|
||||
"errorInviteFailed": "आम्ही या समस्येचे निराकरण करण्याचे काम करीत आहोत. कृपया पुन्हा प्रयत्न करा.",
|
||||
"errorInviteFailedTitle": "{{displayName}} आमंत्रित करणे अयशस्वी",
|
||||
"errorInviteTitle": " परिषद खोलीत आमंत्रित करताना त्रुटी",
|
||||
"pending": "{{displayName}} आमंत्रित केले गेले आहे"
|
||||
},
|
||||
"videoStatus": {
|
||||
"audioOnly": "एडीडी",
|
||||
"audioOnlyExpanded": "आपण कमी बँडविड्थ मोडमध्ये आहात. या मोडमध्ये आपल्याला केवळ ऑडिओ आणि स्क्रीन सामायिकरण प्राप्त होईल.",
|
||||
"callQuality": "व्हिडिओ गुणवत्ता",
|
||||
"hd": "एचडी",
|
||||
"hdTooltip": "उच्च परिभाषा व्हिडिओ पहात आहे",
|
||||
"highDefinition": "उंच - व्याख्या",
|
||||
"labelTooiltipNoVideo": "व्हिडिओ नाही",
|
||||
"labelTooltipAudioOnly": "कमी बँडविड्थ मोड सक्षम",
|
||||
"ld": "एलडी",
|
||||
"ldTooltip": "निम्न परिभाषा व्हिडिओ पहात आहे",
|
||||
"lowDefinition": "कमी व्याख्या",
|
||||
"onlyAudioAvailable": "केवळ ऑडिओ उपलब्ध आहे",
|
||||
"onlyAudioSupported": "आम्ही या ब्राउझरमध्ये केवळ ऑडिओचे समर्थन करतो.",
|
||||
"p2pEnabled": "सरदार ते सरदार सक्षम",
|
||||
"p2pVideoQualityDescription": "पीअर टू पीअर मोडमध्ये, प्राप्त व्हिडिओ गुणवत्ता केवळ उच्च आणि ऑडिओ दरम्यानच टॉगल केली जाऊ शकते. पीअर टू पीअर बाहेर येईपर्यंत इतर सेटिंग्जचा आदर केला जाणार नाही.",
|
||||
"recHighDefinitionOnly": "उच्च परिभाषा पसंत करेल.",
|
||||
"sd": "एसडी",
|
||||
"sdTooltip": "मानक परिभाषा व्हिडिओ पहात आहे",
|
||||
"standardDefinition": "मानक व्याख्या"
|
||||
},
|
||||
"videothumbnail": {
|
||||
"domute": "नि: शब्द करा",
|
||||
"domuteOthers": "इतर सर्वांना नि: शब्द करा",
|
||||
"flip": "फ्लिप",
|
||||
"kick": "लाथा मारून बाहेर काढ",
|
||||
"moderator": "नियंत्रक",
|
||||
"mute": "सहभागी निःशब्द आहे",
|
||||
"muted": "नि: शब्द केलेले",
|
||||
"remoteControl": "रिमोट कंट्रोल प्रारंभ / थांबवा.",
|
||||
"show": "रंगमंचावर दाखवा",
|
||||
"videomute": "सहभागीने कॅमेरा थांबविला आहे"
|
||||
},
|
||||
"welcomepage": {
|
||||
"accessibilityLabel": {
|
||||
"join": "सामील होण्यासाठी टॅप करा",
|
||||
"roomname": "खोलीचे नाव प्रविष्ट करा"
|
||||
},
|
||||
"appDescription": " पुढे जा, संपूर्ण टीमसह व्हिडिओ चॅट करा. खरं तर, आपल्या ओळखीच्या प्रत्येकास आमंत्रित करा. {{app}} एक संपूर्ण एनक्रिप्टेड, 100% मुक्त स्रोत व्हिडिओ कॉन्फरन्सिंग समाधान आहे जे आपण दिवसभर, दररोज विनामूल्य वापरु शकता - कोणतेही खाते आवश्यक नाही.",
|
||||
"audioVideoSwitch": {
|
||||
"audio": "आवाज",
|
||||
"video": "व्हिडिओ"
|
||||
},
|
||||
"calendar": "कॅलेंडर",
|
||||
"connectCalendarButton": "आपले कॅलेंडर कनेक्ट करा",
|
||||
"connectCalendarText": "आपली सर्व सभा {{app}} in मध्ये पाहण्यासाठी कॅलेंडर कनेक्ट करा. तसेच, आपल्या कॅलेंडरमध्ये {{provider}} संमेलने जोडा आणि एका क्लिकने त्या प्रारंभ करा.",
|
||||
"enterRoomTitle": "नवीन बैठक सुरू करा",
|
||||
"getHelp": "Get help",
|
||||
"roomNameAllowedChars": "संमेलनाच्या नावात यापैकी कोणतेही वर्ण नसावेत: ?, &, :, ', \", %, #.",
|
||||
"go": "GO",
|
||||
"goSmall": "GO",
|
||||
"join": "तयार करा / सामील व्हा",
|
||||
"info": "माहिती",
|
||||
"privacy": "गोपनीयता",
|
||||
"recentList": "अलीकडील",
|
||||
"recentListDelete": "हटवा",
|
||||
"recentListEmpty": "आपली अलीकडील यादी सध्या रिक्त आहे. आपल्या कार्यसंघाशी गप्पा मारा आणि आपल्याला आपल्या सर्व अलीकडील संमेलने येथे आढळतील.",
|
||||
"reducedUIText": "{{App}} वर आपले स्वागत आहे!",
|
||||
"roomname": "Enter room name",
|
||||
"roomnameHint": "आपण सामील होऊ इच्छित असलेल्या खोलीचे नाव किंवा URL प्रविष्ट करा. आपण नाव लिहू शकता, आपण ज्यांना भेटत आहात त्या लोकांना हे कळू द्या जेणेकरुन ते समान नाव प्रविष्ट करा.",
|
||||
"sendFeedback": "अभिप्राय पाठवा",
|
||||
"terms": "अटी",
|
||||
"title": "सुरक्षित, पूर्णपणे वैशिष्ट्यीकृत आणि पूर्णपणे विनामूल्य व्हिडिओ कॉन्फरन्सिंग"
|
||||
},
|
||||
"lonelyMeetingExperience": {
|
||||
"button": "इतरांना आमंत्रित करा",
|
||||
"youAreAlone": "आपण सभेत एकटाच आहात"
|
||||
},
|
||||
"helpView": {
|
||||
"header": "मदत केंद्र"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -639,7 +639,7 @@
|
||||
"raiseHand": "Podnieś / Opuść rękę",
|
||||
"raiseYourHand": "Podnieś rękę",
|
||||
"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",
|
||||
|
||||
@@ -780,6 +780,33 @@
|
||||
"chromeExtensionBanner": {
|
||||
"dontShowAgain": "Não me mostre isso de novo",
|
||||
"buttonText": "Instalar extensão do Chrome",
|
||||
"installExtensionText": "Instale a extensão par integração com Google Calendar e Office 365"
|
||||
"installExtensionText": "Instale a extensão para integrar com Google Calendar e Office 365"
|
||||
},
|
||||
"lobby": {
|
||||
"allow": "Permitir",
|
||||
"backToKnockModeButton": "Sem senha, peça para se juntar",
|
||||
"dialogTitle": "modo Lobby",
|
||||
"disableDialogContent": "O modo Lobby está habilitado. Este recurso evita que particpantes não convidados juntem-se à sua conferência. Deseja desabilitar?",
|
||||
"disableDialogSubmit": "Desabilitar",
|
||||
"emailField": "Informe seu email",
|
||||
"enableDialogPasswordField": "Definir senha (opcional)",
|
||||
"enableDialogSubmit": "Habilitar",
|
||||
"enableDialogText": "O modo Lobby protege a sua conferência, permitindo a entrada de participantes apenas após a aprovação formal do moderador.",
|
||||
"enterPasswordButton": "Informe a senha da conferência",
|
||||
"enterPasswordTitle": "Informe a senha para se juntar à conferência",
|
||||
"invalidPassword": "Senha inválida",
|
||||
"joiningMessage": "Você se juntará à conferência tão logo alguém aprove sua solicitação",
|
||||
"joinWithPasswordMessage": "Tentando entrar com a senha, por favor aguarde...",
|
||||
"joinRejectedMessage": "Sua solicitação de participação foi rejeitada pelo moderador.",
|
||||
"joinTitle": "Junte-se à conferência",
|
||||
"joiningTitle": "Pedindo para se juntar à conferência...",
|
||||
"joiningWithPasswordTitle": "Participando com senha...",
|
||||
"knockButton": "Peça para participar",
|
||||
"knockTitle": "Alguém deseja participar da conferência",
|
||||
"nameField": "Informe seu nome",
|
||||
"passwordField": "Informe a senha da conferência",
|
||||
"passwordJoinButton": "Solicitar",
|
||||
"reject": "Rejeitar",
|
||||
"toggleLabel": "Habilitar lobby"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,8 @@
|
||||
"bluetooth": "Bluetooth",
|
||||
"headphones": "Căști",
|
||||
"phone": "Telefon",
|
||||
"speaker": "Difuzor"
|
||||
"speaker": "Difuzor",
|
||||
"none": ""
|
||||
},
|
||||
"audioOnly": {
|
||||
"audioOnly": "Doar audio"
|
||||
@@ -51,7 +52,12 @@
|
||||
"popover": "Alegeți un pseudonim",
|
||||
"title": "Introduceți un pseudonim pentru a conversa"
|
||||
},
|
||||
"title": "Apel video"
|
||||
"title": "Apel video",
|
||||
"you": "",
|
||||
"privateNotice": "",
|
||||
"noMessagesMessage": "",
|
||||
"messageTo": "",
|
||||
"fieldPlaceHolder": ""
|
||||
},
|
||||
"connectingOverlay": {
|
||||
"joiningRoom": "Sunteți conectat la conversația dumneavoastră ..."
|
||||
@@ -66,7 +72,11 @@
|
||||
"DISCONNECTED": "Deconectat",
|
||||
"DISCONNECTING": "Se deconectează",
|
||||
"ERROR": "Eroare",
|
||||
"RECONNECTING": "A apărut o eroare de rețea. Reconectare..."
|
||||
"RECONNECTING": "A apărut o eroare de rețea. Reconectare...",
|
||||
"LOW_BANDWIDTH": "",
|
||||
"GOT_SESSION_ID": "",
|
||||
"GET_SESSION_ID_ERROR": "",
|
||||
"FETCH_SESSION_ID": ""
|
||||
},
|
||||
"connectionindicator": {
|
||||
"address": "Adresă:",
|
||||
@@ -97,7 +107,8 @@
|
||||
"status": "Conexiune:",
|
||||
"transport": "Mod Transport:",
|
||||
"transport_plural": "Moduri Transport:",
|
||||
"turn": " (turn)"
|
||||
"turn": " (turn)",
|
||||
"e2e_rtt": ""
|
||||
},
|
||||
"dateUtils": {
|
||||
"earlier": "Mai devreme",
|
||||
@@ -109,6 +120,8 @@
|
||||
"description": "Nu s-a întâmplat nimic? Am încercat să vă deschidem conversația în {{app}} aplicația pentru desktop. Încercați din nou sau deschideți {{app}} aplicația web.",
|
||||
"descriptionWithoutWeb": "",
|
||||
"downloadApp": "Descărcați aplicația",
|
||||
"ifDoNotHaveApp": "Dacă nu aveti încă aplicația atunci:",
|
||||
"ifHaveApp": "Dacă aveti deja aplicația:",
|
||||
"launchWebButton": "Deschideți în browser",
|
||||
"openApp": "Continuați spre aplicație",
|
||||
"title": "Deschidere apel video în {{app}}...",
|
||||
@@ -256,13 +269,24 @@
|
||||
"WaitForHostMsgWOk": "Conferința {{room}} nu a început. Daca sunteți moderatorul, apăsați butonul OK pentru autentificare. Dacă nu, așteptați ca moderatorul să înceapă conferința.",
|
||||
"WaitingForHost": "Așteptare moderator conferință ...",
|
||||
"Yes": "Da",
|
||||
"yourEntireScreen": "Întregul ecran"
|
||||
"yourEntireScreen": "Întregul ecran",
|
||||
"sendPrivateMessageTitle": "",
|
||||
"sendPrivateMessageOk": "",
|
||||
"sendPrivateMessageCancel": "",
|
||||
"sendPrivateMessage": "",
|
||||
"screenSharingAudio": "",
|
||||
"muteEveryoneStartMuted": "",
|
||||
"muteEveryoneSelf": "",
|
||||
"muteEveryoneTitle": "",
|
||||
"muteEveryoneDialog": "",
|
||||
"muteEveryoneElseTitle": "",
|
||||
"muteEveryoneElseDialog": ""
|
||||
},
|
||||
"dialOut": {
|
||||
"statusMessage": "Este {{status}}"
|
||||
},
|
||||
"feedback": {
|
||||
"average": "Mediu",
|
||||
"average": "Medie",
|
||||
"bad": "Rău",
|
||||
"detailsLabel": "Spuneți-ne mai multe despre experiența dumneavoastră.",
|
||||
"good": "Bine",
|
||||
@@ -335,7 +359,8 @@
|
||||
"toggleFilmstrip": "Afișați sau ascundeți imagini video",
|
||||
"toggleScreensharing": "Comutați între cameră și partajare ecran",
|
||||
"toggleShortcuts": "Arătați sau ascundeți comenzi rapide tastatură",
|
||||
"videoMute": "Porniți sau opriți camera"
|
||||
"videoMute": "Porniți sau opriți camera",
|
||||
"videoQuality": ""
|
||||
},
|
||||
"liveStreaming": {
|
||||
"busy": "Lucrăm la eliberarea resurselor de transmitere. Vă rugam să încercați din nou în câteva minute.",
|
||||
@@ -363,7 +388,11 @@
|
||||
"signOut": "Deconectare",
|
||||
"start": "Începeți o transmitere live",
|
||||
"streamIdHelp": "Ce înseamnă acest lucru?",
|
||||
"unavailableTitle": "Transmitere live indisponibilă"
|
||||
"unavailableTitle": "Transmitere live indisponibilă",
|
||||
"onBy": "",
|
||||
"offBy": "",
|
||||
"googlePrivacyPolicy": "Politica de confidențialitate Google",
|
||||
"youtubeTerms": "Termeni și condiții Youtube"
|
||||
},
|
||||
"localRecording": {
|
||||
"clientState": {
|
||||
@@ -426,9 +455,10 @@
|
||||
"unmute": "",
|
||||
"newDeviceCameraTitle": "A fost detectată o cameră noua",
|
||||
"newDeviceAudioTitle": "A fost detectat un dispozitiv audio nou",
|
||||
"newDeviceAction": "Utilizați"
|
||||
"newDeviceAction": "Utilizați",
|
||||
"suboptimalBrowserWarning": "Folosind acest browser nu veți beneficia de cea mai bună experiență pentru aceste apeluri video. În timp ce lucrăm la asta, vă recomandăm să folosiți unul din <a href='{{recommendedBrowserPageLink}}' target='_blank'>browser-ele suportate</a>."
|
||||
},
|
||||
"passwordSetRemotely": "Setat de un alt membru",
|
||||
"passwordSetRemotely": "Setată de un alt membru",
|
||||
"passwordDigitsOnly": "Până la {{number}} cifre",
|
||||
"poweredby": "cu sprijinul",
|
||||
"presenceStatus": {
|
||||
@@ -474,7 +504,9 @@
|
||||
"signIn": "Conectare",
|
||||
"signOut": "Deconectare",
|
||||
"unavailable": "Oops! Serviciul {{serviceName}} este indisponibil momentan. Se lucrează la remedierea acestei probleme. Vă rugam să încercați mai tărziu.",
|
||||
"unavailableTitle": "Înregistrare indisponibilă"
|
||||
"unavailableTitle": "Înregistrare indisponibilă",
|
||||
"onBy": "{{name}} a pornit înregistrarea",
|
||||
"offBy": "{{name}} a oprit înregistrarea"
|
||||
},
|
||||
"sectionList": {
|
||||
"pullToRefresh": "Trageți pentru a reîmprospătă"
|
||||
@@ -499,8 +531,10 @@
|
||||
"selectCamera": "Cameră",
|
||||
"selectMic": "Microfon",
|
||||
"startAudioMuted": "Toată lumea începe cu sunetul dezactivat",
|
||||
"startVideoMuted": "Toată lumea începe cu sunetul dezactivat",
|
||||
"title": "Setări"
|
||||
"startVideoMuted": "Toată lumea începe cu fară video",
|
||||
"title": "Setări",
|
||||
"speakers": "Difuzoare",
|
||||
"microphones": "Microfoane"
|
||||
},
|
||||
"settingsView": {
|
||||
"alertOk": "OK",
|
||||
@@ -515,7 +549,11 @@
|
||||
"serverURL": "Server URL",
|
||||
"startWithAudioMuted": "Începeți cu sunetul dezactivat",
|
||||
"startWithVideoMuted": "Începeți cu video dezactivat",
|
||||
"version": "Version"
|
||||
"version": "Version",
|
||||
"showAdvanced": "Arată setările avansate",
|
||||
"disableP2P": "Dezactivează modul Peer-To-Peer",
|
||||
"disableCallIntegration": "Dezactivează integrarea cu apelurile native",
|
||||
"advanced": "Avansat"
|
||||
},
|
||||
"share": {
|
||||
"dialInfoText": "\n\n=====\n\nVreti doar să apelați telefonic?\n\n{{defaultDialInNumber}}Faceți click pe acest link pentru a vizualiza numerele pentru apelare în acest apel video\n{{dialInfoPageUrl}}",
|
||||
@@ -525,10 +563,10 @@
|
||||
"speakerStats": {
|
||||
"hours": "{{count}}h",
|
||||
"minutes": "{{count}}m",
|
||||
"name": "Name",
|
||||
"name": "Nume",
|
||||
"seconds": "{{count}}s",
|
||||
"speakerStats": "Parametrii difuzorului",
|
||||
"speakerTime": "Durată participant"
|
||||
"speakerStats": "Statistici participanți",
|
||||
"speakerTime": "Durată vorbire participant"
|
||||
},
|
||||
"startupoverlay": {
|
||||
"policyText": " ",
|
||||
@@ -572,9 +610,14 @@
|
||||
"tileView": "Afișați/ascundeți miniatura video",
|
||||
"toggleCamera": "Afișați / ascundeți camera",
|
||||
"videomute": "Activați / dezactivați înregistrarea",
|
||||
"videoblur": ""
|
||||
"videoblur": "",
|
||||
"privateMessage": "Trimite un mesaj privat",
|
||||
"muteEveryone": "Oprește microfonul tuturor",
|
||||
"moreOptions": "Arată mai multe opțiuni",
|
||||
"help": "Ajutor",
|
||||
"download": "Descarcă aplicațiile noastre"
|
||||
},
|
||||
"addPeople": "Adaugați persoane în apel",
|
||||
"addPeople": "Adăugați persoane în apel",
|
||||
"audioOnlyOff": "Dezactivați modul 'doar audio'",
|
||||
"audioOnlyOn": "Activați modul 'doar audio'",
|
||||
"audioRoute": "Selectați dispozitivul pentru sunet",
|
||||
@@ -664,9 +707,6 @@
|
||||
"lowDefinition": "Calitate redusă",
|
||||
"onlyAudioAvailable": "Doar audio este disponibil",
|
||||
"onlyAudioSupported": "În acest navigator este suportat doar 'mod audio'.",
|
||||
"p2pEnabled": "Peer-to-Peer activat",
|
||||
"p2pVideoQualityDescription": "În modul peer-to-peer pentru calitatea apelurilor primite puteți alege doar între calitate superioară sau 'mod audio'. Alte setări nu pot fi activate până când modul peer-to-peer nu este dezactivat.",
|
||||
"recHighDefinitionOnly": "Este de preferat o calitate superioară.",
|
||||
"sd": "SD",
|
||||
"standardDefinition": "Calitate standard"
|
||||
},
|
||||
@@ -698,7 +738,7 @@
|
||||
"go": "ÎNCEPEȚI",
|
||||
"join": "ACCESARE",
|
||||
"info": "Informații",
|
||||
"privacy": "Securitate",
|
||||
"privacy": "Confidențialitate",
|
||||
"recentList": "Recent",
|
||||
"recentListDelete": "Ștergeți",
|
||||
"recentListEmpty": "Lista dumneavoastră recentă este momentan goală. Discutați cu echipa dumneavoastră și veți găsi toate conversațiile aici.",
|
||||
@@ -707,13 +747,16 @@
|
||||
"roomnameHint": "Introduceți numele sau adresa web a ședinței la care doriți să vă conectați. Puteți asocia un nume, dar transmiteți și celorlalți participanți acest nume.",
|
||||
"sendFeedback": "Lăsați-ne feedback",
|
||||
"terms": "Termeni",
|
||||
"title": "Video-conferință securizata, cu opțiuni multiple și complet gratuită "
|
||||
"title": "Video-conferință securizată, cu multiple funcționalități și complet gratuită"
|
||||
},
|
||||
"lonelyMeetingExperience": {
|
||||
"button": "Invită alte persoane",
|
||||
"youAreAlone": "Ești singura persoană din acest apel"
|
||||
"documentSharing": {
|
||||
"title": ""
|
||||
},
|
||||
"helpView": {
|
||||
"header": "Centru de ajutor"
|
||||
}
|
||||
"defaultNickname": "",
|
||||
"chromeExtensionBanner": {
|
||||
"dontShowAgain": "",
|
||||
"buttonText": "",
|
||||
"installExtensionText": ""
|
||||
},
|
||||
"raisedHand": "Ar dori să vorbească"
|
||||
}
|
||||
|
||||
@@ -189,10 +189,7 @@
|
||||
"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": "<br /><p><strong>WARNING:</strong> 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.</p>",
|
||||
"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",
|
||||
"externalInstallationMsg": "Potrebno je namestiti razširitev za deljenje namizja.",
|
||||
|
||||
@@ -1,19 +1,33 @@
|
||||
{
|
||||
"addPeople": {
|
||||
"add": "Davet et",
|
||||
"addContacts": "Kişilerinizi davet edin",
|
||||
"copyInvite": "Toplantı davetini kopyala",
|
||||
"copyLink": "Toplantı bağlantısını kopyala",
|
||||
"copyStream": "Canlı akış bağlantısını kopyala",
|
||||
"countryNotSupported": "Ülke henüz desteklenmiyor",
|
||||
"countryReminder": "Dış bir ülkeyi mi arıyorsunuz? Lütfen ülke koduyla başlayın!",
|
||||
"defaultEmail": "Varsayılan E-postanız",
|
||||
"disabled": "Kişi davet edemezsiniz.",
|
||||
"failedToAdd": "Kişi eklenemedi",
|
||||
"footerText": "Dış arama devre dışı.",
|
||||
"loading": "Kişiler ve telefon numaraları aranıyor..",
|
||||
"googleEmail": "Google Email",
|
||||
"inviteMoreHeader": "Toplantıdaki tek kişisiniz",
|
||||
"inviteMoreMailSubject": "{{appName}} toplantısına katıl",
|
||||
"inviteMorePrompt": "Daha fazla kişi davet et",
|
||||
"linkCopied": "Bağlantı panoya kopyalandı",
|
||||
"loading": "Kişiler ve telefon numaraları aranıyor...",
|
||||
"loadingNumber": "Telefon numarası doğrulanıyor",
|
||||
"loadingPeople": "Davet edilecek kişi aranıyor",
|
||||
"noResults": "Eşleşen sonuç bulunamadı",
|
||||
"noValidNumbers": "Lütfen bir telefon numarası girin",
|
||||
"outlookEmail": "Outlook Email",
|
||||
"searchNumbers": "Telefon numarası ekle",
|
||||
"searchPeople": "Kişi ara",
|
||||
"searchPeopleAndNumbers": "Kişi arayın veya telefon numarası ekleyin",
|
||||
"shareInvite": "Toplantı davetini paylaş",
|
||||
"shareLink": "Katılımcıları davet etmek için toplantı bağlantısını paylaşın",
|
||||
"shareStream": "Canlı akış bağlantısını paylaşın",
|
||||
"telephone": "Telefon numarası: {{number}}",
|
||||
"title": "Bu toplantıya kişi davet edin"
|
||||
},
|
||||
@@ -22,13 +36,13 @@
|
||||
"headphones": "Kulaklık",
|
||||
"phone": "Telefon",
|
||||
"speaker": "Konuşmacı",
|
||||
"none": "Ses cihazı yok"
|
||||
"none": "Geçerli Ses cihazı yok"
|
||||
},
|
||||
"audioOnly": {
|
||||
"audioOnly": "Düşük bant genişliği"
|
||||
},
|
||||
"calendarSync": {
|
||||
"addMeetingURL": "Toplantı bağlantısı ekle",
|
||||
"addMeetingURL": "Bir toplantı bağlantısı ekle",
|
||||
"confirmAddLink": "Bu etkinliğe bir toplantı bağlantısı eklensin mi?",
|
||||
"error": {
|
||||
"appConfiguration": "Takvim entegrasyonu doğru yapılandırılmadı.",
|
||||
@@ -47,20 +61,21 @@
|
||||
},
|
||||
"chat": {
|
||||
"error": "Hata: mesajınız gönderilmedi. Gerekçe: {{error}}",
|
||||
"fieldPlaceHolder": "Mesajınızı buraya yazın",
|
||||
"messagebox": "Bir mesaj yazın",
|
||||
"messageTo": "{{recipient}} adlı kişiye özel mesaj",
|
||||
"noMessagesMessage": "Toplantıda henüz mesaj yok. Burada bir konuşma başlatın!",
|
||||
"nickname": {
|
||||
"popover": "Bir takma ad seçin",
|
||||
"title": "Sohbette kullanmak için bir takma ad girin"
|
||||
},
|
||||
"privateNotice": "{{recipient}} için özel mesaj",
|
||||
"title": "Sohbet",
|
||||
"you": "sen",
|
||||
"privateNotice": "{{recipient}} için özel mesaj",
|
||||
"noMessagesMessage": "Toplantıda henüz mesaj yok. Buradan bir konuşma başlatın!",
|
||||
"messageTo": "{{recipient}} için özel mesaj",
|
||||
"fieldPlaceHolder": "Mesajınızı buraya yazın"
|
||||
"you": "sen"
|
||||
|
||||
},
|
||||
"connectingOverlay": {
|
||||
"joiningRoom": "Toplantınıza bağlanılıyor.."
|
||||
"joiningRoom": "Toplantıya bağlanılıyor..."
|
||||
},
|
||||
"connection": {
|
||||
"ATTACHED": "Eklenmiş",
|
||||
@@ -70,7 +85,7 @@
|
||||
"CONNECTING": "Bağlanıyor",
|
||||
"CONNFAIL": "Bağlantı başarısız",
|
||||
"DISCONNECTED": "Bağlantı kesildi",
|
||||
"DISCONNECTING": "Bağlantı kesildi",
|
||||
"DISCONNECTING": "Bağlantı kesiliyor",
|
||||
"ERROR": "Hata",
|
||||
"RECONNECTING": "Bir bağlantı hatası oluştu. Tekrar bağlanıyor...",
|
||||
"LOW_BANDWIDTH": "Bant genişliğinden tasarruf etmek için {{displayName}} kişisinin videosu kapatıldı",
|
||||
@@ -83,7 +98,7 @@
|
||||
"bandwidth": "Tahmini bant genişliği:",
|
||||
"bitrate": "Bit hızı:",
|
||||
"bridgeCount": "Sunucu sayısı: ",
|
||||
"connectedTo": "Bağlandı:",
|
||||
"connectedTo": "Bağlandı şuna:",
|
||||
"framerate": "Çerçeve hızı:",
|
||||
"less": "Daha az göster",
|
||||
"localaddress": "Yerel adres:",
|
||||
@@ -117,8 +132,11 @@
|
||||
"deepLinking": {
|
||||
"appNotInstalled": "Bu toplantıya katılmak için {{app}} uygulamasına ihtiyacınız var.",
|
||||
"description": "Hiçbir şey olmadı mı? Toplantınızı {{app}} masaüstü uygulamasında başlatmaya çalıştık. Tekrar deneyin veya {{app}} web uygulamasını açın.",
|
||||
"descriptionWithoutWeb": "",
|
||||
"descriptionWithoutWeb": "Hiçbir şey olmadı? Toplantınızı {{app}} masaüstü uygulamasında başlatmayı denedik.",
|
||||
"downloadApp": "Uygulamayı indir",
|
||||
"ifDoNotHaveApp": "Henüz uygulamanız yoksa:",
|
||||
"ifHaveApp": "Uygulamanız zaten varsa: ",
|
||||
"joinInApp": "Uygulamayı kullanarak bu toplantıya katıl",
|
||||
"launchWebButton": "Web'de aç",
|
||||
"openApp": "Uygulamaya devam et",
|
||||
"title": "Toplantınız {{app}} uygulamasında açılıyor...",
|
||||
@@ -134,20 +152,22 @@
|
||||
"deviceSelection": {
|
||||
"noPermission": "İzin alınamadı",
|
||||
"previewUnavailable": "Önizleme mevcut değil",
|
||||
"selectADevice": "Cihaz seç",
|
||||
"selectADevice": "Bir cihaz seç",
|
||||
"testAudio": "Bir test sesi çal"
|
||||
},
|
||||
"dialog": {
|
||||
"accessibilityLabel": {
|
||||
"liveStreaming": "Canlı akış"
|
||||
},
|
||||
|
||||
"add": "Ekle",
|
||||
"allow": "İzin ver",
|
||||
"alreadySharedVideoMsg": "Başka zaten bir video paylaşıyor. Bu toplantı aynı anda yalnızca bir paylaşılan videoya izin veriyor.",
|
||||
"alreadySharedVideoTitle": "Yalnızca bir paylaşılan videoya izin veriliyor",
|
||||
"alreadySharedVideoMsg": "Başka bir katılımcı zaten bir video paylaşıyor. Bu konferans aynı anda yalnızca bir paylaşılan videoya izin verir.",
|
||||
"alreadySharedVideoTitle": "Aynı anda yalnızca bir paylaşılan videoya izin verilir.",
|
||||
"applicationWindow": "Uygulama penceresi",
|
||||
"Back": "Geri",
|
||||
"cameraConstraintFailedError": "Kameranız gerekli bazı özellikleri karşılayamıyor.",
|
||||
"cameraNotFoundError": "Kamera bulunamadı",
|
||||
"cameraNotFoundError": "Kamera bulunamadı.",
|
||||
"cameraNotSendingData": "Kameranıza erişemiyoruz. Lütfen başka bir uygulamanın bu cihazı kullanıp kullanmadığını kontrol edin, Ayarlar menüsünden başka bir cihaz seçin veya uygulamayı yeniden yüklemeyi deneyin.",
|
||||
"cameraNotSendingDataTitle": "Kameraya erişilemiyor",
|
||||
"cameraPermissionDeniedError": "Kamera kullanımına izin vermediniz. Yine de toplantıya katılabilirsiniz, ancak diğerleri sizi göremez. Bunu düzeltmek için kamera butonunu kullanın.",
|
||||
@@ -155,9 +175,9 @@
|
||||
"cameraUnsupportedResolutionError": "Kameranız gerekli video çözünürlüğünü desteklemiyor.",
|
||||
"Cancel": "İptal",
|
||||
"close": "Kapat",
|
||||
"conferenceDisconnectMsg": "Ağ bağlantınızı kontrol etmek isteyebilirsiniz. {{seconds}} saniye içinde yeniden bağlanıyor ...",
|
||||
"conferenceDisconnectMsg": "Ağ bağlantınızı kontrol etmek isteyebilirsiniz. {{seconds}} saniye içinde yeniden bağlanıyor...",
|
||||
"conferenceDisconnectTitle": "Bağlantınız kesildi.",
|
||||
"conferenceReloadMsg": "Bunu düzeltmeye çalışıyoruz. {{seconds}} saniye içinde yeniden bağlanıyor ...",
|
||||
"conferenceReloadMsg": "Bunu düzeltmeye çalışıyoruz. {{seconds}} saniye içinde yeniden bağlanıyor...",
|
||||
"conferenceReloadTitle": "Ne yazık ki bir şeyler ters gitti.",
|
||||
"confirm": "Onayla",
|
||||
"confirmNo": "Hayır",
|
||||
@@ -168,27 +188,28 @@
|
||||
"contactSupport": "Destek ekibine erişin",
|
||||
"copy": "Kopyala",
|
||||
"dismiss": "Son ver",
|
||||
"displayNameRequired": "Görünür ad gerekli",
|
||||
"displayNameRequired": "Merhaba, görünmesini istediğin ismin nedir?",
|
||||
"done": "Bitti",
|
||||
"enterDisplayName": "Lütfen bir görünür ad girin",
|
||||
"enterDisplayName": "Lütfen adınızı buraya girin...",
|
||||
"error": "Hata",
|
||||
"externalInstallationMsg": "Masaüstü paylaşım uzantımızı yüklemeniz gerekmektedir.",
|
||||
"externalInstallationTitle": "Uzantı gerekli",
|
||||
"goToStore": "Mağazaya git",
|
||||
"gracefulShutdown": "Hizmetimiz şu anda bakım için devre dışı. Lütfen daha sonra tekrar deneyiniz.",
|
||||
"IamHost": "Toplantı sahibiyim",
|
||||
"incorrectRoomLockPassword": "",
|
||||
"incorrectRoomLockPassword": "Yanlış paralo",
|
||||
"incorrectPassword": "Kullanıcı adı veya parola hatalı",
|
||||
"inlineInstallationMsg": "Masaüstü paylaşım uzantımızı yüklemeniz gerekmektedir.",
|
||||
"inlineInstallExtension": "Şimdi yükle",
|
||||
"internalError": "Hata! Bir şeyler ters gitti. Şu hata oluştu: {{error}}",
|
||||
"internalErrorTitle": "İç hata",
|
||||
"kickMessage": "Ah! Toplantıdan çıkarıldınız!",
|
||||
"kickMessage": "Daha fazla ayrıntı için {{participantDisplayName}} ile iletişime geçebilirsiniz.",
|
||||
"kickParticipantButton": "Çıkar",
|
||||
"kickParticipantDialog": "Bu katılımcıyı çıkarmak istediğinizden emin misiniz?",
|
||||
"kickParticipantTitle": "Bu katılımcı çıkarılsın mı?",
|
||||
"kickTitle": "Toplantıdan çıkarıldı",
|
||||
"kickTitle": "Ah! {{participantDisplayName}} sizi toplantıdan çıkardı.",
|
||||
"liveStreaming": "Canlı akış",
|
||||
"liveStreamingDisabledBecauseOfActiveRecordingTooltip": "Kayıt etkinken mümkün değil",
|
||||
"liveStreamingDisabledForGuestTooltip": "Konuklar canlı akışa başlayamaz.",
|
||||
"liveStreamingDisabledTooltip": "Canlı akışı başlatma devre dışı.",
|
||||
"lockMessage": "Toplantı kilitlenemedi.",
|
||||
@@ -201,21 +222,22 @@
|
||||
"micConstraintFailedError": "Mikrofonunuz gerekli özelliklerin bazılarını karşılayamıyor.",
|
||||
"micNotFoundError": "Mikrofon bulunamadı.",
|
||||
"micNotSendingData": "Mikrofonunuza erişemiyoruz. Lütfen Ayarlar menüsünden başka bir cihaz seçin veya uygulamayı yeniden yüklemeyi deneyin.",
|
||||
"micNotSendingDataTitle": "Mikrofona erişilemiyor",
|
||||
"micNotSendingDataTitle": "Mikrofona erişilemiyor.",
|
||||
"micPermissionDeniedError": "Mikrofon kullanımına izin vermediniz. Yine de toplantıya katılabilirsiniz, ancak diğerleri sizi duyamaz. Bunu düzeltmek için mikrofon butonunu kullanın.",
|
||||
"micUnknownError": "Bilinmeyen bir nedenden dolayı mikrofon kullanılamıyor.",
|
||||
"muteParticipantBody": "Bunların sesini açamazsınız, ancak istedikleri zaman kendileri seslerini açabilirler.",
|
||||
"muteParticipantBody": "Sesi açamazsınız, ancak istedikleri zaman kendileri seslerini açabilirler.",
|
||||
"muteParticipantButton": "Sustur",
|
||||
"muteParticipantDialog": "Bu katılımcının sesini kapatmak istediğinizden emin misiniz? Bunların sesini açamazsınız, ancak istedikleri zaman kendileri seslerini açabilirler.",
|
||||
"muteParticipantDialog": "Bu katılımcının sesini kapatmak istediğinizden emin misiniz? Sesini açamazsınız, ancak istedikleri zaman kendileri seslerini açabilirler.",
|
||||
"muteParticipantTitle": "Bu katılımcı susturulsun mu?",
|
||||
"Ok": "Tamam",
|
||||
"passwordLabel": "Parola",
|
||||
"passwordLabel": "Toplantı bir katılımcı tarafından kilitlendi. Lütfen giriş yapmak için $t(lockRoomPassword) giriniz.",
|
||||
"passwordNotSupported": "Toplantı parolası ayarlama desteklenmiyor.",
|
||||
"passwordNotSupportedTitle": "Parola desteklenmiyor",
|
||||
"passwordRequired": "Parola gerekli",
|
||||
"popupError": "Tarayıcınız bu siteden açılan pencereleri engelliyor. Lütfen tarayıcınızın güvenlik ayarlarından açılır pencereleri etkinleştirin ve tekrar deneyin.",
|
||||
"popupErrorTitle": "Açılır pencere engellendi",
|
||||
"recording": "Kaydediliyor",
|
||||
"recordingDisabledBecauseOfActiveLiveStreamingTooltip": "Canlı akış etkinken mümkün değil...",
|
||||
"recordingDisabledForGuestTooltip": "Misafirler kayıt etmeye başlayamaz.",
|
||||
"recordingDisabledTooltip": "Kaydetmeye başlama devre dışı.",
|
||||
"rejoinNow": "Tekrar katıl",
|
||||
@@ -227,18 +249,23 @@
|
||||
"remoteControlStopMessage": "Uzaktan kontrol oturumu sona erdi!",
|
||||
"remoteControlTitle": "Uzak masaüstü kontrolü",
|
||||
"Remove": "Kaldır",
|
||||
"removePassword": "Şifreyi kaldır",
|
||||
"removePassword": "Parolayı kaldır",
|
||||
"removeSharedVideoMsg": "Paylaşılan videonuzu kaldırmak istediğinizden emin misiniz?",
|
||||
"removeSharedVideoTitle": "Paylaşılan videoyu kaldır",
|
||||
"reservationError": "Rezervasyon sistemi hatası",
|
||||
"reservationErrorMsg": "Hata kodu: {{code}}, mesaj: {{msg}}",
|
||||
"retry": "Yeniden Dene",
|
||||
"screenSharingAudio": "Sesi paylaş",
|
||||
"screenSharingFailedToInstall": "Hata! Ekran paylaşım uzantınız yüklenemedi.",
|
||||
"screenSharingFailedToInstallTitle": "Ekran paylaşım uzantısı yüklenemedi",
|
||||
"screenSharingFirefoxPermissionDeniedError": "Ekranınızı paylaşmaya çalışırken bir şeyler ters gitti. Lütfen bize izin verdiğinizden emin olun.",
|
||||
"screenSharingFirefoxPermissionDeniedTitle": "Hata! Ekran paylaşımına başlayamadık!",
|
||||
"screenSharingPermissionDeniedError": "Hata! Ekran paylaşma uzantısı izinlerinizle ilgili bir sorun oluştu. Lütfen yeniden yükleyin ve tekrar deneyin.",
|
||||
"serviceUnavailable": "Hizmet kullanılamıyor",
|
||||
"sendPrivateMessage": "Kısa süre önce özel bir mesaj aldınız. Buna özel olarak cevap vermek ister misiniz yoksa mesajınızı gruba göndermek mi istiyorsunuz?",
|
||||
"sendPrivateMessageCancel": "Gruba gönder",
|
||||
"sendPrivateMessageOk": "Özel olarak gönder",
|
||||
"sendPrivateMessageTitle": "Özel olarak gönderilsin mi?",
|
||||
"serviceUnavailable": "Hizmet kullanılamıyor",
|
||||
"sessTerminated": "Arama sonlandırıldı",
|
||||
"Share": "Paylaş",
|
||||
"shareVideoLinkError": "Lütfen doğru bir Youtube bağlantısı sağlayın.",
|
||||
@@ -261,7 +288,7 @@
|
||||
"tokenAuthFailedTitle": "Kimlik doğrulama başarısız",
|
||||
"transcribing": "Deşifre ediliyor",
|
||||
"unlockRoom": "Toplantı parolasını kaldır",
|
||||
"userPassword": "kullancı parolası",
|
||||
"userPassword": "Kullancı parolası",
|
||||
"WaitForHostMsg": "<b>{{room}}</b> toplantısı henüz başlamadı. Toplantı sahibi sizseniz, lütfen kimlik doğrulaması yapın. Değilseniz lütfen toplantı sahibinin gelmesini bekleyin.",
|
||||
"WaitForHostMsgWOk": "<b>{{room}}</b> toplantısı henüz başlamadı. Toplantı sahibi sizseniz, kimlik doğrulaması için Tamam butonuna basın. Değilseniz lütfen toplantı sahibinin gelmesini bekleyin.",
|
||||
"WaitingForHost": "Toplantı sahibi bekleniyor...",
|
||||
@@ -271,6 +298,16 @@
|
||||
"dialOut": {
|
||||
"statusMessage": "şimdi {{status}}"
|
||||
},
|
||||
|
||||
"documentSharing": {
|
||||
"title": "Paylaşılan Döküman"
|
||||
},
|
||||
|
||||
|
||||
"e2ee": {
|
||||
"labelToolTip": "Bu görüşmedeki ses ve video iletişimi uçtan uca şifrelenmiştir."
|
||||
},
|
||||
|
||||
"feedback": {
|
||||
"average": "Orta",
|
||||
"bad": "Kötü",
|
||||
@@ -289,8 +326,8 @@
|
||||
},
|
||||
"info": {
|
||||
"accessibilityLabel": "Bilgiyi göster",
|
||||
"addPassword": "Şifre ekle",
|
||||
"cancelPassword": "Şifreyi iptal et",
|
||||
"addPassword": "Parola ekle",
|
||||
"cancelPassword": "Parolayı iptal et",
|
||||
"conferenceURL": "Bağlantı:",
|
||||
"country": "Ülke",
|
||||
"dialANumber": "Toplantınıza katılmak için bu numaralardan birini çevirin ve ardından kodu girin.",
|
||||
@@ -312,7 +349,7 @@
|
||||
"noPassword": "Yok",
|
||||
"noRoom": "Aranacak oda belirtilmedi.",
|
||||
"numbers": "Arama Numaraları",
|
||||
"password": "Şifre:",
|
||||
"password": "Parola:",
|
||||
"title": "Paylaş",
|
||||
"tooltip": "Bu toplantı için bağlantıyı ve arama bilgilerini paylaşın",
|
||||
"label": "Toplantı bilgileri"
|
||||
@@ -329,10 +366,10 @@
|
||||
"msg": "Biraz tökezledik.",
|
||||
"retry": "Tekrar dene",
|
||||
"support": "Destek",
|
||||
"supportMsg": "Bu olmaya devam ederse, ulaşın"
|
||||
"supportMsg": "Bu olmaya devam ederse, ulaşın."
|
||||
},
|
||||
"keyboardShortcuts": {
|
||||
"focusLocal": "Videoma odaklan",
|
||||
"focusLocal": "Videoya odaklan",
|
||||
"focusRemote": "Başka bir kişinin videosuna odaklan",
|
||||
"fullScreen": "Tam ekran görüntüle veya çık",
|
||||
"keyboardShortcuts": "Klavye kısayolları",
|
||||
@@ -345,7 +382,9 @@
|
||||
"toggleFilmstrip": "Video önizlemelerini göster veya gizle",
|
||||
"toggleScreensharing": "Kamera ve ekran paylaşımı arasında geçiş yap",
|
||||
"toggleShortcuts": "Klavye kısayollarını göster veya gizle",
|
||||
"videoMute": "Kamerayı aç veya kapat"
|
||||
"videoMute": "Kamerayı aç veya kapat",
|
||||
"videoQuality": "Çağrı kalitesini yönetin"
|
||||
|
||||
},
|
||||
"liveStreaming": {
|
||||
"busy": "Akış kaynaklarını serbest bırakmaya çalışıyoruz. Lütfen birkaç dakika içinde tekrar deneyin.",
|
||||
@@ -364,7 +403,9 @@
|
||||
"getStreamKeyManually": "Canlı akış alınamadı. Canlı akış anahtarınızı Youtube'dan almayı deneyin.",
|
||||
"invalidStreamKey": "Canlı akış anahtarı yanlış olabilir.",
|
||||
"off": "Canlı Akış durduruldu",
|
||||
"offBy": "{{name}} canlı akışı durdurdu",
|
||||
"on": "Canlı Akış",
|
||||
"onBy": "{{name}} canlı akışı başlattı",
|
||||
"pending": "Canlı Akış başlatılıyor...",
|
||||
"serviceName": "Canlı Akış hizmeti",
|
||||
"signedInAs": "Şu anda oturum açmış durumdasınız:",
|
||||
@@ -373,7 +414,10 @@
|
||||
"signOut": "Çıkış yap",
|
||||
"start": "Bir canlı akış başlat",
|
||||
"streamIdHelp": "Bu nedir?",
|
||||
"unavailableTitle": "Canlı Akış kullanılamıyor"
|
||||
"unavailableTitle": "Canlı Akış kullanılamıyor",
|
||||
"youtubeTerms": "YouTube hizmet şartları",
|
||||
"googlePrivacyPolicy": "Google Gizlilik Politikası"
|
||||
|
||||
},
|
||||
"localRecording": {
|
||||
"clientState": {
|
||||
@@ -424,23 +468,64 @@
|
||||
"muted": "Görüşmeye sesiniz kapalı olarak başladınız.",
|
||||
"mutedTitle": "Sesiniz kapalı!",
|
||||
"mutedRemotelyTitle": "{{participantDisplayName}} tarafından sessize alındınız!",
|
||||
"mutedRemotelyDescription": "",
|
||||
"passwordRemovedRemotely": "",
|
||||
"passwordSetRemotely": "",
|
||||
"raisedHand": "{{name}} konuşmak istiyor.",
|
||||
"mutedRemotelyDescription": "Konuşmaya hazır olduğun zaman, Kendi mikrofonunu açabilirsin. Görüşmeden gürültüyü uzak tutmak için kendini tekrar sessize almalısın.",
|
||||
"passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) başka bir katılımcı tarafından kaldırıldı",
|
||||
"passwordSetRemotely": "$t(lockRoomPasswordUppercase) başka bir katılımcı tarafından ayarlandı",
|
||||
"raisedHand": "{{name}} söz hakkı istiyor.",
|
||||
"somebody": "Birisi",
|
||||
"startSilentTitle": "",
|
||||
"startSilentDescription": "",
|
||||
"suboptimalExperienceDescription": "Mmm... {{appName}} ile olan deneyiminizin burada çok iyi olmayacağından korkuyoruz. Bunu iyileştirmenin yollarını arıyoruz, ancak o zamana kadar lütfen şunlardan birini deneyin: <a href='{{recommendedBrowserPageLink}}' target='_blank'>fully supported browsers</a>.",
|
||||
"startSilentTitle": "Ses çıkışı olmadan bağlandınız",
|
||||
"startSilentDescription": "Ses çıkışını açtıktan sonra tekrar bağlanın",
|
||||
"suboptimalBrowserWarning": "Toplantı deneyiminizin burada çok iyi olmayacağından korkuyoruz. Bunu iyileştirmenin yollarını arıyoruz, ancak o zamana kadar lütfen şunlardan birini deneyin: <a href='{{recommendedBrowserPageLink}}' target='_blank'>desteklenen tarayıcılar</a>.",
|
||||
"suboptimalExperienceTitle": "Tarayıcı Uyarısı",
|
||||
"unmute": "",
|
||||
"unmute": "Sessizden çıkar",
|
||||
"newDeviceCameraTitle": "Yeni kamera algılandı",
|
||||
"newDeviceAudioTitle": "Yeni ses aygıtı algılandı",
|
||||
"newDeviceAction": "Kullan"
|
||||
"newDeviceAction": "Kullan",
|
||||
"OldElectronAPPTitle": "Güvenlik açığı!",
|
||||
"oldElectronClientDescription1": "Güvenlik açıkları bilinen Jitsi Meet istemcisinin eski bir sürümünü kullanıyor görünüyorsunuz. Lütfen güncellediğinizden emin olun.",
|
||||
"oldElectronClientDescription2": "son yapı",
|
||||
"oldElectronClientDescription3": " şimdi!"
|
||||
|
||||
},
|
||||
"passwordSetRemotely": "başka katılımcı tarafından ayarlandı",
|
||||
"passwordDigitsOnly": "{{number}} rakama kadar",
|
||||
"poweredby": "gücünün kaynağı",
|
||||
"poweredby": "",
|
||||
|
||||
"prejoin": {
|
||||
"audioAndVideoError": "Ses ve video hatası:",
|
||||
"audioOnlyError": "Ses Hatası:",
|
||||
"audioTrackError": "Ses parçası oluşturulamadı.",
|
||||
"callMe": "Beni ara",
|
||||
"callMeAtNumber": "Beni şu numaradan arayın:",
|
||||
"configuringDevices": "Cihazlar yapılandırılıyor...",
|
||||
"connectedWithAudioQ": "Sese bağlı mısınız?",
|
||||
"copyAndShare": "Toplantı bağlantısını kopyala ve paylaş",
|
||||
"dialInMeeting": "Toplantıya telefon et",
|
||||
"dialInPin": "Toplantıya telefon edin ve PIN kodunu girin:",
|
||||
"dialing": "Arama",
|
||||
"doNotShow": "Bunu bir daha gösterme",
|
||||
"errorDialOut": "Dışarı arama yapılamadı",
|
||||
"errorDialOutDisconnected": "Dışarı arama yapılamadı. Bağlantı kesildi",
|
||||
"errorDialOutFailed": "Dışarı arama yapılamadı. Arama başarısız",
|
||||
"errorDialOutStatus": "Dışarı arama durumu alınırken hata oluştu",
|
||||
"errorStatusCode": "Dışarı arama hatası, durum kodu: {{status}}",
|
||||
"errorValidation": "Numara doğrulanamadı",
|
||||
"iWantToDialIn": "İçeri arama yapmak istiyorum",
|
||||
"joinAudioByPhone": "Join with phone audio",
|
||||
"joinMeeting": "Toplantıya katıl",
|
||||
"joinWithoutAudio": "Ses olmadan katıl",
|
||||
"initiated": "Çağrı başlatıldı",
|
||||
"linkCopied": "Bağlantı panoya kopyalandı",
|
||||
"lookGood": "Mikrofonunuz düzgün çalışıyor gibi görünüyor",
|
||||
"or": "veya",
|
||||
"calling": "Arama",
|
||||
"startWithPhone": "Telefon sesiyle başlayın",
|
||||
"screenSharingError": "Ekran paylaşma hatası:",
|
||||
"videoOnlyError": "Video hatası:",
|
||||
"videoTrackError": "Video izleme oluşturulamadı.",
|
||||
"viewAllNumbers": "tüm numaraları görüntüle"
|
||||
},
|
||||
|
||||
"presenceStatus": {
|
||||
"busy": "Meşgul",
|
||||
"calling": "Arıyor...",
|
||||
@@ -461,7 +546,10 @@
|
||||
"setEmailLabel": "Gravatar e-postanızı ayarlayın",
|
||||
"title": "Profil"
|
||||
},
|
||||
"raisedHand": "Konuşmak ister misiniz?",
|
||||
"recording": {
|
||||
"limitNotificationDescriptionWeb": "Yüksek talep nedeniyle kaydınız {{limit}} dakika ile sınırlı olacaktır. Sınırsız kayıt için deneyin <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"limitNotificationDescriptionNative": "Yüksek talep nedeniyle kaydınız {{limit}} dakika ile sınırlı olacaktır. Sınırsız kayıt için deneyin <3>{{app}}</3>.",
|
||||
"authDropboxText": "Dropbox'a yükle",
|
||||
"availableSpace": "Kullanılabilir alan: {{spaceLeft}} MB (yaklaşık {{duration}} dakika kayıt)",
|
||||
"beta": "BETA",
|
||||
@@ -489,6 +577,13 @@
|
||||
"sectionList": {
|
||||
"pullToRefresh": "Yenilemek için çekin"
|
||||
},
|
||||
|
||||
"security": {
|
||||
"about": "Toplantınıza bir şifre ekleyebilirsiniz. Katılımcıların toplantıya katılmasına izin verilmeden önce şifreyi girmeleri gerekecektir.",
|
||||
"insecureRoomNameWarning": "Toplantı odası güvenli değil. Konferansınıza istenmeyen katılımcılar katılabilir.",
|
||||
"securityOptions": "Güvenlik Seçenekleri"
|
||||
},
|
||||
|
||||
"settings": {
|
||||
"calendar": {
|
||||
"about": "{{appName}} takvim entegrasyonu, yaklaşan etkinlikleri okuyabilmesi için takviminize güvenli bir şekilde erişmek için kullanılır.",
|
||||
@@ -513,16 +608,23 @@
|
||||
"title": "Ayarlar"
|
||||
},
|
||||
"settingsView": {
|
||||
"advanced": "Gelişmiş",
|
||||
"alertOk": "Tamam",
|
||||
"alertCancel": "İptal",
|
||||
"alertTitle": "Uyarı",
|
||||
"alertURLText": "Girilen sunucu bağlantısı geçersiz",
|
||||
"buildInfoSection": "Yapı Bilgisi",
|
||||
"conferenceSection": "Toplantı",
|
||||
"disableCallIntegration": "Yerel arama entegrasyonunu devre dışı bırak",
|
||||
"disableP2P": "Peer-To-Peer modunu devre dışı bırak",
|
||||
"disableCrashReporting": "Çökme raporlamasını devre dışı bırak",
|
||||
"disableCrashReportingWarning": "Kilitlenme raporlamasını devre dışı bırakmak istediğinizden emin misiniz? Ayar, uygulamayı yeniden başlattıktan sonra uygulanacaktır.",
|
||||
"displayName": "Görünür ad",
|
||||
"email": "E-posta",
|
||||
"header": "Ayarlar",
|
||||
"profileSection": "Profil",
|
||||
"serverURL": "Sunucu Bağlantısı",
|
||||
"showAdvanced": "Gelişmiş ayarları göster",
|
||||
"startWithAudioMuted": "Ses kapalı başla",
|
||||
"startWithVideoMuted": "Görüntü kapalı başla",
|
||||
"version": "Versiyon"
|
||||
@@ -557,17 +659,23 @@
|
||||
"cc": "Altyazıları aç/kapat",
|
||||
"chat": "Mesajlaşma penceresini aç/kapat",
|
||||
"document": "Paylaşılan dokümanı aç/kapat",
|
||||
"download": "Uygulamalarımızı indirin",
|
||||
"e2ee": "Uçtan uca şifreleme",
|
||||
"feedback": "Geri bildirim bırakın",
|
||||
"fullScreen": "Tam ekranı aç/kapat",
|
||||
"hangup": "Aramadan ayrıl",
|
||||
"help": "Yardım",
|
||||
"invite": "İnsanları davet et",
|
||||
"kick": "Katılımcı çıkar",
|
||||
"lobbyButton": "Lobi modunu etkinleştir / devre dışı bırak",
|
||||
"localRecording": "Kayıt denetimlerini aç/kapat",
|
||||
"lockRoom": "Toplantı parolasını aç/kapat",
|
||||
"moreActions": "Diğer işlemler menüsünü aç/kapat",
|
||||
"moreActionsMenu": "Diğer işlemler menüsü",
|
||||
"mute": "Sesi aç/kapat",
|
||||
"muteEveryone": "Herkesi sustur",
|
||||
"pip": "Resim içinde Resim modunu aç/kapat",
|
||||
"privateMessage": "Özel mesaj gönder",
|
||||
"profile": "Profilinizi düzenleyin",
|
||||
"raiseHand": "El kaldırmayı aç/kapat",
|
||||
"recording": "Kaydetmeyi aç/kapat",
|
||||
@@ -577,7 +685,7 @@
|
||||
"shareRoom": "Birini davet et",
|
||||
"shareYourScreen": "Ekran paylaşımını aç/kapat",
|
||||
"shortcuts": "Kısayolları aç/kapat",
|
||||
"show": "",
|
||||
"show": "Sahnede göster",
|
||||
"speakerStats": "Konuşmacı istatistiklerini aç/kapat",
|
||||
"tileView": "Döşeme görünümünü aç/kapat",
|
||||
"toggleCamera": "Kamerayı aç/kapat",
|
||||
@@ -594,20 +702,35 @@
|
||||
"closeChat": "Mesajlaşmayı kapat",
|
||||
"documentClose": "Paylaşılan dokümanı kapat",
|
||||
"documentOpen": "Paylaşılan dokümanı aç",
|
||||
"download": "Uygulamalarımızı indirin",
|
||||
"e2ee": "Uçtan uca şifreleme",
|
||||
"enterFullScreen": "Tam ekran görüntüle",
|
||||
"enterTileView": "Döşeme görünümüne geç",
|
||||
"exitFullScreen": "Tam ekrandan çık",
|
||||
"exitTileView": "Döşeme görünümünden çık",
|
||||
"feedback": "Geri bildirim bırakın",
|
||||
"hangup": "Ayrıl",
|
||||
"help": "Yardım",
|
||||
"invite": "Kişi davet et",
|
||||
"lobbyButtonDisable": "Lobi modunu devre dışı bırak",
|
||||
"lobbyButtonEnable": "Lobi modunu devre aktifleştir",
|
||||
"login": "Oturum aç",
|
||||
"logout": "Oturum kapat",
|
||||
"lowerYourHand": "Elinizi indirin",
|
||||
"moreActions": "Daha fazla işlem",
|
||||
"moreOptions": "Daha fazla seçenek",
|
||||
"mute": "Sessiz / Sesli",
|
||||
"muteEveryone": "Mute everyone",
|
||||
"noAudioSignalTitle": "Mikrofonunuzdan hiçbir giriş gelmiyor!",
|
||||
"noAudioSignalDesc": "Sistem ayarlarından veya donanımdan sesi kapatmadıysanız, cihazınızı değiştirin.",
|
||||
"noAudioSignalDescSuggestion": "Sistem ayarlarından veya donanımdan kasıtlı olarak kapatmadıysanız, önerilen aygıta geçmeyi düşünün.",
|
||||
"noAudioSignalDialInDesc": "",
|
||||
"noAudioSignalDialInLinkDesc": "İçeri arama numaraları",
|
||||
"noisyAudioInputTitle": "Mikrofonunuz gürültülü görünüyor!",
|
||||
"noisyAudioInputDesc": "Mikrofonunuz gürültü yapıyor gibi görünüyor, lütfen cihazı kapatmayı veya değiştirmeyi düşünün.",
|
||||
"openChat": "Mesajlaşmayı aç",
|
||||
"pip": "Resim içinde Resim moduna gir",
|
||||
"privateMessage": "Özel mesajgönder",
|
||||
"profile": "Profilinizi düzenleyin",
|
||||
"raiseHand": "Elinizi kaldırın/indirin",
|
||||
"raiseYourHand": "Elinizi kaldırın",
|
||||
@@ -671,21 +794,24 @@
|
||||
"labelTooiltipNoVideo": "Görüntü yok",
|
||||
"labelTooltipAudioOnly": "Yalnızca ses modu etkin",
|
||||
"ld": "LD",
|
||||
"ldTooltip": "Düşük çözünürlüklü video görüntüleme",
|
||||
"lowDefinition": "Düşük çözünürlük",
|
||||
"onlyAudioAvailable": "Yalnızca ses kullanılabilir",
|
||||
"onlyAudioSupported": "Bu tarayıcıda yalnızca sesi destekliyoruz.",
|
||||
"sd": "SD",
|
||||
"sdTooltip": "Standart çözünürlüklü video görüntüleme",
|
||||
"standardDefinition": "Standart çözünürlük"
|
||||
},
|
||||
"videothumbnail": {
|
||||
"domute": "Sustur",
|
||||
"domuteOthers": "Diğer herkesi sustur",
|
||||
"flip": "Döndür",
|
||||
"kick": "Çıkarıldı",
|
||||
"moderator": "Yönetici",
|
||||
"mute": "Katılımcı sessiz",
|
||||
"muted": "Sessiz",
|
||||
"remoteControl": "Uzaktan kontrol",
|
||||
"show": "",
|
||||
"show": "Sahnede göster",
|
||||
"videomute": "Katılımcı kamerayı durdurdu"
|
||||
},
|
||||
"welcomepage": {
|
||||
@@ -702,6 +828,9 @@
|
||||
"connectCalendarButton": "Takviminizi bağlayın",
|
||||
"connectCalendarText": "",
|
||||
"enterRoomTitle": "Yeni bir toplantı başlat",
|
||||
"getHelp": "Yardım alın",
|
||||
"roomNameAllowedChars": "Toplantı adı şu karakterlerden hiçbirini içermemelidir: ?, &, :, ', \", %, #.",
|
||||
|
||||
"go": "GİT",
|
||||
"join": "KATIL",
|
||||
"info": "Bilgi",
|
||||
@@ -714,13 +843,52 @@
|
||||
"roomnameHint": "Katılmak istediğiniz odanın adını veya bağlantısını girin. İstediğiniz oda adını uydurabilirsiniz. Aynı odada buluşmak için görüşmek istediğiniz kişilere bunu iletmeniz yeterli.",
|
||||
"sendFeedback": "Geri bildirim gönder",
|
||||
"terms": "Kurallar",
|
||||
"title": "Güvenli, tüm özelliklere erişimli ve tamamen ücretsiz görüntülü arama",
|
||||
"getHelp": "Yardım alın"
|
||||
"title": "Güvenli, tüm özelliklere erişimli ve tamamen ücretsiz görüntülü arama"
|
||||
|
||||
},
|
||||
|
||||
"lonelyMeetingExperience": {
|
||||
"button": "Birilerini davet et",
|
||||
"youAreAlone": "Toplantıdaki tek kişisiniz"
|
||||
},
|
||||
|
||||
"helpView": {
|
||||
"header": "Yardım Merkezi"
|
||||
},
|
||||
|
||||
"defaultNickname": "örnek Jane Pink",
|
||||
"chromeExtensionBanner": {
|
||||
"dontShowAgain": "Bunu bir daha gösterme",
|
||||
"buttonText": "Chrome Eklentisi'ni indirin",
|
||||
"installExtensionText": "Google Takvim ve Office 365 entegrasyonu için uzantıyı yükleyin"
|
||||
},
|
||||
|
||||
"lobby": {
|
||||
"allow": "İzin ver",
|
||||
"backToKnockModeButton": "Şifre yok, bunun yerine katılmayı isteyin",
|
||||
"dialogTitle": "Lobi modu",
|
||||
"disableDialogContent": "Lobi modu şu anda etkin. Bu özellik, istenmeyen katılımcıların toplantınıza katılamamasını sağlar. Devre dışı bırakmak istiyor musunuz?",
|
||||
"disableDialogSubmit": "Devre Dışı",
|
||||
"emailField": "E-posta adresinizi giriniz",
|
||||
"enableDialogPasswordField": "Şifre belirleyin (isteğe bağlı)",
|
||||
"enableDialogSubmit": "Etkin",
|
||||
"enableDialogText": "Lobi modu, toplantınızı yalnızca kişilerin bir moderatör tarafından resmi olarak onaylandıktan sonra girmelerine izin vererek korumanıza izin verir.",
|
||||
"enterPasswordButton": "Toplantı şifresini girin",
|
||||
"enterPasswordTitle": "Toplantıya katılmak için şifre girin",
|
||||
"invalidPassword": "Geçersiz şifre",
|
||||
"joiningMessage": "Birisi isteğinizi kabul eder etmez toplantıya katılacaksınız",
|
||||
"joinWithPasswordMessage": "Şifre ile katılmaya çalışıyorsunuz lütfen bekleyin...",
|
||||
"joinRejectedMessage": "Katılma isteğiniz bir moderatör tarafından reddedildi.",
|
||||
"joinTitle": "Toplantıya katıl",
|
||||
"joiningTitle": "Toplantıya katılma isteniyor...",
|
||||
"joiningWithPasswordTitle": "Şifre ile katılıyor...",
|
||||
"knockButton": "Katılmak için sor",
|
||||
"knockTitle": "Birisi toplantıya katılmak istiyor",
|
||||
"nameField": "Adınızı giriniz",
|
||||
"passwordField": "Toplantı şifresini giriniz",
|
||||
"passwordJoinButton": "Katıl",
|
||||
"reject": "Reddet",
|
||||
"toggleLabel": "Lobiyi etkinleştir"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -180,10 +180,8 @@
|
||||
"dismiss": "Скасувати",
|
||||
"displayNameRequired": "Вітання! Як вас звати?",
|
||||
"done": "Готово",
|
||||
"e2eeDescription": "<p>Наскрізне шифрування зараз в режимі<strong>ТЕСТУВАННЯ</strong>. Будь ласка, перегляньте <a href='https://jitsi.org/blog/e2ee/' target='_blank'>цю публікацію</a> для докладної інформації.</p><br/><p>Зверніть увагу, що увімкнення наскрізного шифрування призведе до вимкнення таких служб на стороні сервера: запису, живої трансляції запису в онлайні та участі у конференції за допомогою вхідного телефонного дзвінка. Також, просимо звернути увагу, що приєднання до зустрічі в такому разі буде можливе лише з браузера, який має підтримувати потоки зі вставкою (insertable streams).</p>",
|
||||
"e2eeLabel": "Ключ",
|
||||
"e2eeTitle": "Наскрізне шифрування",
|
||||
"e2eeWarning": "<br /><p><strong>УВАГА:</strong> Схоже, що не всі учасники цієї зустрічі мають підтримку технології наскрізного шифрування. Якщо ви увімкнете цю функцію, то вони не зможуть ані чути, ані бачити вас.</p>",
|
||||
"e2eeDescription": "Наскрізне шифрування зараз в режимі ТЕСТУВАННЯ. Зверніть увагу, що увімкнення наскрізного шифрування призведе до вимкнення таких служб на стороні сервера: запису, живої трансляції запису в онлайні та участі у конференції за допомогою вхідного телефонного дзвінка. Також, просимо звернути увагу, що приєднання до зустрічі в такому разі буде можливе лише з браузера, який має підтримувати потоки зі вставкою (insertable streams).",
|
||||
"e2eeWarning": "УВАГА: Схоже, що не всі учасники цієї зустрічі мають підтримку технології наскрізного шифрування. Якщо ви увімкнете цю функцію, то вони не зможуть ані чути, ані бачити вас.",
|
||||
"enterDisplayName": "Будь ласка, зазначте ваше ім'я",
|
||||
"error": "Помилка",
|
||||
"externalInstallationMsg": "Вам потрібно встановити наше розширення для спільного доступу до стільниці.",
|
||||
|
||||
@@ -110,6 +110,7 @@
|
||||
"localaddress_plural": "Local addresses:",
|
||||
"localport": "Local port:",
|
||||
"localport_plural": "Local ports:",
|
||||
"maxEnabledResolution": "send max",
|
||||
"more": "Show more",
|
||||
"packetloss": "Packet loss:",
|
||||
"quality": {
|
||||
@@ -193,21 +194,20 @@
|
||||
"dismiss": "Dismiss",
|
||||
"displayNameRequired": "Hi! What’s your name?",
|
||||
"done": "Done",
|
||||
"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": "<br /><p><strong>WARNING:</strong> 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.</p>",
|
||||
"e2eeDescription": "End-to-End Encryption is currently EXPERIMENTAL. 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.",
|
||||
"e2eeLabel": "E2EE key",
|
||||
"e2eeNoKey": "None",
|
||||
"e2eeToggleSet": "Set key",
|
||||
"e2eeSet": "Set",
|
||||
"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": "Please enter your name here",
|
||||
"error": "Error",
|
||||
"externalInstallationMsg": "You need to install our desktop sharing extension.",
|
||||
"externalInstallationTitle": "Extension required",
|
||||
"goToStore": "Go to the webstore",
|
||||
"gracefulShutdown": "Our service is currently down for maintenance. Please try again later.",
|
||||
"grantModeratorDialog": "Are you sure you want to make this participant a moderator?",
|
||||
"grantModeratorTitle": "Grant moderator",
|
||||
"IamHost": "I am the host",
|
||||
"incorrectRoomLockPassword": "Incorrect password",
|
||||
"incorrectPassword": "Incorrect username or password",
|
||||
"inlineInstallationMsg": "You need to install our desktop sharing extension.",
|
||||
"inlineInstallExtension": "Install now",
|
||||
"internalError": "Oops! Something went wrong. The following error occurred: {{error}}",
|
||||
"internalErrorTitle": "Internal error",
|
||||
"kickMessage": "You can contact {{participantDisplayName}} for more details.",
|
||||
@@ -216,6 +216,7 @@
|
||||
"kickParticipantTitle": "Kick this participant?",
|
||||
"kickTitle": "Ouch! {{participantDisplayName}} kicked you out of the meeting",
|
||||
"liveStreaming": "Live Streaming",
|
||||
"liveStreamingDisabledBecauseOfActiveRecordingTooltip": "Not possible while recording is active",
|
||||
"liveStreamingDisabledForGuestTooltip": "Guests can't start live streaming.",
|
||||
"liveStreamingDisabledTooltip": "Start live stream disabled.",
|
||||
"lockMessage": "Failed to lock the conference.",
|
||||
@@ -248,7 +249,9 @@
|
||||
"passwordRequired": "$t(lockRoomPasswordUppercase) required",
|
||||
"popupError": "Your browser is blocking pop-up windows from this site. Please enable pop-ups in your browser's security settings and try again.",
|
||||
"popupErrorTitle": "Pop-up blocked",
|
||||
"readMore": "more",
|
||||
"recording": "Recording",
|
||||
"recordingDisabledBecauseOfActiveLiveStreamingTooltip": "Not possible while a live stream is active",
|
||||
"recordingDisabledForGuestTooltip": "Guests can't start recordings.",
|
||||
"recordingDisabledTooltip": "Start recording disabled.",
|
||||
"rejoinNow": "Rejoin now",
|
||||
@@ -267,11 +270,9 @@
|
||||
"reservationErrorMsg": "Error code: {{code}}, message: {{msg}}",
|
||||
"retry": "Retry",
|
||||
"screenSharingAudio": "Share audio",
|
||||
"screenSharingFailedToInstall": "Oops! Your screen sharing extension failed to install.",
|
||||
"screenSharingFailedToInstallTitle": "Screen sharing extension failed to install",
|
||||
"screenSharingFirefoxPermissionDeniedError": "Something went wrong while we were trying to share your screen. Please make sure that you have given us permission to do so.",
|
||||
"screenSharingFirefoxPermissionDeniedTitle": "Oops! We weren’t able to start screen sharing!",
|
||||
"screenSharingPermissionDeniedError": "Oops! Something went wrong with your screen sharing extension permissions. Please reload and try again.",
|
||||
"screenSharingFailed": "Oops! Something went wrong, we weren’t able to start screen sharing!",
|
||||
"screenSharingFailedTitle": "Screen sharing failed!",
|
||||
"screenSharingPermissionDeniedError": "Oops! Something went wrong with your screen sharing permissions. Please reload and try again.",
|
||||
"sendPrivateMessage": "You recently received a private message. Did you intend to reply to that privately, or you want to send your message to the group?",
|
||||
"sendPrivateMessageCancel": "Send to the group",
|
||||
"sendPrivateMessageOk": "Send privately",
|
||||
@@ -393,6 +394,8 @@
|
||||
"videoQuality": "Manage call quality"
|
||||
},
|
||||
"liveStreaming": {
|
||||
"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>.",
|
||||
"limitNotificationDescriptionNative": "Your streaming will be limited to {{limit}} min. For unlimited streaming try {{app}}.",
|
||||
"busy": "We're working on freeing streaming resources. Please try again in a few minutes.",
|
||||
"busyTitle": "All streamers are currently busy",
|
||||
"changeSignIn": "Switch accounts.",
|
||||
@@ -498,6 +501,7 @@
|
||||
"audioAndVideoError": "Audio and video error:",
|
||||
"audioOnlyError": "Audio error:",
|
||||
"audioTrackError": "Could not create audio track.",
|
||||
"calling": "Calling",
|
||||
"callMe": "Call me",
|
||||
"callMeAtNumber": "Call me at this number:",
|
||||
"configuringDevices": "Configuring devices...",
|
||||
@@ -521,7 +525,8 @@
|
||||
"linkCopied": "Link copied to clipboard",
|
||||
"lookGood": "It sounds like your microphone is working properly",
|
||||
"or": "or",
|
||||
"calling": "Calling",
|
||||
"premeeting": "Pre meeting",
|
||||
"showScreen": "Enable pre meeting screen",
|
||||
"startWithPhone": "Start with phone audio",
|
||||
"screenSharingError": "Screen sharing error:",
|
||||
"videoOnlyError": "Video error:",
|
||||
@@ -550,6 +555,8 @@
|
||||
},
|
||||
"raisedHand": "Would like to speak",
|
||||
"recording": {
|
||||
"limitNotificationDescriptionWeb": "Due to high demand your recording will be limited to {{limit}} min. For unlimited recordings try <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"limitNotificationDescriptionNative": "Due to high demand your recording will be limited to {{limit}} min. For unlimited recordings try <3>{{app}}</3>.",
|
||||
"authDropboxText": "Upload to Dropbox",
|
||||
"availableSpace": "Available space: {{spaceLeft}} MB (approximately {{duration}} minutes of recording)",
|
||||
"beta": "BETA",
|
||||
@@ -580,8 +587,9 @@
|
||||
"pullToRefresh": "Pull to refresh"
|
||||
},
|
||||
"security": {
|
||||
"about": "You can add a passcode to your meeting. Participants will need to provide the passcode before they are allowed to join the meeting.",
|
||||
"insecureRoomNameWarning": "The room name is insecure. Unwanted participants may join your conference.",
|
||||
"about": "You can add a $t(lockRoomPassword) to your meeting. Participants will need to provide the $t(lockRoomPassword) before they are allowed to join the meeting.",
|
||||
"aboutReadOnly": "Moderator participants can add a $t(lockRoomPassword) to the meeting. Participants will need to provide the $t(lockRoomPassword) before they are allowed to join the meeting.",
|
||||
"insecureRoomNameWarning": "The room name is unsafe. Unwanted participants may join your conference. Consider securing your meeting using the security button.",
|
||||
"securityOptions": "Security options"
|
||||
},
|
||||
"settings": {
|
||||
@@ -665,10 +673,12 @@
|
||||
"e2ee": "End-to-End Encryption",
|
||||
"feedback": "Leave feedback",
|
||||
"fullScreen": "Toggle full screen",
|
||||
"grantModerator": "Grant Moderator",
|
||||
"hangup": "Leave the call",
|
||||
"help": "Help",
|
||||
"invite": "Invite people",
|
||||
"kick": "Kick participant",
|
||||
"lobbyButton": "Enable/disable lobby mode",
|
||||
"localRecording": "Toggle local recording controls",
|
||||
"lockRoom": "Toggle meeting password",
|
||||
"moreActions": "Toggle more actions menu",
|
||||
@@ -716,6 +726,8 @@
|
||||
"hangup": "Leave",
|
||||
"help": "Help",
|
||||
"invite": "Invite people",
|
||||
"lobbyButtonDisable": "Disable lobby mode",
|
||||
"lobbyButtonEnable": "Enable lobby mode",
|
||||
"login": "Login",
|
||||
"logout": "Logout",
|
||||
"lowerYourHand": "Lower your hand",
|
||||
@@ -810,6 +822,7 @@
|
||||
"domute": "Mute",
|
||||
"domuteOthers": "Mute everyone else",
|
||||
"flip": "Flip",
|
||||
"grantModerator": "Grant Moderator",
|
||||
"kick": "Kick out",
|
||||
"moderator": "Moderator",
|
||||
"mute": "Participant is muted",
|
||||
@@ -833,16 +846,17 @@
|
||||
"connectCalendarText": "Connect your calendar to view all your meetings in {{app}}. Plus, add {{provider}} meetings to your calendar and start them with one click.",
|
||||
"enterRoomTitle": "Start a new meeting",
|
||||
"getHelp": "Get help",
|
||||
"roomNameAllowedChars": "Meeting name should not contain any of these characters: ?, &, :, ', \", %, #.",
|
||||
"go": "GO",
|
||||
"goSmall": "GO",
|
||||
"join": "CREATE / JOIN",
|
||||
"info": "Info",
|
||||
"join": "CREATE / JOIN",
|
||||
"moderatedMessage": "Or <a href=\"{{url}}\" rel=\"noopener noreferrer\" target=\"_blank\">book a meeting URL</a> in advance where you are the only moderator.",
|
||||
"privacy": "Privacy",
|
||||
"recentList": "Recent",
|
||||
"recentListDelete": "Delete",
|
||||
"recentListEmpty": "Your recent list is currently empty. Chat with your team and you will find all your recent meetings here.",
|
||||
"reducedUIText": "Welcome to {{app}}!",
|
||||
"roomNameAllowedChars": "Meeting name should not contain any of these characters: ?, &, :, ', \", %, #.",
|
||||
"roomname": "Enter room name",
|
||||
"roomnameHint": "Enter the name or URL of the room you want to join. You may make a name up, just let the people you are meeting know it so that they enter the same name.",
|
||||
"sendFeedback": "Send feedback",
|
||||
@@ -855,5 +869,38 @@
|
||||
},
|
||||
"helpView": {
|
||||
"header": "Help center"
|
||||
},
|
||||
"lobby": {
|
||||
"knockingParticipantList": "Knocking participant list",
|
||||
"allow": "Allow",
|
||||
"backToKnockModeButton": "No password, ask to join instead",
|
||||
"dialogTitle": "Lobby mode",
|
||||
"disableDialogContent": "Lobby mode is currently enabled. This feature ensures that unwanted participants can't join your meeting. Do you want to disable it?",
|
||||
"disableDialogSubmit": "Disable",
|
||||
"emailField": "Enter your email address",
|
||||
"enableDialogPasswordField": "Set password (optional)",
|
||||
"enableDialogSubmit": "Enable",
|
||||
"enableDialogText": "Lobby mode lets you protect your meeting by only allowing people to enter after a formal approval by a moderator.",
|
||||
"enterPasswordButton": "Enter meeting password",
|
||||
"enterPasswordTitle": "Enter password to join meeting",
|
||||
"invalidPassword": "Invalid password",
|
||||
"joiningMessage": "You'll join the meeting as soon as someone accepts your request",
|
||||
"joinWithPasswordMessage": "Trying to join with password, please wait...",
|
||||
"joinRejectedMessage": "Your join request was rejected by a moderator.",
|
||||
"joinTitle": "Join Meeting",
|
||||
"joiningTitle": "Asking to join meeting...",
|
||||
"joiningWithPasswordTitle": "Joining with password...",
|
||||
"knockButton": "Ask to Join",
|
||||
"knockTitle": "Someone wants to join the meeting",
|
||||
"nameField": "Enter your name",
|
||||
"notificationLobbyAccessDenied": "{{targetParticipantName}} has been rejected to join by {{originParticipantName}}",
|
||||
"notificationLobbyAccessGranted": "{{targetParticipantName}} has been allowed to join by {{originParticipantName}}",
|
||||
"notificationLobbyDisabled": "Lobby has been disabled by {{originParticipantName}}",
|
||||
"notificationLobbyEnabled": "Lobby has been enabled by {{originParticipantName}}",
|
||||
"notificationTitle": "Lobby",
|
||||
"passwordField": "Enter meeting password",
|
||||
"passwordJoinButton": "Join",
|
||||
"reject": "Reject",
|
||||
"toggleLabel": "Enable lobby"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,16 +8,21 @@ import {
|
||||
sendAnalytics
|
||||
} from '../../react/features/analytics';
|
||||
import {
|
||||
getCurrentConference,
|
||||
sendTones,
|
||||
setPassword,
|
||||
setSubject
|
||||
} from '../../react/features/base/conference';
|
||||
import { parseJWTFromURLParams } from '../../react/features/base/jwt';
|
||||
import { JitsiRecordingConstants } from '../../react/features/base/lib-jitsi-meet';
|
||||
import {
|
||||
processExternalDeviceRequest
|
||||
} from '../../react/features/device-selection/functions';
|
||||
import { isEnabled as isDropboxEnabled } from '../../react/features/dropbox';
|
||||
import { setE2EEKey } from '../../react/features/e2ee';
|
||||
import { invite } from '../../react/features/invite';
|
||||
import { RECORDING_TYPES } from '../../react/features/recording/constants';
|
||||
import { getActiveSession } from '../../react/features/recording/functions';
|
||||
import { muteAllParticipants } from '../../react/features/remote-video-menu/actions';
|
||||
import { toggleTileView } from '../../react/features/video-layout';
|
||||
import { setVideoQuality } from '../../react/features/video-quality';
|
||||
@@ -190,6 +195,114 @@ function initCommands() {
|
||||
logger.debug('Set video quality command received');
|
||||
sendAnalytics(createApiEvent('set.video.quality'));
|
||||
APP.store.dispatch(setVideoQuality(frameHeight));
|
||||
},
|
||||
|
||||
/**
|
||||
* Starts a file recording or streaming depending on the passed on params.
|
||||
* For youtube streams, `youtubeStreamKey` must be passed on. `youtubeBroadcastID` is optional.
|
||||
* For dropbox recording, recording `mode` should be `file` and a dropbox oauth2 token must be provided.
|
||||
* For file recording, recording `mode` should be `file` and optionally `shouldShare` could be passed on.
|
||||
* No other params should be passed.
|
||||
*
|
||||
* @param { string } arg.mode - Recording mode, either `file` or `stream`.
|
||||
* @param { string } arg.dropboxToken - Dropbox oauth2 token.
|
||||
* @param { boolean } arg.shouldShare - Whether the recording should be shared with the participants or not.
|
||||
* Only applies to certain jitsi meet deploys.
|
||||
* @param { string } arg.youtubeStreamKey - The youtube stream key.
|
||||
* @param { string } arg.youtubeBroadcastID - The youtube broacast ID.
|
||||
* @returns {void}
|
||||
*/
|
||||
'start-recording': ({ mode, dropboxToken, shouldShare, youtubeStreamKey, youtubeBroadcastID }) => {
|
||||
const state = APP.store.getState();
|
||||
const conference = getCurrentConference(state);
|
||||
|
||||
if (!conference) {
|
||||
logger.error('Conference is not defined');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (dropboxToken && !isDropboxEnabled(state)) {
|
||||
logger.error('Failed starting recording: dropbox is not enabled on this deployment');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (mode === JitsiRecordingConstants.mode.STREAM && !youtubeStreamKey) {
|
||||
logger.error('Failed starting recording: missing youtube stream key');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
let recordingConfig;
|
||||
|
||||
if (mode === JitsiRecordingConstants.mode.FILE) {
|
||||
if (dropboxToken) {
|
||||
recordingConfig = {
|
||||
mode: JitsiRecordingConstants.mode.FILE,
|
||||
appData: JSON.stringify({
|
||||
'file_recording_metadata': {
|
||||
'upload_credentials': {
|
||||
'service_name': RECORDING_TYPES.DROPBOX,
|
||||
'token': dropboxToken
|
||||
}
|
||||
}
|
||||
})
|
||||
};
|
||||
} else {
|
||||
recordingConfig = {
|
||||
mode: JitsiRecordingConstants.mode.FILE,
|
||||
appData: JSON.stringify({
|
||||
'file_recording_metadata': {
|
||||
'share': shouldShare
|
||||
}
|
||||
})
|
||||
};
|
||||
}
|
||||
} else if (mode === JitsiRecordingConstants.mode.STREAM) {
|
||||
recordingConfig = {
|
||||
broadcastId: youtubeBroadcastID,
|
||||
mode: JitsiRecordingConstants.mode.STREAM,
|
||||
streamId: youtubeStreamKey
|
||||
};
|
||||
} else {
|
||||
logger.error('Invalid recording mode provided');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
conference.startRecording(recordingConfig);
|
||||
},
|
||||
|
||||
/**
|
||||
* Stops a recording or streaming in progress.
|
||||
*
|
||||
* @param {string} mode - `file` or `stream`.
|
||||
* @returns {void}
|
||||
*/
|
||||
'stop-recording': mode => {
|
||||
const state = APP.store.getState();
|
||||
const conference = getCurrentConference(state);
|
||||
|
||||
if (!conference) {
|
||||
logger.error('Conference is not defined');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (![ JitsiRecordingConstants.mode.FILE, JitsiRecordingConstants.mode.STREAM ].includes(mode)) {
|
||||
logger.error('Invalid recording mode provided!');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
const activeSession = getActiveSession(state, mode);
|
||||
|
||||
if (activeSession && activeSession.id) {
|
||||
conference.stopRecording(activeSession.id);
|
||||
} else {
|
||||
logger.error('No recording or streaming session found');
|
||||
}
|
||||
}
|
||||
};
|
||||
transport.on('event', ({ data, name }) => {
|
||||
@@ -255,6 +368,9 @@ function initCommands() {
|
||||
case 'is-video-available':
|
||||
callback(videoAvailable);
|
||||
break;
|
||||
case 'is-sharing-screen':
|
||||
callback(Boolean(APP.conference.isSharingScreen));
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
@@ -514,7 +630,8 @@ class API {
|
||||
notifyDeviceListChanged(devices: Object) {
|
||||
this._sendEvent({
|
||||
name: 'device-list-changed',
|
||||
devices });
|
||||
devices
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
13
modules/API/external/external_api.js
vendored
13
modules/API/external/external_api.js
vendored
@@ -37,6 +37,8 @@ const commands = {
|
||||
sendEndpointTextMessage: 'send-endpoint-text-message',
|
||||
sendTones: 'send-tones',
|
||||
setVideoQuality: 'set-video-quality',
|
||||
startRecording: 'start-recording',
|
||||
stopRecording: 'stop-recording',
|
||||
subject: 'subject',
|
||||
submitFeedback: 'submit-feedback',
|
||||
toggleAudio: 'toggle-audio',
|
||||
@@ -758,6 +760,17 @@ export default class JitsiMeetExternalAPI extends EventEmitter {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns screen sharing status.
|
||||
*
|
||||
* @returns {Promise} - Resolves with screensharing status and rejects on failure.
|
||||
*/
|
||||
isSharingScreen() {
|
||||
return this._transport.sendRequest({
|
||||
name: 'is-sharing-screen'
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the avatar URL of a participant.
|
||||
*
|
||||
|
||||
@@ -98,19 +98,6 @@ UI.notifyReservationError = function(code, msg) {
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Notify user that conference was destroyed.
|
||||
* @param reason {string} the reason text
|
||||
*/
|
||||
UI.notifyConferenceDestroyed = function(reason) {
|
||||
// FIXME: use Session Terminated from translation, but
|
||||
// 'reason' text comes from XMPP packet and is not translated
|
||||
messageHandler.showError({
|
||||
description: reason,
|
||||
titleKey: 'dialog.sessTerminated'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Change nickname for the user.
|
||||
* @param {string} id user id
|
||||
@@ -566,82 +553,6 @@ UI.getLargeVideo = function() {
|
||||
return VideoLayout.getLargeVideo();
|
||||
};
|
||||
|
||||
/**
|
||||
* Shows "Please go to chrome webstore to install the desktop sharing extension"
|
||||
* 2 button dialog with buttons - cancel and go to web store.
|
||||
* @param url {string} the url of the extension.
|
||||
*/
|
||||
UI.showExtensionExternalInstallationDialog = function(url) {
|
||||
let openedWindow = null;
|
||||
|
||||
const submitFunction = function(e, v) {
|
||||
if (v) {
|
||||
e.preventDefault();
|
||||
if (openedWindow === null || openedWindow.closed) {
|
||||
openedWindow
|
||||
= window.open(
|
||||
url,
|
||||
'extension_store_window',
|
||||
'resizable,scrollbars=yes,status=1');
|
||||
} else {
|
||||
openedWindow.focus();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const closeFunction = function(e, v) {
|
||||
if (openedWindow) {
|
||||
// Ideally we would close the popup, but this does not seem to work
|
||||
// on Chrome. Leaving it uncommented in case it could work
|
||||
// in some version.
|
||||
openedWindow.close();
|
||||
openedWindow = null;
|
||||
}
|
||||
if (!v) {
|
||||
eventEmitter.emit(UIEvents.EXTERNAL_INSTALLATION_CANCELED);
|
||||
}
|
||||
};
|
||||
|
||||
messageHandler.openTwoButtonDialog({
|
||||
titleKey: 'dialog.externalInstallationTitle',
|
||||
msgKey: 'dialog.externalInstallationMsg',
|
||||
leftButtonKey: 'dialog.goToStore',
|
||||
submitFunction,
|
||||
loadedFunction: $.noop,
|
||||
closeFunction
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Shows a dialog which asks user to install the extension. This one is
|
||||
* displayed after installation is triggered from the script, but fails because
|
||||
* it must be initiated by user gesture.
|
||||
* @param callback {function} function to be executed after user clicks
|
||||
* the install button - it should make another attempt to install the extension.
|
||||
*/
|
||||
UI.showExtensionInlineInstallationDialog = function(callback) {
|
||||
const submitFunction = function(e, v) {
|
||||
if (v) {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
|
||||
const closeFunction = function(e, v) {
|
||||
if (!v) {
|
||||
eventEmitter.emit(UIEvents.EXTERNAL_INSTALLATION_CANCELED);
|
||||
}
|
||||
};
|
||||
|
||||
messageHandler.openTwoButtonDialog({
|
||||
titleKey: 'dialog.externalInstallationTitle',
|
||||
msgKey: 'dialog.inlineInstallationMsg',
|
||||
leftButtonKey: 'dialog.inlineInstallExtension',
|
||||
submitFunction,
|
||||
loadedFunction: $.noop,
|
||||
closeFunction
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Show shared video.
|
||||
* @param {string} id the id of the sender of the command
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* global $, APP, config */
|
||||
|
||||
import { toJid } from '../../../react/features/base/connection';
|
||||
import { toJid } from '../../../react/features/base/connection/functions';
|
||||
import {
|
||||
JitsiConnectionErrors
|
||||
} from '../../../react/features/base/lib-jitsi-meet';
|
||||
|
||||
@@ -31,7 +31,7 @@ export const SHARED_VIDEO_CONTAINER_TYPE = 'sharedvideo';
|
||||
* Example shared video link.
|
||||
* @type {string}
|
||||
*/
|
||||
const defaultSharedVideoLink = 'https://www.youtube.com/watch?v=xNXN7CZk8X0';
|
||||
const defaultSharedVideoLink = 'https://youtu.be/TB7LlM4erx8';
|
||||
const updateInterval = 5000; // milliseconds
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* global $, APP */
|
||||
|
||||
import { jitsiLocalStorage } from '@jitsi/js-utils';
|
||||
import Logger from 'jitsi-meet-logger';
|
||||
import { jitsiLocalStorage } from 'js-utils';
|
||||
|
||||
import {
|
||||
NOTIFICATION_TIMEOUT,
|
||||
|
||||
@@ -12,6 +12,7 @@ import {
|
||||
JitsiParticipantConnectionStatus
|
||||
} from '../../../react/features/base/lib-jitsi-meet';
|
||||
import { VIDEO_TYPE } from '../../../react/features/base/media';
|
||||
import { CHAT_SIZE } from '../../../react/features/chat';
|
||||
import {
|
||||
updateKnownLargeVideoResolution
|
||||
} from '../../../react/features/large-video';
|
||||
@@ -323,7 +324,18 @@ export default class LargeVideoManager {
|
||||
* Update container size.
|
||||
*/
|
||||
updateContainerSize() {
|
||||
this.width = UIUtil.getAvailableVideoWidth();
|
||||
let widthToUse = UIUtil.getAvailableVideoWidth();
|
||||
const { isOpen } = APP.store.getState()['features/chat'];
|
||||
|
||||
if (isOpen) {
|
||||
/**
|
||||
* If chat state is open, we re-compute the container width
|
||||
* by subtracting the default width of the chat.
|
||||
*/
|
||||
widthToUse -= CHAT_SIZE;
|
||||
}
|
||||
|
||||
this.width = widthToUse;
|
||||
this.height = window.innerHeight;
|
||||
}
|
||||
|
||||
|
||||
@@ -276,9 +276,12 @@ export default class LocalVideo extends SmallVideo {
|
||||
|
||||
// Ensure the video gets play() called on it. This may be necessary in the
|
||||
// case where the local video container was moved and re-attached, in which
|
||||
// case video does not autoplay.
|
||||
// case video does not autoplay. Also, set the playsinline attribute on the
|
||||
// video element so that local video doesn't open in full screen by default
|
||||
// in Safari browser on iOS.
|
||||
const video = this.container.querySelector('video');
|
||||
|
||||
video && video.setAttribute('playsinline', 'true');
|
||||
video && !config.testing?.noAutoPlayVideo && video.play();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -498,9 +498,6 @@ export class VideoContainer extends LargeContainer {
|
||||
});
|
||||
|
||||
this._updateBackground();
|
||||
|
||||
// Reset the large video background depending on the stream.
|
||||
this.setLargeVideoBackground(this.avatarDisplayed);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -533,14 +530,6 @@ export class VideoContainer extends LargeContainer {
|
||||
* @param {boolean} show
|
||||
*/
|
||||
showAvatar(show) {
|
||||
// TO FIX: Video background need to be black, so that we don't have a
|
||||
// flickering effect when scrolling between videos and have the screen
|
||||
// move to grey before going back to video. Avatars though can have the
|
||||
// default background set.
|
||||
// In order to fix this code we need to introduce video background or
|
||||
// find a workaround for the video flickering.
|
||||
this.setLargeVideoBackground(show);
|
||||
|
||||
this.$avatar.css('visibility', show ? 'visible' : 'hidden');
|
||||
this.avatarDisplayed = show;
|
||||
|
||||
@@ -596,21 +585,6 @@ export class VideoContainer extends LargeContainer {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the large video container background depending on the container
|
||||
* type and the parameter indicating if an avatar is currently shown on
|
||||
* large.
|
||||
*
|
||||
* @param {boolean} isAvatar - Indicates if the avatar is currently shown
|
||||
* on the large video.
|
||||
* @returns {void}
|
||||
*/
|
||||
setLargeVideoBackground(isAvatar) {
|
||||
$('#largeVideoContainer').css('background',
|
||||
this.videoType === VIDEO_CONTAINER_TYPE && !isAvatar
|
||||
? '#000' : interfaceConfig.DEFAULT_BACKGROUND);
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback invoked when the video element changes dimensions.
|
||||
*
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// FIXME: change to '../API' when we update to webpack2. If we do this now all
|
||||
// files from API modules will be included in external_api.js.
|
||||
import { PostMessageTransportBackend, Transport } from 'js-utils/transport';
|
||||
import { PostMessageTransportBackend, Transport } from '@jitsi/js-utils/transport';
|
||||
|
||||
import { getJitsiMeetGlobalNS } from '../../react/features/base/util';
|
||||
import { API_ID } from '../API/constants';
|
||||
|
||||
4541
package-lock.json
generated
4541
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
31
package.json
31
package.json
@@ -32,6 +32,7 @@
|
||||
"@atlaskit/theme": "7.0.2",
|
||||
"@atlaskit/toggle": "5.0.14",
|
||||
"@atlaskit/tooltip": "12.1.13",
|
||||
"@jitsi/js-utils": "1.0.0",
|
||||
"@microsoft/microsoft-graph-client": "1.1.0",
|
||||
"@react-native-community/async-storage": "1.3.4",
|
||||
"@react-native-community/google-signin": "3.0.1",
|
||||
@@ -50,15 +51,14 @@
|
||||
"i18next-xhr-backend": "3.0.0",
|
||||
"jQuery-Impromptu": "github:trentrichardson/jQuery-Impromptu#v6.0.0",
|
||||
"jitsi-meet-logger": "github:jitsi/jitsi-meet-logger#5ec92357570dc8f0b7ffc1528820721c84c6af8b",
|
||||
"jquery": "3.4.0",
|
||||
"jquery": "3.5.1",
|
||||
"jquery-contextmenu": "2.4.5",
|
||||
"jquery-i18next": "1.2.1",
|
||||
"js-md5": "0.6.1",
|
||||
"js-utils": "github:jitsi/js-utils#cf11996bd866fdb47326c59a5d3bc24be17282d4",
|
||||
"jwt-decode": "2.2.0",
|
||||
"lib-jitsi-meet": "github:jitsi/lib-jitsi-meet#c94f6a570f69ebfe18de6c1549cc76370c791468",
|
||||
"lib-jitsi-meet": "github:jitsi/lib-jitsi-meet#ff1813cbb2e7d36f1cc0bbc2b8baa0a16c6346a4",
|
||||
"libflacjs": "github:mmig/libflac.js#93d37e7f811f01cf7d8b6a603e38bd3c3810907d",
|
||||
"lodash": "4.17.13",
|
||||
"lodash": "4.17.19",
|
||||
"moment": "2.19.4",
|
||||
"moment-duration-format": "2.2.2",
|
||||
"pixelmatch": "5.1.0",
|
||||
@@ -69,7 +69,7 @@
|
||||
"react-linkify": "1.0.0-alpha",
|
||||
"react-native": "github:jitsi/react-native#efd2aff5661d75a230e36406b698cfe0ee545be2",
|
||||
"react-native-background-timer": "2.1.1",
|
||||
"react-native-calendar-events": "github:jitsi/react-native-calendar-events#902e6e92d6bae450a6052f76ba4d02f977ffd8f2",
|
||||
"react-native-calendar-events": "github:jitsi/react-native-calendar-events#928a80e2ffef0d7e84936d7e7e0acc4f53ee8470",
|
||||
"react-native-callstats": "3.61.0",
|
||||
"react-native-collapsible": "1.5.1",
|
||||
"react-native-default-preference": "1.4.2",
|
||||
@@ -80,15 +80,17 @@
|
||||
"react-native-svg": "9.7.1",
|
||||
"react-native-svg-transformer": "0.13.0",
|
||||
"react-native-swipeout": "2.3.6",
|
||||
"react-native-watch-connectivity": "0.2.0",
|
||||
"react-native-webrtc": "1.75.3",
|
||||
"react-native-watch-connectivity": "0.4.3",
|
||||
"react-native-webrtc": "1.84.0",
|
||||
"react-native-webview": "7.4.1",
|
||||
"react-native-youtube-iframe": "1.2.3",
|
||||
"react-redux": "7.1.0",
|
||||
"react-textarea-autosize": "7.1.0",
|
||||
"react-transition-group": "2.4.0",
|
||||
"redux": "4.0.4",
|
||||
"redux-thunk": "2.2.0",
|
||||
"rnnoise-wasm": "github:jitsi/rnnoise-wasm.git#db96d11f175a22ef56c7db1ba9550835b716e615",
|
||||
"rnnoise-wasm": "github:jitsi/rnnoise-wasm.git#566a16885897704d6e6d67a1d5ac5d39781db2af",
|
||||
"rtcstats": "github:jitsi/rtcstats#v6.1.3",
|
||||
"styled-components": "3.4.9",
|
||||
"util": "0.12.1",
|
||||
"uuid": "3.1.0",
|
||||
@@ -110,8 +112,9 @@
|
||||
"@babel/runtime": "7.5.5",
|
||||
"babel-eslint": "10.0.1",
|
||||
"babel-loader": "8.0.4",
|
||||
"clean-css": "3.4.25",
|
||||
"css-loader": "0.28.7",
|
||||
"circular-dependency-plugin": "5.2.0",
|
||||
"clean-css-cli": "4.3.0",
|
||||
"css-loader": "3.6.0",
|
||||
"eslint": "5.6.1",
|
||||
"eslint-config-jitsi": "github:jitsi/eslint-config-jitsi#1.0.3",
|
||||
"eslint-plugin-flowtype": "2.50.3",
|
||||
@@ -124,14 +127,14 @@
|
||||
"imports-loader": "0.7.1",
|
||||
"jetifier": "1.6.4",
|
||||
"metro-react-native-babel-preset": "0.56.0",
|
||||
"node-sass": "4.13.1",
|
||||
"node-sass": "4.14.1",
|
||||
"string-replace-loader": "2.1.1",
|
||||
"style-loader": "0.19.0",
|
||||
"unorm": "1.6.0",
|
||||
"webpack": "4.27.1",
|
||||
"webpack": "4.43.0",
|
||||
"webpack-bundle-analyzer": "3.4.1",
|
||||
"webpack-cli": "3.1.2",
|
||||
"webpack-dev-server": "3.8.2"
|
||||
"webpack-cli": "3.3.11",
|
||||
"webpack-dev-server": "3.11.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.0.0",
|
||||
|
||||
@@ -538,6 +538,26 @@ export function createRemoteVideoMenuButtonEvent(buttonName, attributes) {
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* The rtcstats websocket onclose event. We send this to amplitude in order
|
||||
* to detect trace ws prematurely closing.
|
||||
*
|
||||
* @param {Object} closeEvent - The event with which the websocket closed.
|
||||
* @returns {Object} The event in a format suitable for sending via
|
||||
* sendAnalytics.
|
||||
*/
|
||||
export function createRTCStatsTraceCloseEvent(closeEvent) {
|
||||
const event = {
|
||||
action: 'trace.onclose',
|
||||
source: 'rtcstats'
|
||||
};
|
||||
|
||||
event.code = closeEvent.code;
|
||||
event.reason = closeEvent.reason;
|
||||
|
||||
return event;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an event indicating that an action related to video blur
|
||||
* occurred (e.g. It was started or stopped).
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
// @flow
|
||||
|
||||
import { API_ID } from '../../../modules/API';
|
||||
import {
|
||||
checkChromeExtensionsInstalled,
|
||||
isMobileBrowser
|
||||
@@ -29,6 +30,16 @@ export function sendAnalytics(event: Object) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return saved amplitude identity info such as session id, device id and user id. We assume these do not change for
|
||||
* the duration of the conference.
|
||||
*
|
||||
* @returns {Object}
|
||||
*/
|
||||
export function getAmplitudeIdentity() {
|
||||
return analytics.amplitudeIdentityProps;
|
||||
}
|
||||
|
||||
/**
|
||||
* Resets the analytics adapter to its initial state - removes handlers, cache,
|
||||
* disabled state, etc.
|
||||
@@ -91,6 +102,8 @@ export function createHandlers({ getState }: { getState: Function }) {
|
||||
try {
|
||||
const amplitude = new AmplitudeHandler(handlerConstructorOptions);
|
||||
|
||||
analytics.amplitudeIdentityProps = amplitude.getIdentityProps();
|
||||
|
||||
handlers.push(amplitude);
|
||||
// eslint-disable-next-line no-empty
|
||||
} catch (e) {}
|
||||
@@ -116,7 +129,9 @@ export function createHandlers({ getState }: { getState: Function }) {
|
||||
})
|
||||
.catch(e => {
|
||||
analytics.dispose();
|
||||
logger.error(e);
|
||||
if (handlers.length !== 0) {
|
||||
logger.error(e);
|
||||
}
|
||||
|
||||
return [];
|
||||
}));
|
||||
@@ -155,6 +170,12 @@ export function initAnalytics({ getState }: { getState: Function }, handlers: Ar
|
||||
// Report if user is using websocket
|
||||
permanentProperties.websocket = navigator.product !== 'ReactNative' && typeof config.websocket === 'string';
|
||||
|
||||
// permanentProperties is external api
|
||||
permanentProperties.externalApi = typeof API_ID === 'number';
|
||||
|
||||
// Report if we are loaded in iframe
|
||||
permanentProperties.inIframe = _inIframe();
|
||||
|
||||
// Optionally, include local deployment information based on the
|
||||
// contents of window.config.deploymentInfo.
|
||||
if (deploymentInfo) {
|
||||
@@ -184,6 +205,24 @@ export function initAnalytics({ getState }: { getState: Function }, handlers: Ar
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether we are loaded in iframe.
|
||||
*
|
||||
* @returns {boolean} Returns {@code true} if loaded in iframe.
|
||||
* @private
|
||||
*/
|
||||
function _inIframe() {
|
||||
if (navigator.product === 'ReactNative') {
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
return window.self !== window.top;
|
||||
} catch (e) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tries to load the scripts for the analytics handlers and creates them.
|
||||
*
|
||||
|
||||
@@ -65,4 +65,17 @@ export default class AmplitudeHandler extends AbstractHandler {
|
||||
this._extractName(event),
|
||||
event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return amplitude identity information.
|
||||
*
|
||||
* @returns {Object}
|
||||
*/
|
||||
getIdentityProps() {
|
||||
return {
|
||||
sessionId: amplitude.getInstance(this._amplitudeOptions).getSessionId(),
|
||||
deviceId: amplitude.getInstance(this._amplitudeOptions).options.deviceId,
|
||||
userId: amplitude.getInstance(this._amplitudeOptions).options.userId
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
export * from './AnalyticsEvents';
|
||||
export * from './functions';
|
||||
|
||||
import './middleware';
|
||||
import './reducer';
|
||||
|
||||
@@ -23,7 +23,7 @@ import {
|
||||
parseURIString,
|
||||
toURLString
|
||||
} from '../base/util';
|
||||
import { showNotification } from '../notifications';
|
||||
import { clearNotifications, showNotification } from '../notifications';
|
||||
import { setFatalError } from '../overlay';
|
||||
|
||||
import {
|
||||
@@ -79,6 +79,10 @@ export function appNavigate(uri: ?string) {
|
||||
dispatch(disconnect());
|
||||
}
|
||||
|
||||
// There are notifications now that gets displayed after we technically left
|
||||
// the conference, but we're still on the conference screen.
|
||||
dispatch(clearNotifications());
|
||||
|
||||
dispatch(configWillLoad(locationURL, room));
|
||||
|
||||
let protocol = location.protocol.toLowerCase();
|
||||
|
||||
@@ -3,11 +3,8 @@
|
||||
import React, { Fragment } from 'react';
|
||||
|
||||
import { BaseApp } from '../../base/app';
|
||||
import '../../base/lastn'; // Register lastN middleware
|
||||
import { toURLString } from '../../base/util';
|
||||
import '../../follow-me';
|
||||
import { OverlayContainer } from '../../overlay';
|
||||
import '../../rejoin'; // Enable rejoin analytics
|
||||
import { appNavigate } from '../actions';
|
||||
import { getDefaultURL } from '../functions';
|
||||
|
||||
|
||||
@@ -2,32 +2,21 @@
|
||||
|
||||
import React from 'react';
|
||||
|
||||
import '../../analytics';
|
||||
import '../../authentication';
|
||||
import { setColorScheme } from '../../base/color-scheme';
|
||||
import { DialogContainer } from '../../base/dialog';
|
||||
import { CALL_INTEGRATION_ENABLED, updateFlags } from '../../base/flags';
|
||||
import '../../base/jwt';
|
||||
import { CALL_INTEGRATION_ENABLED, SERVER_URL_CHANGE_ENABLED, updateFlags } from '../../base/flags';
|
||||
import { Platform } from '../../base/react';
|
||||
import '../../base/responsive-ui';
|
||||
import { DimensionsDetector, clientResized } from '../../base/responsive-ui';
|
||||
import { updateSettings } from '../../base/settings';
|
||||
import '../../google-api';
|
||||
import '../../mobile/audio-mode';
|
||||
import '../../mobile/back-button';
|
||||
import '../../mobile/background';
|
||||
import '../../mobile/call-integration';
|
||||
import '../../mobile/external-api';
|
||||
import '../../mobile/full-screen';
|
||||
import '../../mobile/permissions';
|
||||
import '../../mobile/picture-in-picture';
|
||||
import '../../mobile/proximity';
|
||||
import '../../mobile/wake-lock';
|
||||
import '../../mobile/watchos';
|
||||
import logger from '../logger';
|
||||
|
||||
import { AbstractApp } from './AbstractApp';
|
||||
import type { Props as AbstractAppProps } from './AbstractApp';
|
||||
|
||||
// Register middlewares and reducers.
|
||||
import '../middlewares';
|
||||
import '../reducers';
|
||||
|
||||
declare var __DEV__;
|
||||
|
||||
/**
|
||||
@@ -78,6 +67,9 @@ export class App extends AbstractApp {
|
||||
// This will effectively kill the app. In accord with the Web, do not
|
||||
// kill the app.
|
||||
this._maybeDisableExceptionsManager();
|
||||
|
||||
// Bind event handler so it is only bound once per instance.
|
||||
this._onDimensionsChanged = this._onDimensionsChanged.bind(this);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -94,6 +86,20 @@ export class App extends AbstractApp {
|
||||
// We set these early enough so then we avoid any unnecessary re-renders.
|
||||
const { dispatch } = this.state.store;
|
||||
|
||||
// Check if serverURL is configured externally and not allowed to change.
|
||||
const serverURLChangeEnabled = this.props.flags[SERVER_URL_CHANGE_ENABLED];
|
||||
|
||||
if (!serverURLChangeEnabled) {
|
||||
// As serverURL is provided externally, so we push it to settings.
|
||||
if (typeof this.props.url !== 'undefined') {
|
||||
const { serverURL } = this.props.url;
|
||||
|
||||
if (typeof serverURL !== 'undefined') {
|
||||
dispatch(updateSettings({ serverURL }));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dispatch(setColorScheme(this.props.colorScheme));
|
||||
dispatch(updateFlags(this.props.flags));
|
||||
dispatch(updateSettings(this.props.userInfo || {}));
|
||||
@@ -107,6 +113,21 @@ export class App extends AbstractApp {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides the parent method to inject {@link DimensionsDetector} as
|
||||
* the top most component.
|
||||
*
|
||||
* @override
|
||||
*/
|
||||
_createMainElement(component, props) {
|
||||
return (
|
||||
<DimensionsDetector
|
||||
onDimensionsChanged = { this._onDimensionsChanged }>
|
||||
{ super._createMainElement(component, props) }
|
||||
</DimensionsDetector>
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempts to disable the use of React Native
|
||||
* {@link ExceptionsManager#handleException} on platforms and in
|
||||
@@ -144,6 +165,22 @@ export class App extends AbstractApp {
|
||||
}
|
||||
}
|
||||
|
||||
_onDimensionsChanged: (width: number, height: number) => void;
|
||||
|
||||
/**
|
||||
* Updates the known available size for the app to occupy.
|
||||
*
|
||||
* @param {number} width - The component's current width.
|
||||
* @param {number} height - The component's current height.
|
||||
* @private
|
||||
* @returns {void}
|
||||
*/
|
||||
_onDimensionsChanged(width: number, height: number) {
|
||||
const { dispatch } = this.state.store;
|
||||
|
||||
dispatch(clientResized(width, height));
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders the platform specific dialog container.
|
||||
*
|
||||
|
||||
@@ -5,19 +5,13 @@ import React from 'react';
|
||||
|
||||
import { DialogContainer } from '../../base/dialog';
|
||||
import { ChromeExtensionBanner } from '../../chrome-extension-banner';
|
||||
import '../../base/user-interaction';
|
||||
import '../../chat';
|
||||
import '../../external-api';
|
||||
import '../../no-audio-signal';
|
||||
import '../../noise-detection';
|
||||
import '../../power-monitor';
|
||||
import '../../room-lock';
|
||||
import '../../talk-while-muted';
|
||||
import '../../video-layout';
|
||||
import '../../old-client-notification';
|
||||
|
||||
import { AbstractApp } from './AbstractApp';
|
||||
|
||||
// Register middlewares and reducers.
|
||||
import '../middlewares';
|
||||
import '../reducers';
|
||||
|
||||
/**
|
||||
* Root app {@code Component} on Web/React.
|
||||
*
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// @flow
|
||||
|
||||
import { generateRoomWithoutSeparator } from 'js-utils/random';
|
||||
import { generateRoomWithoutSeparator } from '@jitsi/js-utils/random';
|
||||
import type { Component } from 'react';
|
||||
|
||||
import { isRoomValid } from '../base/conference';
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
// @flow
|
||||
|
||||
export * from './actions';
|
||||
export * from './components';
|
||||
export * from './functions';
|
||||
|
||||
import './middleware';
|
||||
48
react/features/app/middlewares.any.js
Normal file
48
react/features/app/middlewares.any.js
Normal file
@@ -0,0 +1,48 @@
|
||||
// @flow
|
||||
|
||||
import '../analytics/middleware';
|
||||
import '../base/conference/middleware';
|
||||
import '../base/config/middleware';
|
||||
import '../base/jwt/middleware';
|
||||
import '../base/known-domains/middleware';
|
||||
import '../base/lastn/middleware';
|
||||
import '../base/lib-jitsi-meet/middleware';
|
||||
import '../base/logging/middleware';
|
||||
import '../base/media/middleware';
|
||||
import '../base/net-info/middleware';
|
||||
import '../base/participants/middleware';
|
||||
import '../base/redux/middleware';
|
||||
import '../base/responsive-ui/middleware';
|
||||
import '../base/settings/middleware';
|
||||
import '../base/sounds/middleware';
|
||||
import '../base/testing/middleware';
|
||||
import '../base/tracks/middleware';
|
||||
import '../base/user-interaction/middleware';
|
||||
import '../calendar-sync/middleware';
|
||||
import '../chat/middleware';
|
||||
import '../conference/middleware';
|
||||
import '../connection-indicator/middleware';
|
||||
import '../deep-linking/middleware';
|
||||
import '../device-selection/middleware';
|
||||
import '../display-name/middleware';
|
||||
import '../etherpad/middleware';
|
||||
import '../filmstrip/middleware';
|
||||
import '../follow-me/middleware';
|
||||
import '../invite/middleware';
|
||||
import '../large-video/middleware';
|
||||
import '../lobby/middleware';
|
||||
import '../notifications/middleware';
|
||||
import '../overlay/middleware';
|
||||
import '../recent-list/middleware';
|
||||
import '../recording/middleware';
|
||||
import '../rejoin/middleware';
|
||||
import '../room-lock/middleware';
|
||||
import '../rtcstats/middleware';
|
||||
import '../subtitles/middleware';
|
||||
import '../toolbox/middleware';
|
||||
import '../transcribing/middleware';
|
||||
import '../video-layout/middleware';
|
||||
import '../video-quality/middleware';
|
||||
import '../videosipgw/middleware';
|
||||
|
||||
import './middleware';
|
||||
18
react/features/app/middlewares.native.js
Normal file
18
react/features/app/middlewares.native.js
Normal file
@@ -0,0 +1,18 @@
|
||||
// @flow
|
||||
|
||||
import '../authentication/middleware';
|
||||
import '../mobile/audio-mode/middleware';
|
||||
import '../mobile/back-button/middleware';
|
||||
import '../mobile/background/middleware';
|
||||
import '../mobile/call-integration/middleware';
|
||||
import '../mobile/external-api/middleware';
|
||||
import '../mobile/full-screen/middleware';
|
||||
import '../mobile/incoming-call/middleware';
|
||||
import '../mobile/permissions/middleware';
|
||||
import '../mobile/proximity/middleware';
|
||||
import '../mobile/wake-lock/middleware';
|
||||
import '../mobile/watchos/middleware';
|
||||
import '../share-room/middleware';
|
||||
import '../youtube-player/middleware';
|
||||
|
||||
import './middlewares.any';
|
||||
16
react/features/app/middlewares.web.js
Normal file
16
react/features/app/middlewares.web.js
Normal file
@@ -0,0 +1,16 @@
|
||||
// @flow
|
||||
|
||||
import '../base/devices/middleware';
|
||||
import '../e2ee/middleware';
|
||||
import '../external-api/middleware';
|
||||
import '../keyboard-shortcuts/middleware';
|
||||
import '../local-recording/middleware';
|
||||
import '../no-audio-signal/middleware';
|
||||
import '../noise-detection/middleware';
|
||||
import '../old-client-notification/middleware';
|
||||
import '../power-monitor/middleware';
|
||||
import '../prejoin/middleware';
|
||||
import '../shared-video/middleware';
|
||||
import '../talk-while-muted/middleware';
|
||||
|
||||
import './middlewares.any';
|
||||
49
react/features/app/reducers.any.js
Normal file
49
react/features/app/reducers.any.js
Normal file
@@ -0,0 +1,49 @@
|
||||
// @flow
|
||||
|
||||
import '../analytics/reducer';
|
||||
import '../base/app/reducer';
|
||||
import '../base/audio-only/reducer';
|
||||
import '../base/color-scheme/reducer';
|
||||
import '../base/conference/reducer';
|
||||
import '../base/config/reducer';
|
||||
import '../base/connection/reducer';
|
||||
import '../base/dialog/reducer';
|
||||
import '../base/flags/reducer';
|
||||
import '../base/jwt/reducer';
|
||||
import '../base/known-domains/reducer';
|
||||
import '../base/lib-jitsi-meet/reducer';
|
||||
import '../base/logging/reducer';
|
||||
import '../base/media/reducer';
|
||||
import '../base/modal/reducer';
|
||||
import '../base/net-info/reducer';
|
||||
import '../base/participants/reducer';
|
||||
import '../base/responsive-ui/reducer';
|
||||
import '../base/settings/reducer';
|
||||
import '../base/sounds/reducer';
|
||||
import '../base/testing/reducer';
|
||||
import '../base/tracks/reducer';
|
||||
import '../base/user-interaction/reducer';
|
||||
import '../blur/reducer';
|
||||
import '../calendar-sync/reducer';
|
||||
import '../chat/reducer';
|
||||
import '../deep-linking/reducer';
|
||||
import '../device-selection/reducer';
|
||||
import '../dropbox/reducer';
|
||||
import '../etherpad/reducer';
|
||||
import '../filmstrip/reducer';
|
||||
import '../follow-me/reducer';
|
||||
import '../google-api/reducer';
|
||||
import '../invite/reducer';
|
||||
import '../large-video/reducer';
|
||||
import '../lobby/reducer';
|
||||
import '../notifications/reducer';
|
||||
import '../overlay/reducer';
|
||||
import '../recent-list/reducer';
|
||||
import '../recording/reducer';
|
||||
import '../settings/reducer';
|
||||
import '../subtitles/reducer';
|
||||
import '../toolbox/reducer';
|
||||
import '../transcribing/reducer';
|
||||
import '../video-layout/reducer';
|
||||
import '../videosipgw/reducer';
|
||||
import '../welcome/reducer';
|
||||
12
react/features/app/reducers.native.js
Normal file
12
react/features/app/reducers.native.js
Normal file
@@ -0,0 +1,12 @@
|
||||
// @flow
|
||||
|
||||
import '../authentication/reducer';
|
||||
import '../mobile/audio-mode/reducer';
|
||||
import '../mobile/background/reducer';
|
||||
import '../mobile/call-integration/reducer';
|
||||
import '../mobile/full-screen/reducer';
|
||||
import '../mobile/incoming-call/reducer';
|
||||
import '../mobile/watchos/reducer';
|
||||
import '../youtube-player/reducer';
|
||||
|
||||
import './reducers.any';
|
||||
15
react/features/app/reducers.web.js
Normal file
15
react/features/app/reducers.web.js
Normal file
@@ -0,0 +1,15 @@
|
||||
// @flow
|
||||
|
||||
import '../base/devices/reducer';
|
||||
import '../e2ee/reducer';
|
||||
import '../feedback/reducer';
|
||||
import '../local-recording/reducer';
|
||||
import '../no-audio-signal/reducer';
|
||||
import '../noise-detection/reducer';
|
||||
import '../power-monitor/reducer';
|
||||
import '../prejoin/reducer';
|
||||
import '../screenshot-capture/reducer';
|
||||
import '../shared-video/reducer';
|
||||
import '../talk-while-muted/reducer';
|
||||
|
||||
import './reducers.any';
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import type { Dispatch } from 'redux';
|
||||
|
||||
import { appNavigate } from '../app';
|
||||
import { appNavigate } from '../app/actions';
|
||||
import { checkIfCanJoin, conferenceLeft } from '../base/conference';
|
||||
import { connectionFailed } from '../base/connection';
|
||||
import { openDialog } from '../base/dialog';
|
||||
|
||||
@@ -171,6 +171,7 @@ class LoginDialog extends Component<Props, State> {
|
||||
underlineColorAndroid = { FIELD_UNDERLINE }
|
||||
value = { this.state.username } />
|
||||
<TextInput
|
||||
autoCapitalize = { 'none' }
|
||||
onChangeText = { this._onPasswordChange }
|
||||
placeholder = { t('dialog.userPassword') }
|
||||
placeholderTextColor = { PLACEHOLDER_COLOR }
|
||||
@@ -263,7 +264,7 @@ class LoginDialog extends Component<Props, State> {
|
||||
*/
|
||||
_onUsernameChange(text) {
|
||||
this.setState({
|
||||
username: text
|
||||
username: text.trim()
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user