mirror of
https://gitcode.com/GitHub_Trending/ji/jitsi-meet.git
synced 2026-01-04 22:02:28 +00:00
Compare commits
327 Commits
4993
...
enable-deb
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1433a1ee5d | ||
|
|
834ee22bc3 | ||
|
|
d6b5687828 | ||
|
|
6b496d4def | ||
|
|
22cc56ce8d | ||
|
|
0419c5a15b | ||
|
|
dda1f3c5ba | ||
|
|
6f41ef75d7 | ||
|
|
46cbc0ff49 | ||
|
|
53a695da90 | ||
|
|
8bbee7d1dc | ||
|
|
72d4aa7dd5 | ||
|
|
8161309e28 | ||
|
|
465e7f1458 | ||
|
|
4e43a31ec9 | ||
|
|
70c5ea04b1 | ||
|
|
ca25be7314 | ||
|
|
3c2ad24652 | ||
|
|
e421a119e1 | ||
|
|
619acaca24 | ||
|
|
bc9f5773fb | ||
|
|
d0be8dcf9d | ||
|
|
af9958ad66 | ||
|
|
efc5c9dabe | ||
|
|
d22fc88ae3 | ||
|
|
9ee75038b6 | ||
|
|
09af88088d | ||
|
|
2e539ba010 | ||
|
|
87b3ec2cc0 | ||
|
|
907b51925d | ||
|
|
643340c4a6 | ||
|
|
d6c821d524 | ||
|
|
eb16f93153 | ||
|
|
47576aebba | ||
|
|
bac0a55421 | ||
|
|
1c8103c444 | ||
|
|
4e83e93eb6 | ||
|
|
0f8fa4f059 | ||
|
|
becaf0806a | ||
|
|
5b77d722d7 | ||
|
|
f4cde2192e | ||
|
|
e91df47d1b | ||
|
|
2d04f3852c | ||
|
|
2209394d09 | ||
|
|
1e76dc0aa2 | ||
|
|
75edfc1fab | ||
|
|
8c20dd8e47 | ||
|
|
fefe451180 | ||
|
|
b268e01a42 | ||
|
|
d62e378528 | ||
|
|
e8ad2365b6 | ||
|
|
b7389e1c31 | ||
|
|
eeddf6b350 | ||
|
|
665b7730ee | ||
|
|
7854437e31 | ||
|
|
600af62945 | ||
|
|
88ddb8d9b4 | ||
|
|
5182a720f9 | ||
|
|
415562c315 | ||
|
|
53d0a892b5 | ||
|
|
9b220f3870 | ||
|
|
c6e50ad439 | ||
|
|
36cb896680 | ||
|
|
249515ac60 | ||
|
|
80b49266ab | ||
|
|
1afae50923 | ||
|
|
b332fb474b | ||
|
|
a12ad99ecf | ||
|
|
400f47963d | ||
|
|
65fbc6f256 | ||
|
|
e7a324185f | ||
|
|
14a5c45fa3 | ||
|
|
05e6dde341 | ||
|
|
e13473d42f | ||
|
|
4b72fefd7e | ||
|
|
ba9398a1e2 | ||
|
|
8d4cf7165e | ||
|
|
0b3991d9e1 | ||
|
|
47be509d17 | ||
|
|
ba64d3e0c8 | ||
|
|
cd05c34d19 | ||
|
|
24550777c6 | ||
|
|
ee101f8947 | ||
|
|
8ca85f9e1c | ||
|
|
34ccd56691 | ||
|
|
f49c05c666 | ||
|
|
e7280e5040 | ||
|
|
eb1add681f | ||
|
|
8419dc725c | ||
|
|
f984faef3f | ||
|
|
0c76d7532c | ||
|
|
cb0b68f840 | ||
|
|
08a4da22f3 | ||
|
|
bdd6638067 | ||
|
|
8b44e06f2c | ||
|
|
79edc1b358 | ||
|
|
6597bfc2aa | ||
|
|
e0a2320d75 | ||
|
|
81e9fca03b | ||
|
|
76f8302aeb | ||
|
|
7263829763 | ||
|
|
b7ab3ea052 | ||
|
|
c657f360e1 | ||
|
|
ae5edf5a62 | ||
|
|
2bac757ca6 | ||
|
|
c10805f81b | ||
|
|
251eec19cd | ||
|
|
4276f82c03 | ||
|
|
4c3aae1e28 | ||
|
|
12be14bd4b | ||
|
|
420a7d8110 | ||
|
|
17f77a4246 | ||
|
|
6f9944a2d0 | ||
|
|
73328810e4 | ||
|
|
bb8c30a6c9 | ||
|
|
c5438ecd0c | ||
|
|
e22a25b216 | ||
|
|
4075e5deb7 | ||
|
|
ea0d953d1c | ||
|
|
b3e03fe50c | ||
|
|
8f81a75a61 | ||
|
|
0ab905bf75 | ||
|
|
5a3607f63f | ||
|
|
d57e202d19 | ||
|
|
1223c63f69 | ||
|
|
25b4887f74 | ||
|
|
e8ee65db82 | ||
|
|
9956ca6551 | ||
|
|
03a96d0be2 | ||
|
|
3fa7c01f19 | ||
|
|
5cba6c7bc7 | ||
|
|
52ee9b5151 | ||
|
|
d5f379a97c | ||
|
|
84cdd31731 | ||
|
|
b7eba915af | ||
|
|
7d0722c031 | ||
|
|
7d3953de51 | ||
|
|
601ee219e7 | ||
|
|
8db3a341b3 | ||
|
|
8d562b9d59 | ||
|
|
80e2c05219 | ||
|
|
0bdc7d42c5 | ||
|
|
d87a40e77e | ||
|
|
bad58f6508 | ||
|
|
dc60418613 | ||
|
|
f2f545a57f | ||
|
|
d72b27d46d | ||
|
|
e1fef8d848 | ||
|
|
33f1199fc8 | ||
|
|
62c78950cd | ||
|
|
074a783bd9 | ||
|
|
da7358d564 | ||
|
|
58ef72dce5 | ||
|
|
7f44442b21 | ||
|
|
b995221a2b | ||
|
|
0507f8c2f9 | ||
|
|
df1561c198 | ||
|
|
ae9bea1a0c | ||
|
|
2174368d23 | ||
|
|
abc984f83b | ||
|
|
d9bfeecb5b | ||
|
|
24503c3bd3 | ||
|
|
d4c7fc8a72 | ||
|
|
5fcd5ff17b | ||
|
|
62bb259182 | ||
|
|
027e1ba978 | ||
|
|
a866be787f | ||
|
|
0381f714fc | ||
|
|
5d6e88b53a | ||
|
|
a8044c43e2 | ||
|
|
13f9299921 | ||
|
|
c356c2360c | ||
|
|
01867ed343 | ||
|
|
765fbe5e1d | ||
|
|
ea56010e09 | ||
|
|
38b14c5d62 | ||
|
|
74d65ff596 | ||
|
|
1d45edbb27 | ||
|
|
7945f14cee | ||
|
|
35c7f156db | ||
|
|
f82d46337b | ||
|
|
07a69ba040 | ||
|
|
2d319d18c3 | ||
|
|
16cfda3c7a | ||
|
|
64ae9c7953 | ||
|
|
3e8f725c62 | ||
|
|
2a9b3dc1b2 | ||
|
|
487da8f231 | ||
|
|
804d14e112 | ||
|
|
53cea31bb8 | ||
|
|
e6cdeb31ff | ||
|
|
60db81f31c | ||
|
|
0e6addbfad | ||
|
|
0a37ef7d46 | ||
|
|
f2361f91df | ||
|
|
3d83847e4b | ||
|
|
993b6ba4f2 | ||
|
|
22c640347a | ||
|
|
db5ccc943c | ||
|
|
04a5e26096 | ||
|
|
e10e9a5fec | ||
|
|
dc776d209c | ||
|
|
2ed2a8d41f | ||
|
|
be73ed9d19 | ||
|
|
f991a93afd | ||
|
|
0bd45a75d2 | ||
|
|
f560eecfa9 | ||
|
|
34bc3c9533 | ||
|
|
2eedc2945d | ||
|
|
342dd4ceca | ||
|
|
60188794b5 | ||
|
|
cafefecea5 | ||
|
|
9d22da823e | ||
|
|
b2985934f7 | ||
|
|
51a996d0e0 | ||
|
|
2549f83313 | ||
|
|
6b095b9794 | ||
|
|
d4b6ac6c3a | ||
|
|
e6b5deade2 | ||
|
|
7f04767566 | ||
|
|
e9675453e1 | ||
|
|
76f1fe8457 | ||
|
|
a1e8f36f4f | ||
|
|
1d4e40b49f | ||
|
|
440e7844c8 | ||
|
|
a3a9eab57a | ||
|
|
e2a4d0d42d | ||
|
|
913d7e89dd | ||
|
|
db9b8784ac | ||
|
|
a564ce581d | ||
|
|
3917c5b283 | ||
|
|
ccdab94ee8 | ||
|
|
4fc9aed708 | ||
|
|
5f657a7d6c | ||
|
|
37e7919fd1 | ||
|
|
4ace04e63c | ||
|
|
cb2891ead3 | ||
|
|
093d8f830a | ||
|
|
2ca4dd3755 | ||
|
|
52279d0a2a | ||
|
|
65642d20e4 | ||
|
|
8dbb392d85 | ||
|
|
1b200abaa7 | ||
|
|
06ce24527e | ||
|
|
e05d53e71a | ||
|
|
acdde6f1f5 | ||
|
|
81c4e9a7fd | ||
|
|
fb144a55a3 | ||
|
|
de2cdb1d6c | ||
|
|
0d7ec9552b | ||
|
|
e5a3f8505e | ||
|
|
fdbf526b60 | ||
|
|
bb5f589fa1 | ||
|
|
839f632af6 | ||
|
|
737d542ca8 | ||
|
|
eff1d13d21 | ||
|
|
870d847f5f | ||
|
|
f84f7332b9 | ||
|
|
27481f0270 | ||
|
|
724391648e | ||
|
|
9a8b5551be | ||
|
|
b39e5968bf | ||
|
|
c0917f87ae | ||
|
|
06c527b6fe | ||
|
|
7f020a1107 | ||
|
|
748a84eeef | ||
|
|
f5dd848daf | ||
|
|
4872ce83ba | ||
|
|
99f61ca2cd | ||
|
|
dffe2316d4 | ||
|
|
72cd3d70e1 | ||
|
|
04a464dfee | ||
|
|
be0632783d | ||
|
|
15c08f90c4 | ||
|
|
c4677be87a | ||
|
|
2fdf1a9165 | ||
|
|
06110d1dfb | ||
|
|
8d25950d98 | ||
|
|
aea09a8da3 | ||
|
|
01a127b557 | ||
|
|
574994607c | ||
|
|
689bb3f226 | ||
|
|
598d014960 | ||
|
|
d99bf9797d | ||
|
|
4138e1ac53 | ||
|
|
0ee13b1fd8 | ||
|
|
6ca61e03fd | ||
|
|
2f9fb64332 | ||
|
|
3ebfb1de70 | ||
|
|
d7a6a48acd | ||
|
|
496e47af20 | ||
|
|
d077021031 | ||
|
|
4e4ff0f60f | ||
|
|
9657bd9b6d | ||
|
|
e6242f5bc7 | ||
|
|
1f41ddd228 | ||
|
|
eb3295cedd | ||
|
|
0e7a992b43 | ||
|
|
6f5e0b0321 | ||
|
|
e33674fb2e | ||
|
|
3f7073c589 | ||
|
|
2a37f7caa8 | ||
|
|
106ce79375 | ||
|
|
b944088d99 | ||
|
|
b19bd38379 | ||
|
|
1699216c99 | ||
|
|
e78ad54809 | ||
|
|
9b5eae7a60 | ||
|
|
7db9fc94e2 | ||
|
|
db5d6a56b8 | ||
|
|
f7ddcbbbf3 | ||
|
|
cff4ed83f6 | ||
|
|
a39f2aebd9 | ||
|
|
2bce5acad3 | ||
|
|
7396db71fd | ||
|
|
f7b73c0d09 | ||
|
|
5c08b1ec5b | ||
|
|
6d15bcc719 | ||
|
|
47c9e14155 | ||
|
|
fe22e33343 | ||
|
|
dcc659215e | ||
|
|
5e4753888e | ||
|
|
6e91665987 | ||
|
|
a1a5d1e7f8 | ||
|
|
9a8961b90c | ||
|
|
07eb19b98a | ||
|
|
d69d4dd91a |
3
.github/workflows/ci.yml
vendored
3
.github/workflows/ci.yml
vendored
@@ -12,6 +12,7 @@ jobs:
|
||||
with:
|
||||
node-version: '12.x'
|
||||
- run: npm install
|
||||
- run: git status -s --untracked-files=no
|
||||
- name: Check if the git repository is clean
|
||||
run: exit $( git status --porcelain --untracked-files=no | head -255 | wc -l )
|
||||
- run: npm run lint
|
||||
- run: make
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
Jitsi Meet is an open-source (Apache) WebRTC JavaScript application that uses [Jitsi Videobridge](https://jitsi.org/videobridge) to provide high quality, [secure](https://jitsi.org/security) and scalable video conferences. Jitsi Meet in action can be seen at [here at the session #482 of the VoIP Users Conference](http://youtu.be/7vFUVClsNh0).
|
||||
|
||||
The Jitsi Meet client runs in your browser, without installing anything else on your computer. You can try it out at https://meet.jit.si.
|
||||
The Jitsi Meet client runs in your browser, without installing anything on your computer. You can try it out at https://meet.jit.si.
|
||||
|
||||
Jitsi Meet allows very efficient collaboration. Users can stream their desktop or only some windows. It also supports shared document editing with Etherpad.
|
||||
Jitsi Meet allows for very efficient collaboration. Users can stream their desktop or only some windows. It also supports shared document editing with Etherpad.
|
||||
|
||||
**NOTE:** If you are looking for Jitsi as a Service (JaaS) please start [here](https://jaas.8x8.vc).
|
||||
|
||||
|
||||
@@ -25,5 +25,5 @@ android.enableDexingArtifactTransform.desugaring=false
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
|
||||
appVersion=21.2.0
|
||||
sdkVersion=3.5.0
|
||||
appVersion=21.3.0
|
||||
sdkVersion=3.8.0
|
||||
|
||||
@@ -70,11 +70,13 @@ dependencies {
|
||||
implementation project(':react-native-default-preference')
|
||||
implementation project(':react-native-immersive')
|
||||
implementation project(':react-native-keep-awake')
|
||||
implementation project(':react-native-slider')
|
||||
implementation project(':react-native-sound')
|
||||
implementation project(':react-native-splash-screen')
|
||||
implementation project(':react-native-svg')
|
||||
implementation project(':react-native-video')
|
||||
implementation project(':react-native-webrtc')
|
||||
implementation project(':react-native-webview')
|
||||
implementation project(':react-native-splash-screen')
|
||||
|
||||
testImplementation 'junit:junit:4.12'
|
||||
}
|
||||
|
||||
@@ -40,7 +40,8 @@
|
||||
|
||||
<service
|
||||
android:name=".ConnectionService"
|
||||
android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE">
|
||||
android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.telecom.ConnectionService" />
|
||||
</intent-filter>
|
||||
|
||||
@@ -47,7 +47,7 @@ class LocaleDetector extends ReactContextBaseJavaModule {
|
||||
public Map<String, Object> getConstants() {
|
||||
Context context = getReactApplicationContext();
|
||||
HashMap<String,Object> constants = new HashMap<>();
|
||||
constants.put("locale", context.getResources().getConfiguration().locale.toString());
|
||||
constants.put("locale", context.getResources().getConfiguration().locale.toLanguageTag());
|
||||
return constants;
|
||||
}
|
||||
|
||||
@@ -55,4 +55,4 @@ class LocaleDetector extends ReactContextBaseJavaModule {
|
||||
public String getName() {
|
||||
return "LocaleDetector";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -187,9 +187,11 @@ class ReactInstanceManagerHolder {
|
||||
new com.ocetnik.timer.BackgroundTimerPackage(),
|
||||
new com.reactnativecommunity.asyncstorage.AsyncStoragePackage(),
|
||||
new com.reactnativecommunity.netinfo.NetInfoPackage(),
|
||||
new com.reactnativecommunity.slider.ReactSliderPackage(),
|
||||
new com.reactnativecommunity.webview.RNCWebViewPackage(),
|
||||
new com.rnimmersive.RNImmersivePackage(),
|
||||
new com.zmxv.RNSound.RNSoundPackage(),
|
||||
new com.brentvatne.react.ReactVideoPackage(),
|
||||
new ReactPackageAdapter() {
|
||||
@Override
|
||||
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
|
||||
|
||||
@@ -19,13 +19,17 @@ include ':react-native-immersive'
|
||||
project(':react-native-immersive').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-immersive/android')
|
||||
include ':react-native-keep-awake'
|
||||
project(':react-native-keep-awake').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-keep-awake/android')
|
||||
include ':react-native-slider'
|
||||
project(':react-native-slider').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/slider/android')
|
||||
include ':react-native-sound'
|
||||
project(':react-native-sound').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-sound/android')
|
||||
include ':react-native-splash-screen'
|
||||
project(':react-native-splash-screen').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-splash-screen/android')
|
||||
include ':react-native-svg'
|
||||
project(':react-native-svg').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-svg/android')
|
||||
include ':react-native-video'
|
||||
project(':react-native-video').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-video/android')
|
||||
include ':react-native-webrtc'
|
||||
project(':react-native-webrtc').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webrtc/android')
|
||||
include ':react-native-webview'
|
||||
project(':react-native-webview').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webview/android')
|
||||
project(':react-native-webview').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webview/android')
|
||||
|
||||
9
babel.config.js
Normal file
9
babel.config.js
Normal file
@@ -0,0 +1,9 @@
|
||||
module.exports = {
|
||||
presets: [ 'module:metro-react-native-babel-preset' ],
|
||||
env: {
|
||||
production: {
|
||||
plugins: [ 'react-native-paper/babel' ]
|
||||
}
|
||||
},
|
||||
plugins: [ 'optional-require' ]
|
||||
};
|
||||
127
conference.js
127
conference.js
@@ -39,12 +39,14 @@ import {
|
||||
conferenceWillJoin,
|
||||
conferenceWillLeave,
|
||||
dataChannelOpened,
|
||||
getConferenceOptions,
|
||||
kickedOut,
|
||||
lockStateChanged,
|
||||
onStartMutedPolicyChanged,
|
||||
p2pStatusChanged,
|
||||
sendLocalParticipant
|
||||
} from './react/features/base/conference';
|
||||
import { getReplaceParticipant } from './react/features/base/config/functions';
|
||||
import {
|
||||
checkAndNotifyForNewDevice,
|
||||
getAvailableDevices,
|
||||
@@ -110,7 +112,6 @@ import {
|
||||
trackRemoved
|
||||
} from './react/features/base/tracks';
|
||||
import { downloadJSON } from './react/features/base/util/downloadJSON';
|
||||
import { getConferenceOptions } from './react/features/conference/functions';
|
||||
import { showDesktopPicker } from './react/features/desktop-picker';
|
||||
import { appendSuffix } from './react/features/display-name';
|
||||
import {
|
||||
@@ -129,9 +130,9 @@ import {
|
||||
import { disableReceiver, stopReceiver } from './react/features/remote-control';
|
||||
import { setScreenAudioShareState, isScreenAudioShared } from './react/features/screen-share/';
|
||||
import { toggleScreenshotCaptureEffect } from './react/features/screenshot-capture';
|
||||
import { setSharedVideoStatus } from './react/features/shared-video/actions';
|
||||
import { AudioMixerEffect } from './react/features/stream-effects/audio-mixer/AudioMixerEffect';
|
||||
import { createPresenterEffect } from './react/features/stream-effects/presenter';
|
||||
import { createRnnoiseProcessor } from './react/features/stream-effects/rnnoise';
|
||||
import { endpointMessageReceived } from './react/features/subtitles';
|
||||
import UIEvents from './service/UI/UIEvents';
|
||||
|
||||
@@ -177,8 +178,7 @@ const commands = {
|
||||
AVATAR_URL: AVATAR_URL_COMMAND,
|
||||
CUSTOM_ROLE: 'custom-role',
|
||||
EMAIL: EMAIL_COMMAND,
|
||||
ETHERPAD: 'etherpad',
|
||||
SHARED_VIDEO: 'shared-video'
|
||||
ETHERPAD: 'etherpad'
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -306,10 +306,13 @@ class ConferenceConnector {
|
||||
|
||||
// not enough rights to create conference
|
||||
case JitsiConferenceErrors.AUTHENTICATION_REQUIRED: {
|
||||
|
||||
const replaceParticipant = getReplaceParticipant(APP.store.getState());
|
||||
|
||||
// Schedule reconnect to check if someone else created the room.
|
||||
this.reconnectTimeout = setTimeout(() => {
|
||||
APP.store.dispatch(conferenceWillJoin(room));
|
||||
room.join();
|
||||
room.join(null, replaceParticipant);
|
||||
}, 5000);
|
||||
|
||||
const { password }
|
||||
@@ -395,8 +398,10 @@ class ConferenceConnector {
|
||||
*
|
||||
*/
|
||||
connect() {
|
||||
const replaceParticipant = getReplaceParticipant(APP.store.getState());
|
||||
|
||||
// the local storage overrides here and in connection.js can be used by jibri
|
||||
room.join(jitsiLocalStorage.getItem('xmpp_conference_password_override'));
|
||||
room.join(jitsiLocalStorage.getItem('xmpp_conference_password_override'), replaceParticipant);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1087,17 +1092,6 @@ export default {
|
||||
return room && room.isCallstatsEnabled();
|
||||
},
|
||||
|
||||
/**
|
||||
* Sends the given feedback through CallStats if enabled.
|
||||
*
|
||||
* @param overallFeedback an integer between 1 and 5 indicating the
|
||||
* user feedback
|
||||
* @param detailedFeedback detailed feedback from the user. Not yet used
|
||||
*/
|
||||
sendFeedback(overallFeedback, detailedFeedback) {
|
||||
return room.sendFeedback(overallFeedback, detailedFeedback);
|
||||
},
|
||||
|
||||
/**
|
||||
* Get speaker stats that track total dominant speaker time.
|
||||
*
|
||||
@@ -1364,7 +1358,11 @@ export default {
|
||||
},
|
||||
|
||||
_getConferenceOptions() {
|
||||
return getConferenceOptions(APP.store.getState());
|
||||
const options = getConferenceOptions(APP.store.getState());
|
||||
|
||||
options.createVADProcessor = createRnnoiseProcessor;
|
||||
|
||||
return options;
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -1874,7 +1872,6 @@ export default {
|
||||
await this.useVideoStream(desktopVideoStream);
|
||||
}
|
||||
|
||||
|
||||
if (this._desktopAudioStream) {
|
||||
// If there is a localAudio stream, mix in the desktop audio stream captured by the screen sharing
|
||||
// api.
|
||||
@@ -1985,7 +1982,12 @@ export default {
|
||||
|
||||
room.on(
|
||||
JitsiConferenceEvents.CONFERENCE_UNIQUE_ID_SET,
|
||||
(...args) => APP.store.dispatch(conferenceUniqueIdSet(room, ...args)));
|
||||
(...args) => {
|
||||
// Preserve the sessionId so that the value is accessible even after room
|
||||
// is disconnected.
|
||||
room.sessionId = room.getMeetingUniqueId();
|
||||
APP.store.dispatch(conferenceUniqueIdSet(room, ...args));
|
||||
});
|
||||
|
||||
room.on(
|
||||
JitsiConferenceEvents.AUTH_STATUS_CHANGED,
|
||||
@@ -2017,8 +2019,6 @@ export default {
|
||||
}
|
||||
|
||||
logger.log(`USER ${id} LEFT:`, user);
|
||||
|
||||
APP.UI.onSharedVideoStop(id);
|
||||
});
|
||||
|
||||
room.on(JitsiConferenceEvents.USER_STATUS_CHANGED, (id, status) => {
|
||||
@@ -2177,7 +2177,24 @@ export default {
|
||||
JitsiConferenceEvents.LOCK_STATE_CHANGED,
|
||||
(...args) => APP.store.dispatch(lockStateChanged(room, ...args)));
|
||||
|
||||
room.on(JitsiConferenceEvents.KICKED, participant => {
|
||||
room.on(JitsiConferenceEvents.KICKED, (participant, reason, isReplaced) => {
|
||||
if (isReplaced) {
|
||||
// this event triggers when the local participant is kicked, `participant`
|
||||
// is the kicker. In replace participant case, kicker is undefined,
|
||||
// as the server initiated it. We mark in store the local participant
|
||||
// as being replaced based on jwt.
|
||||
const localParticipant = getLocalParticipant(APP.store.getState());
|
||||
|
||||
APP.store.dispatch(participantUpdated({
|
||||
conference: room,
|
||||
id: localParticipant.id,
|
||||
isReplaced
|
||||
}));
|
||||
|
||||
// we send readyToClose when kicked participant is replace so that
|
||||
// embedding app can choose to dispose the iframe API on the handler.
|
||||
APP.API.notifyReadyToClose();
|
||||
}
|
||||
APP.store.dispatch(kickedOut(room, participant));
|
||||
});
|
||||
|
||||
@@ -2450,63 +2467,10 @@ export default {
|
||||
});
|
||||
|
||||
APP.UI.addListener(
|
||||
UIEvents.TOGGLE_SCREENSHARING, audioOnly => {
|
||||
this.toggleScreenSharing(undefined, { audioOnly });
|
||||
UIEvents.TOGGLE_SCREENSHARING, ({ enabled, audioOnly }) => {
|
||||
this.toggleScreenSharing(enabled, { audioOnly });
|
||||
}
|
||||
);
|
||||
|
||||
/* eslint-disable max-params */
|
||||
APP.UI.addListener(
|
||||
UIEvents.UPDATE_SHARED_VIDEO,
|
||||
(url, state, time, isMuted, volume) => {
|
||||
/* eslint-enable max-params */
|
||||
// send start and stop commands once, and remove any updates
|
||||
// that had left
|
||||
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,
|
||||
attributes: {
|
||||
state,
|
||||
time,
|
||||
muted: isMuted,
|
||||
volume,
|
||||
from: localParticipant.id
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// in case of paused, in order to allow late users to join
|
||||
// paused
|
||||
room.removeCommand(this.commands.defaults.SHARED_VIDEO);
|
||||
room.sendCommand(this.commands.defaults.SHARED_VIDEO, {
|
||||
value: url,
|
||||
attributes: {
|
||||
state,
|
||||
time,
|
||||
muted: isMuted,
|
||||
volume
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
APP.store.dispatch(setSharedVideoStatus(state));
|
||||
});
|
||||
room.addCommandListener(
|
||||
this.commands.defaults.SHARED_VIDEO,
|
||||
({ value, attributes }, id) => {
|
||||
if (attributes.state === 'stop') {
|
||||
APP.UI.onSharedVideoStop(id, attributes);
|
||||
} else if (attributes.state === 'start') {
|
||||
APP.UI.onSharedVideoStart(id, value, attributes);
|
||||
} else if (attributes.state === 'playing'
|
||||
|| attributes.state === 'pause') {
|
||||
APP.UI.onSharedVideoUpdate(id, value, attributes);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -2860,14 +2824,11 @@ export default {
|
||||
requestFeedbackPromise = Promise.resolve(true);
|
||||
}
|
||||
|
||||
// All promises are returning Promise.resolve to make Promise.all to
|
||||
// be resolved when both Promises are finished. Otherwise Promise.all
|
||||
// will reject on first rejected Promise and we can redirect the page
|
||||
// before all operations are done.
|
||||
Promise.all([
|
||||
requestFeedbackPromise,
|
||||
this.leaveRoomAndDisconnect()
|
||||
]).then(values => {
|
||||
])
|
||||
.then(values => {
|
||||
this._room = undefined;
|
||||
room = undefined;
|
||||
|
||||
|
||||
94
config.js
94
config.js
@@ -70,6 +70,9 @@ var config = {
|
||||
// callStatsThreshold: 5 // enable callstats for 5% of the users.
|
||||
},
|
||||
|
||||
// Enables reactions feature.
|
||||
// enableReactions: false,
|
||||
|
||||
// Disables ICE/UDP by filtering out local and remote UDP candidates in
|
||||
// signalling.
|
||||
// webrtcIceUdpDisable: false,
|
||||
@@ -82,6 +85,9 @@ var config = {
|
||||
// Media
|
||||
//
|
||||
|
||||
// Enable unified plan implementation support on Chromium based browsers.
|
||||
// enableUnifiedOnChrome: false,
|
||||
|
||||
// Audio
|
||||
|
||||
// Disable measuring of audio levels.
|
||||
@@ -98,6 +104,10 @@ var config = {
|
||||
// about the call.
|
||||
// enableSaveLogs: false,
|
||||
|
||||
// Enabling this will hide the "Show More" link in the GSM popover that can be
|
||||
// used to display more statistics about the connection (IP, Port, protocol, etc).
|
||||
// disableShowMoreStats: true,
|
||||
|
||||
// Enabling this will run the lib-jitsi-meet noise detection module which will
|
||||
// notify the user if there is noise, other than voice, coming from the current
|
||||
// selected microphone. The purpose it to let the user know that the input could
|
||||
@@ -389,7 +399,9 @@ var config = {
|
||||
// enableClosePage: false,
|
||||
|
||||
// Disable hiding of remote thumbnails when in a 1-on-1 conference call.
|
||||
// disable1On1Mode: false,
|
||||
// Setting this to null, will also disable showing the remote videos
|
||||
// when the toolbar is shown on mouse movements
|
||||
// disable1On1Mode: null | false | true,
|
||||
|
||||
// Default language for the user interface.
|
||||
// defaultLanguage: 'en',
|
||||
@@ -434,6 +446,10 @@ var config = {
|
||||
// Base URL for a Gravatar-compatible service. Defaults to libravatar.
|
||||
// gravatarBaseURL: 'https://seccdn.libravatar.org/avatar/',
|
||||
|
||||
// App name to be displayed in the invitation email subject, as an alternative to
|
||||
// interfaceConfig.APP_NAME.
|
||||
// inviteAppName: null,
|
||||
|
||||
// Moved from interfaceConfig(TOOLBAR_BUTTONS).
|
||||
// The name of the toolbar buttons to display in the toolbar, including the
|
||||
// "More actions" menu. If present, the button will display. Exceptions are
|
||||
@@ -446,11 +462,38 @@ var config = {
|
||||
// - 'desktop' controls the "Share your screen" button
|
||||
// - if `toolbarButtons` is undefined, we fallback to enabling all buttons on the UI
|
||||
// toolbarButtons: [
|
||||
// 'microphone', 'camera', 'closedcaptions', 'desktop', 'embedmeeting', 'fullscreen',
|
||||
// 'fodeviceselection', 'hangup', 'profile', 'chat', 'recording',
|
||||
// 'livestreaming', 'etherpad', 'sharedvideo', 'shareaudio', 'settings', 'raisehand',
|
||||
// 'videoquality', 'filmstrip', 'invite', 'feedback', 'stats', 'shortcuts',
|
||||
// 'tileview', 'select-background', 'download', 'help', 'mute-everyone', 'mute-video-everyone', 'security'
|
||||
// 'camera',
|
||||
// 'chat',
|
||||
// 'closedcaptions',
|
||||
// 'desktop',
|
||||
// 'download',
|
||||
// 'embedmeeting',
|
||||
// 'etherpad',
|
||||
// 'feedback',
|
||||
// 'filmstrip',
|
||||
// 'fullscreen',
|
||||
// 'hangup',
|
||||
// 'help',
|
||||
// 'invite',
|
||||
// 'livestreaming',
|
||||
// 'microphone',
|
||||
// 'mute-everyone',
|
||||
// 'mute-video-everyone',
|
||||
// 'participants-pane',
|
||||
// 'profile',
|
||||
// 'raisehand',
|
||||
// 'recording',
|
||||
// 'security',
|
||||
// 'select-background',
|
||||
// 'settings',
|
||||
// 'shareaudio',
|
||||
// 'sharedvideo',
|
||||
// 'shortcuts',
|
||||
// 'stats',
|
||||
// 'tileview',
|
||||
// 'toggle-camera',
|
||||
// 'videoquality',
|
||||
// '__end'
|
||||
// ],
|
||||
|
||||
// Stats
|
||||
@@ -501,6 +544,9 @@ var config = {
|
||||
// connection.
|
||||
enabled: true,
|
||||
|
||||
// Enable unified plan implementation support on Chromium for p2p connection.
|
||||
// enableUnifiedOnChrome: false,
|
||||
|
||||
// Sets the ICE transport policy for the p2p connection. At the time
|
||||
// of this writing the list of possible values are 'all' and 'relay',
|
||||
// but that is subject to change in the future. The enum is defined in
|
||||
@@ -587,6 +633,9 @@ var config = {
|
||||
// conference (if set to true, these sounds will not be played).
|
||||
// disableJoinLeaveSounds: false,
|
||||
|
||||
// Disables the sounds that play when a chat message is received.
|
||||
// disableIncomingMessageSound: false,
|
||||
|
||||
// Information for the chrome extension banner
|
||||
// chromeExtensionBanner: {
|
||||
// // The chrome extension to be installed address
|
||||
@@ -607,8 +656,8 @@ var config = {
|
||||
// localRecording: {
|
||||
// Enables local recording.
|
||||
// Additionally, 'localrecording' (all lowercase) needs to be added to
|
||||
// TOOLBAR_BUTTONS in interface_config.js for the Local Recording
|
||||
// button to show up on the toolbar.
|
||||
// the `toolbarButtons`-array for the Local Recording button to show up
|
||||
// on the toolbar.
|
||||
//
|
||||
// enabled: true,
|
||||
//
|
||||
@@ -685,8 +734,11 @@ var config = {
|
||||
/**
|
||||
External API url used to receive branding specific information.
|
||||
If there is no url set or there are missing fields, the defaults are applied.
|
||||
The config file should be in JSON.
|
||||
None of the fields are mandatory and the response must have the shape:
|
||||
{
|
||||
// The domain url to apply (will replace the domain in the sharing conference link/embed section)
|
||||
inviteDomain: 'example-company.org,
|
||||
// The hex value for the colour used as background
|
||||
backgroundColor: '#fff',
|
||||
// The url for the image used as background
|
||||
@@ -713,6 +765,9 @@ var config = {
|
||||
// Hides the conference subject
|
||||
// hideConferenceSubject: true,
|
||||
|
||||
// Hides the recording label
|
||||
// hideRecordingLabel: false,
|
||||
|
||||
// Hides the conference timer.
|
||||
// hideConferenceTimer: true,
|
||||
|
||||
@@ -727,6 +782,18 @@ var config = {
|
||||
// is not persisting the local storage inside the iframe.
|
||||
// useHostPageLocalStorage: true,
|
||||
|
||||
// etherpad ("shared document") integration.
|
||||
//
|
||||
|
||||
// If set, add a "Open shared document" link to the bottom right menu that
|
||||
// will open an etherpad document.
|
||||
// etherpad_base: 'https://your-etherpad-installati.on/p/',
|
||||
|
||||
// If etherpad_base is set, and useRoomAsSharedDocumentName is set to true,
|
||||
// open a pad with the name of the room (lowercased) instead of a pad with a
|
||||
// random UUID.
|
||||
// useRoomAsSharedDocumentName: true,
|
||||
|
||||
// List of undocumented settings used in jitsi-meet
|
||||
/**
|
||||
_immediateReloadThreshold
|
||||
@@ -739,7 +806,6 @@ var config = {
|
||||
dialOutCodesUrl
|
||||
disableRemoteControl
|
||||
displayJids
|
||||
etherpad_base
|
||||
externalConnectUrl
|
||||
firefox_fake_device
|
||||
googleApiApplicationClientID
|
||||
@@ -782,6 +848,11 @@ var config = {
|
||||
websocketKeepAliveUrl
|
||||
*/
|
||||
|
||||
/**
|
||||
* Default interval (milliseconds) for triggering mouseMoved iframe API event
|
||||
*/
|
||||
mouseMoveCallbackInterval: 1000,
|
||||
|
||||
/**
|
||||
Use this array to configure which notifications will be shown to the user
|
||||
The items correspond to the title or description key of that notification
|
||||
@@ -841,7 +912,10 @@ var config = {
|
||||
// 'toolbar.noisyAudioInputTitle', // shown when noise is detected for the current microphone
|
||||
// 'toolbar.talkWhileMutedPopup', // shown when user tries to speak while muted
|
||||
// 'transcribing.failedToStart' // shown when transcribing fails to start
|
||||
// ]
|
||||
// ],
|
||||
|
||||
// Prevent the filmstrip from autohiding when screen width is under a certain threshold
|
||||
// disableFilmstripAutohiding: false,
|
||||
|
||||
// Allow all above example options to include a trailing comma and
|
||||
// prevent fear when commenting out the last value.
|
||||
|
||||
@@ -11,11 +11,13 @@ import {
|
||||
connectionFailed
|
||||
} from './react/features/base/connection/actions';
|
||||
import { openDialog } from './react/features/base/dialog/actions';
|
||||
import { setJWT } from './react/features/base/jwt';
|
||||
import {
|
||||
isFatalJitsiConnectionError,
|
||||
JitsiConnectionErrors,
|
||||
JitsiConnectionEvents
|
||||
} from './react/features/base/lib-jitsi-meet';
|
||||
import { isVpaasMeeting, getJaasJWT } from './react/features/jaas/functions';
|
||||
import { setPrejoinDisplayNameRequired } from './react/features/prejoin/actions';
|
||||
const logger = Logger.getLogger(__filename);
|
||||
|
||||
@@ -82,9 +84,16 @@ function checkForAttachParametersAndConnect(id, password, connection) {
|
||||
* @returns {Promise<JitsiConnection>} connection if
|
||||
* everything is ok, else error.
|
||||
*/
|
||||
export function connect(id, password, roomName) {
|
||||
export async function connect(id, password, roomName) {
|
||||
const connectionConfig = Object.assign({}, config);
|
||||
const { jwt } = APP.store.getState()['features/base/jwt'];
|
||||
const state = APP.store.getState();
|
||||
let { jwt } = state['features/base/jwt'];
|
||||
const { iAmRecorder, iAmSipGateway } = state['features/base/config'];
|
||||
|
||||
if (!iAmRecorder && !iAmSipGateway && !jwt && isVpaasMeeting(state)) {
|
||||
jwt = await getJaasJWT(state);
|
||||
APP.store.dispatch(setJWT(jwt));
|
||||
}
|
||||
|
||||
// Use Websocket URL for the web app if configured. Note that there is no 'isWeb' check, because there's assumption
|
||||
// that this code executes only on web browsers/electron. This needs to be changed when mobile and web are unified.
|
||||
|
||||
@@ -32,6 +32,18 @@
|
||||
.dropdown-menu div[style*="transform"] {
|
||||
outline: 1px solid #455166;
|
||||
}
|
||||
.dropdown-menu button:not(:active):not(:hover) > span {
|
||||
color: #B8C7E0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Override @atlaskit/tab styling when in a modal because the
|
||||
* tab text color clash with the modal backgrounds.
|
||||
*/
|
||||
div[role="tablist"] > div:not([data-selected]):not(:hover),
|
||||
label > div > span {
|
||||
color: #B8C7E0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,12 +100,18 @@
|
||||
}
|
||||
|
||||
.audio-preview > div:nth-child(2),
|
||||
.video-preview > div:nth-child(2) {
|
||||
.video-preview > div:nth-child(2),
|
||||
.reactions-menu-popup > div:nth-child(2) {
|
||||
margin-bottom: 4px;
|
||||
outline: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.reactions-menu-popup > div:nth-child(2) {
|
||||
margin-bottom: 6px;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* The following selectors keep the chat modal full-size anywhere between 100px
|
||||
* and 580px for desktop or 680px for mobile.
|
||||
|
||||
@@ -9,6 +9,11 @@
|
||||
max-height: 456px;
|
||||
overflow: auto;
|
||||
width: 300px;
|
||||
&-ul {
|
||||
margin:0;
|
||||
padding:0;
|
||||
list-style-type: none;
|
||||
}
|
||||
}
|
||||
|
||||
&-header {
|
||||
@@ -64,7 +69,13 @@
|
||||
&-speaker {
|
||||
position: relative;
|
||||
|
||||
&:hover {
|
||||
&-ul {
|
||||
margin:0;
|
||||
padding:0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
&:hover, &:focus-within, &:focus {
|
||||
.audio-preview-entry {
|
||||
background: #36383C;
|
||||
margin-left: 0;
|
||||
@@ -81,7 +92,7 @@
|
||||
}
|
||||
|
||||
.audio-preview-entry-text {
|
||||
max-width: 196px;
|
||||
max-width: 178px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,7 +101,7 @@
|
||||
}
|
||||
|
||||
.audio-preview-entry-text {
|
||||
max-width: 256px;
|
||||
max-width: 238px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,8 +161,9 @@
|
||||
color: #1C2025;
|
||||
cursor: pointer;
|
||||
font-weight: 600;
|
||||
font-size: 0.8rem;
|
||||
line-height: 24px;
|
||||
padding: 2px 16px;
|
||||
padding: 2px 8px;
|
||||
position: absolute;
|
||||
right: 16px;
|
||||
top: 5px;
|
||||
@@ -162,4 +174,10 @@
|
||||
right: 16px;
|
||||
top: 14px;
|
||||
}
|
||||
|
||||
// Override @atlaskit/InlineDialog container which is made with styled components
|
||||
& > div:nth-child(2) {
|
||||
outline: none;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -219,8 +219,9 @@ abbr {
|
||||
}
|
||||
|
||||
a {
|
||||
color: #3572b0;
|
||||
color: #44A5FF;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
a:focus,
|
||||
a:hover,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
.avatar {
|
||||
background-color: #AAA;
|
||||
border-radius: 50%;
|
||||
color: rgba(255, 255, 255, 0.6);
|
||||
color: rgba(255, 255, 255, 1);
|
||||
font-weight: 100;
|
||||
object-fit: cover;
|
||||
|
||||
@@ -25,10 +25,6 @@
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.defaultAvatar {
|
||||
opacity: 0.6
|
||||
}
|
||||
|
||||
.avatar-badge {
|
||||
position: relative;
|
||||
|
||||
|
||||
@@ -99,18 +99,19 @@
|
||||
div {
|
||||
svg {
|
||||
cursor: pointer;
|
||||
fill: white
|
||||
fill: white;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.chat-header {
|
||||
height: 70px;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
justify-content: space-between;
|
||||
padding: 16px;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
@@ -132,6 +133,7 @@
|
||||
.send-button {
|
||||
background: #1B67EC;
|
||||
cursor: pointer;
|
||||
margin-left: 0.3rem;
|
||||
|
||||
@media (hover: hover) and (pointer: fine) {
|
||||
&:hover {
|
||||
@@ -188,8 +190,9 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 40px;
|
||||
width: 40px;
|
||||
height: 38px;
|
||||
width: 38px;
|
||||
margin: 2px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
@@ -226,6 +229,11 @@
|
||||
border: 0px none;
|
||||
box-shadow: none;
|
||||
}
|
||||
#usermsg:focus,
|
||||
#usermsg:active {
|
||||
border-bottom: 1px solid white;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
|
||||
#nickname {
|
||||
text-align: center;
|
||||
@@ -234,6 +242,16 @@
|
||||
margin: auto 0;
|
||||
padding: 0 16px;
|
||||
|
||||
#nickname-title {
|
||||
margin-bottom: 5px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
label[for="nickinput"] {
|
||||
> div > span {
|
||||
color: #B8C7E0;
|
||||
}
|
||||
}
|
||||
input {
|
||||
height: 40px;
|
||||
}
|
||||
@@ -254,7 +272,7 @@
|
||||
cursor: pointer;
|
||||
|
||||
&.disabled {
|
||||
color: #757575;
|
||||
color: #AFB6BC;
|
||||
background: #11336E;
|
||||
pointer-events: none;
|
||||
}
|
||||
@@ -301,6 +319,19 @@
|
||||
}
|
||||
}
|
||||
|
||||
.sr-only {
|
||||
border: 0 !important;
|
||||
clip: rect(1px, 1px, 1px, 1px) !important;
|
||||
clip-path: inset(50%) !important;
|
||||
height: 1px !important;
|
||||
margin: -1px !important;
|
||||
overflow: hidden !important;
|
||||
padding: 0 !important;
|
||||
position: absolute !important;
|
||||
width: 1px !important;
|
||||
white-space: nowrap !important;
|
||||
}
|
||||
|
||||
.chatmessage {
|
||||
background-color: $chatRemoteMessageBackgroundColor;
|
||||
border-radius: 0px 6px 6px 6px;
|
||||
@@ -350,10 +381,6 @@
|
||||
color: #757575;
|
||||
}
|
||||
|
||||
.smiley {
|
||||
font-size: 14pt;
|
||||
}
|
||||
|
||||
#smileys {
|
||||
font-size: 20pt;
|
||||
margin: auto;
|
||||
@@ -382,7 +409,7 @@
|
||||
box-sizing: border-box;
|
||||
background-color: rgba(0, 0, 0, .6) !important;
|
||||
height: auto;
|
||||
max-height: 0;
|
||||
display: none;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
width: calc(#{$sidebarWidth} - 32px);
|
||||
@@ -398,6 +425,7 @@
|
||||
transition: max-height 0.3s;
|
||||
|
||||
&.show-smileys {
|
||||
display: flex;
|
||||
max-height: 500%;
|
||||
}
|
||||
|
||||
@@ -413,7 +441,7 @@
|
||||
|
||||
.smileyContainer {
|
||||
width: 40px;
|
||||
height: 36px;
|
||||
height: 40px;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
}
|
||||
@@ -509,7 +537,7 @@
|
||||
|
||||
&-header {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin: 16px;
|
||||
width: calc(100% - 32px);
|
||||
|
||||
@@ -45,6 +45,10 @@
|
||||
@extend .connection-info__icon;
|
||||
}
|
||||
|
||||
&__mobile {
|
||||
margin: 15px;
|
||||
}
|
||||
|
||||
.connection-actions {
|
||||
margin: 10px auto;
|
||||
text-align: center;
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
line-height: 13px;
|
||||
margin: 0 auto;
|
||||
width: 320px;
|
||||
|
||||
@include adjust-for-max-width(320px, 8px);
|
||||
}
|
||||
|
||||
&-header {
|
||||
|
||||
@@ -4,17 +4,28 @@
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: $drawerZ;
|
||||
border-radius: 16px 16px 0 0;
|
||||
}
|
||||
|
||||
.drawer-portal::after {
|
||||
content: '';
|
||||
background-color: $participantsPaneBgColor;
|
||||
margin-bottom: env(safe-area-inset-bottom, 0);
|
||||
}
|
||||
|
||||
.drawer-menu-container {
|
||||
height: 100vh;
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
}
|
||||
|
||||
.drawer-menu {
|
||||
max-height: 50vh;
|
||||
max-height: calc(80vh - 64px);
|
||||
background: #242528;
|
||||
border-radius: 16px 16px 0 0;
|
||||
overflow-y: auto;
|
||||
|
||||
&.expanded {
|
||||
max-height: 80vh;
|
||||
}
|
||||
overflow-y: hidden;
|
||||
margin-bottom: env(safe-area-inset-bottom, 0);
|
||||
width: 100%;
|
||||
|
||||
.drawer-toggle {
|
||||
display: flex;
|
||||
@@ -42,6 +53,8 @@
|
||||
font-size: 1.2em;
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
height: calc(80vh - 144px - 64px);
|
||||
overflow-y: auto;
|
||||
|
||||
.overflow-menu-item {
|
||||
box-sizing: border-box;
|
||||
|
||||
@@ -8,7 +8,10 @@
|
||||
|
||||
.read-more {
|
||||
cursor: pointer;
|
||||
opacity: .7;
|
||||
opacity: .9;
|
||||
color: #fff;
|
||||
font-size: 0.8rem;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -38,17 +38,17 @@
|
||||
}
|
||||
}
|
||||
|
||||
#knocking-participant-list {
|
||||
#notification-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;
|
||||
max-height: 600px;
|
||||
overflow: hidden;
|
||||
overflow-y: auto;
|
||||
position: fixed;
|
||||
top: 20;
|
||||
transition: top 1s ease;
|
||||
top: 30px;
|
||||
z-index: $toolbarZ + 1;
|
||||
|
||||
&.toolbox-visible {
|
||||
@@ -94,8 +94,6 @@
|
||||
|
||||
.knocking-participants-container {
|
||||
list-style-type: none;
|
||||
max-height: 600px;
|
||||
overflow-y: scroll;
|
||||
padding: 0 15px 15px 15px;
|
||||
}
|
||||
|
||||
|
||||
@@ -125,7 +125,8 @@
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
&.with-click-handler:hover {
|
||||
&.with-click-handler:hover,
|
||||
&.with-click-handler:focus {
|
||||
background-color: #c7ddff;
|
||||
}
|
||||
|
||||
@@ -158,7 +159,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
.item:hover {
|
||||
.item:hover, .item:focus, .item:focus-within {
|
||||
.delete-meeting {
|
||||
display: block;
|
||||
}
|
||||
|
||||
@@ -206,3 +206,13 @@
|
||||
bottom: 0;
|
||||
width: 35%;
|
||||
}
|
||||
|
||||
/**
|
||||
* Resizes elements width to fill the whole screen width with some margin
|
||||
*/
|
||||
@mixin adjust-for-max-width($width, $margin) {
|
||||
@media (max-width: $width) {
|
||||
margin: 0 $margin;
|
||||
width: $width - 2 * $margin;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,15 @@
|
||||
&-input-area {
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
|
||||
&-label {
|
||||
display: block;
|
||||
margin-bottom: 5px;
|
||||
color: #ffffff;
|
||||
font-weight: 300;
|
||||
font-size: 15px;
|
||||
line-height: 24px;
|
||||
}
|
||||
}
|
||||
|
||||
&-title {
|
||||
@@ -74,10 +83,10 @@
|
||||
z-index: 1;
|
||||
|
||||
&--warning {
|
||||
background: rgba(241, 173, 51, 0.7)
|
||||
background: rgba(241, 173, 51, 1);
|
||||
}
|
||||
&--ok {
|
||||
background: rgba(49, 183, 106, 0.7);
|
||||
background: rgba(49, 183, 106, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -92,6 +101,8 @@
|
||||
|
||||
&-error-desc {
|
||||
margin-right: 4px;
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.settings-button-container {
|
||||
@@ -102,6 +113,8 @@
|
||||
&-dropdown-btns {
|
||||
width: 320px;
|
||||
padding: 8px 0;
|
||||
|
||||
@include adjust-for-max-width(320px, 8px);
|
||||
}
|
||||
|
||||
&-dropdown-btn {
|
||||
@@ -129,6 +142,8 @@
|
||||
}
|
||||
|
||||
&-dropdown-container {
|
||||
margin-top: 16px;
|
||||
|
||||
& > div:nth-child(2) {
|
||||
background: #fff;
|
||||
padding: 0;
|
||||
|
||||
@@ -30,16 +30,18 @@
|
||||
|
||||
.action-btn {
|
||||
border-radius: 3px;
|
||||
box-sizing: border-box;
|
||||
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;
|
||||
width: 320px;
|
||||
|
||||
@include adjust-for-max-width(320px, 8px);
|
||||
|
||||
&.primary {
|
||||
background: #0376DA;
|
||||
@@ -113,7 +115,7 @@
|
||||
cursor: pointer;
|
||||
color: #fff;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-direction: column;
|
||||
font-size: 15px;
|
||||
font-weight: 300;
|
||||
justify-content: center;
|
||||
@@ -139,6 +141,9 @@
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
.copy-button{
|
||||
width: 298px;
|
||||
}
|
||||
|
||||
.copy-meeting-text {
|
||||
width: 266px;
|
||||
@@ -172,12 +177,14 @@
|
||||
text-align: center;
|
||||
width: 320px;
|
||||
|
||||
@include adjust-for-max-width(320px, 8px);
|
||||
|
||||
&.error {
|
||||
box-shadow: 0px 0px 4px 3px rgba(225, 45, 45, 0.4);
|
||||
}
|
||||
|
||||
&.focused {
|
||||
box-shadow: 0px 0px 4px 3px #0376DA;
|
||||
box-shadow: 0px 0px 1px 1.5px black, 0px 0px 1.3px 4px white;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -243,12 +250,17 @@
|
||||
transition: background 0.16s ease-out;
|
||||
width: 320px;
|
||||
|
||||
@include adjust-for-max-width(320px, 8px);
|
||||
@include flex-centered();
|
||||
|
||||
svg {
|
||||
fill: transparent;
|
||||
}
|
||||
|
||||
label {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
|
||||
|
||||
189
css/_reactions-menu.scss
Normal file
189
css/_reactions-menu.scss
Normal file
@@ -0,0 +1,189 @@
|
||||
@use 'sass:math';
|
||||
|
||||
.reactions-menu {
|
||||
width: 280px;
|
||||
background: #292929;
|
||||
box-shadow: 0px 3px 16px rgba(0, 0, 0, 0.6), 0px 0px 4px 1px rgba(0, 0, 0, 0.25);
|
||||
border-radius: 3px;
|
||||
padding: 16px;
|
||||
|
||||
&.overflow {
|
||||
width: auto;
|
||||
padding-bottom: max(env(safe-area-inset-bottom, 0), 16px);
|
||||
background-color: #141414;
|
||||
box-shadow: none;
|
||||
border-radius: 0;
|
||||
position: relative;
|
||||
|
||||
.toolbox-icon {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
|
||||
span.emoji {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
}
|
||||
}
|
||||
|
||||
.reactions-row {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-around;
|
||||
|
||||
.toolbox-button {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.toolbox-icon {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 6px;
|
||||
|
||||
span.emoji {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
font-size: 22px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
|
||||
.reactions-row {
|
||||
.toolbox-button {
|
||||
margin-right: 8px;
|
||||
touch-action: manipulation;
|
||||
}
|
||||
|
||||
.toolbox-button:last-of-type {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.raise-hand-row {
|
||||
margin-top: 16px;
|
||||
|
||||
.toolbox-button {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.toolbox-icon {
|
||||
width: 100%;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
|
||||
span.text {
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
line-height: 24px;
|
||||
margin-left: 8px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.reactions-animations-container {
|
||||
position: absolute;
|
||||
width: 20%;
|
||||
bottom: 0;
|
||||
left: 40%;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
.reactions-menu-popup-container,
|
||||
.reactions-menu-popup {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
$reactionCount: 20;
|
||||
|
||||
@function random($min, $max) {
|
||||
@return math.random() * ($max - $min) + $min;
|
||||
}
|
||||
|
||||
.reaction-emoji {
|
||||
position: absolute;
|
||||
font-size: 24px;
|
||||
line-height: 32px;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
top: 0;
|
||||
left: 20px;
|
||||
opacity: 0;
|
||||
z-index: 1;
|
||||
|
||||
&.reaction-0 {
|
||||
animation: flowToRight 5s forwards ease-in-out;
|
||||
}
|
||||
|
||||
@for $i from 1 through $reactionCount {
|
||||
&.reaction-#{$i} {
|
||||
animation: animation-#{$i} 5s forwards ease-in-out;
|
||||
top: #{random(-40, 10)}px;
|
||||
left: #{random(0, 30)}px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes flowToRight {
|
||||
0% {
|
||||
transform: translate(0px, 0px) scale(0.6);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
70% {
|
||||
transform: translate(40px, -70vh) scale(1.5);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
75% {
|
||||
transform: translate(40px, -70vh) scale(1.5);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: translate(140px, -50vh) scale(1);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin animation-list {
|
||||
@for $i from 1 through $reactionCount {
|
||||
$topX: random(-100, 100);
|
||||
$topY: random(65, 75);
|
||||
$bottomX: random(150, 200);
|
||||
$bottomY: random(40, 50);
|
||||
|
||||
@if $topX < 0 {
|
||||
$bottomX: -$bottomX;
|
||||
}
|
||||
|
||||
@keyframes animation-#{$i} {
|
||||
0% {
|
||||
transform: translate(0, 0) scale(0.6);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
70% {
|
||||
transform: translate(#{$topX}px, -#{$topY}vh) scale(1.5);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
75% {
|
||||
transform: translate(#{$topX}px, -#{$topY}vh) scale(1.5);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: translate(#{$bottomX}px, -#{$bottomY}vh) scale(1);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include animation-list;
|
||||
@@ -105,6 +105,7 @@
|
||||
|
||||
.helper-link {
|
||||
cursor: pointer;
|
||||
font-weight: bold;
|
||||
display: inline-block;
|
||||
flex-shrink: 0;
|
||||
margin-left: auto;
|
||||
|
||||
@@ -9,8 +9,31 @@
|
||||
z-index: $zindex3;
|
||||
|
||||
&.visible {
|
||||
top: 0px;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
&.recording {
|
||||
top: 0;
|
||||
|
||||
.subject-details-container {
|
||||
opacity: 0;
|
||||
transition: opacity .3s ease-in;
|
||||
}
|
||||
|
||||
.subject-info-container .show-always {
|
||||
transition: margin-left .3s ease-in;
|
||||
}
|
||||
|
||||
&.visible {
|
||||
.subject-details-container {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.subject-details-container {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.subject-info-container {
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
margin-bottom: 16px;
|
||||
position: relative;
|
||||
z-index: $toolbarZ;
|
||||
pointer-events: none;
|
||||
|
||||
.button-group-center,
|
||||
.button-group-left,
|
||||
@@ -103,15 +104,24 @@
|
||||
flex-direction: column;
|
||||
margin: 0 auto;
|
||||
max-width: 100%;
|
||||
pointer-events: all;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.toolbox-content-wrapper::after {
|
||||
content: '';
|
||||
background: $newToolbarBackgroundColor;
|
||||
padding-bottom: env(safe-area-inset-bottom, 0);
|
||||
}
|
||||
|
||||
.toolbox-content-items {
|
||||
background: $newToolbarBackgroundColor;
|
||||
box-shadow: 0px 2px 8px 4px rgba(0, 0, 0, 0.25), 0px 0px 0px 1px rgba(0, 0, 0, 0.15);
|
||||
border-radius: 6px;
|
||||
margin: 0 auto;
|
||||
padding: 6px;
|
||||
text-align: center;
|
||||
pointer-events: all;
|
||||
box-shadow: 0px 2px 8px 4px rgba(0, 0, 0, 0.25), 0px 0px 0px 1px rgba(0, 0, 0, 0.15);
|
||||
|
||||
>div {
|
||||
margin-left: 8px;
|
||||
@@ -275,6 +285,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
.profile-button-avatar {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
/**
|
||||
* START of fade in animation for main toolbar
|
||||
*/
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
z-index: $subtitlesZ;
|
||||
|
||||
&.lifted {
|
||||
// Lift subtitle above toolbar+invite box.
|
||||
bottom: $newToolbarSize + 112px + 40px;
|
||||
// Lift subtitle above toolbar+dominant speaker box.
|
||||
bottom: $newToolbarSize + 36px + 40px;
|
||||
}
|
||||
|
||||
span {
|
||||
|
||||
@@ -46,6 +46,7 @@ $menuBG:#242528;
|
||||
$newToolbarFontSize: 24px;
|
||||
$newToolbarHangupFontSize: 32px;
|
||||
$newToolbarSize: 48px;
|
||||
$newToolbarSizeMobile: 60px;
|
||||
$newToolbarSizeWithPadding: calc(#{$newToolbarSize} + 24px);
|
||||
$toolbarTitleFontSize: 19px;
|
||||
$overflowMenuItemColor: #fff;
|
||||
@@ -115,7 +116,6 @@ $zindex2: 2;
|
||||
$zindex3: 3;
|
||||
$toolbarBackgroundZ: 4;
|
||||
$labelsZ: 5;
|
||||
$filmstripVideosZ: 6;
|
||||
$subtitlesZ: 7;
|
||||
$popoverZ: 8;
|
||||
$zindex10: 10;
|
||||
@@ -130,6 +130,9 @@ $dropdownMaskZ: 900;
|
||||
$dropdownZ: 901;
|
||||
$centeredVideoLabelZ: 1010;
|
||||
$overlayZ: 1016;
|
||||
// Place filmstrip videos over toolbar in order
|
||||
// to make connection info visible.
|
||||
$filmstripVideosZ: $toolbarZ + 1;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -79,4 +79,8 @@
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
// Override @atlaskit/InlineDialog container which is made with styled components
|
||||
& > div:nth-child(2) {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -240,6 +240,15 @@
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
#sharedVideo video {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#sharedVideo.disable-pointer {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
#sharedVideo,
|
||||
#etherpad,
|
||||
#localVideoWrapper video,
|
||||
@@ -419,7 +428,7 @@
|
||||
right: 0;
|
||||
z-index: $zindex2;
|
||||
width: 18px;
|
||||
height: 13px;
|
||||
height: 18px;
|
||||
color: #FFF;
|
||||
font-size: 10pt;
|
||||
margin-right: $remoteVideoMenuIconMargin;
|
||||
|
||||
@@ -122,11 +122,11 @@ body.welcome-page {
|
||||
#moderated-meetings {
|
||||
max-width: calc(100% - 40px);
|
||||
padding: 16px 0 39px 0;
|
||||
margin: $welcomePageEnterRoomMargin;
|
||||
width: $welcomePageEnterRoomWidth;
|
||||
|
||||
p {
|
||||
color: $welcomePageDescriptionColor;
|
||||
float: left;
|
||||
text-align: $welcomePageHeaderTextAlign;
|
||||
|
||||
a {
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 8px 8px 8px 16px;
|
||||
margin-top: 8px;
|
||||
margin-top: 5px;
|
||||
width: calc(100% - 24px);
|
||||
height: 24px;
|
||||
|
||||
|
||||
@@ -9,10 +9,10 @@ input[type=range]{
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable the default focus styles for webkit range inputs (sliders).
|
||||
* Show focus for keyboard accessibility.
|
||||
*/
|
||||
input[type=range]:focus {
|
||||
outline: none;
|
||||
outline: 1px solid white !important;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: none;
|
||||
outline: none;
|
||||
|
||||
-webkit-appearance: none;
|
||||
|
||||
|
||||
@@ -33,18 +33,18 @@
|
||||
}
|
||||
|
||||
&__videos {
|
||||
@extend %align-right;
|
||||
position:relative;
|
||||
padding: 0;
|
||||
/* The filmstrip should not be covered by the left toolbar. */
|
||||
bottom: 0;
|
||||
width:auto;
|
||||
overflow: visible !important;
|
||||
|
||||
&#remoteVideos {
|
||||
border: $thumbnailsBorder solid transparent;
|
||||
transition: bottom 2s;
|
||||
flex-grow: 1;
|
||||
display: flex;
|
||||
flex-direction: row-reverse;
|
||||
@include minHWAutoFix()
|
||||
}
|
||||
|
||||
@@ -60,41 +60,25 @@
|
||||
&.hidden {
|
||||
bottom: calc(-196px - #{$newToolbarSizeWithPadding});
|
||||
}
|
||||
|
||||
.remote-videos-container {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
.remote-videos-container {
|
||||
transition: opacity 1s;
|
||||
.remote-videos {
|
||||
& > div {
|
||||
transition: opacity 1s;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
&.is-not-overflowing > div {
|
||||
right: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
&.hide-videos {
|
||||
.remote-videos-container {
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
|
||||
#filmstripRemoteVideos {
|
||||
@include minHWAutoFix();
|
||||
|
||||
display: flex;
|
||||
flex: 1;
|
||||
width: auto;
|
||||
justify-content: flex-end;
|
||||
flex-direction: row;
|
||||
|
||||
#filmstripRemoteVideosContainer {
|
||||
flex-direction: row-reverse;
|
||||
/**
|
||||
* Add padding as a hack for Firefox not to show scrollbars when
|
||||
* unnecessary.
|
||||
*/
|
||||
padding: 1px 0;
|
||||
overflow-y: hidden;
|
||||
overflow-x: scroll;
|
||||
.remote-videos {
|
||||
& > div {
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,25 +87,3 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Workarounds for Edge and Firefox not handling scrolling properly with
|
||||
* flex-direction: row-reverse.
|
||||
*/
|
||||
@mixin undoRowReverseVideos() {
|
||||
.horizontal-filmstrip {
|
||||
#remoteVideos #filmstripRemoteVideos #filmstripRemoteVideosContainer {
|
||||
flex-direction: row;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Firefox detection hack **/
|
||||
@-moz-document url-prefix() {
|
||||
@include undoRowReverseVideos();
|
||||
}
|
||||
|
||||
/** Edge detection hack **/
|
||||
@supports (-ms-ime-align:auto) {
|
||||
@include undoRowReverseVideos();
|
||||
}
|
||||
|
||||
@@ -7,16 +7,14 @@
|
||||
* see.
|
||||
*/
|
||||
.active-speaker {
|
||||
box-shadow: 0 0 5px 3px $videoThumbnailSelected
|
||||
box-shadow: 0px 0px 1px 1.5px black, 0px 0px 1.3px 4px $videoThumbnailSelected;
|
||||
}
|
||||
|
||||
#filmstripRemoteVideos {
|
||||
.remote-videos {
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.filmstrip__videos .videocontainer {
|
||||
@@ -34,6 +32,10 @@
|
||||
*/
|
||||
height: 100% !important;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
transition: margin-bottom .3s ease-in;
|
||||
}
|
||||
|
||||
.filmstrip {
|
||||
@@ -50,6 +52,22 @@
|
||||
&.shift-right {
|
||||
margin-left: $sidebarWidth;
|
||||
width: calc(100% - #{$sidebarWidth});
|
||||
|
||||
.remote-videos {
|
||||
width: calc(100vw - #{$sidebarWidth});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.collapse {
|
||||
#remoteVideos {
|
||||
height: calc(100% - #{$newToolbarSizeMobile}) !important;
|
||||
margin-bottom: $newToolbarSizeMobile;
|
||||
}
|
||||
|
||||
.remote-videos {
|
||||
// !important is needed here as overflow is set via element.style in a FixedSizeGrid.
|
||||
overflow: hidden auto !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -62,63 +80,49 @@
|
||||
display: block;
|
||||
}
|
||||
|
||||
#filmstripRemoteVideos {
|
||||
.remote-videos {
|
||||
box-sizing: border-box;
|
||||
|
||||
|
||||
/**
|
||||
* Allow vertical scrolling of the thumbnails.
|
||||
*/
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* The size of the thumbnails should be set with javascript, based on
|
||||
* desired column count and window width. The rows are created using flex
|
||||
* and allowing the thumbnails to wrap.
|
||||
*/
|
||||
#filmstripRemoteVideosContainer {
|
||||
align-content: center;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-shrink: 0;
|
||||
margin-top: auto;
|
||||
margin-bottom: auto;
|
||||
justify-content: center;
|
||||
|
||||
.videocontainer {
|
||||
border: 0;
|
||||
* The size of the thumbnails should be set with javascript, based on
|
||||
* desired column count and window width. The rows are created using flex
|
||||
* and allowing the thumbnails to wrap.
|
||||
*/
|
||||
& > div {
|
||||
align-content: center;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
display: block;
|
||||
margin: 2px;
|
||||
}
|
||||
display: flex;
|
||||
margin-top: auto;
|
||||
margin-bottom: auto;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
|
||||
video {
|
||||
object-fit: contain;
|
||||
}
|
||||
.videocontainer {
|
||||
border: 0;
|
||||
box-sizing: border-box;
|
||||
display: block;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
/**
|
||||
* Max-width corresponding to the ASPECT_RATIO_BREAKPOINT from features/filmstrip/constants.
|
||||
*/
|
||||
@media only screen and (max-width: 500px) {
|
||||
video {
|
||||
object-fit: cover;
|
||||
object-fit: contain;
|
||||
}
|
||||
|
||||
/**
|
||||
* Max-width corresponding to the ASPECT_RATIO_BREAKPOINT from features/filmstrip/constants.
|
||||
*/
|
||||
@media only screen and (max-width: 500px) {
|
||||
video {
|
||||
object-fit: cover;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.has-overflow#filmstripRemoteVideosContainer {
|
||||
align-content: baseline;
|
||||
}
|
||||
|
||||
.has-overflow .videocontainer {
|
||||
align-self: baseline;
|
||||
}
|
||||
}
|
||||
|
||||
.shift-right #filmstripRemoteVideosContainer {
|
||||
.shift-right .remote-videos > div {
|
||||
/**
|
||||
* Max-width corresponding to the ASPECT_RATIO_BREAKPOINT from features/filmstrip/constants,
|
||||
* from which we subtract the chat size.
|
||||
@@ -129,3 +133,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.indicator-icon-container {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
.vertical-filmstrip .filmstrip {
|
||||
&.hide-videos {
|
||||
.remote-videos-container {
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
.remote-videos {
|
||||
& > div {
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +28,7 @@
|
||||
flex-direction: column-reverse;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
padding: ($desktopAppDragBarHeight - 5px) 5px 10px;
|
||||
padding: ($desktopAppDragBarHeight - 5px) 5px calc(env(safe-area-inset-bottom, 0) + 10px);
|
||||
/**
|
||||
* fixed positioning is necessary for remote menus and tooltips to pop
|
||||
* out of the scrolling filmstrip. AtlasKit dialogs and tooltips use
|
||||
@@ -39,10 +41,6 @@
|
||||
right: 0;
|
||||
z-index: $filmstripVideosZ;
|
||||
|
||||
&.reduce-height {
|
||||
height: calc(100% - #{$newToolbarSizeWithPadding});
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide videos by making them slight to the right.
|
||||
*/
|
||||
@@ -98,33 +96,10 @@
|
||||
* filmstrip from overlapping the left edge of the screen.
|
||||
*/
|
||||
#filmstripLocalVideo,
|
||||
#filmstripRemoteVideos {
|
||||
.remote-videos {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#filmstripRemoteVideos {
|
||||
@include minHWAutoFix();
|
||||
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: column-reverse;
|
||||
height: auto;
|
||||
overflow-x: hidden;
|
||||
overflow-y: scroll;
|
||||
|
||||
#filmstripRemoteVideosContainer {
|
||||
@include minHWAutoFix();
|
||||
flex-direction: column-reverse;
|
||||
overflow: visible;
|
||||
width: calc(100% - 8px); // 8px for margin + border of the thumbnails
|
||||
|
||||
.videocontainer {
|
||||
height: 0px;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#remoteVideos {
|
||||
@include minHWAutoFix();
|
||||
|
||||
@@ -132,56 +107,21 @@
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.remote-videos-container {
|
||||
&.reduce-height {
|
||||
height: calc(100% - calc(#{$newToolbarSizeWithPadding} + #{$scrollHeight}));
|
||||
}
|
||||
|
||||
.remote-videos {
|
||||
display: flex;
|
||||
transition: opacity 1s;
|
||||
}
|
||||
transition: height .3s ease-in;
|
||||
|
||||
.hide-scrollbar#filmstripRemoteVideos {
|
||||
margin-right: 7px; // Scrollbar size
|
||||
&::-webkit-scrollbar {
|
||||
display: none;
|
||||
& > div {
|
||||
position: absolute;
|
||||
transition: opacity 1s;
|
||||
}
|
||||
|
||||
&.is-not-overflowing > div {
|
||||
bottom: 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Workarounds for Edge and Firefox not handling scrolling properly with
|
||||
* flex-direction: column-reverse. The remove videos in filmstrip should
|
||||
* start scrolling from the bottom of the filmstrip, but in those browsers the
|
||||
* scrolling won't happen. Per W3C spec, scrolling should happen from the
|
||||
* bottom. As such, use css hacks to get around the css issue, with the intent
|
||||
* being to remove the hacks as the spec is supported.
|
||||
*/
|
||||
@mixin undoColumnReverseVideos() {
|
||||
.vertical-filmstrip {
|
||||
#remoteVideos #filmstripRemoteVideos #filmstripRemoteVideosContainer {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* FF does not include the scroll width when calculating the size of the content. That's why we need to include
|
||||
* ourselves the width of the scroll so that the remote videos are aligned with the local one.
|
||||
*/
|
||||
@mixin filmstripSizeWithoutScroll {
|
||||
.vertical-filmstrip {
|
||||
#remoteVideos #filmstripRemoteVideos {
|
||||
#filmstripRemoteVideosContainer {
|
||||
width: calc(100% - 15px) // 8 px - margins + border of the thumbnails; 7px - for the scroll
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Firefox detection hack **/
|
||||
@-moz-document url-prefix() {
|
||||
@include undoColumnReverseVideos();
|
||||
@include filmstripSizeWithoutScroll();
|
||||
}
|
||||
|
||||
/** Edge detection hack **/
|
||||
@supports (-ms-ime-align:auto) {
|
||||
@include undoColumnReverseVideos();
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
|
||||
.local-video-menu-trigger,
|
||||
.remote-video-menu-trigger {
|
||||
margin-bottom: 7px;
|
||||
margin-bottom: 3px;
|
||||
margin-left: $remoteVideoMenuIconMargin;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,6 +41,8 @@ $flagsImagePath: "../images/";
|
||||
@import 'modals/feedback/feedback';
|
||||
@import 'modals/invite/info';
|
||||
@import 'modals/settings/settings';
|
||||
@import 'modals/screen-share/share-audio';
|
||||
@import 'modals/screen-share/share-screen-warning';
|
||||
@import 'modals/speaker_stats/speaker_stats';
|
||||
@import 'modals/video-quality/video-quality';
|
||||
@import 'modals/virtual-background/virtual-background';
|
||||
@@ -104,5 +106,7 @@ $flagsImagePath: "../images/";
|
||||
@import 'connection-status';
|
||||
@import 'drawer';
|
||||
@import 'participants-pane';
|
||||
@import 'reactions-menu';
|
||||
@import 'plan-limit';
|
||||
|
||||
/* Modules END */
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
font-size: 14px;
|
||||
|
||||
a {
|
||||
color: #2684FF;
|
||||
color: #6FB1EA;
|
||||
cursor: pointer;
|
||||
text-decoration: none;
|
||||
}
|
||||
@@ -119,7 +119,7 @@
|
||||
height: 8px;
|
||||
|
||||
.audio-input-preview-level {
|
||||
background: #4C9AFF;
|
||||
background: #75B1FF;
|
||||
border-radius: 5px;
|
||||
height: 100%;
|
||||
-webkit-transition: width .1s ease-in-out;
|
||||
@@ -129,3 +129,20 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.device-selection.video-hidden {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
|
||||
.column-selectors {
|
||||
width: 100%;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.column-video {
|
||||
order: 1;
|
||||
width: 100%;
|
||||
margin-top: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,5 +94,9 @@
|
||||
};
|
||||
|
||||
}
|
||||
.star-btn:focus,
|
||||
.star-btn:active {
|
||||
outline: 1px solid #B8C7E0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,20 +30,26 @@
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.info-password-none,
|
||||
.info-password-remote {
|
||||
opacity: 0.5;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.info-password-input {
|
||||
width: 100%;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
background-color: #0E1624;
|
||||
border-radius: 3px;
|
||||
border: 2px solid #202B3D;
|
||||
color: inherit;
|
||||
padding-left: 0;
|
||||
}
|
||||
.info-password-input:focus ,
|
||||
.info-password-input:active {
|
||||
border: 2px solid #B8C7E0;
|
||||
}
|
||||
|
||||
.info-password-local {
|
||||
user-select: text;
|
||||
|
||||
@@ -130,6 +130,7 @@
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
cursor: pointer;
|
||||
height: 24px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -141,7 +142,7 @@
|
||||
& > a {
|
||||
display: inline-block;
|
||||
height: 24px;
|
||||
width: 48px;
|
||||
min-width: 48px;
|
||||
border-radius: 3px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
|
||||
22
css/modals/screen-share/_share-audio.scss
Normal file
22
css/modals/screen-share/_share-audio.scss
Normal file
@@ -0,0 +1,22 @@
|
||||
.share-audio-dialog {
|
||||
.share-audio-animation {
|
||||
width: 100%;
|
||||
height: 90%;
|
||||
object-fit: contain;
|
||||
}
|
||||
input[type="checkbox"] + svg + span {
|
||||
color: #9FB0CC;
|
||||
}
|
||||
|
||||
.separator-line {
|
||||
margin: 24px 0 24px -20px;
|
||||
padding: 0 20px;
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
background: #5E6D7A;
|
||||
|
||||
&:last-child {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
23
css/modals/screen-share/_share-screen-warning.scss
Normal file
23
css/modals/screen-share/_share-screen-warning.scss
Normal file
@@ -0,0 +1,23 @@
|
||||
.share-screen-warn-dialog {
|
||||
font-size: 14px;
|
||||
|
||||
.separator-line {
|
||||
margin: 24px 0 24px -20px;
|
||||
padding: 0 20px;
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
background: #5E6D7A;
|
||||
|
||||
&:last-child {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.header {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.description {
|
||||
margin-top: 16px;
|
||||
}
|
||||
}
|
||||
@@ -16,12 +16,19 @@
|
||||
}
|
||||
|
||||
.mock-atlaskit-label {
|
||||
color: #56637A;
|
||||
color: #b8c7e0;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
line-height: 1.33;
|
||||
padding: 20px 0px 4px 0px;
|
||||
}
|
||||
input[type="checkbox"]:checked + svg {
|
||||
--checkbox-background-color: #6492e7;
|
||||
--checkbox-border-color: #6492e7;
|
||||
}
|
||||
input[type="checkbox"] + svg + span {
|
||||
color: #b8c7e0;
|
||||
}
|
||||
|
||||
input[type="checkbox"] + svg + span {
|
||||
color: #9FB0CC;
|
||||
@@ -29,6 +36,12 @@
|
||||
|
||||
.calendar-tab,
|
||||
.more-tab,
|
||||
.box {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.profile-edit {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
@@ -38,18 +51,24 @@
|
||||
flex: 1;
|
||||
}
|
||||
.settings-sub-pane {
|
||||
flex-grow: 1;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.settings-sub-pane .right {
|
||||
flex: 1;
|
||||
}
|
||||
.settings-sub-pane .left {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.settings-sub-pane-element {
|
||||
text-align: left;
|
||||
flex: 1;
|
||||
}
|
||||
.profile-edit-field {
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.language-settings {
|
||||
max-width: 50%;
|
||||
width: 35%;
|
||||
}
|
||||
|
||||
.calendar-tab {
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
@@ -65,4 +84,14 @@
|
||||
.sign-out-cta {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: $smallScreen) {
|
||||
.device-selection {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.more-tab {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,6 +86,7 @@
|
||||
|
||||
.video-quality-dialog-label-container.active {
|
||||
color: $videoQualityActive;
|
||||
font-weight: bold;
|
||||
|
||||
&::before {
|
||||
background: $videoQualityActive;
|
||||
|
||||
@@ -1,118 +1,109 @@
|
||||
.virtual-background-dialog {
|
||||
margin-left: -10px;
|
||||
position: relative;
|
||||
max-height: 300px;
|
||||
color: white;
|
||||
display: inline-grid;
|
||||
grid-template-columns: auto auto auto auto auto;
|
||||
column-gap: 8px;
|
||||
column-gap: 9px;
|
||||
cursor: pointer;
|
||||
.thumbnail:hover, .blur:hover, .slight-blur:hover, .virtual-background-none:hover{
|
||||
height: 56px;
|
||||
width: 103px;
|
||||
opacity: .5;
|
||||
.desktop-share:hover,
|
||||
.thumbnail:hover,
|
||||
.blur:hover,
|
||||
.slight-blur:hover,
|
||||
.virtual-background-none:hover {
|
||||
opacity: 0.5;
|
||||
border: 2px solid #99bbf3;
|
||||
@media (min-width: 432px) and (max-width: 632px) {
|
||||
height: 56px;
|
||||
width: 56px;
|
||||
@media (max-width: 632px) {
|
||||
height: 60px;
|
||||
width: 60px;
|
||||
}
|
||||
}
|
||||
.thumbnail {
|
||||
.background-option {
|
||||
margin-top: 8px;
|
||||
border-radius: 6px;
|
||||
object-fit: cover;
|
||||
height: 60px;
|
||||
width: 107px;
|
||||
text-align: center;
|
||||
justify-content: center;
|
||||
font-weight: bold;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.thumbnail {
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.thumbnail:hover ~ .delete-image-icon {
|
||||
display: block;
|
||||
}
|
||||
.thumbnail-selected {
|
||||
margin-top: 8px;
|
||||
border-radius: 6px;
|
||||
object-fit: cover;
|
||||
height: 60px;
|
||||
width: 107px;
|
||||
border: 2px solid #246FE5;
|
||||
border: 2px solid #246fe5;
|
||||
}
|
||||
.blur{
|
||||
.blur {
|
||||
box-shadow: inset 0 0 12px #000000;
|
||||
margin-top: 8px;
|
||||
background: #7E8287;
|
||||
font-weight: bold;
|
||||
height: 60px;
|
||||
width: 107px;
|
||||
border-radius: 6px;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
line-height: 60px;
|
||||
background: #7e8287;
|
||||
padding: 0 10px;
|
||||
}
|
||||
.blur-selected {
|
||||
box-shadow: inset 0 0 12px #000000;
|
||||
margin-top: 8px;
|
||||
background: #7E8287;
|
||||
font-weight: bold;
|
||||
height: 60px;
|
||||
width: 107px;
|
||||
border-radius: 6px;
|
||||
border: 2px solid #246FE5;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
line-height: 60px;
|
||||
background: #7e8287;
|
||||
border: 2px solid #246fe5;
|
||||
padding: 0 10px;
|
||||
}
|
||||
.slight-blur{
|
||||
.slight-blur {
|
||||
box-shadow: inset 0 0 12px #000000;
|
||||
margin-top: 8px;
|
||||
background: #A4A4A4;
|
||||
font-weight: bold;
|
||||
height: 60px;
|
||||
width: 107px;
|
||||
border-radius: 6px;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
line-height: 60px;
|
||||
background: #a4a4a4;
|
||||
padding: 0 10px;
|
||||
}
|
||||
.slight-blur-selected{
|
||||
.slight-blur-selected {
|
||||
box-shadow: inset 0 0 12px #000000;
|
||||
margin-top: 8px;
|
||||
background: #A4A4A4;
|
||||
font-weight: bold;
|
||||
height: 60px;
|
||||
width: 107px;
|
||||
border-radius: 6px;
|
||||
border: 2px solid #246FE5;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
line-height: 60px;
|
||||
background: #a4a4a4;
|
||||
border: 2px solid #246fe5;
|
||||
padding: 0 10px;
|
||||
}
|
||||
.virtual-background-none {
|
||||
margin-top: 8px;
|
||||
background: #525252;
|
||||
font-weight: bold;
|
||||
height: 60px;
|
||||
width: 107px;
|
||||
border-radius: 6px;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
line-height: 60px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
.none-selected {
|
||||
margin-top: 8px;
|
||||
background: #525252;
|
||||
font-weight: bold;
|
||||
height: 60px;
|
||||
width: 107px;
|
||||
border-radius: 6px;
|
||||
border: 2px solid #246FE5;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
line-height: 60px;
|
||||
border: 2px solid #246fe5;
|
||||
padding: 0 10px;
|
||||
}
|
||||
@media (min-width: 432px) and (max-width: 632px) {
|
||||
|
||||
.desktop-share {
|
||||
background: #525252;
|
||||
}
|
||||
.desktop-share-selected {
|
||||
background: #525252;
|
||||
border: 2px solid #246fe5;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
@media (max-width: 632px) {
|
||||
font-size: 1.5vw;
|
||||
.virtual-background-none, .thumbnail, .thumbnail-selected, .none-selected, .blur, .blur-selected, .slight-blur, .slight-blur-selected{
|
||||
.desktop-share,
|
||||
.virtual-background-none,
|
||||
.thumbnail,
|
||||
.blur,
|
||||
.slight-blur {
|
||||
height: 60px;
|
||||
width: 60px;
|
||||
}
|
||||
.desktop-share-selected,
|
||||
.thumbnail-selected,
|
||||
.none-selected,
|
||||
.blur-selected,
|
||||
.slight-blur-selected {
|
||||
height: 60px;
|
||||
width: 60px;
|
||||
}
|
||||
}
|
||||
@media (max-width: 360px) {
|
||||
grid-template-columns: auto auto auto;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,13 +120,14 @@
|
||||
.file-upload-btn {
|
||||
display: none;
|
||||
}
|
||||
.file-upload-label{
|
||||
.file-upload-label {
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
line-height: 20px;
|
||||
margin-left: -10px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 8px;
|
||||
color: #669AEC;
|
||||
color: #669aec;
|
||||
display: inline-flex;
|
||||
cursor: pointer;
|
||||
}
|
||||
@@ -146,28 +138,54 @@
|
||||
display: none;
|
||||
left: 96;
|
||||
bottom: 51;
|
||||
@media (min-width: 432px) and (max-width: 632px) {
|
||||
left: 51px
|
||||
@media (max-width: 632px) {
|
||||
left: 51px;
|
||||
}
|
||||
}
|
||||
|
||||
.delete-image-icon:hover {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.thumbnail-container {
|
||||
position: relative;
|
||||
&:focus-within {
|
||||
.thumbnail ~ .delete-image-icon {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.add-background{
|
||||
.add-background {
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.apply-background-btn{
|
||||
.apply-background-btn {
|
||||
margin-top: 16px;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
.video-background-preview-entry{
|
||||
.video-background-preview-entry {
|
||||
margin-left: -10px;
|
||||
height: 250px;
|
||||
width: 570px;
|
||||
margin-bottom: 8px;
|
||||
z-index: 2;
|
||||
@media (max-width: 632px) {
|
||||
max-width: 336;
|
||||
}
|
||||
}
|
||||
|
||||
.virtual-background-preview-video {
|
||||
margin-left: -10;
|
||||
border-radius: 6px;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
width: 100%;
|
||||
}
|
||||
.video-preview-loader {
|
||||
border-radius: 6px;
|
||||
background-color: transparent;
|
||||
height: 250px;
|
||||
margin-bottom: 8px;
|
||||
width: 572px;
|
||||
@@ -176,11 +194,10 @@
|
||||
@media (min-width: 432px) and (max-width: 632px) {
|
||||
width: 340px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.video-preview-loader{
|
||||
position: fixed;
|
||||
left: 50%;
|
||||
top: 35%;
|
||||
transform: translate(-50%,-35%);
|
||||
}
|
||||
.video-preview-loader svg {
|
||||
position: absolute;
|
||||
top: 40%;
|
||||
left: 45%;
|
||||
}
|
||||
|
||||
@@ -107,4 +107,4 @@ $selectActiveItemBg: darken($controlBackground, 20%);
|
||||
/**
|
||||
* TODO: Replace by themed component.
|
||||
*/
|
||||
$videoQualityActive: #4C9AFF;
|
||||
$videoQualityActive: #57A0ff;
|
||||
|
||||
23
debian/jitsi-meet-prosody.postinst
vendored
23
debian/jitsi-meet-prosody.postinst
vendored
@@ -125,11 +125,11 @@ case "$1" in
|
||||
|
||||
# Check whether prosody config has the internal muc, if not add it,
|
||||
# as we are migrating configs
|
||||
if [ -f $PROSODY_HOST_CONFIG ] && ! grep -q "internal.auth.$JVB_HOSTNAME" $PROSODY_HOST_CONFIG; then
|
||||
echo -e "\nComponent \"internal.auth.$JVB_HOSTNAME\" \"muc\"" >> $PROSODY_HOST_CONFIG
|
||||
if [ -f $PROSODY_HOST_CONFIG ] && ! grep -q "internal.$JICOFO_AUTH_DOMAIN" $PROSODY_HOST_CONFIG; then
|
||||
echo -e "\nComponent \"internal.$JICOFO_AUTH_DOMAIN\" \"muc\"" >> $PROSODY_HOST_CONFIG
|
||||
echo -e " storage = \"memory\"" >> $PROSODY_HOST_CONFIG
|
||||
echo -e " modules_enabled = { \"ping\"; }" >> $PROSODY_HOST_CONFIG
|
||||
echo -e " admins = { \"$JICOFO_AUTH_USER@auth.$JVB_HOSTNAME\", \"jvb@auth.$JVB_HOSTNAME\" }" >> $PROSODY_HOST_CONFIG
|
||||
echo -e " admins = { \"$JICOFO_AUTH_USER@$JICOFO_AUTH_DOMAIN\", \"jvb@$JICOFO_AUTH_DOMAIN\" }" >> $PROSODY_HOST_CONFIG
|
||||
fi
|
||||
|
||||
# Convert the old focus component config to the new one.
|
||||
@@ -140,7 +140,7 @@ case "$1" in
|
||||
# Component "focus.jitmeet.example.com" "client_proxy"
|
||||
# target_address = "focus@auth.jitmeet.example.com"
|
||||
if grep -q "Component \"focus.$JVB_HOSTNAME\"" $PROSODY_HOST_CONFIG && ! grep "Component \"focus.$JVB_HOSTNAME\" \"client_proxy\"" $PROSODY_HOST_CONFIG ;then
|
||||
sed -i "s/Component \"focus.$JVB_HOSTNAME\"/Component \"focus.$JVB_HOSTNAME\" \"client_proxy\"\n target_address = \"$JICOFO_AUTH_USER@auth.$JVB_HOSTNAME\"/g" $PROSODY_HOST_CONFIG
|
||||
sed -i "s/Component \"focus.$JVB_HOSTNAME\"/Component \"focus.$JVB_HOSTNAME\" \"client_proxy\"\n target_address = \"$JICOFO_AUTH_USER@$JICOFO_AUTH_DOMAIN\"/g" $PROSODY_HOST_CONFIG
|
||||
PROSODY_CONFIG_PRESENT="false"
|
||||
fi
|
||||
|
||||
@@ -151,8 +151,21 @@ case "$1" in
|
||||
PROSODY_CONFIG_PRESENT="false"
|
||||
fi
|
||||
|
||||
# Updates main muc component
|
||||
MAIN_MUC_PATTERN="Component \"conference.$JVB_HOSTNAME\" \"muc\""
|
||||
if ! grep -A 2 -- "${MAIN_MUC_PATTERN}" $PROSODY_HOST_CONFIG | grep -q "restrict_room_creation" ;then
|
||||
sed -i "s/${MAIN_MUC_PATTERN}/${MAIN_MUC_PATTERN}\n restrict_room_creation = true/g" $PROSODY_HOST_CONFIG
|
||||
PROSODY_CONFIG_PRESENT="false"
|
||||
fi
|
||||
|
||||
if ! grep -q -- 'unlimited_jids' $PROSODY_HOST_CONFIG ;then
|
||||
sed -i "1s/^/unlimited_jids = { \"$JICOFO_AUTH_USER@$JICOFO_AUTH_DOMAIN\", \"jvb@$JICOFO_AUTH_DOMAIN\" }\n/" $PROSODY_HOST_CONFIG
|
||||
sed -i "s/VirtualHost \"$JICOFO_AUTH_DOMAIN\"/VirtualHost \"$JICOFO_AUTH_DOMAIN\"\n modules_enabled = { \"limits_exception\"; }/g" $PROSODY_HOST_CONFIG
|
||||
PROSODY_CONFIG_PRESENT="false"
|
||||
fi
|
||||
|
||||
# Make sure the focus@auth user's roster includes the proxy component (this is idempotent)
|
||||
prosodyctl mod_roster_command subscribe focus.$JVB_HOSTNAME $JICOFO_AUTH_USER@auth.$JVB_HOSTNAME
|
||||
prosodyctl mod_roster_command subscribe focus.$JVB_HOSTNAME $JICOFO_AUTH_USER@$JICOFO_AUTH_DOMAIN
|
||||
|
||||
if [ ! -f /var/lib/prosody/$JVB_HOSTNAME.crt ]; then
|
||||
# prosodyctl takes care for the permissions
|
||||
|
||||
@@ -20,6 +20,11 @@ ssl = {
|
||||
ciphers = "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"
|
||||
}
|
||||
|
||||
unlimited_jids = {
|
||||
"focusUser@auth.jitmeet.example.com",
|
||||
"jvb@auth.jitmeet.example.com"
|
||||
}
|
||||
|
||||
VirtualHost "jitmeet.example.com"
|
||||
-- enabled = false -- Remove this line to enable this host
|
||||
authentication = "anonymous"
|
||||
@@ -35,6 +40,7 @@ VirtualHost "jitmeet.example.com"
|
||||
key = "/etc/prosody/certs/jitmeet.example.com.key";
|
||||
certificate = "/etc/prosody/certs/jitmeet.example.com.crt";
|
||||
}
|
||||
av_moderation_component = "avmoderation.jitmeet.example.com"
|
||||
speakerstats_component = "speakerstats.jitmeet.example.com"
|
||||
conference_duration_component = "conferenceduration.jitmeet.example.com"
|
||||
-- we need bosh
|
||||
@@ -46,6 +52,7 @@ VirtualHost "jitmeet.example.com"
|
||||
"external_services";
|
||||
"conference_duration";
|
||||
"muc_lobby_rooms";
|
||||
"av_moderation";
|
||||
}
|
||||
c2s_require_encryption = false
|
||||
lobby_muc = "lobby.jitmeet.example.com"
|
||||
@@ -53,6 +60,7 @@ VirtualHost "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"
|
||||
restrict_room_creation = true
|
||||
storage = "memory"
|
||||
modules_enabled = {
|
||||
"muc_meeting_id";
|
||||
@@ -74,6 +82,9 @@ Component "internal.auth.jitmeet.example.com" "muc"
|
||||
muc_room_default_public_jids = true
|
||||
|
||||
VirtualHost "auth.jitmeet.example.com"
|
||||
modules_enabled = {
|
||||
"limits_exception";
|
||||
}
|
||||
authentication = "internal_hashed"
|
||||
|
||||
-- Proxy to jicofo's user JID, so that it doesn't have to register as a component.
|
||||
@@ -86,6 +97,9 @@ Component "speakerstats.jitmeet.example.com" "speakerstats_component"
|
||||
Component "conferenceduration.jitmeet.example.com" "conference_duration_component"
|
||||
muc_component = "conference.jitmeet.example.com"
|
||||
|
||||
Component "avmoderation.jitmeet.example.com" "av_moderation_component"
|
||||
muc_component = "conference.jitmeet.example.com"
|
||||
|
||||
Component "lobby.jitmeet.example.com" "muc"
|
||||
storage = "memory"
|
||||
restrict_room_creation = true
|
||||
|
||||
@@ -35,6 +35,7 @@ server {
|
||||
ssl_session_tickets off;
|
||||
|
||||
add_header Strict-Transport-Security "max-age=63072000" always;
|
||||
set $prefix "";
|
||||
|
||||
ssl_certificate /etc/jitsi/meet/jitsi-meet.example.com.crt;
|
||||
ssl_certificate_key /etc/jitsi/meet/jitsi-meet.example.com.key;
|
||||
@@ -76,7 +77,7 @@ server {
|
||||
|
||||
# BOSH
|
||||
location = /http-bind {
|
||||
proxy_pass http://localhost:5280/http-bind;
|
||||
proxy_pass http://127.0.0.1:5280/http-bind?prefix=$prefix&$args;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header Host $http_host;
|
||||
}
|
||||
@@ -125,13 +126,6 @@ server {
|
||||
alias /etc/jitsi/meet/jitsi-meet.example.com-config.js;
|
||||
}
|
||||
|
||||
# Anything that didn't match above, and isn't a real file, assume it's a room name and redirect to /
|
||||
location ~ ^/([^/?&:'"]+)/(.*)$ {
|
||||
set $subdomain "$1.";
|
||||
set $subdir "$1/";
|
||||
rewrite ^/([^/?&:'"]+)/(.*)$ /$2;
|
||||
}
|
||||
|
||||
# BOSH for subdomains
|
||||
location ~ ^/([^/?&:'"]+)/http-bind {
|
||||
set $subdomain "$1.";
|
||||
@@ -149,4 +143,11 @@ server {
|
||||
|
||||
rewrite ^/(.*)$ /xmpp-websocket;
|
||||
}
|
||||
|
||||
# Anything that didn't match above, and isn't a real file, assume it's a room name and redirect to /
|
||||
location ~ ^/([^/?&:'"]+)/(.*)$ {
|
||||
set $subdomain "$1.";
|
||||
set $subdir "$1/";
|
||||
rewrite ^/([^/?&:'"]+)/(.*)$ /$2;
|
||||
}
|
||||
}
|
||||
|
||||
BIN
images/icon-cloud.png
Normal file
BIN
images/icon-cloud.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 349 B |
BIN
images/share-audio.gif
Normal file
BIN
images/share-audio.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 202 KiB |
@@ -186,10 +186,10 @@
|
||||
<!--#include virtual="static/settingsToolbarAdditionalContent.html" -->
|
||||
</head>
|
||||
<body>
|
||||
<noscript>
|
||||
<noscript aria-hidden="true">
|
||||
<div>JavaScript is disabled. </br>For this site to work you have to enable JavaScript.</div>
|
||||
</noscript>
|
||||
<!--#include virtual="body.html" -->
|
||||
<div id="react"></div>
|
||||
<div id="react" role="main"></div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -174,7 +174,7 @@ var interfaceConfig = {
|
||||
RECENT_LIST_ENABLED: true,
|
||||
REMOTE_THUMBNAIL_RATIO: 1, // 1:1
|
||||
|
||||
SETTINGS_SECTIONS: [ 'devices', 'language', 'moderator', 'profile', 'calendar' ],
|
||||
SETTINGS_SECTIONS: [ 'devices', 'language', 'moderator', 'profile', 'calendar', 'sounds' ],
|
||||
|
||||
/**
|
||||
* Specify which sharing features should be displayed. If the value is not set
|
||||
@@ -208,13 +208,7 @@ var interfaceConfig = {
|
||||
* DEPRECATED!
|
||||
* This config was moved to config.js as `toolbarButtons`.
|
||||
*/
|
||||
// TOOLBAR_BUTTONS: [
|
||||
// 'microphone', 'camera', 'closedcaptions', 'desktop', 'embedmeeting', 'fullscreen',
|
||||
// 'fodeviceselection', 'hangup', 'profile', 'chat', 'recording',
|
||||
// 'livestreaming', 'etherpad', 'sharedvideo', 'settings', 'raisehand',
|
||||
// 'videoquality', 'filmstrip', 'invite', 'feedback', 'stats', 'shortcuts',
|
||||
// 'tileview', 'select-background', 'download', 'help', 'mute-everyone', 'mute-video-everyone', 'security'
|
||||
// ],
|
||||
// TOOLBAR_BUTTONS: [],
|
||||
|
||||
TOOLBAR_TIMEOUT: 4000,
|
||||
|
||||
|
||||
@@ -58,7 +58,9 @@ target 'JitsiMeetSDK' do
|
||||
pod 'react-native-calendar-events', :path => '../node_modules/react-native-calendar-events'
|
||||
pod 'react-native-keep-awake', :path => '../node_modules/react-native-keep-awake'
|
||||
pod 'react-native-netinfo', :path => '../node_modules/@react-native-community/netinfo'
|
||||
pod 'react-native-slider', :path => '../node_modules/@react-native-community/slider'
|
||||
pod 'react-native-splash-screen', :path => '../node_modules/react-native-splash-screen'
|
||||
pod 'react-native-video', :path => '../node_modules/react-native-video/react-native-video.podspec'
|
||||
pod 'react-native-webview', :path => '../node_modules/react-native-webview'
|
||||
pod 'react-native-webrtc', :path => '../node_modules/react-native-webrtc'
|
||||
pod 'RNCAsyncStorage', :path => '../node_modules/@react-native-async-storage/async-storage'
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
PODS:
|
||||
- AppAuth (1.2.0):
|
||||
- AppAuth/Core (= 1.2.0)
|
||||
- AppAuth/ExternalUserAgent (= 1.2.0)
|
||||
- AppAuth/Core (1.2.0)
|
||||
- AppAuth/ExternalUserAgent (1.2.0)
|
||||
- AppAuth (1.4.0):
|
||||
- AppAuth/Core (= 1.4.0)
|
||||
- AppAuth/ExternalUserAgent (= 1.4.0)
|
||||
- AppAuth/Core (1.4.0)
|
||||
- AppAuth/ExternalUserAgent (1.4.0)
|
||||
- boost-for-react-native (1.63.0)
|
||||
- CocoaLumberjack (3.5.3):
|
||||
- CocoaLumberjack/Core (= 3.5.3)
|
||||
@@ -48,7 +48,7 @@ PODS:
|
||||
- GoogleUtilities/Environment (~> 6.7)
|
||||
- GoogleUtilities/Logger (~> 6.7)
|
||||
- nanopb (~> 1.30906.0)
|
||||
- FirebaseCrashlytics (4.6.1):
|
||||
- FirebaseCrashlytics (4.6.2):
|
||||
- FirebaseCore (~> 6.10)
|
||||
- FirebaseInstallations (~> 1.6)
|
||||
- GoogleDataTransport (~> 7.2)
|
||||
@@ -77,9 +77,9 @@ PODS:
|
||||
- GoogleUtilities/Network (~> 6.7)
|
||||
- "GoogleUtilities/NSData+zlib (~> 6.7)"
|
||||
- nanopb (~> 1.30906.0)
|
||||
- GoogleDataTransport (7.4.0):
|
||||
- GoogleDataTransport (7.5.1):
|
||||
- nanopb (~> 1.30906.0)
|
||||
- GoogleSignIn (5.0.1):
|
||||
- GoogleSignIn (5.0.2):
|
||||
- AppAuth (~> 1.2)
|
||||
- GTMAppAuth (~> 1.0)
|
||||
- GTMSessionFetcher/Core (~> 1.1)
|
||||
@@ -102,21 +102,17 @@ PODS:
|
||||
- GoogleUtilities/Logger
|
||||
- GoogleUtilities/UserDefaults (6.7.2):
|
||||
- GoogleUtilities/Logger
|
||||
- GTMAppAuth (1.0.0):
|
||||
- AppAuth/Core (~> 1.0)
|
||||
- GTMSessionFetcher (~> 1.1)
|
||||
- GTMSessionFetcher (1.2.2):
|
||||
- GTMSessionFetcher/Full (= 1.2.2)
|
||||
- GTMSessionFetcher/Core (1.2.2)
|
||||
- GTMSessionFetcher/Full (1.2.2):
|
||||
- GTMSessionFetcher/Core (= 1.2.2)
|
||||
- GTMAppAuth (1.2.2):
|
||||
- AppAuth/Core (~> 1.4)
|
||||
- GTMSessionFetcher/Core (~> 1.5)
|
||||
- GTMSessionFetcher/Core (1.6.1)
|
||||
- nanopb (1.30906.0):
|
||||
- nanopb/decode (= 1.30906.0)
|
||||
- nanopb/encode (= 1.30906.0)
|
||||
- nanopb/decode (1.30906.0)
|
||||
- nanopb/encode (1.30906.0)
|
||||
- ObjectiveDropboxOfficial (3.9.4)
|
||||
- PromisesObjC (1.2.10)
|
||||
- PromisesObjC (1.2.12)
|
||||
- RCTRequired (0.61.5-jitsi.2)
|
||||
- RCTTypeSafety (0.61.5-jitsi.2):
|
||||
- FBLazyVector (= 0.61.5-jitsi.2)
|
||||
@@ -288,9 +284,16 @@ PODS:
|
||||
- React
|
||||
- react-native-netinfo (4.1.5):
|
||||
- React
|
||||
- react-native-slider (3.0.3):
|
||||
- React
|
||||
- react-native-splash-screen (3.2.0):
|
||||
- React
|
||||
- react-native-webrtc (1.89.1):
|
||||
- react-native-video (5.1.1):
|
||||
- React-Core
|
||||
- react-native-video/Video (= 5.1.1)
|
||||
- react-native-video/Video (5.1.1):
|
||||
- React-Core
|
||||
- react-native-webrtc (1.92.0):
|
||||
- React-Core
|
||||
- react-native-webview (11.0.2):
|
||||
- React-Core
|
||||
@@ -348,8 +351,8 @@ PODS:
|
||||
- React-jsi (= 0.61.5-jitsi.2)
|
||||
- ReactCommon/jscallinvoker (= 0.61.5-jitsi.2)
|
||||
- ReactCommon/turbomodule/core (= 0.61.5-jitsi.2)
|
||||
- RNCAsyncStorage (1.13.2):
|
||||
- React
|
||||
- RNCAsyncStorage (1.15.5):
|
||||
- React-Core
|
||||
- RNDefaultPreference (1.4.2):
|
||||
- React
|
||||
- RNDeviceInfo (8.0.0):
|
||||
@@ -394,7 +397,9 @@ DEPENDENCIES:
|
||||
- react-native-calendar-events (from `../node_modules/react-native-calendar-events`)
|
||||
- react-native-keep-awake (from `../node_modules/react-native-keep-awake`)
|
||||
- "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)"
|
||||
- "react-native-slider (from `../node_modules/@react-native-community/slider`)"
|
||||
- react-native-splash-screen (from `../node_modules/react-native-splash-screen`)
|
||||
- react-native-video (from `../node_modules/react-native-video/react-native-video.podspec`)
|
||||
- react-native-webrtc (from `../node_modules/react-native-webrtc`)
|
||||
- react-native-webview (from `../node_modules/react-native-webview`)
|
||||
- React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
|
||||
@@ -475,8 +480,12 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/react-native-keep-awake"
|
||||
react-native-netinfo:
|
||||
:path: "../node_modules/@react-native-community/netinfo"
|
||||
react-native-slider:
|
||||
:path: "../node_modules/@react-native-community/slider"
|
||||
react-native-splash-screen:
|
||||
:path: "../node_modules/react-native-splash-screen"
|
||||
react-native-video:
|
||||
:path: "../node_modules/react-native-video/react-native-video.podspec"
|
||||
react-native-webrtc:
|
||||
:path: "../node_modules/react-native-webrtc"
|
||||
react-native-webview:
|
||||
@@ -519,7 +528,7 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/react-native/ReactCommon/yoga"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
AppAuth: bce82c76043657c99d91e7882e8a9e1a93650cd4
|
||||
AppAuth: 31bcec809a638d7bd2f86ea8a52bd45f6e81e7c7
|
||||
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
|
||||
CocoaLumberjack: 2f44e60eb91c176d471fdba43b9e3eae6a721947
|
||||
DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2
|
||||
@@ -529,20 +538,20 @@ SPEC CHECKSUMS:
|
||||
FirebaseAnalytics: 5dd088bd2e67bb9d13dbf792d1164ceaf3052193
|
||||
FirebaseCore: d889d9e12535b7f36ac8bfbf1713a0836a3012cd
|
||||
FirebaseCoreDiagnostics: 770ac5958e1372ce67959ae4b4f31d8e127c3ac1
|
||||
FirebaseCrashlytics: 5777d3462fb8c3ab9e80a2473bd7d667a2e8411c
|
||||
FirebaseCrashlytics: 1a747c9cc084a24dc6d9511c991db1cd078154eb
|
||||
FirebaseDynamicLinks: 6eac37d86910382eafb6315d952cc44c9e176094
|
||||
FirebaseInstallations: 466c7b4d1f58fe16707693091da253726a731ed2
|
||||
Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51
|
||||
glog: 1f3da668190260b06b429bb211bfbee5cd790c28
|
||||
GoogleAppMeasurement: 966e88df9d19c15715137bb2ddaf52373f111436
|
||||
GoogleDataTransport: b7f406340a291370045a270c599e53c6fa6ec20f
|
||||
GoogleSignIn: 3a51b9bb8e48b635fd7f4272cee06ca260345b86
|
||||
GoogleDataTransport: f56af7caa4ed338dc8e138a5d7c5973e66440833
|
||||
GoogleSignIn: 7137d297ddc022a7e0aa4619c86d72c909fa7213
|
||||
GoogleUtilities: 7f2f5a07f888cdb145101d6042bc4422f57e70b3
|
||||
GTMAppAuth: 4deac854479704f348309e7b66189e604cf5e01e
|
||||
GTMSessionFetcher: 61bb0f61a4cb560030f1222021178008a5727a23
|
||||
GTMAppAuth: ad5c2b70b9a8689e1a04033c9369c4915bfcbe89
|
||||
GTMSessionFetcher: 36689134877faeb055b27dfa4ccc9ceaa42e029e
|
||||
nanopb: 59317e09cf1f1a0af72f12af412d54edf52603fc
|
||||
ObjectiveDropboxOfficial: a5afefc83f6467c42c45f2253f583f2ad1ffc701
|
||||
PromisesObjC: b14b1c6b68e306650688599de8a45e49fae81151
|
||||
PromisesObjC: 3113f7f76903778cf4a0586bd1ab89329a0b7b97
|
||||
RCTRequired: a686731276578c125dff205f08b6ec9cee6ede32
|
||||
RCTTypeSafety: 88e5500e801c00d16a3d1895e3470d13beed6584
|
||||
React: 8b2bcf6a93846e47a7a365a54ec6edeb78b37701
|
||||
@@ -556,8 +565,10 @@ SPEC CHECKSUMS:
|
||||
react-native-calendar-events: 1442fad71a00388f933cfa25512588fec300fcf8
|
||||
react-native-keep-awake: eba3137546b10003361b37c761f6c429b59814ae
|
||||
react-native-netinfo: 8d8db463bcc5db66a8ac5c48a7d86beb3b92f61a
|
||||
react-native-slider: b733e17fdd31186707146debf1f04b5d94aa1a93
|
||||
react-native-splash-screen: 200d11d188e2e78cea3ad319964f6142b6384865
|
||||
react-native-webrtc: ccb0c21eb4fb04326648fbdb4a5d49977e2cf274
|
||||
react-native-video: 1574074179ecaf6a9dd067116c8f31bf9fec15c8
|
||||
react-native-webrtc: bbb644859dcc37ccb7edaec860ca62ed47bf996c
|
||||
react-native-webview: b2542d6fd424bcc3e3b2ec5f854f0abb4ec86c87
|
||||
React-RCTActionSheet: bcbc311dc3b47bc8efb2737ff0940239a45789a9
|
||||
React-RCTAnimation: 65f61080ce632f6dea23d52e354ffac9948396c6
|
||||
@@ -569,7 +580,7 @@ SPEC CHECKSUMS:
|
||||
React-RCTText: 4f1b99f228278d2a5e9008eced8dc9c974c4a270
|
||||
React-RCTVibration: c1041024893fdfdb8371e7c720c437751b711676
|
||||
ReactCommon: 18014e1d98dbeb9141e935cfe35fc93bd511ffb6
|
||||
RNCAsyncStorage: bc2f81cc1df90c267ce9ed30bb2dbc93b945a8ee
|
||||
RNCAsyncStorage: 8324611026e8dc3706f829953aa6e3899f581589
|
||||
RNDefaultPreference: 56a405ce61033ac77b95004dccd7ac54c2eb50d1
|
||||
RNDeviceInfo: 72ded653ce636b3f03571e90bed99309a714944e
|
||||
RNGoogleSignin: 39336070b35fc4cea6a98cf111e00480317be0ae
|
||||
@@ -578,6 +589,6 @@ SPEC CHECKSUMS:
|
||||
RNWatch: a5320c959c75e72845c07985f3e935e58998f1d3
|
||||
Yoga: 96b469c5e81ff51b917b92e8c3390642d4ded30c
|
||||
|
||||
PODFILE CHECKSUM: d059cebf82da14a53940a16c24c3330752d4b0c8
|
||||
PODFILE CHECKSUM: f4db44d934caeae7212dbaa33abe62ed164363e8
|
||||
|
||||
COCOAPODS: 1.10.1
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>21.2.0</string>
|
||||
<string>21.3.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>NSExtension</key>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>21.2.0</string>
|
||||
<string>21.3.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleURLTypes</key>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>21.2.0</string>
|
||||
<string>21.3.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>21.2.0</string>
|
||||
<string>21.3.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>CLKComplicationPrincipalClass</key>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>3.5.0</string>
|
||||
<string>3.8.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
|
||||
@@ -59,6 +59,16 @@
|
||||
|
||||
#pragma mark - Utility methods
|
||||
|
||||
/**
|
||||
* Once the react native bridge is destroyed you are responsible for reinstantiating it back. Use this method to do so.
|
||||
*/
|
||||
- (void)instantiateReactNativeBridge;
|
||||
|
||||
/**
|
||||
* Helper method to destroy the react native bridge, cleaning up resources in the process. Once the react native bridge is destroyed you are responsible for reinstantiating it back using `instantiateReactNativeBridge` method.
|
||||
*/
|
||||
- (void)destroyReactNativeBridge;
|
||||
|
||||
- (JitsiMeetConferenceOptions *_Nonnull)getInitialConferenceOptions;
|
||||
|
||||
- (BOOL)isCrashReportingDisabled;
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
#import <RNGoogleSignin/RNGoogleSignin.h>
|
||||
#import <WebRTC/RTCLogging.h>
|
||||
|
||||
|
||||
@implementation JitsiMeet {
|
||||
RCTBridgeWrapper *_bridgeWrapper;
|
||||
NSDictionary *_launchOptions;
|
||||
@@ -50,7 +49,7 @@
|
||||
|
||||
- (instancetype)init {
|
||||
if (self = [super init]) {
|
||||
// Initialize the on and only bridge for interfacing with React Native.
|
||||
// Initialize the one and only bridge for interfacing with React Native.
|
||||
_bridgeWrapper = [[RCTBridgeWrapper alloc] init];
|
||||
|
||||
// Initialize the listener for handling start/stop screensharing notifications.
|
||||
@@ -119,6 +118,18 @@
|
||||
|
||||
#pragma mark - Utility methods
|
||||
|
||||
- (void)instantiateReactNativeBridge {
|
||||
if (_bridgeWrapper != nil) {
|
||||
return;
|
||||
};
|
||||
|
||||
_bridgeWrapper = [[RCTBridgeWrapper alloc] init];
|
||||
}
|
||||
|
||||
- (void)destroyReactNativeBridge {
|
||||
_bridgeWrapper = nil;
|
||||
}
|
||||
|
||||
- (JitsiMeetConferenceOptions *)getInitialConferenceOptions {
|
||||
if (_launchOptions[UIApplicationLaunchOptionsURLKey]) {
|
||||
NSURL *url = _launchOptions[UIApplicationLaunchOptionsURLKey];
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
"fr": "Francés",
|
||||
"frCA": "Francés (Canadian)",
|
||||
"he": "Ebrèu",
|
||||
"hi": "Indi",
|
||||
"mr":"Marathi",
|
||||
"hr": "Croat",
|
||||
"hu": "Ongrés",
|
||||
@@ -42,7 +43,9 @@
|
||||
"sk": "Eslovac",
|
||||
"sl": "Eslovèn",
|
||||
"sr": "Sèrbe",
|
||||
"sq": "Albanés",
|
||||
"sv": "Suedés",
|
||||
"te": "Telugu",
|
||||
"th": "Tai",
|
||||
"tr": "Turc",
|
||||
"uk": "Ucraïnian",
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
"fr": "Frëngjisht",
|
||||
"frCA": "Frëngjisht (Kebek)",
|
||||
"he": "Hebraisht",
|
||||
"hi": "Hindi",
|
||||
"mr":"Maratisht",
|
||||
"hr": "Kroatisht",
|
||||
"hu": "Hungarisht",
|
||||
@@ -34,15 +35,17 @@
|
||||
"oc": "Oçitanisht",
|
||||
"fa": "Persisht",
|
||||
"pl": "Polonisht",
|
||||
"pt": "Portugalisht",
|
||||
"ptBR": "Portugalisht (Brazil)",
|
||||
"ru": "Rusisht",
|
||||
"ro": "Rumanisht",
|
||||
"sc": "Sardenjisht",
|
||||
"sk": "Sllovakisht",
|
||||
"sl": "Sllovenisht",
|
||||
"sq": "Shqip",
|
||||
"sr": "Serbisht",
|
||||
"sq": "Shqip",
|
||||
"sv": "Suedisht",
|
||||
"te": "Telugu",
|
||||
"th": "Tajlandisht",
|
||||
"tr": "Turqisht",
|
||||
"uk": "Ukrainisht",
|
||||
|
||||
@@ -1,34 +1,55 @@
|
||||
{
|
||||
"en": "英語",
|
||||
"en": "英文",
|
||||
"af": "南非荷蘭文",
|
||||
"ar": "阿拉伯文",
|
||||
"bg": "保加利亞文",
|
||||
"ca": "卡達隆尼亞文",
|
||||
"cs": "捷克文",
|
||||
"da": "丹麥文",
|
||||
"de": "德文",
|
||||
"el": "希臘文",
|
||||
"enGB": "英文 (英國)",
|
||||
"eo": "世界語",
|
||||
"es": "西班牙文",
|
||||
"esUS": "西班牙文 (拉丁美洲)",
|
||||
"et": "愛沙尼亞文",
|
||||
"eu": "巴斯克語",
|
||||
"fi": "芬蘭文",
|
||||
"fr": "法文",
|
||||
"frCA": "法文 (加拿大)",
|
||||
"he": "希伯來語",
|
||||
"hi": "印地語",
|
||||
"mr":"馬拉提語",
|
||||
"hr": "克羅埃西亞文",
|
||||
"hu": "匈牙利文",
|
||||
"hy": "亞美尼亞文",
|
||||
"id": "印尼語",
|
||||
"it": "義大利文",
|
||||
"ja": "日語",
|
||||
"kab": "卡拜爾語",
|
||||
"ko": "韓文",
|
||||
"lt": "立陶宛語",
|
||||
"ml": "馬拉雅拉姆語",
|
||||
"lv": "拉脫維亞語",
|
||||
"nl": "荷蘭文",
|
||||
"oc": "奧西坦文",
|
||||
"fa": "波斯語",
|
||||
"pl": "波蘭文",
|
||||
"pt": "葡萄牙語",
|
||||
"ptBR": "葡萄牙文 (巴西)",
|
||||
"ru": "俄文",
|
||||
"ro": "羅馬尼亞語",
|
||||
"sc": "薩丁尼亞語",
|
||||
"sk": "斯洛伐克語",
|
||||
"sl": "斯洛維尼亞語",
|
||||
"sr": "塞爾維亞語",
|
||||
"sq": "阿羅馬尼亞語",
|
||||
"sv": "瑞典文",
|
||||
"te": "泰盧固語",
|
||||
"th": "泰語",
|
||||
"tr": "土耳其文",
|
||||
"uk": "烏克蘭語",
|
||||
"vi": "越南文",
|
||||
"zhCN": "中文 (中国,简体)",
|
||||
"zhTW": "中文 (台灣,正體)",
|
||||
"et": "愛沙尼亞文",
|
||||
"da": "丹麥文"
|
||||
"zhTW": "中文 (台灣,正體)"
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
"sq": "Albanian",
|
||||
"sv": "Swedish",
|
||||
"te": "Telugu",
|
||||
"th": "Thailand",
|
||||
"th": "Thai",
|
||||
"tr": "Turkish",
|
||||
"uk": "Ukrainian",
|
||||
"vi": "Vietnamese",
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
"copyInvite": "Sitzungseinladung kopieren",
|
||||
"copyLink": "Konferenzlink kopieren",
|
||||
"copyStream": "Livestreaminglink kopieren",
|
||||
"contacts": "Kontakte",
|
||||
"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",
|
||||
@@ -16,19 +17,14 @@
|
||||
"inviteMoreMailSubject": "An {{appName}} Meeting teilnehmen",
|
||||
"inviteMorePrompt": "Mehr Leute einladen",
|
||||
"linkCopied": "Link in die Zwischenablage kopiert",
|
||||
"loading": "Suche nach Personen und Telefonnummern",
|
||||
"loadingNumber": "Telefonnummer wird überprüft",
|
||||
"loadingPeople": "Suche nach einzuladenden Personen",
|
||||
"noResults": "Keine passenden Ergebnisse",
|
||||
"noValidNumbers": "Telefonnummer eingeben",
|
||||
"outlookEmail": "Outlook-E-Mail",
|
||||
"searchNumbers": "Telefonnummern hinzufügen",
|
||||
"searchPeople": "Nach Personen suchen",
|
||||
"searchPeopleAndNumbers": "Nach Personen suchen oder deren Telefonnummern hinzufügen",
|
||||
"phoneNumbers": "Telefonnummern",
|
||||
"searching": "Suche...",
|
||||
"shareInvite": "Einladung zur Versammlung teilen",
|
||||
"shareLink": "Teilen Sie den Konferenzlink, um andere einzuladen",
|
||||
"shareStream": "Den Livestreaminglink freigeben",
|
||||
"sip": "SIP: {{address}}",
|
||||
"sipAddresses": "SIP-Adressen",
|
||||
"telephone": "Telefon: {{number}}",
|
||||
"title": "Personen zu dieser Konferenz einladen",
|
||||
"yahooEmail": "Yahoo-E-Mail"
|
||||
@@ -74,12 +70,17 @@
|
||||
},
|
||||
"privateNotice": "Private Nachricht an {{recipient}}",
|
||||
"title": "Chatten",
|
||||
"you": "Sie"
|
||||
"you": "Sie",
|
||||
"message": "Nachricht",
|
||||
"messageAccessibleTitle": "{{user}} sagt:",
|
||||
"messageAccessibleTitleMe": "Ich sage:",
|
||||
"smileysPanel": "Emoji-Auswahl"
|
||||
},
|
||||
"chromeExtensionBanner": {
|
||||
"installExtensionText": "Installieren Sie die Erweiterung für die Integration von Google Calendar und Office 365",
|
||||
"buttonText": "Chrome-Erweiterung installieren",
|
||||
"dontShowAgain": "Hinweis nicht mehr anzeigen"
|
||||
"dontShowAgain": "Hinweis nicht mehr anzeigen",
|
||||
"close": "Schließen"
|
||||
},
|
||||
"connectingOverlay": {
|
||||
"joiningRoom": "Eine Verbindung zu Ihrem Meeting wird hergestellt…"
|
||||
@@ -208,10 +209,13 @@
|
||||
"e2eeLabel": "Ende-zu-Ende-Verschlüsselung aktivieren",
|
||||
"e2eeWarning": "WARNUNG: Nicht alle Personen dieser Konferenz scheinen Ende-zu-Ende-Verschlüsselung zu unterstützen. Wenn Sie diese aktivieren, können die entsprechenden Personen nichts mehr sehen oder hören.",
|
||||
"enterDisplayName": "Bitte geben Sie hier Ihren Namen ein",
|
||||
"enterDisplayNameToJoin" : "Benutzername für Konferenz eingeben" ,
|
||||
"embedMeeting": "Besprechung einbetten",
|
||||
"error": "Fehler",
|
||||
"gracefulShutdown": "Der Dienst steht momentan wegen Wartungsarbeiten nicht zur Verfügung. Bitte versuchen Sie es später noch einmal.",
|
||||
"grantModeratorDialog": "Möchten Sie wirklich Moderationsrechte an diese Person vergeben?",
|
||||
"grantModeratorTitle": "Moderationsrechte vergeben",
|
||||
"hideShareAudioHelper": "Diese Meldung nicht mehr anzeigen",
|
||||
"IamHost": "Ich leite das Meeting",
|
||||
"incorrectRoomLockPassword": "Falsches Passwort",
|
||||
"incorrectPassword": "Name oder Passwort ungültig",
|
||||
@@ -254,21 +258,26 @@
|
||||
"muteParticipantBody": "Sie können die Stummschaltung anderer Personen nicht aufheben, aber eine Person kann ihre eigene Stummschaltung jederzeit beenden.",
|
||||
"muteParticipantButton": "Stummschalten",
|
||||
"muteParticipantDialog": "Wollen Sie diese Person wirklich stummschalten? Sie können die Stummschaltung nicht wieder aufheben, die Person kann dies aber jederzeit selbst tun.",
|
||||
"muteParticipantsVideoDialog": "Wollen Sie die Kamera dieser Person wirklich deaktivieren? Sie können die Kamera nicht wieder aktivieren, die Person kann dies aber jederzeit selbst tun.",
|
||||
"muteParticipantTitle": "Person stummschalten?",
|
||||
"muteParticipantsVideoButton": "Kamera ausschalten",
|
||||
"muteParticipantsVideoTitle": "Die Kamera von dieser Person ausschalten?",
|
||||
"muteParticipantsVideoBody": "Sie können die Kamera nicht wieder aktivieren, die Teilnehmer können dies aber jederzeit wieder ändern.",
|
||||
"noDropboxToken": "Kein gültiges Dropbox-Token",
|
||||
"Ok": "OK",
|
||||
"password": "Passwort",
|
||||
"passwordLabel": "Dieses Meeting wurde gesichert. Bitte geben Sie das $t(lockRoomPasswordUppercase) ein, um dem Meeting beizutreten.",
|
||||
"passwordNotSupported": "Das Festlegen eines Konferenzpassworts wird nicht unterstützt.",
|
||||
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) nicht unterstützt",
|
||||
"passwordRequired": "$t(lockRoomPasswordUppercase) erforderlich",
|
||||
"permissionErrorTitle": "Berechtigung benötigt",
|
||||
"permissionCameraRequiredError": "Der Zugriff auf die Kamera wird benötigt, um in Videokonferenzen teilzunehmen. Bitte in den Einstellungen zulassen",
|
||||
"permissionMicRequiredError": "Der Zugriff auf das Mikrofon wird benötigt, um an Konferenzen mit Ton teilzunehmen. Bitte in den Einstellungen zulassen",
|
||||
"popupError": "Ihr Browser blockiert Pop-ups von dieser Website. Bitte aktivieren Sie Pop-ups in den Sicherheitseinstellungen des Browsers und versuchen Sie es erneut.",
|
||||
"popupErrorTitle": "Pop-up blockiert",
|
||||
"readMore": "mehr",
|
||||
"recording": "Aufnahme",
|
||||
"recordingDisabledBecauseOfActiveLiveStreamingTooltip": "Während eines Livestreams nicht möglich",
|
||||
"recordingDisabledForGuestTooltip": "Gäste können keine Aufzeichnungen starten.",
|
||||
"recordingDisabledTooltip": "Start der Aufzeichnung deaktiviert.",
|
||||
"rejoinNow": "Jetzt erneut beitreten",
|
||||
"remoteControlAllowedMessage": "{{user}} hat die Anfrage zur Fernsteuerung angenommen!",
|
||||
@@ -295,14 +304,26 @@
|
||||
"sendPrivateMessageTitle": "Privat antworten?",
|
||||
"serviceUnavailable": "Dienst nicht verfügbar",
|
||||
"sessTerminated": "Konferenz beendet",
|
||||
"sessionRestarted": "Konferenz neugestartet",
|
||||
"Share": "Teilen",
|
||||
"shareAudio": "Fortfahren",
|
||||
"shareAudioTitle" : "Wie kann Audio geteilt werden",
|
||||
"shareAudioWarningTitle": "Sie müssen die Bildschirmfreigabe ausschalten, bevor Sie Audio teilen können",
|
||||
"shareAudioWarningH1": "Wenn Sie Ihr Audio teilen wollen:",
|
||||
"shareAudioWarningD1": "müssen Sie Ihre Bildschirmfreigabe stoppen, bevor Sie Audio teilen können.",
|
||||
"shareAudioWarningD2": "müssen Sie Ihre Bildschirmfreigabe neustarten und die Option \"Audio freigeben\" auswählen.",
|
||||
"shareMediaWarningGenericH2": "Wenn Sie Ihren Bildschirm und Audio teilen wollen",
|
||||
"shareVideoLinkError": "Bitte einen gültigen YouTube-Link angeben.",
|
||||
"shareVideoTitle": "Video teilen",
|
||||
"shareYourScreen": "Bildschirm freigeben",
|
||||
"shareYourScreen": "Bildschirmfreigabe ein-/ausschalten",
|
||||
"shareYourScreenDisabled": "Bildschirmfreigabe deaktiviert.",
|
||||
"startLiveStreaming": "Livestream starten",
|
||||
"startRecording": "Aufnahme starten",
|
||||
"startRemoteControlErrorMessage": "Beim Versuch, die Fernsteuerung zu starten, ist ein Fehler aufgetreten!",
|
||||
"shareScreenWarningTitle": "Sie müssen die Audiofreigabe beenden, bevor Sie den Bildschirm freigeben können",
|
||||
"shareScreenWarningH1": "Wenn Sie Ihren Bildschirm freigeben wollen:",
|
||||
"shareScreenWarningD1": "müssen Sie Ihre Audiofreigabe stoppen, bevor Sie ihren Bildschirm freigeben.",
|
||||
"shareScreenWarningD2": "müssen Sie Ihre Audiofreigabe stoppen und dann die Bildschirmfreigabe mit der Option \"Audio freigeben\" starten.",
|
||||
"stopLiveStreaming": "Livestream stoppen",
|
||||
"stopRecording": "Aufnahme stoppen",
|
||||
"stopRecordingWarning": "Sind Sie sicher, dass Sie die Aufnahme stoppen möchten?",
|
||||
@@ -318,12 +339,17 @@
|
||||
"user": "Anmeldename",
|
||||
"userIdentifier": "Benutzername",
|
||||
"userPassword": "Passwort",
|
||||
"videoLink": "Video link",
|
||||
"videoLink": "Video-Link",
|
||||
"viewUpgradeOptions": "Upgradeoptionen anzeigen",
|
||||
"viewUpgradeOptionsContent": "Sie müssen Ihren Tarif erweitern, um Premium-Features wie Aufnahme, Transkription, RTMP-Streaming und mehr zu nutzen.",
|
||||
"viewUpgradeOptionsTitle": "Sie haben ein Premium-Feature entdeckt!",
|
||||
"WaitForHostMsg": "Die Konferenz <b>{{room}}</b> wurde noch nicht gestartet. Falls Sie die Konferenz leiten, authentifizieren Sie sich bitte. Warten Sie andernfalls, bis die Konferenz gestartet wird.",
|
||||
"WaitForHostMsgWOk": "Die Konferenz <b>{{room}}</b> wurde noch nicht gestartet. Falls Sie die Konferenz leiten, authentifizieren Sie sich bitte. Warten Sie andernfalls, bis die Konferenz gestartet wird.",
|
||||
"WaitingForHostTitle": "Warten auf den Beginn der Konferenz …",
|
||||
"Yes": "Ja",
|
||||
"yourEntireScreen": "Ganzer Bildschirm"
|
||||
"yourEntireScreen": "Ganzer Bildschirm",
|
||||
"remoteUserControls": "Remote Benutzersteuerung von {{username}}",
|
||||
"localUserControls": "Lokale Benutzersteuerung"
|
||||
},
|
||||
"dialOut": {
|
||||
"statusMessage": "ist jetzt {{status}}"
|
||||
@@ -338,13 +364,26 @@
|
||||
"title": "Diese Konferenz einbetten"
|
||||
},
|
||||
"virtualBackground": {
|
||||
"apply": "Anwenden",
|
||||
"title": "Hintergründe",
|
||||
"blur": "Hintergrund unscharf",
|
||||
"slightBlur": "Hintergrund leicht unscharf",
|
||||
"removeBackground": "Hintergrund entfernen",
|
||||
"uploadImage": "Bild hochladen",
|
||||
"addBackground": "Hintergrund hinzufügen",
|
||||
"pleaseWait": "Bitte warten...",
|
||||
"none": "keiner"
|
||||
"none": "keiner",
|
||||
"uploadedImage": "Hochgeladenes Bild {{index}}",
|
||||
"deleteImage": "Bild löschen",
|
||||
"image1" : "Strand",
|
||||
"image2" : "Weiße neutrale Wand",
|
||||
"image3" : "Weißer leerer Raum",
|
||||
"image4" : "Schwarze Stehlampe",
|
||||
"image5" : "Berg",
|
||||
"image6" : "Wald",
|
||||
"image7" : "Sonnenaufgang",
|
||||
"desktopShareError": "Desktop konnte nicht freigegeben werden",
|
||||
"desktopShare": "Desktopfreigabe",
|
||||
"webAssemblyWarning": "WebAssembly wird nicht unterstützt"
|
||||
},
|
||||
"feedback": {
|
||||
"average": "Durchschnittlich",
|
||||
@@ -353,7 +392,8 @@
|
||||
"good": "Gut",
|
||||
"rateExperience": "Bitte bewerten Sie diese Konferenz",
|
||||
"veryBad": "Sehr schlecht",
|
||||
"veryGood": "Sehr gut"
|
||||
"veryGood": "Sehr gut",
|
||||
"star": "Sterne"
|
||||
},
|
||||
"incomingCall": {
|
||||
"answer": "Antworten",
|
||||
@@ -370,6 +410,7 @@
|
||||
"country": "Land",
|
||||
"dialANumber": "Um am Meeting teilzunehmen, müssen Sie eine dieser Nummern wählen und dann die PIN eingeben.",
|
||||
"dialInConferenceID": "PIN:",
|
||||
"copyNumber":"Nummer kopieren",
|
||||
"dialInNotSupported": "Entschuldigung, leider wird das Einwählen derzeit nicht unterstützt.",
|
||||
"dialInNumber": "Einwählen:",
|
||||
"dialInSummaryError": "Fehler beim Abrufen der Einwahlinformationen. Versuchen Sie es später erneut.",
|
||||
@@ -378,6 +419,11 @@
|
||||
"inviteLiveStream": "Klicken Sie auf {{url}}, um den Livestream dieser Konferenz zu öffnen",
|
||||
"invitePhone": "Wenn Sie stattdessen per Telefon beitreten möchten, wählen sie: {{number}},,{{conferenceID}}#\n",
|
||||
"invitePhoneAlternatives": "Suchen Sie nach einer anderen Einwahlnummer ?\nEinwahlnummern der Konferenz anzeigen: {{url}}\n\n\nWenn Sie sich auch über ein Raumtelefon einwählen, nehmen Sie teil, ohne sich mit dem Ton zu verbinden: {{silentUrl}}",
|
||||
"inviteSipEndpoint": "Um mit SIP teilzunehmen, folgende Adresse nutzen: {{sipUri}}",
|
||||
"inviteTextiOSPersonal": "{{name}} lädt Sie zu einem Meeting ein.",
|
||||
"inviteTextiOSJoinSilent": "Wenn Sie über ein Konferenztelefon teilnehmen, können Sie diesen Link nutzen um ohne Ton an der Konferenz teilzunehmen: {{silentUrl}}.",
|
||||
"inviteTextiOSInviteUrl": "Am Meeting teilnehmen: {{inviteUrl}}.",
|
||||
"inviteTextiOSPhone": "Nutzen Sie folgende Nummer um via Telefon teilzunehmen: {{number}},,{{conferenceID}}#. Wenn Sie nach einer anderen Einwahlnummer suchen, finden Sie die vollständige Liste hier: {{didUrl}}.",
|
||||
"inviteURLFirstPartGeneral": "Sie wurden zur Teilnahme an einem Meeting eingeladen.",
|
||||
"inviteURLFirstPartPersonal": "{{name}} lädt Sie zu einem Meeting ein.\n",
|
||||
"inviteURLSecondPart": "\nAm Meeting teilnehmen:\n{{url}}\n",
|
||||
@@ -388,6 +434,7 @@
|
||||
"noRoom": "Keine Konferenz für die Einwahlinformationen angegeben.",
|
||||
"numbers": "Einwahlnummern",
|
||||
"password": "$t(lockRoomPasswordUppercase):",
|
||||
"sip": "SIP-Adresse",
|
||||
"title": "Teilen",
|
||||
"tooltip": "Freigabe-Link und Einwahlinformationen für dieses Meeting",
|
||||
"label": "Einwahlinformationen"
|
||||
@@ -406,6 +453,7 @@
|
||||
"support": "Support",
|
||||
"supportMsg": "Wenn der Fehler erneut auftritt, bitte kontaktieren Sie"
|
||||
},
|
||||
"jitsiHome": "{{logo}} Logo, verlinkt zur Homepage",
|
||||
"keyboardShortcuts": {
|
||||
"focusLocal": "Lokales Video fokussieren",
|
||||
"focusRemote": "Auf das Video einer anderen Person fokussieren",
|
||||
@@ -418,6 +466,7 @@
|
||||
"showSpeakerStats": "Sprechstatistik anzeigen",
|
||||
"toggleChat": "Chat öffnen oder schließen",
|
||||
"toggleFilmstrip": "Video-Miniaturansichten ein- oder ausblenden",
|
||||
"toggleParticipantsPane": "Liste der Anwesenden ein- und ausblenden",
|
||||
"toggleScreensharing": "Zwischen Kamera und Bildschirmfreigabe wechseln",
|
||||
"toggleShortcuts": "Tastenkombinationen ein- oder ausblenden",
|
||||
"videoMute": "Kamera starten oder stoppen"
|
||||
@@ -496,6 +545,7 @@
|
||||
"focus": "Konferenzleitung",
|
||||
"focusFail": "{{component}} ist im Moment nicht verfügbar – wiederholen in {{ms}} Sekunden",
|
||||
"grantedTo": "Moderationsrechte an {{to}} vergeben!",
|
||||
"hostAskedUnmute": "Die Moderation bittet Sie, das Mikrofon zu aktivieren",
|
||||
"invitedOneMember": "{{name}} wurde eingeladen",
|
||||
"invitedThreePlusMembers": "{{name}} und {{count}} andere wurden eingeladen",
|
||||
"invitedTwoMembers": "{{first}} und {{second}} wurden eingeladen",
|
||||
@@ -511,7 +561,7 @@
|
||||
"passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) von einer anderen Person entfernt",
|
||||
"passwordSetRemotely": "$t(lockRoomPasswordUppercase) von einer anderen Person gesetzt",
|
||||
"raisedHand": "{{name}} möchte sprechen.",
|
||||
"screenShareNoAudio": " Share audio box was not checked in the window selection screen.",
|
||||
"screenShareNoAudio": "Die Option \"Audio freigeben\" wurde bei der Auswahl des Fensters nicht ausgewählt.",
|
||||
"screenShareNoAudioTitle": "Share audio was not checked",
|
||||
"somebody": "Jemand",
|
||||
"startSilentTitle": "Sie sind ohne Audioausgabe beigetreten!",
|
||||
@@ -525,7 +575,42 @@
|
||||
"OldElectronAPPTitle": "Sicherheitslücke!",
|
||||
"oldElectronClientDescription1": "Sie scheinen eine alte Version des Jitsi-Meet-Clients zu nutzen. Diese hat bekannte Schwachstellen. Bitte aktualisieren Sie auf unsere ",
|
||||
"oldElectronClientDescription2": "aktuelle Version",
|
||||
"oldElectronClientDescription3": "!"
|
||||
"oldElectronClientDescription3": "!",
|
||||
"moderationInEffectDescription": "Bitte melden um zu sprechen",
|
||||
"moderationInEffectCSDescription": "Bitte melden um ein Video zu teilen",
|
||||
"moderationInEffectVideoDescription": "Bitte melden um die Kamera zu starten",
|
||||
"moderationInEffectTitle": "Das Mikrofon ist von der Moderation gesperrt",
|
||||
"moderationInEffectCSTitle": "Die Videofreigabe ist von der Moderation gesperrt",
|
||||
"moderationInEffectVideoTitle": "Die Kamera ist von der Moderation gesperrt",
|
||||
"moderationRequestFromModerator": "Die Moderation bittet Sie, das Mikrofon zu aktivieren",
|
||||
"moderationRequestFromParticipant": "möchte sprechen",
|
||||
"moderationStartedTitle": "Moderation gestartet",
|
||||
"moderationStoppedTitle": "Moderation gestoppt",
|
||||
"moderationToggleDescription": "von {{participantDisplayName}}",
|
||||
"raiseHandAction": "Melden",
|
||||
"groupTitle": "Benachrichtigungen"
|
||||
},
|
||||
"participantsPane": {
|
||||
"close": "Schließen",
|
||||
"header": "Anwesende",
|
||||
"headings": {
|
||||
"lobby": "Lobby ({{count}})",
|
||||
"participantsList": "Anwesende ({{count}})",
|
||||
"waitingLobby": "In der Lobby ({{count}})"
|
||||
},
|
||||
"actions": {
|
||||
"allow": "Anwesenden erlauben:",
|
||||
"blockEveryoneMicCamera": "Kamera und Mikrofon von allen sperren",
|
||||
"invite": "Person einladen",
|
||||
"askUnmute": "Anfragen, Stummschaltung aufzuheben",
|
||||
"mute": "Stummschalten",
|
||||
"muteAll": "Alle stummschalten",
|
||||
"muteEveryoneElse": "Alle anderen stummschalten",
|
||||
"startModeration": "Stummschaltung aufheben oder Kamera aktivieren",
|
||||
"stopEveryonesVideo": "Alle Kameras ausschalten",
|
||||
"stopVideo": "Kamera ausschalten",
|
||||
"unblockEveryoneMicCamera": "Kamera und Mikrofon von allen entsperren"
|
||||
}
|
||||
},
|
||||
"passwordSetRemotely": "von einer anderen Person gesetzt",
|
||||
"passwordDigitsOnly": "Bis zu {{number}} Ziffern",
|
||||
@@ -581,6 +666,7 @@
|
||||
"or": "oder",
|
||||
"premeeting": "Vorschau",
|
||||
"showScreen": "Konferenzvorschau aktivieren",
|
||||
"keyboardShortcuts" : "Tastaturkurzbefehle aktivieren",
|
||||
"startWithPhone": "Mit Telefonaudio starten",
|
||||
"screenSharingError": "Fehler bei Bildschirmfreigabe:",
|
||||
"videoOnlyError": "Videofehler:",
|
||||
@@ -602,6 +688,7 @@
|
||||
"ringing": "Es klingelt …"
|
||||
},
|
||||
"profile": {
|
||||
"avatar": "Benutzerbild",
|
||||
"setDisplayNameLabel": "Anzeigename festlegen",
|
||||
"setEmailInput": "E-Mail eingeben",
|
||||
"setEmailLabel": "E-Mail-Adresse für Gravatar",
|
||||
@@ -616,12 +703,15 @@
|
||||
"beta": "BETA",
|
||||
"busy": "Es werden Ressourcen für eine Aufnahme bereitgestellt. Bitte in ein paar Minuten erneut versuchen.",
|
||||
"busyTitle": "Alle Aufnahme-Instanzen sind in Gebrauch",
|
||||
"copyLink": "Link kopieren",
|
||||
"error": "Die Aufzeichnung ist fehlgeschlagen. Bitte versuchen Sie es erneut.",
|
||||
"errorFetchingLink": "Der Link zur Aufzeichnung konnte nicht geladen werden.",
|
||||
"expandedOff": "Aufzeichnung wurde gestoppt",
|
||||
"expandedOn": "Das Meeting wird momentan aufgezeichnet.",
|
||||
"expandedPending": "Aufzeichnung wird gestartet…",
|
||||
"failedToStart": "Die Aufnahme konnte nicht gestartet werden",
|
||||
"fileSharingdescription": "Aufzeichnung mit den Personen der Konferenz teilen",
|
||||
"linkGenerated": "Link zur Aufzeichnung wurde generiert.",
|
||||
"live": "LIVE",
|
||||
"loggedIn": "Als {{userName}} angemeldet",
|
||||
"off": "Aufnahme gestoppt",
|
||||
@@ -636,7 +726,8 @@
|
||||
"signIn": "Anmelden",
|
||||
"signOut": "Abmelden",
|
||||
"unavailable": "Oh! Der {{serviceName}} ist aktuell nicht verfügbar. Wir arbeiten an der Behebung des Problems. Bitte versuchen Sie es später noch einmal.",
|
||||
"unavailableTitle": "Aufnahme nicht verfügbar"
|
||||
"unavailableTitle": "Aufnahme nicht verfügbar",
|
||||
"uploadToCloud": "In die Cloud hochladen"
|
||||
},
|
||||
"sectionList": {
|
||||
"pullToRefresh": "Ziehen, um zu aktualisieren"
|
||||
@@ -655,8 +746,13 @@
|
||||
"signedIn": "Momentan wird auf Kalendertermine von {{email}} zugegriffen. Klicken Sie auf die folgende Schaltfläche „Trennen“, um den Zugriff auf die Kalendertermine zu stoppen.",
|
||||
"title": "Kalender"
|
||||
},
|
||||
"desktopShareFramerate": "Framerate für Bildschirmfreigabe",
|
||||
"desktopShareWarning": "Sie müssen die Bildschirmfreigabe neustarten, damit die Einstellung übernommen wird.",
|
||||
"desktopShareHighFpsWarning": "Eine höhere Framerate könnte sich auf Ihre Datenrate auswirken. Sie müssen die Bildschirmfreigabe neustarten, damit die Einstellung übernommen wird.",
|
||||
"devices": "Geräte",
|
||||
"followMe": "Follow-me für alle Personen",
|
||||
"framesPerSecond": "FPS",
|
||||
"incomingMessage": "Eingehende Nachricht",
|
||||
"language": "Sprache",
|
||||
"loggedIn": "Als {{name}} angemeldet",
|
||||
"microphones": "Mikrofon",
|
||||
@@ -664,12 +760,18 @@
|
||||
"more": "Mehr",
|
||||
"name": "Name",
|
||||
"noDevice": "Kein",
|
||||
"participantJoined": "Neue Person nimmt teil",
|
||||
"participantLeft": "Person verlässt die Konferenz",
|
||||
"playSounds": "Hinweistöne aktiviert",
|
||||
"sameAsSystem": "Wie System ({{label}})",
|
||||
"selectAudioOutput": "Audioausgabe",
|
||||
"selectCamera": "Kamera",
|
||||
"selectMic": "Mikrofon",
|
||||
"sounds": "Hinweistöne",
|
||||
"speakers": "Lautsprecher",
|
||||
"startAudioMuted": "Alle Personen treten stumm geschaltet bei",
|
||||
"startAudioMuted": "Alle Personen treten stummgeschaltet bei",
|
||||
"startVideoMuted": "Alle Personen treten ohne Video bei",
|
||||
"talkWhileMuted": "Wenn bei Stummschaltung gesprochen wird",
|
||||
"title": "Einstellungen"
|
||||
},
|
||||
"settingsView": {
|
||||
@@ -700,8 +802,8 @@
|
||||
},
|
||||
"speaker": "Sprecher/-in",
|
||||
"speakerStats": {
|
||||
"hours": "{{count}} Std.",
|
||||
"minutes": "{{count}} Min.",
|
||||
"hours": "{{count}} Std. ",
|
||||
"minutes": "{{count}} Min. ",
|
||||
"name": "Name",
|
||||
"seconds": "{{count}} Sek.",
|
||||
"speakerStats": "Sprechstatistik",
|
||||
@@ -721,34 +823,41 @@
|
||||
"accessibilityLabel": {
|
||||
"audioOnly": "„Nur Audio“ ein-/ausschalten",
|
||||
"audioRoute": "Audiogerät auswählen",
|
||||
"boo": "Buhen",
|
||||
"callQuality": "Qualitätseinstellungen",
|
||||
"cc": "Untertitel ein-/ausschalten",
|
||||
"chat": "Chatfenster ein-/ausblenden",
|
||||
"chat": "Chatfenster öffnen / schließen",
|
||||
"clap": "Klatschen",
|
||||
"document": "Geteiltes Dokument schließen",
|
||||
"download": "Unsere Apps herunterladen",
|
||||
"embedMeeting": "Konferenz einbetten",
|
||||
"feedback": "Feedback hinterlassen",
|
||||
"fullScreen": "Vollbildmodus ein-/ausschalten",
|
||||
"grantModerator": "Moderationsrechte vergeben",
|
||||
"hangup": "Anruf beenden",
|
||||
"hangup": "Konferenz verlassen",
|
||||
"help": "Hilfe",
|
||||
"invite": "Person einladen",
|
||||
"kick": "Person entfernen",
|
||||
"laugh": "Lachen",
|
||||
"like": "Daumen nach oben",
|
||||
"lobbyButton": "Lobbymodus ein-/ausschalten",
|
||||
"localRecording": "Lokale Aufzeichnungssteuerelemente ein-/ausschalten",
|
||||
"lockRoom": "Konferenzpasswort ein-/ausschalten",
|
||||
"moreActions": "Menü „Weitere Aktionen“ ein-/ausschalten",
|
||||
"moreActionsMenu": "Menü „Weitere Aktionen“",
|
||||
"moreActions": "Menü „Weitere Einstellungen“ ein-/ausschalten",
|
||||
"moreActionsMenu": "Menü „Weitere Einstellungen“",
|
||||
"moreOptions": "Menü „Weitere Optionen“",
|
||||
"mute": "„Audio stummschalten“ ein-/ausschalten",
|
||||
"mute": "Mikrofon aktivieren / deaktivieren",
|
||||
"muteEveryone": "Alle stummschalten",
|
||||
"muteEveryoneElse": "Alle anderen stummschalten",
|
||||
"muteEveryonesVideo": "Alle Kameras ausschalten",
|
||||
"muteEveryoneElsesVideo": "Alle anderen Kameras ausschalten",
|
||||
"participants": "Anwesende",
|
||||
"party": "Konfetti",
|
||||
"pip": "Bild-in-Bild-Modus ein-/ausschalten",
|
||||
"privateMessage": "Private Nachricht senden",
|
||||
"profile": "Profil bearbeiten",
|
||||
"raiseHand": "„Melden“ ein-/ausschalten",
|
||||
"raiseHand": "Hand erheben / senken",
|
||||
"reactionsMenu": "Interaktionsmenü öffnen / schließen",
|
||||
"recording": "Aufzeichnung ein-/ausschalten",
|
||||
"remoteMute": "Personen stummschalten",
|
||||
"remoteVideoMute": "Kamera von dieser Person ausschalten",
|
||||
@@ -761,21 +870,29 @@
|
||||
"shortcuts": "Tastenkombinationen ein-/ausblenden",
|
||||
"show": "Im Vordergrund anzeigen",
|
||||
"speakerStats": "Sprechstatistik ein-/ausblenden",
|
||||
"surprised": "Überrascht",
|
||||
"tileView": "Kachelansicht ein-/ausschalten",
|
||||
"toggleCamera": "Kamera wechseln",
|
||||
"toggleFilmstrip": "Miniaturansichten ein-/ausschalten",
|
||||
"videomute": "„Video stummschalten“ ein-/ausschalten",
|
||||
"selectBackground": "Hintergrund auswählen"
|
||||
"videoblur": "Unscharfer Hintergrund ein-/ausschalten",
|
||||
"selectBackground": "Hintergrund auswählen",
|
||||
"expand": "Ausklappen",
|
||||
"collapse": "Einklappen"
|
||||
},
|
||||
"addPeople": "Personen zur Konferenz hinzufügen",
|
||||
"audioSettings": "Ton-Einstellungen",
|
||||
"videoSettings": "Kameraeinstellungen",
|
||||
"audioOnlyOff": "Modus „Nur Audio“ deaktivieren",
|
||||
"audioOnlyOn": "Modus „Nur Audio“ aktivieren",
|
||||
"audioRoute": "Audiogerät auswählen",
|
||||
"authenticate": "Anmelden",
|
||||
"boo": "Buhen",
|
||||
"callQuality": "Qualitätseinstellungen",
|
||||
"chat": "Chat öffnen / schließen",
|
||||
"clap": "Klatschen",
|
||||
"closeChat": "Chat schließen",
|
||||
"closeReactionsMenu": "Interationsmenü schließen",
|
||||
"documentClose": "Geteiltes Dokument schließen",
|
||||
"documentOpen": "Geteiltes Dokument öffnen",
|
||||
"download": "Unsere Apps herunterladen",
|
||||
@@ -786,9 +903,11 @@
|
||||
"exitFullScreen": "Vollbildmodus verlassen",
|
||||
"exitTileView": "Kachelansicht ausschalten",
|
||||
"feedback": "Feedback hinterlassen",
|
||||
"hangup": "Verlassen",
|
||||
"hangup": "Konferenz verlassen",
|
||||
"help": "Hilfe",
|
||||
"invite": "Personen einladen",
|
||||
"laugh": "Lachen",
|
||||
"like": "Daumen hoch",
|
||||
"lobbyButtonDisable": "Lobbymodus deaktivieren",
|
||||
"lobbyButtonEnable": "Lobbymodus aktivieren",
|
||||
"login": "Anmelden",
|
||||
@@ -796,7 +915,7 @@
|
||||
"lowerYourHand": "Hand senken",
|
||||
"moreActions": "Weitere Einstellungen",
|
||||
"moreOptions": "Weitere Optionen",
|
||||
"mute": "Stummschaltung aktivieren / deaktivieren",
|
||||
"mute": "Mikrofon aktivieren / deaktivieren",
|
||||
"muteEveryone": "Alle stummschalten",
|
||||
"muteEveryonesVideo": "Alle Kameras ausschalten",
|
||||
"noAudioSignalTitle": "Es kommt kein Input von Ihrem Mikrofon!",
|
||||
@@ -807,11 +926,20 @@
|
||||
"noisyAudioInputTitle": "Ihr Mikrofon scheint lärmintensiv zu sein!",
|
||||
"noisyAudioInputDesc": "Es klingt, als ob Ihr Mikrofon Störgeräusche verursacht. Bitte überlegen Sie, ob Sie das Gerät stummschalten oder austauschen wollen.",
|
||||
"openChat": "Chat öffnen",
|
||||
"openReactionsMenu": "Interationsmenü öffnen",
|
||||
"participants": "Anwesende",
|
||||
"party": "Konfetti",
|
||||
"pip": "Bild-in-Bild-Modus einschalten",
|
||||
"privateMessage": "Private Nachricht senden",
|
||||
"profile": "Profil bearbeiten",
|
||||
"raiseHand": "Hand erheben",
|
||||
"raiseHand": "Hand erheben / senken",
|
||||
"raiseYourHand": "Melden",
|
||||
"reactionBoo": "Buhen senden",
|
||||
"reactionClap": "Klatschen senden",
|
||||
"reactionLaugh": "Lachen senden",
|
||||
"reactionLike": "Daumen hoch senden",
|
||||
"reactionParty": "Konfetti senden",
|
||||
"reactionSurprised": "Überrascht senden",
|
||||
"security": "Sicherheitsoptionen",
|
||||
"Settings": "Einstellungen",
|
||||
"shareaudio": "Audio teilen",
|
||||
@@ -821,14 +949,15 @@
|
||||
"speakerStats": "Sprechstatistik",
|
||||
"startScreenSharing": "Bildschirmfreigabe starten",
|
||||
"startSubtitles": "Untertitel einschalten",
|
||||
"stopAudioSharing": "Audiofreigabe stoppen",
|
||||
"stopScreenSharing": "Bildschirmfreigabe stoppen",
|
||||
"stopSubtitles": "Untertitel ausschalten",
|
||||
"stopSharedVideo": "YouTube-Video stoppen",
|
||||
"surprised": "Überrascht",
|
||||
"talkWhileMutedPopup": "Versuchen Sie zu sprechen? Ihr Mikrofon ist stummgeschaltet.",
|
||||
"tileViewToggle": "Kachelansicht ein-/ausschalten",
|
||||
"toggleCamera": "Kamera wechseln",
|
||||
"videomute": "Kamera starten / stoppen",
|
||||
"videoSettings": "Video-Einstellungen",
|
||||
"selectBackground": "Hintergrund auswählen"
|
||||
},
|
||||
"transcribing": {
|
||||
@@ -855,6 +984,7 @@
|
||||
"react-nativeGrantPermissions": "Wählen Sie <b><i>Erlauben</i></b>, wenn der Browser um Berechtigungen bittet.",
|
||||
"safariGrantPermissions": "Wählen Sie <b><i>OK</i></b>, wenn der Browser um Berechtigungen bittet."
|
||||
},
|
||||
"volumeSlider": "Lautstärkeregler",
|
||||
"videoSIPGW": {
|
||||
"busy": "Es stehen keine freien Ressourcen zur Verfügung. Bitte versuchen Sie es später noch einmal.",
|
||||
"busyTitle": "Keine freien Ressourcen",
|
||||
@@ -899,6 +1029,7 @@
|
||||
"videomute": "Person hat die Kamera angehalten"
|
||||
},
|
||||
"welcomepage": {
|
||||
"addMeetingName": "Besprechungsnamen hinzufügen",
|
||||
"accessibilityLabel": {
|
||||
"join": "Zum Teilnehmen tippen",
|
||||
"roomname": "Konferenzname eingeben"
|
||||
@@ -919,7 +1050,10 @@
|
||||
"headerSubtitle": "Sichere und hochqualitative Meetings",
|
||||
"info": "Einwahlinformationen",
|
||||
"join": "ERSTELLEN / BEITRETEN",
|
||||
"jitsiOnMobile": "Jitsi on mobile – Download unsere Apps und starte ein Meeting von überall",
|
||||
"jitsiOnMobile": "Jitsi unterwegs – einfach unsere Apps herunterladen und Meetings von überall starten",
|
||||
"mobileDownLoadLinkIos": "iOS App Download",
|
||||
"mobileDownLoadLinkAndroid": "Android App Download",
|
||||
"mobileDownLoadLinkFDroid": "F-Droid App Download",
|
||||
"moderatedMessage": "Oder <a href=\"{{url}}\" rel=\"noopener noreferrer\" target=\"_blank\">reservieren Sie sich eine Konferenz-URL</a>, die nur Sie moderieren.",
|
||||
"privacy": "Datenschutz",
|
||||
"recentList": "Verlauf",
|
||||
@@ -932,7 +1066,15 @@
|
||||
"sendFeedback": "Feedback senden",
|
||||
"startMeeting": "Meeting starten",
|
||||
"terms": "AGB",
|
||||
"title": "Sichere, voll funktionale und komplett kostenlose Videokonferenzen"
|
||||
"title": "Sichere, voll funktionale und komplett kostenlose Videokonferenzen",
|
||||
"logo":{
|
||||
"calendar":"Kalender Logo",
|
||||
"microsoftLogo":"Microsoft Logo",
|
||||
"logoDeepLinking":"Jitsi Meet Logo",
|
||||
"desktopPreviewThumbnail":"Desktop-Vorschau Thumbnail",
|
||||
"googleLogo":"Google Logo",
|
||||
"policyLogo":"Richtlinienlogo"
|
||||
}
|
||||
},
|
||||
"lonelyMeetingExperience": {
|
||||
"button": "Andere einladen",
|
||||
@@ -942,6 +1084,8 @@
|
||||
"header": "Hilfecenter"
|
||||
},
|
||||
"lobby": {
|
||||
"admit": "Zulassen",
|
||||
"admitAll": "Alle zulassen",
|
||||
"knockingParticipantList": "Liste anklopfender Personen",
|
||||
"allow": "Annehmen",
|
||||
"backToKnockModeButton": "Kein Passwort, stattdessen Beitritt anfragen",
|
||||
@@ -972,6 +1116,7 @@
|
||||
"passwordField": "Konferenzpasswort eingeben",
|
||||
"passwordJoinButton": "Beitreten",
|
||||
"reject": "Ablehnen",
|
||||
"rejectAll": "Alle ablehnen",
|
||||
"toggleLabel": "Lobby aktivieren"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -257,6 +257,9 @@
|
||||
"passwordNotSupported": "No se soporta $t(lockRoomPassword) en la reunión",
|
||||
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) no es compatible",
|
||||
"passwordRequired": "$t(lockRoomPasswordUppercase) necesario",
|
||||
"permissionErrorTitle": "Permiso necesario",
|
||||
"permissionCameraRequiredError": "El permiso de cámara es necesario para participar en conferencias con vídeo. Por favor, permítelo en Ajustes",
|
||||
"permissionMicRequiredError": "El permiso de micrófono es necesario para participar en conferencias con sonido. Por favor, permítelo en Ajustes",
|
||||
"popupError": "Su navegador está bloqueando las ventanas emergentes de este sitio. Habilite las ventanas emergentes en la configuración de seguridad de su navegador y vuelva a intentarlo.",
|
||||
"popupErrorTitle": "Ventana emergente bloqueada",
|
||||
"readMore": "mas",
|
||||
|
||||
@@ -1,21 +1,33 @@
|
||||
{
|
||||
"addPeople": {
|
||||
"add": "Gonbidatu",
|
||||
"addContacts": "Gonbidatu zure kontaktuak",
|
||||
"copyInvite": "Kopiatu bilerarako gonbidapena",
|
||||
"copyLink": "Kopiatu bileraren esteka",
|
||||
"copyStream": "Kopiatu zuzenekoaren esteka",
|
||||
"contacts": "kontaktuak",
|
||||
"countryNotSupported": "Oraindik ez dugu helmuga hau onartzen.",
|
||||
"countryReminder": "Atzerritik deitzen? Ziurtatu herrialde-kodearekin hasten zarela!",
|
||||
"defaultEmail": "Zure defektuzko eposta",
|
||||
"disabled": "Ezin duzu jendea gonbidatu.",
|
||||
"failedToAdd": "Parte-hartzaileak gehitzeak huts egin du",
|
||||
"footerText": "Markatzea desgaituta dago.",
|
||||
"loading": "Jendea eta telefono zenbakiak bilatzen",
|
||||
"loadingNumber": "Telefono zenbakia balioztatzen",
|
||||
"loadingPeople": "Gonbidatzeko jendea bilatzen",
|
||||
"googleEmail": "Google Email",
|
||||
"inviteMoreHeader": "Bilerako partaide bakarra zara",
|
||||
"inviteMoreMailSubject": "Sartu {{appName}} bileran",
|
||||
"inviteMorePrompt": "Gonbidatu jende gehiago",
|
||||
"linkCopied": "Esteka ondo kopiatu da arbelera",
|
||||
"noResults": "Ez dago bat datorren bilaketa-emaitzarik",
|
||||
"noValidNumbers": "Sartu telefono zenbakia",
|
||||
"searchNumbers": "Gehitu telefono zenbakiak",
|
||||
"searchPeople": "Bilatu jendea",
|
||||
"searchPeopleAndNumbers": "Bilatu jendea edo gehitu beren telefono zenbakiak",
|
||||
"outlookEmail": "Outlook Email",
|
||||
"phoneNumbers": "telefono zenbakiak",
|
||||
"searching": "Bilatzen...",
|
||||
"shareInvite": "Partekatu bilerarako gonbidapena",
|
||||
"shareLink": "Partekatu bileraren esteka beste partaide batzuk gonbidatzeko",
|
||||
"shareStream": "Partekatu zuzenekoaren esteka",
|
||||
"sipAddresses": "sip helbideak",
|
||||
"telephone": "Telefonoa: {{number}}",
|
||||
"title": "Gonbidatu jendea bilera honetara"
|
||||
"title": "Gonbidatu jendea bilera honetara",
|
||||
"yahooEmail": "Yahoo Email"
|
||||
},
|
||||
"audioDevices": {
|
||||
"bluetooth": "Bluetooth",
|
||||
@@ -24,9 +36,7 @@
|
||||
"speaker": "Bozgorailua",
|
||||
"none": "Ez dago audio-gailurik erabilgarri"
|
||||
},
|
||||
"audioOnly": {
|
||||
"audioOnly": "Banda-zabalera txikia"
|
||||
},
|
||||
"audioOnly": { "audioOnly": "Banda-zabalera txikia" },
|
||||
"calendarSync": {
|
||||
"addMeetingURL": "Bileraren esteka gehitu",
|
||||
"confirmAddLink": "Jitsi esteka gertaera honetara gehitu nahi duzu?",
|
||||
@@ -46,6 +56,7 @@
|
||||
"today": "Gaur"
|
||||
},
|
||||
"chat": {
|
||||
"enter": "Sartu bilera gelan",
|
||||
"error": "Errorea: zure mezua ez da bidali. Arrazoia: {{error}}",
|
||||
"fieldPlaceHolder": "Idatzi mezua hemen",
|
||||
"messagebox": "Idatzi mezua",
|
||||
@@ -57,16 +68,19 @@
|
||||
},
|
||||
"privateNotice": "Mezu pribatua {{recipient}}(e)ri",
|
||||
"title": "Txata",
|
||||
"you": "zu"
|
||||
"you": "zu",
|
||||
"message": "Mezua",
|
||||
"messageAccessibleTitle": "{{user}} partaideak zera dio:",
|
||||
"messageAccessibleTitleMe": "nik zera diot:",
|
||||
"smileysPanel": "Emoji panela"
|
||||
},
|
||||
"chromeExtensionBanner": {
|
||||
"installExtensionText": "Instalatu luzapena Google Calendar eta Office 365rako integraziorako",
|
||||
"buttonText": "Instalatu Chrome luzapena",
|
||||
"dontShowAgain": "Ez erakutsi hau berriro"
|
||||
},
|
||||
"connectingOverlay": {
|
||||
"joiningRoom": "Zure bilerara konektatzen…"
|
||||
"dontShowAgain": "Ez erakutsi hau berriro",
|
||||
"close": "Itxi"
|
||||
},
|
||||
"connectingOverlay": { "joiningRoom": "Zure bilerara konektatzen\u2026" },
|
||||
"connection": {
|
||||
"ATTACHED": "Atxikituta",
|
||||
"AUTHENTICATING": "Autentifikatzea",
|
||||
@@ -77,16 +91,18 @@
|
||||
"DISCONNECTED": "Deskonektatuta",
|
||||
"DISCONNECTING": "Deskonektatzen",
|
||||
"ERROR": "Errorea",
|
||||
"FETCH_SESSION_ID": "Saioaren ID-a eskuratzen…",
|
||||
"FETCH_SESSION_ID": "Saioaren ID-a eskuratzen\u2026",
|
||||
"GET_SESSION_ID_ERROR": "Eskuratu saioaren ID errorea: {{code}}",
|
||||
"GOT_SESSION_ID": "Saioaren ID-a eskuratzea… Eginda",
|
||||
"GOT_SESSION_ID": "Saioaren ID-a eskuratzea\u2026 Eginda",
|
||||
"LOW_BANDWIDTH": "{{displayName}}rako bideoa desaktibatu egin da banda-zabalera aurrezteko"
|
||||
},
|
||||
"connectionindicator": {
|
||||
"address": "Helbidea:",
|
||||
"audio_ssrc": "Audio SSRC:",
|
||||
"bandwidth": "Banda-zabalera estimatua:",
|
||||
"bitrate": "Bit-emaria:",
|
||||
"bridgeCount": "Zerbitzari kopurua: ",
|
||||
"codecs": "Kodekak (A/B): ",
|
||||
"connectedTo": "Konektatua hona:",
|
||||
"e2e_rtt": "E2E RTT:",
|
||||
"framerate": "Marko-abiadura:",
|
||||
@@ -95,6 +111,7 @@
|
||||
"localaddress_plural": "Helbide lokalak:",
|
||||
"localport": "Ataka lokala:",
|
||||
"localport_plural": "Ataka lokalak:",
|
||||
"maxEnabledResolution": "send max",
|
||||
"more": "Erakutsi gehiago",
|
||||
"packetloss": "Pakete-galera:",
|
||||
"quality": {
|
||||
@@ -109,9 +126,12 @@
|
||||
"remoteport": "Urruneko ataka:",
|
||||
"remoteport_plural": "Urruneko atakak:",
|
||||
"resolution": "Ebazpena:",
|
||||
"savelogs": "Gorde logak",
|
||||
"participant_id": "Partehartzailearen ida:",
|
||||
"status": "Konexioa:",
|
||||
"transport": "Garraioa:",
|
||||
"transport_plural": "Garraioak:"
|
||||
"transport_plural": "Garraioak:",
|
||||
"video_ssrc": "Video SSRC:"
|
||||
},
|
||||
"dateUtils": {
|
||||
"earlier": "Lehenago",
|
||||
@@ -123,9 +143,11 @@
|
||||
"description": "Ez da ezer gertatu? Bilera {{app}} mahaigaineko aplikazioan abiarazten saiatu gara. Saiatu berriro edo abiarazi {{app}} web aplikazioan.",
|
||||
"descriptionWithoutWeb": "Ez da ezer gertatu? Bilera {{app}} mahaigaineko aplikazioan abiarazten saiatu gara.",
|
||||
"downloadApp": "Aplikazioa deskargatu",
|
||||
"ifDoNotHaveApp": "Oraindik ere aplikazioa ez baduzu:",
|
||||
"ifHaveApp": "Aplikazioa instalatuta baduzu:",
|
||||
"joinInApp": "Sartu bilerara aplikazioa erabiliz",
|
||||
"launchWebButton": "Abiarazi webean",
|
||||
"openApp": "Aplikaziora joan",
|
||||
"title": "Zure bilera {{app}}(e)n abiarazten…",
|
||||
"title": "Zure bilera {{app}}(e)n abiarazten\u2026",
|
||||
"tryAgainButton": "Saiatu berriro mahaigainean"
|
||||
},
|
||||
"defaultLink": "Adib.: {{url}}",
|
||||
@@ -143,26 +165,27 @@
|
||||
"testAudio": "Erreproduzitu proba-soinua"
|
||||
},
|
||||
"dialog": {
|
||||
"accessibilityLabel": {
|
||||
"liveStreaming": "Zuzeneko Erreprodukzioa"
|
||||
},
|
||||
"accessibilityLabel": { "liveStreaming": "Zuzeneko Erreprodukzioa" },
|
||||
"add": "Add",
|
||||
"allow": "Baimendu",
|
||||
"alreadySharedVideoMsg": "Beste parte-hartzaile batek jada bideo bat partekatzen ari da. Konferentzia honek aldi berean bideo bakarra partekatzen uzten du.",
|
||||
"alreadySharedVideoTitle": "Aldi berean bideo bakarra partekatzea onartuta dago",
|
||||
"applicationWindow": "Aplikazio-leihoa",
|
||||
"authenticationRequired": "Login egin behar duzu",
|
||||
"Back": "Atzera",
|
||||
"cameraConstraintFailedError": "Zure kamerak ez ditu eskakizun batzuk betetzen.",
|
||||
"cameraNotFoundError": "Kamera ez da aurkitu.",
|
||||
"cameraNotSendingData": "Ezin gara zure kamerara sartu. Egiaztatu beste aplikazio bat gailu hori erabiltzen ari den, hautatu beste gailu bat konfigurazio-menuan edo saiatu aplikazioa berriro kargatzen.",
|
||||
"cameraNotSendingDataTitle": "Kamerara sartzeko ezgai",
|
||||
"cameraPermissionDeniedError": "Ez duzu baimenik eman zure kamera erabiltzeko. Hitzaldiarekin bat egin dezakezu, baina ezingo duzu ikusi. Erabili helbide-barran dagoen kamera botoia hau konpontzeko.",
|
||||
"cameraTimeoutError": "Ezin izan da bideo iturburua abiarazi. Denbora-muga gainditu da!",
|
||||
"cameraUnknownError": "Ezin da kamera erabili arrazoi ezezaguna dela eta.",
|
||||
"cameraUnsupportedResolutionError": "Zure kamerak ez du bideoaren bereizmena onartzen.",
|
||||
"Cancel": "Utzi",
|
||||
"close": "Itxi",
|
||||
"conferenceDisconnectMsg": "Zure sare-konexioa egiaztatu dezakezu. Berriro konektatzen {{seconds}} segundotan…",
|
||||
"conferenceDisconnectTitle": "Deskonektatu zara.",
|
||||
"conferenceReloadMsg": "Hau konpontzen saiatzen ari gara. Berriro konektatzen {{seconds}} segundotan..…",
|
||||
"conferenceDisconnectMsg": "Zure sare-konexioa egiaztatu dezakezu. Berriro konektatzen {{seconds}} segundotan\u2026",
|
||||
"conferenceDisconnectTitle": "Deskonektatu egin zara.",
|
||||
"conferenceReloadMsg": "Hau konpontzen saiatzen ari gara. Berriro konektatzen {{seconds}} segundotan..\u2026",
|
||||
"conferenceReloadTitle": "Tamalez, arazoren bat izan da.",
|
||||
"confirm": "Berretsi",
|
||||
"confirmNo": "Ez",
|
||||
@@ -171,36 +194,39 @@
|
||||
"connectErrorWithMsg": "Hara! Arazoren bat egon da eta ezin izan dugu konferentziara konektatu: {{msg}}",
|
||||
"connecting": "Konektatzen",
|
||||
"contactSupport": "Laguntza-zerbitzua",
|
||||
"copied": "Kopiatuta",
|
||||
"copy": "Kopiatu",
|
||||
"dismiss": "Baztertu",
|
||||
"displayNameRequired": "Kaixo! Zein da zure izena?",
|
||||
"done": "Eginda",
|
||||
"e2eeWarning": "",
|
||||
"e2eeDescription": "Puntutik punturako zifratzea PROBATAKOA da. Kontuan hartu puntutik punturako zifratzea aktibatze baduzu, zerbitzariak eskaintzen dituen beste aukera batzuk desaktibatu egingo direla, adibidez grabazioa, zuzeneko emanaldia eta telefono bidezko partehartzea. Kontuan hartu bileran nabigatzaile jakin batzuk erabiltzen dituzten erabiltzaileek hartu ahal izango dutela parte.",
|
||||
"e2eeLabel": "Aktibatu puntutik punturako zifratzea",
|
||||
"e2eeWarning": "OHARRA: bileraren partaide guztiek ezin dute puntutik punturako zifratzea erabili. Aukera hau aktibatzen baduzu, batzuk ezingo zaituzte ikusi eta entzun.",
|
||||
"enterDisplayName": "Sartu zure izena hemen",
|
||||
"enterDisplayNameToJoin": "Mesedez idatzi zure izena bileran sartzeko",
|
||||
"embedMeeting": "Kapsulatu bilera",
|
||||
"error": "Errorea",
|
||||
"externalInstallationMsg": "Mahaigaineko partekatze-luzapena instalatu behar duzu.",
|
||||
"externalInstallationTitle": "Derrigorrezko luzapena",
|
||||
"goToStore": "Joan web dendara",
|
||||
"gracefulShutdown": "Zerbitzua ez dago erabilgarri mantentze-lanak direla eta. Saiatu berriro beranduago.",
|
||||
"grantModeratorDialog": "Ziur zaude partaide hau moderatzaile bihurtu nahi duzula?",
|
||||
"grantModeratorTitle": "Bihurtu moderatzaile",
|
||||
"IamHost": "Ostalaria naiz",
|
||||
"incorrectRoomLockPassword": "Pasahitza baliogabea",
|
||||
"incorrectPassword": "Erabiltzaile-izena edo pasahitza baliogabea",
|
||||
"inlineInstallationMsg": "Mahaigaineko partekatze-luzapena instalatu behar duzu.",
|
||||
"inlineInstallExtension": "Instalatu orain",
|
||||
"internalError": "Hara! Arazoren bat egon da. Errore hau gertatu da: {{error}}",
|
||||
"internalErrorTitle": "Barne-errorea",
|
||||
"kickMessage": "{{participantDisplayName}} kontaktatu dezakezu xehetasun gehiagorentzat.",
|
||||
"kickMessage": "{{participantDisplayName}} kontaktatu dezakezu xehetasun gehiago lortzeko.",
|
||||
"kickParticipantButton": "Bota",
|
||||
"kickParticipantDialog": "Ziur parte-hartzaile hau bota nahi duzula?",
|
||||
"kickParticipantTitle": "Bota parte-hartzaile hau?",
|
||||
"kickTitle": "Ai! {{participantDisplayName}} bileratik bota zaitu",
|
||||
"kickTitle": "Ai! {{participantDisplayName}} parte-hartzaileak bileratik bota zaitu",
|
||||
"liveStreaming": "Zuzeneko erreprodukzioa",
|
||||
"liveStreamingDisabledForGuestTooltip": "Gonbidatuek ezin dute zuzeneko erreprodukzioa hasi.",
|
||||
"liveStreamingDisabledBecauseOfActiveRecordingTooltip": "Ezin da egin grabazioa martxan dagoen artean",
|
||||
"liveStreamingDisabledTooltip": "Hasi zuzeneko erreprodukzioa desgaituta.",
|
||||
"lockMessage": "Konferentzia blokeatzeak huts egin du.",
|
||||
"lockRoom": "Gehitu bilerako $t(lockRoomPasswordUppercase)",
|
||||
"lockTitle": "Blokeoak huts egin du",
|
||||
"logoutQuestion": "Ziur saioa itxi eta konferentzia gelditu nahi duzula?",
|
||||
"login": "Login",
|
||||
"logoutTitle": "Saioa itxi",
|
||||
"maxUsersLimitReached": "Parte-hartzaileen gehieneko kopurua bete da. Hitzaldia beteta dago. Mesedez, jarri harremanetan antolatzailearekin edo saiatu geroago!",
|
||||
"maxUsersLimitReachedTitle": "Parte-hartzaileen gehieneko mugara iritsi da",
|
||||
@@ -209,26 +235,37 @@
|
||||
"micNotSendingData": "Joan zure ordenagailuaren ezarpenetara mikrofonoa aktibatzeko eta haren maila doitzeko",
|
||||
"micNotSendingDataTitle": "Zure mikrofonoa isilduta dago zure sistemaren ezarpenetan",
|
||||
"micPermissionDeniedError": "Ez duzu baimenik eman zure mikrofonoa erabiltzeko. Hitzaldiarekin bat egin dezakezu, baina ezingo duzu entzun. Erabili kameraren botoia helbide-barran hori konpontzeko.",
|
||||
"micTimeoutError": "Ezin da audio iturburua abiarazi. Denbora-muga gainditu da!",
|
||||
"micUnknownError": "Ezin da mikrofonoa erabili, arrazoi ezezagunak direla eta.",
|
||||
"muteEveryoneElseDialog": "Mututu ondoren, ezin izango dituzu desmututu, baina beraien burua desmutututzeko aukera izango dute.",
|
||||
"muteEveryoneElseTitle": "Isilarazi guztiak {{whom}} izan ezik?",
|
||||
"muteEveryoneDialog": "Ziur denak mututu nahi dituzula? Ezin izango dituzu zuk desmututu, baina beraien burua desmutututzeko aukera izango dute.",
|
||||
"muteEveryoneTitle": "Isilarazi guztiak?",
|
||||
"muteEveryoneElsesVideoDialog": "Kamara desaktibatzen duzunean ezingo duzu berriz aktibatu, baina besteek aktibatu egin ahal izango dute.",
|
||||
"muteEveryoneElsesVideoTitle": "Guztien kamera itzali {{whom}} parte-hartzailearena izan ezik?",
|
||||
"muteEveryonesVideoDialog": "Ziur zaude guztien kamera itzali nahi duzula? Ezingo duzu berriz aktibatu baina besteek aktibatu egin ahal izango dute.",
|
||||
"muteEveryonesVideoDialogOk": "Desaktibatu",
|
||||
"muteEveryonesVideoTitle": "Guztien kamera desaktibatu?",
|
||||
"muteEveryoneSelf": "zure burua",
|
||||
"muteEveryoneStartMuted": "Denak mutututa hasiko dira hemendik aurrera",
|
||||
"muteParticipantBody": "Ezin izango dituzu zuk desmututu, baina beraien burua desmutututzeko aukera izango dute.",
|
||||
"muteParticipantButton": "Isilarazi",
|
||||
"muteParticipantDialog": "Ziur parte-hartzaile hau mututu nahi duzula? Ezin izango duzu zuk desmututu, baina bereburua desmutututzeko aukera izango du.",
|
||||
"muteParticipantTitle": "Isilarazi parte-hartzaile hau?",
|
||||
"muteParticipantsVideoButton": "Itzali kamera",
|
||||
"muteParticipantsVideoTitle": "Parte-hartzaile honen kamera itzali?",
|
||||
"muteParticipantsVideoBody": "Ezingo duzu berriz aktibatu baina berak edonoiz aktibatu egin ahal izango du.",
|
||||
"Ok": "Ados",
|
||||
"password": "Pasahitza",
|
||||
"passwordLabel": "Bilera parte-hartzaile batek blokeatu du. Sartu $t(lockRoomPassword) batzeko.",
|
||||
"passwordNotSupported": "$t(lockRoomPassword) bilera ezartzea ez da onartzen.",
|
||||
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) ezin da erabili",
|
||||
"passwordRequired": "$t(lockRoomPasswordUppercase) beharrezkoa da",
|
||||
"popupError": "Zure nabigatzaileak gune honetako pop-up leihoak blokeatzen ditu. Aktibatu pop-upak arakatzailearen segurtasun-ezarpenetan eta saiatu berriro.",
|
||||
"popupErrorTitle": "Laster-leihoa blokeatuta",
|
||||
"readMore": "more",
|
||||
"recording": "Grabatzen",
|
||||
"recordingDisabledForGuestTooltip": "Gonbidatuek ezin dute grabaketarik hasi.",
|
||||
"recordingDisabledBecauseOfActiveLiveStreamingTooltip": "Ezin da egin zuzeneko emanaldia aktibo dagoen artean",
|
||||
"recordingDisabledTooltip": "Hasi grabatzen desgaituta.",
|
||||
"rejoinNow": "Berriro batu",
|
||||
"remoteControlAllowedMessage": "{{user}} erabiltzaileak zure urruneko-kontrol eskaera onartu egin du!",
|
||||
@@ -246,10 +283,8 @@
|
||||
"reservationErrorMsg": "Kode-errorea: {{code}}, mezua: {{msg}}",
|
||||
"retry": "Saiatu berriro",
|
||||
"screenSharingAudio": "Partekatu audioa",
|
||||
"screenSharingFailedToInstall": "Hara! Zure pantaila-partekatze luzapena instalatzeak huts egin du.",
|
||||
"screenSharingFailedToInstallTitle": "Pantaila-partekatze luzapena instalatzeak huts egin du",
|
||||
"screenSharingFirefoxPermissionDeniedError": "Arazoren bat egon da zure pantaila partekatzen saiatu garenean. Ziurtatu horretarako baimena eman diguzula. ",
|
||||
"screenSharingFirefoxPermissionDeniedTitle": "Hara! Ezin izan dugu pantaila-partekatzea hasi!",
|
||||
"screenSharingFailed": "Atx! Erroreren bat gertatu da eta ezin izan dugu zure pantaila partekatzen hasi!",
|
||||
"screenSharingFailedTitle": "Pantaila partekatzeak huts egin du!",
|
||||
"screenSharingPermissionDeniedError": "Hara! Arazoren bat egon da pantaila-partekatze luzapenaren baimenekin. Kargatu eta saiatu berriro.",
|
||||
"sendPrivateMessage": "Mezu pribatua berriki jaso duzu. Pribatuki erantzun nahi duzu ala zure mezua taldera bidali nahi duzu?",
|
||||
"sendPrivateMessageCancel": "Bidali taldera",
|
||||
@@ -257,12 +292,12 @@
|
||||
"sendPrivateMessageTitle": "Bidali pribatuki?",
|
||||
"serviceUnavailable": "Zerbitzua ez erabilgarria",
|
||||
"sessTerminated": "Deia amaituta",
|
||||
"sessionRestarted": "Deia zubiak berrabiarazi du",
|
||||
"Share": "Partekatu",
|
||||
"shareVideoLinkError": "Eman YouTube esteka zuzena.",
|
||||
"shareVideoTitle": "Partekatu bideoa",
|
||||
"shareYourScreen": "Partekatu zure pantaila",
|
||||
"shareYourScreenDisabled": "Pantaila-partekatzea desgaituta.",
|
||||
"shareYourScreenDisabledForGuest": "Gonbidatuek ezin dute pantaila partekatu.",
|
||||
"startLiveStreaming": "Hasi zuzeneko erreprodukzioa",
|
||||
"startRecording": "Hasi grabatzen",
|
||||
"startRemoteControlErrorMessage": "Errorea gertatu da urruneko-kontrol saioa hasten saiatzerakoan!",
|
||||
@@ -273,26 +308,50 @@
|
||||
"streamKey": "Zuzeneko erreprodukzioaren giltza",
|
||||
"Submit": "Bidali",
|
||||
"thankYou": "Eskerrik asko {{appName}} erabiltzeagatik!",
|
||||
"token": "token",
|
||||
"token": "tokena",
|
||||
"tokenAuthFailed": "Ez duzu dei honetara elkartzeko baimenik.",
|
||||
"tokenAuthFailedTitle": "Autentifikazioak huts egin du",
|
||||
"transcribing": "Transkripzioa",
|
||||
"unlockRoom": "Kendu bileraren $t(lockRoomPassword)",
|
||||
"userPassword": "erabiltzailearen pasahitza",
|
||||
"user": "User",
|
||||
"userIdentifier": "Erabiltzaile-izena",
|
||||
"userPassword": "Erabiltzailearen pasahitza",
|
||||
"videoLink": "Bideoaren estaka link",
|
||||
"WaitForHostMsg": "<b>{{room}}</b> konferentzia oraindik ez da hasi. Ostalaria bazara, autentifikatu. Bestela, itxaron ostalaria iritsi arte.",
|
||||
"WaitForHostMsgWOk": "<b>{{room}}</b> konferentzia oraindik ez da hasi. Ostalaria bazara, sakatu Ados autentifikatu ahal izateko. Bestela, itxaron ostalaria iritsi arte.",
|
||||
"WaitingForHost": "Ostalariaren zain …",
|
||||
"WaitingForHostTitle": "Antolatzailearen zain...",
|
||||
"Yes": "Bai",
|
||||
"yourEntireScreen": "Zure pantaila osoa"
|
||||
},
|
||||
"dialOut": {
|
||||
"statusMessage": "{{status}} dago"
|
||||
},
|
||||
"documentSharing": {
|
||||
"title": "Partekatutako dokumentua"
|
||||
"yourEntireScreen": "Zure pantaila osoa",
|
||||
"remoteUserControls": "{{username}} parte-hartzailearen urruneko kontrolak",
|
||||
"localUserControls": "Erabiltzaile lokalaren kontrolak"
|
||||
},
|
||||
"dialOut": { "statusMessage": "{{status}} dago" },
|
||||
"documentSharing": { "title": "Partekatutako dokumentua" },
|
||||
"e2ee": {
|
||||
"labelToolTip": ""
|
||||
"labelToolTip": "Bilera honetako audio eta bideoa puntutik puntura zifratuta daude."
|
||||
},
|
||||
"embedMeeting": { "title": "Bilera hau txertatu" },
|
||||
"virtualBackground": {
|
||||
"apply": "Aplikatu",
|
||||
"title": "Atzeko plano birtualak",
|
||||
"blur": "Lausotu",
|
||||
"slightBlur": "Lausotze arina",
|
||||
"removeBackground": "Kendu atzeko planoa",
|
||||
"addBackground": "Gehitu atzeko planoa",
|
||||
"pleaseWait": "Itxaron mesedez...",
|
||||
"none": "Bat ere ez",
|
||||
"uploadedImage": "Kargatutako irudia {{index}}",
|
||||
"deleteImage": "Ezabatu irudia",
|
||||
"image1": "Hondartza",
|
||||
"image2": "Horma zuria",
|
||||
"image3": "Gela huts zuria",
|
||||
"image4": "Lurreko lanpara beltza",
|
||||
"image5": "Mendia",
|
||||
"image6": "Basoa",
|
||||
"image7": "Egunsentia",
|
||||
"desktopShareError": "Ezin izan da mahaigaina partekatu",
|
||||
"desktopShare": "Mahaigaina partekatu",
|
||||
"webAssemblyWarning": "Ezin da WebAssembly erabili"
|
||||
},
|
||||
"feedback": {
|
||||
"average": "Normala",
|
||||
@@ -301,7 +360,8 @@
|
||||
"good": "Ona",
|
||||
"rateExperience": "Puntuatu zure bileraren esperientzia",
|
||||
"veryBad": "Oso Txarra",
|
||||
"veryGood": "Oso ona"
|
||||
"veryGood": "Oso ona",
|
||||
"star": "Star"
|
||||
},
|
||||
"incomingCall": {
|
||||
"answer": "Erantzun",
|
||||
@@ -318,6 +378,7 @@
|
||||
"country": "Herrialdea",
|
||||
"dialANumber": "Bilerara batzeko, deitu zenbaki hauetakoren batera eta sartu pin-a.",
|
||||
"dialInConferenceID": "PIN:",
|
||||
"copyNumber": "Kopiatu zenbakia",
|
||||
"dialInNotSupported": "Markatzea ez da onartzen.",
|
||||
"dialInNumber": "Markatzea:",
|
||||
"dialInSummaryError": "Huts egin du markatze-informazioa eskuratzeko. Saiatu berriro geroago.",
|
||||
@@ -326,6 +387,7 @@
|
||||
"inviteLiveStream": "Bilera honen zuzeneko erreprodukzioa ikusteko, egin klik esteka honetan: {{url}}",
|
||||
"invitePhone": "Telefonoz sartzeko, markatu : {{number}},,{{conferenceID}}#\n",
|
||||
"invitePhoneAlternatives": "Markatze-zenbaki ezberdin baten bila zabiltza?\nIkusi bileraren markatze-zenbakiak: {{url}}\n\n\nGela-telefono baten bidez markatzen ari bazara, batu audioa konektatu gabe: {{silentUrl}}",
|
||||
"inviteSipEndpoint": "SIP helbidea erabiliz sartzeko erabili hau: {{sipUri}}",
|
||||
"inviteURLFirstPartGeneral": "Bilera batera batzeko gonbidapena luzatu zaizu.",
|
||||
"inviteURLFirstPartPersonal": "{{name}} erabiltzaileak bilera batera gonbidatu zaitu.\n",
|
||||
"inviteURLSecondPart": "\nBilerara sartu:\n{{url}}\n",
|
||||
@@ -354,6 +416,7 @@
|
||||
"support": "Laguntza",
|
||||
"supportMsg": "Hau gertatzen jarraituz gero, jarri gurekin harremanetan"
|
||||
},
|
||||
"jitsiHome": "{{logo}} Logoa portadara estekatuta dago",
|
||||
"keyboardShortcuts": {
|
||||
"focusLocal": "Arreta jarri zure bideoan",
|
||||
"focusRemote": "Arreta jarri beste pertsona baten bideoan",
|
||||
@@ -366,12 +429,14 @@
|
||||
"showSpeakerStats": "Erakutsi iragarleen estatistikak",
|
||||
"toggleChat": "Ireki edo itxi txata",
|
||||
"toggleFilmstrip": "Erakutsi edo ezkutatu bideoaren miniaturak",
|
||||
"toggleParticipantsPane": "Erakutsi edo ezkutatu parte-hartzaileen panela",
|
||||
"toggleScreensharing": "Kamera eta pantailaren partekatzea aldatu",
|
||||
"toggleShortcuts": "Erakutsi edo ezkutatu teklatu lasterbideak",
|
||||
"videoMute": "Abiarazi edo gelditu zure kamera",
|
||||
"videoQuality": "Kudeatu deiaren kalitatea"
|
||||
"videoMute": "Abiarazi edo gelditu zure kamera"
|
||||
},
|
||||
"liveStreaming": {
|
||||
"limitNotificationDescriptionWeb": "Zuzeneko emanaldien arrakasta dela eta {{limit}} minutura mugatuta daude. Mugarik gabekoa nahi baduzu probatu <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"limitNotificationDescriptionNative": "Zure emanaldia {{limit}} minutura mugatuta dago. Mugarik gabekoa nahi baduzu probatu {{app}}.",
|
||||
"busy": "Transmisio baliabideak libratzen ari gara. Saiatu berriro minutu batzuk barru.",
|
||||
"busyTitle": "Zuzeneko emanaldia egin dezaketen guztiak okupatuta daude",
|
||||
"changeSignIn": "Aldatu kontua.",
|
||||
@@ -382,16 +447,16 @@
|
||||
"errorAPI": "Errorea gertatu da zure YouTube igorpenetan sartzerakoan. Saiatu berriro saioa hasten.",
|
||||
"errorLiveStreamNotEnabled": "{{email}} e-postan ez dago zuzeneko transmisioa gaituta. Gaitu zuzeneko transmisioa edo hasi saioa zuzeneko transmisioa gaituta duen kontu batean.",
|
||||
"expandedOff": "Zuzeneko transmisioa gelditu da",
|
||||
"expandedOn": "",
|
||||
"expandedPending": "Zuzeneko transmisioa abian da…",
|
||||
"expandedOn": "Bideodeia YouTuben emititzen ari da",
|
||||
"expandedPending": "Zuzeneko transmisioa abian da\u2026",
|
||||
"failedToStart": "Zuzeneko transmisioak ezin izan du hasi",
|
||||
"getStreamKeyManually": "",
|
||||
"getStreamKeyManually": "Ezin izan dugu zure transmisio-gakoa bilatu. Lortu ezazu YouTuberen webgunetik.",
|
||||
"invalidStreamKey": "Zuzeneko transmisioaren gakoa okerra izan daiteke.",
|
||||
"off": "Zuzeneko transmisioa gelditu da",
|
||||
"offBy": "{{name}} erabiltzaileak zuzeneko emanaldia gelditu du",
|
||||
"on": "Zuzeneko transmisioa",
|
||||
"onBy": "{{name}} erabiltzaileak zuzeneko emanaldia hasi du",
|
||||
"pending": "Zuzeneko transmisioa abian…",
|
||||
"pending": "Zuzeneko transmisioa abian\u2026",
|
||||
"serviceName": "Zuzeneko transmisioa zerbitzua",
|
||||
"signedInAs": "Honela hasi duzu saioa:",
|
||||
"signIn": "Hasi saioa Google-ekin",
|
||||
@@ -400,7 +465,7 @@
|
||||
"start": "Hasi zuzeneko transmisioa",
|
||||
"streamIdHelp": "Zer da hau?",
|
||||
"unavailableTitle": "Zuzeneko transmisioa ez dago erabilgarri",
|
||||
"youtubeTerms": "",
|
||||
"youtubeTerms": "YouTuberen erabilpen baldintzak",
|
||||
"googlePrivacyPolicy": "Google-en pribatutasun-politika"
|
||||
},
|
||||
"localRecording": {
|
||||
@@ -442,7 +507,7 @@
|
||||
"disconnected": "deskonektatuta",
|
||||
"focus": "Konferentzia fokuratu",
|
||||
"focusFail": "{{component}} ez dago eskuragarri - saiatu berriro {{ms}} segundo barru",
|
||||
"grantedTo": "{{to}}(e)ri moderatzaile eskubideak eman zaizkio!",
|
||||
"grantedTo": "{{to}} parte-hartzaileari moderatzaile eskubideak eman zaizkio!",
|
||||
"invitedOneMember": "{{name}} gonbidatu da",
|
||||
"invitedThreePlusMembers": "{{name}} eta beste {{count}} gonbidatu dira",
|
||||
"invitedTwoMembers": "{{first}} eta {{second}} jada gonbidatu dira",
|
||||
@@ -453,9 +518,13 @@
|
||||
"mutedTitle": "Mutututa zaude!",
|
||||
"mutedRemotelyTitle": "{{participantDisplayName}}(e)k mututu zaitu!",
|
||||
"mutedRemotelyDescription": "Hitz egiteko prest zaudenean mikrofonoa piztu dezakezu. Amaitzean berriz ere isilarazi ezazu bilerako zarata ekiditeko.",
|
||||
"videoMutedRemotelyTitle": "Your camera has been disabled by {{participantDisplayName}}!",
|
||||
"videoMutedRemotelyDescription": "You can always turn it on again.",
|
||||
"passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) beste erabiltzaile batek kendu du",
|
||||
"passwordSetRemotely": "$t(lockRoomPasswordUppercase) beste erabiltzaile batek ezarri du",
|
||||
"raisedHand": "{{name}} erabiltzaileak hitz egin nahi du.",
|
||||
"screenShareNoAudio": " Share audio box was not checked in the window selection screen.",
|
||||
"screenShareNoAudioTitle": "Share audio was not checked",
|
||||
"somebody": "Norbait",
|
||||
"startSilentTitle": "Audio irteerarik gabe batu zara!",
|
||||
"startSilentDescription": "Batu berriro audioa gaitzeko",
|
||||
@@ -465,56 +534,101 @@
|
||||
"newDeviceCameraTitle": "Kamera berria hauteman da",
|
||||
"newDeviceAudioTitle": "Audio-gailu berria hauteman da",
|
||||
"newDeviceAction": "Erabilera",
|
||||
"OldElectronAPPTitle": "",
|
||||
"oldElectronClientDescription1": "",
|
||||
"oldElectronClientDescription2": "",
|
||||
"oldElectronClientDescription3": ""
|
||||
"OldElectronAPPTitle": "Zaharkitutako aplikazioa",
|
||||
"oldElectronClientDescription1": "Segurtasun arazoak dituen Jitsi Meet aplikazioa erabiltzen arai zara. Eguneratu ezazu",
|
||||
"oldElectronClientDescription2": "bertsio berriagora",
|
||||
"oldElectronClientDescription3": "ORAIN!",
|
||||
"groupTitle": "Jakinarazpenak"
|
||||
},
|
||||
"participantsPane": {
|
||||
"close": "Itxi",
|
||||
"headings": {
|
||||
"lobby": "Itxaron-gela ({{count}})",
|
||||
"participantsList": "Bilerako parte-hartzaileak ({{count}})"
|
||||
},
|
||||
"actions": {
|
||||
"invite": "Gonbidatu norbait",
|
||||
"muteAll": "Ixilarazi guztiak",
|
||||
"stopVideo": "Gelditu bideoa"
|
||||
}
|
||||
},
|
||||
"passwordSetRemotely": "beste parte-hartzaile batek ezarrita",
|
||||
"passwordDigitsOnly": "{{number}} digitu arte",
|
||||
"poweredby": "garatzailea:",
|
||||
"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": ""
|
||||
"audioAndVideoError": "Errorea audio eta bideoan:",
|
||||
"audioDeviceProblem": "Arazo bat dago zure audio gailuarekin",
|
||||
"audioOnlyError": "Errorea audioan:",
|
||||
"audioTrackError": "Ezin izan da audio pista sortu.",
|
||||
"calling": "Deitzen",
|
||||
"callMe": "Deitu nazazu",
|
||||
"callMeAtNumber": "Deitu nazazu zenbaki honetara:",
|
||||
"configuringDevices": "Gailuak konfiguratzen...",
|
||||
"connectedWithAudioQ": "Audioarekin konektatuta zaude?",
|
||||
"connection": {
|
||||
"good": "Zure internet konexioa ondo dabil!",
|
||||
"nonOptimal": "Zure internet konexioa ez da onena",
|
||||
"poor": "Zure internet konexioa kaxkarra da"
|
||||
},
|
||||
"connectionDetails": {
|
||||
"audioClipping": "Zure audioa ez da guztiz ondo entzungo.",
|
||||
"audioHighQuality": "Zure audioak kalitate bikaina izango du.",
|
||||
"audioLowNoVideo": "Zura audioa kaxkarra izango da eta ez da bideorik egongo.",
|
||||
"goodQuality": "Izugarria! Zure deiaren kalitatea ona izango da.",
|
||||
"noMediaConnectivity": "Ezin izan dugu proba hau egiteko inora konektatu. Hau firewall edo suebaki bat dagoelako eta NATagatik gertatu ohi da.",
|
||||
"noVideo": "Zure bideoa oso txarra izango da.",
|
||||
"undetectable": "Oraindik ere ezin baduzu nabigatzailean dieirk egin, ziurtatu zure bozgorailu, mikrofono eta kamera piztuta daudela eta ondo dabiltzala eta nabigatzaileari berauek erabiltzeko baimena eman diozula.",
|
||||
"veryPoorConnection": "Zure deiaren kalitatea oso txarra izango da.",
|
||||
"videoFreezing": "Zure bideoa gelditu, belztu eta pixelatu egingo da.",
|
||||
"videoHighQuality": "Zure bideoak kalitate ona izango du.",
|
||||
"videoLowQuality": "Zure bideoak kalitate txikia izango du.",
|
||||
"videoTearing": "Zure bideoa pixelatuta agertuko da eta ez da ondo ikusiko."
|
||||
},
|
||||
"copyAndShare": "Kopiatu eta partekatu bileraren esteka",
|
||||
"dialInMeeting": "Telefono dei bat eginez sartu",
|
||||
"dialInPin": "Deitu bilerara eta idatzi kode hau:",
|
||||
"dialing": "Deitzen",
|
||||
"doNotShow": "Ez erakutsi pantaila hau berriz",
|
||||
"errorDialOut": "Ezin izan da deitu",
|
||||
"errorDialOutDisconnected": "Ezin izan da deitu. Konexioa eten egin da",
|
||||
"errorDialOutFailed": "Ezin izan da deitu. Deiak huts egin du",
|
||||
"errorDialOutStatus": "Ezin izan da deiaren egoera lortu",
|
||||
"errorMissingName": "Idatzi zure izena bileran sartzeko",
|
||||
"errorStatusCode": "Errorea deitzean, kodea: {{status}}",
|
||||
"errorValidation": "Zenbakiaren balidazioak huts egin du",
|
||||
"iWantToDialIn": "Telefonoz sartu nahi dut",
|
||||
"joinAudioByPhone": "Telefono deiaren audioarekin sartu",
|
||||
"joinMeeting": "Bilerara sartu",
|
||||
"joinWithoutAudio": "Audio gabe sartu",
|
||||
"initiated": "Deia hasi da",
|
||||
"linkCopied": "Lotura ondo kopiatu da",
|
||||
"lookGood": "Zure mikrofonoa ondo dabil",
|
||||
"or": "edo",
|
||||
"premeeting": "Aurre-bilera",
|
||||
"showScreen": "Aktibatu bileraren aurreko pantaila",
|
||||
"keyboardShortcuts": "Aktibatu teklatuaren laster-teklak",
|
||||
"startWithPhone": "Telefono diearen audioarekin hasi",
|
||||
"screenSharingError": "Errorea pantaila partekatzean:",
|
||||
"videoOnlyError": "Errorea bideoan:",
|
||||
"videoTrackError": "Ezin izan da bideo pista sortu.",
|
||||
"viewAllNumbers": "zenbaki guztiak ikusi"
|
||||
},
|
||||
"presenceStatus": {
|
||||
"busy": "Okupatuta",
|
||||
"calling": "Deitzen…",
|
||||
"calling": "Deitzen\u2026",
|
||||
"connected": "Konektatuta",
|
||||
"connecting": "Konektatzen…",
|
||||
"connecting2": "",
|
||||
"connecting": "Konektatzen\u2026",
|
||||
"connecting2": "Konektatzen*\u2026",
|
||||
"disconnected": "Deskonektatuta",
|
||||
"expired": "Iraungita",
|
||||
"ignored": "Ezikusia",
|
||||
"initializingCall": "Deia hasieratzen…",
|
||||
"initializingCall": "Deia hasieratzen\u2026",
|
||||
"invited": "Gonbidatua",
|
||||
"rejected": "Baztertuta",
|
||||
"ringing": "Deitzen…"
|
||||
"ringing": "Deitzen\u2026"
|
||||
},
|
||||
"profile": {
|
||||
"avatar": "iruditxoa",
|
||||
"setDisplayNameLabel": "Ezarri zure bistaratze-izena",
|
||||
"setEmailInput": "Sartu e-posta",
|
||||
"setEmailLabel": "Ezarri zure gravatar e-posta",
|
||||
@@ -522,6 +636,8 @@
|
||||
},
|
||||
"raisedHand": "Hitz egin nahiko luke",
|
||||
"recording": {
|
||||
"limitNotificationDescriptionWeb": "Zure grabazioa {{limit}} minutura mugatuta dago. Mugarik gabeko grabazioak izateko probatu <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"limitNotificationDescriptionNative": "Zure grabazioa {{limit}} minutura mugatuta dago. Mugarik gabeko grabazioak izateko probatu <3>{{app}}</3>.",
|
||||
"authDropboxText": "Kargatu Dropbox-era",
|
||||
"availableSpace": "Leku erabilgarria: {{spaceLeft}} MB (gutxi gorabehera {{duration}} grabazio minutuak)",
|
||||
"beta": "BETA",
|
||||
@@ -530,7 +646,7 @@
|
||||
"error": "Grabazioak huts egin du. Saiatu berriro.",
|
||||
"expandedOff": "Grabazioa gelditu da",
|
||||
"expandedOn": "Bilera grabatzen ari da.",
|
||||
"expandedPending": "Grabaketa abian da…",
|
||||
"expandedPending": "Grabaketa abian da\u2026",
|
||||
"failedToStart": "Grabazioa hasteak huts egin du",
|
||||
"fileSharingdescription": "Partekatu grabazioa bileraren parte-hartzaileekin",
|
||||
"live": "ZUZENEAN",
|
||||
@@ -539,17 +655,22 @@
|
||||
"offBy": "{{name}} erabiltzaileak grabazioa gelditu du",
|
||||
"on": "Grabaketa",
|
||||
"onBy": "{{name}} erabiltzaileak grabazioa hasi du",
|
||||
"pending": "Bilera grabatzeko prestatzen…",
|
||||
"pending": "Bilera grabatzeko prestatzen\u2026",
|
||||
"rec": "GRB",
|
||||
"serviceDescription": "Zure grabazioa grabazio-zerbitzuan gordeko da",
|
||||
"serviceDescriptionCloud": "Lainoko grabazioa",
|
||||
"serviceName": "Grabazio-zerbitzua",
|
||||
"signIn": "Sartu",
|
||||
"signOut": "Itxi saioa",
|
||||
"unavailable": "",
|
||||
"unavailable": "Atx! {{serviceName}} ez dago eskuragarri. Arazoa konpontzeko lanean gabiltza. Saiatu berriz beranduago.",
|
||||
"unavailableTitle": "Grabazioa ez dago eskuragarri"
|
||||
},
|
||||
"sectionList": {
|
||||
"pullToRefresh": "Eguneratu"
|
||||
"sectionList": { "pullToRefresh": "Eguneratu" },
|
||||
"security": {
|
||||
"about": "Zure bilerari $t(lockRoomPassword) gehitu diezaiokezu. Parte-hartzaileek $t(lockRoomPassword) idatzi beharko dute bilerara sartu aurretik.",
|
||||
"aboutReadOnly": "Moderatzaileak $t(lockRoomPassword) gehitu diezaiokete bilerari. Parte-hartzaileek $t(lockRoomPassword) idatzi beharko dute bilerara sartu aurretik.",
|
||||
"insecureRoomNameWarning": "Bileraren izena ez da segurua. Nahi ez duzun parte-hartzaileak agertu daitezke. Baloratu segurtasuna botoia erabiliz bilerari segurtasuna gehitzea.",
|
||||
"securityOptions": "Segurtasun aukerak"
|
||||
},
|
||||
"settings": {
|
||||
"calendar": {
|
||||
@@ -568,6 +689,7 @@
|
||||
"more": "Gehiago",
|
||||
"name": "Izena",
|
||||
"noDevice": "Bat ere ez",
|
||||
"sameAsSystem": "Same as system ({{label}})",
|
||||
"selectAudioOutput": "Audio irteera",
|
||||
"selectCamera": "Kamera",
|
||||
"selectMic": "Mikrofonoa",
|
||||
@@ -579,15 +701,15 @@
|
||||
"settingsView": {
|
||||
"advanced": "Aurreratua",
|
||||
"alertOk": "Ados",
|
||||
"alertCancel": "",
|
||||
"alertCancel": "Utzi",
|
||||
"alertTitle": "Abisua",
|
||||
"alertURLText": "Zerbitzariaren URLa baliogabea da",
|
||||
"buildInfoSection": "Konpilazioaren informazioa",
|
||||
"conferenceSection": "",
|
||||
"conferenceSection": "Konferentzia",
|
||||
"disableCallIntegration": "Desgaitu jatorrizko deien integrazioa",
|
||||
"disableP2P": "Desgaitu puntuz puntuko modua",
|
||||
"disableCrashReporting": "",
|
||||
"disableCrashReportingWarning": "",
|
||||
"disableCrashReporting": "Desgaitu huts egiteen inguruko informazioa bidaltzea",
|
||||
"disableCrashReportingWarning": "Ziur zaude ez duzula huts egiteen inguruko informazioa bidaltzerik? Aukera aplikazioa berrabiaraztean aktibatuko da.",
|
||||
"displayName": "Bistaratzeko izena",
|
||||
"email": "Posta elektronikoa",
|
||||
"header": "Ezarpenak",
|
||||
@@ -613,6 +735,7 @@
|
||||
},
|
||||
"startupoverlay": {
|
||||
"policyText": " ",
|
||||
"genericTitle": "Bilerak zure mikrofonoa eta kamera erabili behar ditu.",
|
||||
"title": "{{app}} aplikazioak zure mikrofonoa eta kamara erabili behar ditu."
|
||||
},
|
||||
"suspendedoverlay": {
|
||||
@@ -629,27 +752,36 @@
|
||||
"chat": "Txandakatu txat leihoa",
|
||||
"document": "Txandakatu partekatutako dokumentua",
|
||||
"download": "Gure aplikazioak deskargatu",
|
||||
"e2ee": "",
|
||||
"embedMeeting": "Embed meeting",
|
||||
"feedback": "Utzi iruzkin bat",
|
||||
"fullScreen": "",
|
||||
"fullScreen": "Aldatu pantaila osora",
|
||||
"grantModerator": "Bihurtu moderatzaile",
|
||||
"hangup": "Deia bota",
|
||||
"help": "Laguntza",
|
||||
"invite": "Jendea gonbidatu",
|
||||
"kick": "Kanporatu parte-hartzailea",
|
||||
"lobbyButton": "Aktibatu/desaktibatu itxaron-gela",
|
||||
"localRecording": "Tokiko grabazio kontrolak kontrolatu",
|
||||
"lockRoom": "Aldatu bileraren pasahitza",
|
||||
"moreActions": "Txandakatu ekintza gehiago menua",
|
||||
"moreActionsMenu": "Ekintza gehiago menua",
|
||||
"moreOptions": "",
|
||||
"moreOptions": "Erakutsi aukera gehiagu",
|
||||
"mute": "Isildu",
|
||||
"muteEveryone": "Partehartzaile guztiak isildu",
|
||||
"muteEveryoneElse": "Ixildu beste guztiak",
|
||||
"muteEveryonesVideo": "Itzali guztien kamera",
|
||||
"muteEveryoneElsesVideo": "Itzali beste guztien kamera",
|
||||
"participants": "Parte-hartzaileak",
|
||||
"pip": "Txandakatu irudiaren irudian",
|
||||
"privateMessage": "Mezu pribatua bidali",
|
||||
"profile": "Editatu zure profila",
|
||||
"raiseHand": "",
|
||||
"raiseHand": "Jaso edo jaitsi eskua",
|
||||
"recording": "Grabaketa aktibatu",
|
||||
"remoteMute": "Mututu parte-hartzailea",
|
||||
"remoteVideoMute": "Desaktibatu parte-hartzaile baten kamera",
|
||||
"security": "Segurtasun aukerak",
|
||||
"Settings": "Txandakatu ezarpenak",
|
||||
"shareaudio": "Partekatu audioa",
|
||||
"sharedvideo": "Txandakatu YouTube bideoa partekatzen",
|
||||
"shareRoom": "norbait gonbidatu",
|
||||
"shareYourScreen": "Txandakatu pantaila partekatzea",
|
||||
@@ -660,9 +792,14 @@
|
||||
"toggleCamera": "Txandakatu kamera",
|
||||
"toggleFilmstrip": "Txandakatu film-zerrenda",
|
||||
"videomute": "Txandakatu mutututako bideoa",
|
||||
"videoblur": "Txandakatu bideoaren lausotzea"
|
||||
"videoblur": "Txandakatu bideoaren lausotzea",
|
||||
"selectBackground": "Aukeratu atzeko-planoa",
|
||||
"expand": "Zabaldu",
|
||||
"collapse": "Batu"
|
||||
},
|
||||
"addPeople": "Gehitu jendea zure deira",
|
||||
"audioSettings": "Audio ezarpenak",
|
||||
"videoSettings": "Video ezarpenak",
|
||||
"audioOnlyOff": "Gaitu audioa soilik modua",
|
||||
"audioOnlyOn": "Gaitu audioa soilik modua",
|
||||
"audioRoute": "Aukeratu soinu gailua",
|
||||
@@ -673,7 +810,8 @@
|
||||
"documentClose": "Dokumentu partekatu itxi",
|
||||
"documentOpen": "Ireki partekatutako dokumentua",
|
||||
"download": "Deskargatu gure aplikazioa",
|
||||
"e2ee": "",
|
||||
"e2ee": "Puntutik punturako zifratzea",
|
||||
"embedMeeting": "Txertatu bilera",
|
||||
"enterFullScreen": "Ikusi pantaila osoa",
|
||||
"enterTileView": "Sartu mosaiko ikuspegian",
|
||||
"exitFullScreen": "Irten pantaila osora",
|
||||
@@ -682,6 +820,8 @@
|
||||
"hangup": "Irten",
|
||||
"help": "Laguntza",
|
||||
"invite": "Jendea gonbidatu",
|
||||
"lobbyButtonDisable": "Desaktibatu itxaron-gela modua",
|
||||
"lobbyButtonEnable": "Aktibatu itxaron-gela modua",
|
||||
"login": "Saioa hasi",
|
||||
"logout": "Itxi saioa",
|
||||
"lowerYourHand": "Jaitsi eskua",
|
||||
@@ -689,20 +829,24 @@
|
||||
"moreOptions": "Aukera gehiago",
|
||||
"mute": "Isiltasuna aktibatu / desaktibatu",
|
||||
"muteEveryone": "Partehartzaile guztiak isildu",
|
||||
"muteEveryonesVideo": "Desaktibatu guztien kamera",
|
||||
"noAudioSignalTitle": "Mikrofonotik ez dago sarrerarik!",
|
||||
"noAudioSignalDesc": "Sistema edo gailuaren ezarpenetatik islatu ez baduzu, kontuan hartu gailua aldatzea.",
|
||||
"noAudioSignalDescSuggestion": "Sistema edo gailuaren ezarpenetatik islatu ez baduzu, kontuan hartu hurrengo gailua erabiltzea:",
|
||||
"noAudioSignalDialInDesc": "",
|
||||
"noAudioSignalDialInLinkDesc": "",
|
||||
"noAudioSignalDialInDesc": "Gainera, hau erabiliz deitu dezakezu:",
|
||||
"noAudioSignalDialInLinkDesc": "Deitzeko telefonoak",
|
||||
"noisyAudioInputTitle": "ingurune zaratatsua",
|
||||
"noisyAudioInputDesc": "ingurune zaratatsua",
|
||||
"openChat": "Ireki txata",
|
||||
"participants": "Parte-hartzaileak",
|
||||
"pip": "Irudi-irudian sartu",
|
||||
"privateMessage": "Bidali mezu pribatua",
|
||||
"profile": "Editatu zure profila",
|
||||
"raiseHand": "Altxa / jaitsi eskua",
|
||||
"raiseYourHand": "Altxatu eskua",
|
||||
"raiseHand": "Jaso / jaitsi eskua",
|
||||
"raiseYourHand": "Jaso eskua",
|
||||
"security": "Segurtasun aukerak",
|
||||
"Settings": "Ezarpenak",
|
||||
"shareaudio": "Partekatu audioa",
|
||||
"sharedvideo": "Partekatu YouTube bideoa",
|
||||
"shareRoom": "Gonbidatu norbait",
|
||||
"shortcuts": "Ikusi lasterbideak",
|
||||
@@ -716,8 +860,7 @@
|
||||
"tileViewToggle": "Txandakatu fitxa ikuspegia",
|
||||
"toggleCamera": "Txandakatu kamera",
|
||||
"videomute": "Hasi / gelditu kamera",
|
||||
"startvideoblur": "Bideo lausoa hasi",
|
||||
"stopvideoblur": "Bideo lausoa gelditu"
|
||||
"selectBackground": "Aukeratu atzeko planoa"
|
||||
},
|
||||
"transcribing": {
|
||||
"ccButtonTooltip": "Hasi / Gelditu Azpitituluak",
|
||||
@@ -743,6 +886,7 @@
|
||||
"react-nativeGrantPermissions": "Hautatu <b><i>Baimendu</i></b> zure nabigatzaileak baimenak eskatzen dituenean.",
|
||||
"safariGrantPermissions": "Hautatu <b><i>Ados</i></b> zure nabigatzaileak baimenak eskatzen dituenean."
|
||||
},
|
||||
"volumeSlider": "Bolumena",
|
||||
"videoSIPGW": {
|
||||
"busy": "Baliabideak askatzeko lanetan gabiltza. Mesedez, saiatu berriro minutu batzuk barru.",
|
||||
"busyTitle": "Gela zerbitzua lanpetuta dago une honetan",
|
||||
@@ -765,60 +909,110 @@
|
||||
"ld": "LD",
|
||||
"ldTooltip": "Bideoa behe-definizioan ikusten",
|
||||
"lowDefinition": "Behe-definizioa",
|
||||
"onlyAudioAvailable": "Soilik audioa dago erabilgarri",
|
||||
"onlyAudioSupported": "Arakatzaile honetan soilik onartzen dugu audioa.",
|
||||
"sd": "SD",
|
||||
"sdTooltip": "Definizio estandarrean bideoa ikusten",
|
||||
"standardDefinition": "Definizio estandarra"
|
||||
},
|
||||
"videothumbnail": {
|
||||
"connectionInfo": "Konexioaren informazioa",
|
||||
"domute": "Mututu",
|
||||
"domuteVideo": "Desaktibatu kamera",
|
||||
"domuteOthers": "Mututu beste guztiak",
|
||||
"domuteVideoOfOthers": "Desaktibatu beste guztien kamera",
|
||||
"flip": "Irauli",
|
||||
"grantModerator": "Bihurtu moderatzaile",
|
||||
"kick": "Bota",
|
||||
"moderator": "Moderatzailea",
|
||||
"mute": "Parte-hartzailea mutututa dago",
|
||||
"muted": "Mutututa",
|
||||
"videoMuted": "Kamera desaktibatuta",
|
||||
"remoteControl": "Hasi / Gelditu urruneko kontrola",
|
||||
"show": "Erakutsi",
|
||||
"videomute": "Parte-hartzaileak kamera geldiarazi du."
|
||||
},
|
||||
"welcomepage": {
|
||||
"addMeetingName": "Gehitu bileraren izena",
|
||||
"accessibilityLabel": {
|
||||
"join": "Klik batzeko",
|
||||
"roomname": "Sartu gelaren izena"
|
||||
},
|
||||
"appDescription": "",
|
||||
"audioVideoSwitch": {
|
||||
"audio": "Ahotsa",
|
||||
"video": "Bideoa"
|
||||
},
|
||||
"appDescription": "Zure lantalde guztiarentzat bideodeiak. {{app}} aplikazio zifratu eta segurua da, eta gainera %100 software librea, doakoa, denbora mugarik gabe eta konturik sortu gabe erabiltzekoa.",
|
||||
"audioVideoSwitch": { "audio": "Ahotsa", "video": "Bideoa" },
|
||||
"calendar": "Egutegia",
|
||||
"connectCalendarButton": "Konektatu zure egutegia",
|
||||
"connectCalendarText": "Konektatu egutegia zure bilera guztiak {{app}}en ikusteko. Gainera, gehitu {{provider}} bilerak zure egutegian eta hasi klik bakar batekin.",
|
||||
"enterRoomTitle": "Hasi bilera berria",
|
||||
"getHelp": "Lortu laguntza",
|
||||
"roomNameAllowedChars": "Bileraren izenak ez du honelako karaktererik eduki behar: ?, &,:, ', \",%, #.",
|
||||
"go": "JOAN",
|
||||
"goSmall": "JOAN",
|
||||
"join": "SORTU / SARTU",
|
||||
"headerTitle": "Jitsi Meet",
|
||||
"headerSubtitle": "Secure and high quality meetings",
|
||||
"info": "Informazioa",
|
||||
"join": "SORTU / SARTU",
|
||||
"jitsiOnMobile": "Jitsi eramangarrian \u2013 deskargatu gure aplikazioak eta hasi bilerak edonondik",
|
||||
"mobileDownLoadLinkIos": "Deskargatu iOS aplikazioa",
|
||||
"mobileDownLoadLinkAndroid": "Deskargatu Android aplikazioa",
|
||||
"mobileDownLoadLinkFDroid": "Deskargatu aplikazioa F-Droid-etik",
|
||||
"moderatedMessage": "Edu <a href=\"{{url}}\" rel=\"noopener noreferrer\" target=\"_blank\">gorde bilera helbide bat</a> eta zeu izango zara moderatzailea.",
|
||||
"privacy": "Pribatutasuna",
|
||||
"recentList": "Azkenak",
|
||||
"recentListDelete": "Ezabatu",
|
||||
"recentListEmpty": "Azkenak zerrenda hutsik dago. Txateatu zure taldearekin eta azken bilera guztiak hemen aurkituko dituzu.",
|
||||
"reducedUIText": "Ongi etorri {{app}}era!",
|
||||
"roomNameAllowedChars": "Bileraren izenak ez du honelako karaktererik eduki behar: ?, &,:, ', \",%, #.",
|
||||
"roomname": "Sartu gelaren izena",
|
||||
"roomnameHint": "Sartu batu nahi duzun gelaren izena edo URLa. Izen bat sor dezakezu eta bilerara sartuko diren pertsonei esaiezu, izen bera sartu dezaten.",
|
||||
"sendFeedback": "Bidali iritzia",
|
||||
"startMeeting": "Hasi bilera",
|
||||
"terms": "Baldintzak",
|
||||
"title": ""
|
||||
"title": "Bideo-dei seguruak, hainbat aukerarekin eta guztiz doan.",
|
||||
"logo": {
|
||||
"calendar": "Egutegiaren logoa",
|
||||
"microsoftLogo": "Microsoften logo",
|
||||
"logoDeepLinking": "Jitsi meeten logo",
|
||||
"desktopPreviewThumbnail": "Aurrebistaren iruditxoa",
|
||||
"googleLogo": "Googleren logoa",
|
||||
"policyLogo": "Politikaren logoa"
|
||||
}
|
||||
},
|
||||
"lonelyMeetingExperience": {
|
||||
"button": "Gonbidatu beste batzuk",
|
||||
"youAreAlone": "Bileran dagoen bakarra zara"
|
||||
},
|
||||
"helpView": {
|
||||
"header": "Laguntza gunea"
|
||||
"helpView": { "header": "Laguntza gunea" },
|
||||
"lobby": {
|
||||
"admit": "Onartu",
|
||||
"admitAll": "Onartu guztiak",
|
||||
"knockingParticipantList": "Zain dauden parte-hartzaileak",
|
||||
"allow": "Baimendu",
|
||||
"backToKnockModeButton": "Ez du pasahitza erabili, baina sartzea eskatu du",
|
||||
"dialogTitle": "Itxaron-gela modua",
|
||||
"disableDialogContent": "Itxaron-gela modua aktibatuta dago. Horrela zuk nahi ez duzun erabiltzaileak sartzea eragotzi dezakezu. Desaktibatu egin nahi duzu?",
|
||||
"disableDialogSubmit": "Desaktibatu",
|
||||
"emailField": "Idatzi zure eposta",
|
||||
"enableDialogPasswordField": "Ezarri pasahitza (hautazkoa)",
|
||||
"enableDialogSubmit": "Aktibatu",
|
||||
"enableDialogText": "Itxaron-gela moduak zure bilera babesten laguntzen du, horrela moderatzaile batek onartu beharko ditu bileran sartuko diren erabiltzaileak.",
|
||||
"enterPasswordButton": "Idatzi bileraren pasahitza",
|
||||
"enterPasswordTitle": "Idatzi pasahitza bileran sartzeko",
|
||||
"invalidPassword": "Pasahitza ez da zuzena",
|
||||
"joiningMessage": "Norbaitek zure eskaera sartu bezain laster sartuko zara bileran",
|
||||
"joinWithPasswordMessage": "Pasahitz gabe sartzen saiatzen, itxaron mesedez...",
|
||||
"joinRejectedMessage": "Sartzeko eskaera ukatu egin du moderatzaile batek",
|
||||
"joinTitle": "Sartu bileran",
|
||||
"joiningTitle": "Sartzeko eskatzen...",
|
||||
"joiningWithPasswordTitle": "Pasahitzarekin sartzen...",
|
||||
"knockButton": "Eskatu sartzea",
|
||||
"knockTitle": "Norbaitek bileran sartu nahi du",
|
||||
"nameField": "Idatzi zure izena",
|
||||
"notificationLobbyAccessDenied": "{{targetParticipantName}} parte-hartzaileara sarbidea ukatu dio {{originParticipantName}} parte-hartzaileak",
|
||||
"notificationLobbyAccessGranted": "{{targetParticipantName}} parte-hartzailea onartu du {{originParticipantName}} parte-hartzaileak",
|
||||
"notificationLobbyDisabled": "{{originParticipantName}} parte-hartzaileak itxaron-gela desaktibatu egin du",
|
||||
"notificationLobbyEnabled": "{{originParticipantName}} parte-hartzaileak itxaron-gela aktibatu egin du",
|
||||
"notificationTitle": "Itxaron-gela",
|
||||
"passwordField": "Idatzi bileraren pasahitza",
|
||||
"passwordJoinButton": "Sartu",
|
||||
"reject": "Baztertu",
|
||||
"toggleLabel": "Itxaron-gela aktibatu"
|
||||
}
|
||||
}
|
||||
|
||||
1999
lang/main-fr.json
1999
lang/main-fr.json
File diff suppressed because it is too large
Load Diff
@@ -535,6 +535,7 @@
|
||||
"participantsList": "({{count}}) partecipanti"
|
||||
},
|
||||
"actions": {
|
||||
"invite": "Invita persone",
|
||||
"muteAll": "Silenzia tutti",
|
||||
"stopVideo": "Ferma il video"
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
"copyInvite": "ミーティングの招待状をコピー",
|
||||
"copyLink": "ミーティングのリンクをコピー",
|
||||
"copyStream": "ライブ配信のリンクをコピー",
|
||||
"contacts": "連絡先",
|
||||
"countryNotSupported": "私たちはこの宛先をまだサポートしていません。",
|
||||
"countryReminder": "米国外の番号に通話しますか? 国コードで始まることを確認してください!",
|
||||
"defaultEmail": "あなたの既定のメール",
|
||||
@@ -22,6 +23,8 @@
|
||||
"noResults": "一致する検索結果がありません",
|
||||
"noValidNumbers": "電話番号を入力してください",
|
||||
"outlookEmail": "Outlook メール",
|
||||
"phoneNumbers": "電話番号",
|
||||
"searching": "検索中。。。",
|
||||
"searchNumbers": "電話番号を追加",
|
||||
"searchPeople": "人を検索する",
|
||||
"searchPeopleAndNumbers": "人を検索するか、電話番号を追加する",
|
||||
@@ -33,7 +36,7 @@
|
||||
"yahooEmail": "Yahoo! メール"
|
||||
},
|
||||
"audioDevices": {
|
||||
"bluetooth": "Bluetooth",
|
||||
"bluetooth": "ブルートゥース",
|
||||
"headphones": "ヘッドフォン",
|
||||
"phone": "電話",
|
||||
"speaker": "スピーカー",
|
||||
@@ -61,6 +64,7 @@
|
||||
"today": "今日"
|
||||
},
|
||||
"chat": {
|
||||
"enter": "チャットルームに入る",
|
||||
"error": "エラー: メッセージは送信されませんでした。原因: {{error}}",
|
||||
"fieldPlaceHolder": "ここにメッセージを入力してください",
|
||||
"messagebox": "メッセージを入力してください",
|
||||
@@ -174,12 +178,14 @@
|
||||
"alreadySharedVideoMsg": "他の参加者がすでにビデオを共有しています。このミーティングは同時に一つのビデオのみ共有可能です。",
|
||||
"alreadySharedVideoTitle": "同時に1つの共有ビデオのみが許可されます",
|
||||
"applicationWindow": "アプリケーションウィンドウ",
|
||||
"authenticationRequired": "認証が必要",
|
||||
"Back": "戻る",
|
||||
"cameraConstraintFailedError": "あなたのカメラは、必要な制約のいくつかを満たしていません。",
|
||||
"cameraNotFoundError": "カメラが見つかりませんでした。",
|
||||
"cameraNotSendingData": "あなたのカメラにアクセスすることができません。他のアプリケーションがこのデバイスを使用しているかどうかを確認し、設定メニューから別のデバイスを選択するか、アプリケーションをリロードしてみてください。",
|
||||
"cameraNotSendingDataTitle": "カメラにアクセスできません",
|
||||
"cameraPermissionDeniedError": "あなたはカメラを使用する許可を与えていません。あなたはまだミーティングに参加することができますが、他の参加者はあなたを見ることはできません。この問題を解決するには、アドレスバーのカメラボタンを使用します。",
|
||||
"cameraTimeoutError": "ビデオを開始できませんでした。タイムアウトが発生しました",
|
||||
"cameraUnknownError": "不明な理由でカメラが使用できません。",
|
||||
"cameraUnsupportedResolutionError": "お使いのカメラは、必要なビデオ解像度をサポートしていません。",
|
||||
"Cancel": "キャンセル",
|
||||
@@ -225,6 +231,7 @@
|
||||
"lockRoom": "ミーティング $t(lockRoomPasswordUppercase) を追加",
|
||||
"lockTitle": "ロックに失敗しました",
|
||||
"logoutQuestion": "ログアウトしてミーティングを停止してもよろしいですか?",
|
||||
"login": "Log住所in",
|
||||
"logoutTitle": "ログアウト",
|
||||
"maxUsersLimitReached": "参加者数が上限に達しました。このミーティングは満員です。ミーティングの主催者にお問い合わせするか、後でもう一度お試しください!",
|
||||
"maxUsersLimitReachedTitle": "参加者数の上限に達しました",
|
||||
@@ -233,18 +240,28 @@
|
||||
"micNotSendingData": "コンピューターの設定に進み、マイクのミュート解除とレベルの調整を行ってください",
|
||||
"micNotSendingDataTitle": "あなたのマイクはシステム設定によりミュートされています",
|
||||
"micPermissionDeniedError": "マイクを使用する権限がありません。あなたはまだミーティングに参加することができますが、他の人はあなたの声を聞けません。この問題を解決するには、アドレスバーのカメラボタンを使用します。",
|
||||
"micTimeoutError": "音声を開始できませんでした。タイムアウトが発生しました!",
|
||||
"micUnknownError": "不明な理由により、マイクを使用することはできません。",
|
||||
"muteEveryoneElseDialog": "一度ミュートすると解除できなくなりますが、彼らはいつでも自分自身のミュートを解除することができます。",
|
||||
"muteEveryoneElseTitle": "{{whom}} 以外をミュートしますか?",
|
||||
"muteEveryoneDialog": "全員をミュートします。よろしいですか? あなたがミュートを解除することはできなくなりますが、彼らはいつでも自分自身のミュートを解除することができます。",
|
||||
"muteEveryoneTitle": "全員をミュートしますか?",
|
||||
"muteEveryoneElsesVideoDialog": "カメラを無効にした場合、再び有効にする事はできませんが、相手側はいつでも有効にする事ができます",
|
||||
"muteEveryoneElsesVideoTitle": "以外の全員のカメラを無効にしますか {{whom}}?",
|
||||
"muteEveryonesVideoDialog": "本当に全員のカメラを無効にしてもよろしいですか? 元に戻す事はできませんが、相手側はいつでも戻す事ができます",
|
||||
"muteEveryonesVideoDialogOk": "無効",
|
||||
"muteEveryonesVideoTitle": "全員のカメラを無効にしますか?",
|
||||
"muteEveryoneSelf": "あなた自身",
|
||||
"muteEveryoneStartMuted": "今から全員のミュートを開始",
|
||||
"muteParticipantBody": "あなたがミュートを解除することはできなくなりますが、彼らはいつでも自分自身のミュートを解除することができます。",
|
||||
"muteParticipantButton": "ミュート",
|
||||
"muteParticipantDialog": "この参加者をミュートします。よろしいですか? あなたがミュートを解除することはできなくなりますが、彼らはいつでも自分自身のミュートを解除することができます。",
|
||||
"muteParticipantTitle": "この参加者をミュートしますか?",
|
||||
"muteParticipantsVideoButton": "カメラ無効",
|
||||
"muteParticipantsVideoTitle": "この参加者のカメラを無効にしますか?",
|
||||
"muteParticipantsVideoBody": "カメラを有効に戻す事はできませんが、相手側はいつでも戻す事ができます",
|
||||
"Ok": "OK",
|
||||
"password": "パスワード",
|
||||
"passwordLabel": "このミーティングは、参加者によりロックされました。参加するには、$t(lockRoomPassword) を入力してください。",
|
||||
"passwordNotSupported": "ミーティング $t(lockRoomPassword) の設定はサポートされていません。",
|
||||
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) はサポートされていません。",
|
||||
@@ -280,6 +297,7 @@
|
||||
"sendPrivateMessageTitle": "個人に送信しますか?",
|
||||
"serviceUnavailable": "サービスは利用できません",
|
||||
"sessTerminated": "通話が終了しました",
|
||||
"sessionRestarted": "ブリッジによって再開されたコール",
|
||||
"Share": "共有",
|
||||
"shareVideoLinkError": "正しいYouTubeのリンクを提供してください。",
|
||||
"shareVideoTitle": "動画を共有する",
|
||||
@@ -300,7 +318,10 @@
|
||||
"tokenAuthFailedTitle": "認証に失敗しました",
|
||||
"transcribing": "文字起こし",
|
||||
"unlockRoom": "ミーティング $t(lockRoomPassword) を削除",
|
||||
"user": "User",
|
||||
"userIdentifier": "User identifier",
|
||||
"userPassword": "ユーザーのパスワード",
|
||||
"videoLink": "Video link",
|
||||
"WaitForHostMsg": "ミーティング <b>{{room}}</b> はまだ開始されていません。あなたがホストの場合は、認証を行ってください。それ以外の場合は、ホストの到着をお待ちください。",
|
||||
"WaitForHostMsgWOk": "ミーティング <b>{{room}}</b> はまだ開始されていません。あなたがホストの場合は、OKを押して認証を行ってください。それ以外の場合は、ホストの到着をお待ちください。",
|
||||
"WaitingForHost": "ホストの到着を待っています...",
|
||||
@@ -319,6 +340,16 @@
|
||||
"embedMeeting": {
|
||||
"title": "このミーティングを埋め込む"
|
||||
},
|
||||
"virtualBackground": {
|
||||
"apply": "適用",
|
||||
"title": "背景バーチャル",
|
||||
"blur": "ぼかし",
|
||||
"slightBlur": "少しぼかし",
|
||||
"removeBackground": "背景削除",
|
||||
"addBackground": "背景追加",
|
||||
"none": "無し",
|
||||
"desktopShareError": "デクストップ共有を作成できませんでした"
|
||||
},
|
||||
"feedback": {
|
||||
"average": "普通",
|
||||
"bad": "悪い",
|
||||
@@ -351,6 +382,7 @@
|
||||
"inviteLiveStream": "このミーティングのライブ配信を表示するには、このリンクをクリックしてください: {{url}}",
|
||||
"invitePhone": "代わりに電話で参加するには、ここをタップしてください: {{number}},,{{conferenceID}}#\n",
|
||||
"invitePhoneAlternatives": "別のダイアルイン番号をお探しですか?\nダイアルイン番号一覧をご覧ください: {{url}}\n\n\n内線番号経由でダイアルインを行う場合、音声に接続せずに参加してください: {{silentUrl}}",
|
||||
"inviteSipEndpoint": "SIPアドレスを使用して参加するには、これを入力します: {{sipUri}}",
|
||||
"inviteURLFirstPartGeneral": "あなたはミーティングに招待されました。",
|
||||
"inviteURLFirstPartPersonal": "{{name}} があなたをミーティングに招待しました。\n",
|
||||
"inviteURLSecondPart": "\nミーティングにご参加ください:\n{{url}}\n",
|
||||
@@ -480,9 +512,13 @@
|
||||
"mutedTitle": "あなたはミュートされています!",
|
||||
"mutedRemotelyTitle": "あなたは {{participantDisplayName}} によってミュートされました!",
|
||||
"mutedRemotelyDescription": "話す準備ができ次第、いつでもミュートを解除できます。話が終わったら再ミュートして、ミーティングから雑音を遠ざけます。",
|
||||
"videoMutedRemotelyTitle": "あなたのカメラは {{participantDisplayName}} に無効にされました!",
|
||||
"videoMutedRemotelyDescription": "いつでもオンにする事ができます",
|
||||
"passwordRemovedRemotely": "他の参加者により、$t(lockRoomPasswordUppercase) が削除されました",
|
||||
"passwordSetRemotely": "他の参加者により、$t(lockRoomPasswordUppercase) が設定されました",
|
||||
"raisedHand": "{{name}} が話したいそうです。",
|
||||
"screenShareNoAudio": " Share audio box was not checked in the window selection screen.",
|
||||
"screenShareNoAudioTitle": "音声の共有が確認されてません",
|
||||
"somebody": "誰か",
|
||||
"startSilentTitle": "あなたはオーディオ出力なしで参加しました!",
|
||||
"startSilentDescription": "オーディオを有効にして参加しなおしてください",
|
||||
@@ -497,6 +533,17 @@
|
||||
"oldElectronClientDescription2": "最新ビルド",
|
||||
"oldElectronClientDescription3": "に更新してください!"
|
||||
},
|
||||
"participantsPane": {
|
||||
"headings": {
|
||||
"lobby": "ロビー ({{count}})",
|
||||
"participantsList": "参加者会議 ({{count}})"
|
||||
},
|
||||
"actions": {
|
||||
"invite": "参加者招待",
|
||||
"muteAll": "全員音声無効",
|
||||
"stopVideo": "ビデオ停止"
|
||||
}
|
||||
},
|
||||
"passwordSetRemotely": "他の参加者によりセット",
|
||||
"passwordDigitsOnly": "{{number}} 桁まで",
|
||||
"poweredby": "powered by",
|
||||
@@ -511,23 +558,23 @@
|
||||
"configuringDevices": "デバイスの設定中...",
|
||||
"connectedWithAudioQ": "オーディオを有効にして接続していますか?",
|
||||
"connection": {
|
||||
"good": "インターネット接続は良好のようです!",
|
||||
"nonOptimal": "インターネット接続が最適ではありません",
|
||||
"poor": "貧弱なインターネット接続です"
|
||||
"good": "インターネット接続は良好のようです!",
|
||||
"nonOptimal": "インターネット接続が最適ではありません",
|
||||
"poor": "貧弱なインターネット接続です"
|
||||
},
|
||||
"connectionDetails": {
|
||||
"audioClipping": "音声が歪んでいると思います。",
|
||||
"audioHighQuality": "音声は優れた品質であると思います。",
|
||||
"audioLowNoVideo": "音声の品質が悪く、ビデオがないと思います。",
|
||||
"goodQuality": "素晴らしい! メディアの品質は素晴らしいものになりそうです。",
|
||||
"noMediaConnectivity": "このテストで、メディア接続を確立する方法を検出することができませんでした。これは通常、ファイアウォールやNATが原因で発生します。",
|
||||
"noVideo": "ビデオの品質が悪いと思います。",
|
||||
"undetectable": "引き続きブラウザーで通話ができない場合、スピーカー、マイク、カメラが適切に設定されているか、ブラウザーにマイクとカメラの使用を許可しているか、そしてブラウザーのバージョンが最新であるか確認することをお勧めします。それでも通話に問題がある場合は、ウェブアプリの開発者にお問い合わせください。",
|
||||
"veryPoorConnection": "通話の品質がとても悪いと思います。",
|
||||
"videoFreezing": "ビデオが固まったり、黒画面になったり、モザイクがかかったようになると思います。",
|
||||
"videoHighQuality": "ビデオは優れた品質であると思います。",
|
||||
"videoLowQuality": "ビデオはフレームレートと解像度の点で低品質であると思います。",
|
||||
"videoTearing": "ビデオにモザイクがかかったようなったり、ブロックノイズが発生すると思います。"
|
||||
"audioClipping": "音声が歪んでいると思います。",
|
||||
"audioHighQuality": "音声は優れた品質であると思います。",
|
||||
"audioLowNoVideo": "音声の品質が悪く、ビデオがないと思います。",
|
||||
"goodQuality": "素晴らしい! メディアの品質は素晴らしいものになりそうです。",
|
||||
"noMediaConnectivity": "このテストで、メディア接続を確立する方法を検出することができませんでした。これは通常、ファイアウォールやNATが原因で発生します。",
|
||||
"noVideo": "ビデオの品質が悪いと思います。",
|
||||
"undetectable": "引き続きブラウザーで通話ができない場合、スピーカー、マイク、カメラが適切に設定されているか、ブラウザーにマイクとカメラの使用を許可しているか、そしてブラウザーのバージョンが最新であるか確認することをお勧めします。それでも通話に問題がある場合は、ウェブアプリの開発者にお問い合わせください。",
|
||||
"veryPoorConnection": "通話の品質がとても悪いと思います。",
|
||||
"videoFreezing": "ビデオが固まったり、黒画面になったり、モザイクがかかったようになると思います。",
|
||||
"videoHighQuality": "ビデオは優れた品質であると思います。",
|
||||
"videoLowQuality": "ビデオはフレームレートと解像度の点で低品質であると思います。",
|
||||
"videoTearing": "ビデオにモザイクがかかったようなったり、ブロックノイズが発生すると思います。"
|
||||
},
|
||||
"copyAndShare": "ミーティングのリンクをコピーまたは共有",
|
||||
"dialInMeeting": "このミーティングにダイアルする",
|
||||
@@ -601,6 +648,7 @@
|
||||
"pending": "ミーティングの録画準備中...",
|
||||
"rec": "REC",
|
||||
"serviceDescription": "ビデオは録画サービスで録画されます",
|
||||
"serviceDescriptionCloud": "クラウドレコーディング",
|
||||
"serviceName": "録画サービス",
|
||||
"signIn": "サインイン",
|
||||
"signOut": "サインアウト",
|
||||
@@ -633,6 +681,7 @@
|
||||
"more": "その他",
|
||||
"name": "名前",
|
||||
"noDevice": "なし",
|
||||
"sameAsSystem": "システムと同じ ({{label}})",
|
||||
"selectAudioOutput": "オーディオ出力",
|
||||
"selectCamera": "カメラ",
|
||||
"selectMic": "マイク",
|
||||
@@ -678,6 +727,7 @@
|
||||
},
|
||||
"startupoverlay": {
|
||||
"policyText": " ",
|
||||
"genericTitle": "会議はマイクとカメラを使用する必要があります",
|
||||
"title": "{{app}} を使用するには、マイクとカメラが必要です。"
|
||||
},
|
||||
"suspendedoverlay": {
|
||||
@@ -710,14 +760,20 @@
|
||||
"moreOptions": "詳細オプションの表示",
|
||||
"mute": "音声のミュートの切り替え",
|
||||
"muteEveryone": "全員をミュート",
|
||||
"muteEveryoneElse": "他の全員を無効",
|
||||
"muteEveryonesVideo": "全員のカメラを無効にする",
|
||||
"muteEveryoneElsesVideo": "他の全員のカメラを無効",
|
||||
"participants": "参加者",
|
||||
"pip": "ピクチャーインピクチャーモードの切り替え",
|
||||
"privateMessage": "プライベートメッセージの送信",
|
||||
"profile": "プロファイルを編集",
|
||||
"raiseHand": "手を挙げる・下げる",
|
||||
"recording": "録画の切り替え",
|
||||
"remoteMute": "参加者のミュート",
|
||||
"remoteVideoMute": "参加者のカメラを無効にする",
|
||||
"security": "セキュリティオプション",
|
||||
"Settings": "設定の切り替え",
|
||||
"shareaudio": "オーディオを共有する",
|
||||
"sharedvideo": "YouTube ビデオ共有の切り替え",
|
||||
"shareRoom": "誰かを招待",
|
||||
"shareYourScreen": "画面共有の切り替え",
|
||||
@@ -728,9 +784,11 @@
|
||||
"toggleCamera": "カメラの切り替え",
|
||||
"toggleFilmstrip": "スライド表示の切り替え",
|
||||
"videomute": "ビデオのミュートの切り替え",
|
||||
"videoblur": "ビデオのぼかしの切り替え"
|
||||
"videoblur": "ビデオのぼかしの切り替え",
|
||||
"selectBackground": "背景を選択"
|
||||
},
|
||||
"addPeople": "あなたの通話に人を追加",
|
||||
"audioSettings": "オーディオ設定",
|
||||
"audioOnlyOff": "音声のみモードを無効",
|
||||
"audioOnlyOn": "音声のみモードを有効",
|
||||
"audioRoute": "サウンドデバイスの選択",
|
||||
@@ -760,6 +818,7 @@
|
||||
"moreOptions": "詳細オプション",
|
||||
"mute": "ミュート/ミュート解除",
|
||||
"muteEveryone": "全員をミュート",
|
||||
"muteEveryonesVideo": "全員のカメラを無効にする",
|
||||
"noAudioSignalTitle": "マイクから何も入力されていません!",
|
||||
"noAudioSignalDesc": "システム設定やハードウェアによる意図的なミュートを行っていない場合は、デバイスの切り替えを検討してみてください。",
|
||||
"noAudioSignalDescSuggestion": "システム設定やハードウェアによる意図的なミュートを行っていない場合は、提示されたデバイスへのの切り替えを検討してみてください。",
|
||||
@@ -768,6 +827,7 @@
|
||||
"noisyAudioInputTitle": "マイクの音がうるさいようです!",
|
||||
"noisyAudioInputDesc": "マイクがノイズを発しているようですので、ミュートするかデバイスの変更を検討してください。",
|
||||
"openChat": "チャットを開く",
|
||||
"participants": "参加者",
|
||||
"pip": "ピクチャーインピクチャーモードに入る",
|
||||
"privateMessage": "プライベートメッセージの送信",
|
||||
"profile": "プロファイルの編集",
|
||||
@@ -789,7 +849,8 @@
|
||||
"toggleCamera": "カメラの切り替え",
|
||||
"videomute": "カメラの開始/停止",
|
||||
"startvideoblur": "背景をぼかす",
|
||||
"stopvideoblur": "背景のぼかしを無効"
|
||||
"stopvideoblur": "背景のぼかしを無効",
|
||||
"videoSettings": "ビデオ設定"
|
||||
},
|
||||
"transcribing": {
|
||||
"ccButtonTooltip": "字幕の表示/非表示",
|
||||
@@ -842,8 +903,11 @@
|
||||
"standardDefinition": "標準画質"
|
||||
},
|
||||
"videothumbnail": {
|
||||
"connectionInfo": "接続情報",
|
||||
"domute": "ミュート",
|
||||
"domuteVideo": "カメラを無効にする",
|
||||
"domuteOthers": "他の全員をミュート",
|
||||
"domuteVideoOfOthers": "他の参加者のカメラを無効にする",
|
||||
"flip": "フリップ",
|
||||
"grantModerator": "モデレーター権限の付与",
|
||||
"kick": "追放",
|
||||
@@ -898,6 +962,7 @@
|
||||
"header": "ヘルプセンター"
|
||||
},
|
||||
"lobby": {
|
||||
"admit": "認める",
|
||||
"knockingParticipantList": "待機中の参加者一覧",
|
||||
"allow": "許可",
|
||||
"backToKnockModeButton": "パスワードなし、代わりに参加を依頼",
|
||||
|
||||
1006
lang/main-ml.json
1006
lang/main-ml.json
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,11 @@
|
||||
{
|
||||
"addPeople": {
|
||||
"add": "Convidar",
|
||||
"addContacts": "Convidatz vòstres contactes",
|
||||
"copyInvite": "Copiar l’invitacion de la conferéncia",
|
||||
"copyLink": "Copiar lo ligam de la reünion",
|
||||
"copyStream": "Copiar lo ligam del dirècte",
|
||||
"contacts": "contactes",
|
||||
"countryNotSupported": "Sèm pas encara compatibles amb aquesta destinacion.",
|
||||
"countryReminder": "Sonatz defòra los US ? Mercés de vos assegurar de començar amb lo còdi país.",
|
||||
"disabled": "Podètz pas convidar de monde.",
|
||||
@@ -72,7 +77,11 @@
|
||||
},
|
||||
"privateNotice": "Messatge privat per {{recipient}}",
|
||||
"title": "Messatjariá",
|
||||
"you": "vos"
|
||||
"you": "vos",
|
||||
"message": "Messatge",
|
||||
"messageAccessibleTitle": "{{user}} ditz :",
|
||||
"messageAccessibleTitleMe": "disi :",
|
||||
"smileysPanel": "Panèl d’Emoji"
|
||||
},
|
||||
"connectingOverlay": {
|
||||
"joiningRoom": "Connexion a vòstra reünion…"
|
||||
|
||||
@@ -1,21 +1,33 @@
|
||||
{
|
||||
"addPeople": {
|
||||
"add": "Convidar",
|
||||
"countryNotSupported": "Ainda não suportamos este destino.",
|
||||
"countryReminder": "Está a ligar de fora dos EUA? Por favor, certifique-se de começar com o código do país!",
|
||||
"disabled": "Você não pode convidar pessoas.",
|
||||
"addContacts": "Convidar os seus contactos",
|
||||
"copyInvite": "Cópia do convite para reunião",
|
||||
"copyLink": "Cópia do link da reunião",
|
||||
"copyStream": "Copiar do link de transmissão em direto",
|
||||
"contacts": "contactos",
|
||||
"countryNotSupported": "Ainda não temos suporte para este destino.",
|
||||
"countryReminder": "Está a telefonar para fora dos EUA? Por favor, certifique-se de que começa com o código do país!",
|
||||
"defaultEmail": "O seu e-mail predefinido",
|
||||
"disabled": "Não pode convidar outras pessoas.",
|
||||
"failedToAdd": "Falha ao adicionar participantes",
|
||||
"footerText": "Digitação está desativada.",
|
||||
"loading": "A procurar por pessoas e números de telefone",
|
||||
"loadingNumber": "A validar o número de telefone",
|
||||
"loadingPeople": "A procurar pessoas para convidar",
|
||||
"noResults": "Nenhum resultado de busca correspondente",
|
||||
"noValidNumbers": "Por favor, digite um número de telefone",
|
||||
"searchNumbers": "Adicionar números de telefone",
|
||||
"searchPeople": "Pesquisar pessoas",
|
||||
"searchPeopleAndNumbers": "Pesquisar por pessoas ou adicionar os seus números de telefone",
|
||||
"footerText": "A marcação está desactivada.",
|
||||
"googleEmail": "E-mail do Google",
|
||||
"inviteMoreHeader": "Você é o único na reunião",
|
||||
"inviteMoreMailSubject": "Participar na reunião {{appName}}",
|
||||
"inviteMorePrompt": "Convidar mais pessoas",
|
||||
"linkCopied": "Link copiado para a área de transferência",
|
||||
"noResults": "Sem resultados de pesquisa correspondentes",
|
||||
"outlookEmail": "E-mail do Outlook",
|
||||
"phoneNumbers": "números de telefone",
|
||||
"searching": "A pesquisar...",
|
||||
"shareInvite": "Partilhar convite de reunião",
|
||||
"shareLink": "Partilhar o link da reunião para convidar outras pessoas",
|
||||
"shareStream": "Partilhar o link de transmissão em direto",
|
||||
"sipAddresses": "endereços SIP",
|
||||
"telephone": "Telefone: {{number}}",
|
||||
"title": "Convide pessoas para sua reunião"
|
||||
"title": "Convidar pessoas para esta reunião",
|
||||
"yahooEmail": "E-mail do Yahoo"
|
||||
},
|
||||
"audioDevices": {
|
||||
"bluetooth": "Bluetooth",
|
||||
@@ -135,138 +147,166 @@
|
||||
},
|
||||
"dialog": {
|
||||
"accessibilityLabel": {
|
||||
"liveStreaming": "Transmissão ao vivo"
|
||||
"liveStreaming": "Transmissão em direto"
|
||||
},
|
||||
"add": "Adicionar",
|
||||
"allow": "Permitir",
|
||||
"alreadySharedVideoMsg": "Outro participante já está compartilhando um vídeo. Esta conferência permite apenas um vídeo compartilhado por vez.",
|
||||
"alreadySharedVideoTitle": "Somente um vídeo compartilhado é permitido por vez",
|
||||
"applicationWindow": "Janela de aplicativo",
|
||||
"alreadySharedVideoMsg": "Outro participante já está a partilhar um vídeo. Esta conferência permite apenas um vídeo partilhado de cada vez.",
|
||||
"alreadySharedVideoTitle": "Só é permitido um vídeo partilhado de cada vez",
|
||||
"applicationWindow": "Janela de aplicação",
|
||||
"authenticationRequired": "Autenticação necessária",
|
||||
"Back": "Voltar",
|
||||
"cameraConstraintFailedError": "Sua câmera não satisfaz algumas condições necessárias.",
|
||||
"cameraNotFoundError": "A câmera não foi encontrada.",
|
||||
"cameraNotSendingData": "Estamos incapazes de acessar sua câmera. Verifique se outra aplicação está usando este dispositivo, selecione outro dispositivo do menu de configurações ou recarregue a aplicação.",
|
||||
"cameraNotSendingDataTitle": "Incapaz de acessar a câmera",
|
||||
"cameraPermissionDeniedError": "Não foi permitido acessar a sua câmera. Você ainda pode entrar na conferência, mas sem exibir o seu vídeo. Clique no botão da câmera para tentar reparar.",
|
||||
"cameraUnknownError": "Não pode usar a câmera por uma razão desconhecida.",
|
||||
"cameraUnsupportedResolutionError": "Sua câmera não suporta a resolução de vídeo requerida.",
|
||||
"cameraConstraintFailedError": "A sua câmara não satisfaz algumas das restrições exigidas.",
|
||||
"cameraNotFoundError": "A câmara não foi encontrada.",
|
||||
"cameraNotSendingData": "Não podemos aceder à sua câmara. Verifique se outra aplicação está a utilizar este dispositivo, seleccione outro dispositivo do menu de definições ou tente recarregar a aplicação.",
|
||||
"cameraNotSendingDataTitle": "Não é possível aceder à câmara",
|
||||
"cameraPermissionDeniedError": "Não concedeu autorização para utilizar a sua câmara. Ainda pode participar na conferência, mas outros não o verão. Use o botão da câmara na barra de endereço para corrigir isto.",
|
||||
"cameraTimeoutError": "Não foi possível iniciar a fonte de vídeo. Tempo limite esgotado!",
|
||||
"cameraUnknownError": "Não é possível utilizar a câmara por uma razão desconhecida.",
|
||||
"cameraUnsupportedResolutionError": "A sua câmara não suporta a resolução de vídeo necessária.",
|
||||
"Cancel": "Cancelar",
|
||||
"close": "Fechar",
|
||||
"conferenceDisconnectMsg": "Você pode querer verificar sua conexão de rede. Reconectando em {{seconds}} segundos ...",
|
||||
"conferenceDisconnectTitle": "Você foi desconectado.",
|
||||
"conferenceReloadMsg": "Estamos tentando consertar isto. Reconectando em {{seconds}} segundos...",
|
||||
"conferenceReloadTitle": "Infelizmente, algo deu errado.",
|
||||
"confirm": "Confirmar",
|
||||
"conferenceDisconnectMsg": "Poderá querer verificar a sua ligação à rede. Reconexão em {{seconds}} seg...",
|
||||
"conferenceDisconnectTitle": "Foi desconectado.",
|
||||
"conferenceReloadMsg": "Estamos a tentar resolver isto. Reconexão em {{seconds}} seg...",
|
||||
"conferenceReloadTitle": "Infelizmente, algo correu mal.",
|
||||
"confirm": "Confirme",
|
||||
"confirmNo": "Não",
|
||||
"confirmYes": "Sim",
|
||||
"connectError": "Oops! Alguma coisa está errada e nós não pudemos conectar à conferência.",
|
||||
"connectErrorWithMsg": "Oops! Alguma coisa está errada e não podemos conectar à conferência: {{msg}}",
|
||||
"connecting": "Conectando",
|
||||
"contactSupport": "Contate o suporte",
|
||||
"copy": "Copiar",
|
||||
"connectError": "Oops! Algo correu mal e não conseguimos estabelecer uma ligação com a conferência.",
|
||||
"connectErrorWithMsg": "Oops! Algo correu mal e não conseguimos estabelecer uma ligação com a conferência: {{msg}}",
|
||||
"connecting": "A ligar",
|
||||
"contactSupport": "Contacte o suporte",
|
||||
"copied": "Copiado",
|
||||
"copy": "Cópia",
|
||||
"dismiss": "Dispensar",
|
||||
"displayNameRequired": "Oi! Qual o seu nome?",
|
||||
"displayNameRequired": "Olá! Qual é o seu nome?",
|
||||
"done": "Feito",
|
||||
"enterDisplayName": "Digite seu nome aqui",
|
||||
"e2eeDescription": "A encriptação de ponta a ponta é actualmente EXPERIMENTAL. Tenha em mente que ligar a encriptação de ponta a ponta irá efectivamente desactivar os serviços fornecidos do lado do servidor, tais como: gravação, transmissão em directo e participação telefónica. Tenha também em mente que o encontro só funcionará para pessoas que se juntem a partir de browsers com suporte para \"insertable streams\".",
|
||||
"e2eeLabel": "Habilitar encriptação de ponta a ponta",
|
||||
"e2eeWarning": "AVISO: Nem todos os participantes neste encontro parecem ter apoio para a encriptação de ponta a ponta. Se o permitir, eles não o poderão ver nem ouvir.",
|
||||
"enterDisplayName": "Digite o seu nome aqui",
|
||||
"enterDisplayNameToJoin": "Por favor, digite o seu nome para participar",
|
||||
"embedMeeting": "Embutir reunião",
|
||||
"error": "Erro",
|
||||
"externalInstallationMsg": "Você precisa instalar nossa extensão de compartilhamento de tela.",
|
||||
"externalInstallationTitle": "Extensão requerida",
|
||||
"goToStore": "Vá para a loja virtual",
|
||||
"gracefulShutdown": "O sistema está em manutenção. Por favor tente novamente mais tarde.",
|
||||
"gracefulShutdown": "O nosso serviço está atualmente em manutenção. Por favor, tente novamente mais tarde.",
|
||||
"grantModeratorDialog": "Tem a certeza de que quer fazer deste participante um moderador?",
|
||||
"grantModeratorTitle": "Converter em moderador",
|
||||
"IamHost": "Eu sou o anfitrião",
|
||||
"incorrectRoomLockPassword": "Senha incorreta",
|
||||
"incorrectPassword": "Usuário ou senha incorretos",
|
||||
"inlineInstallationMsg": "Você precisa instalar nossa extensão de compartilhamento de tela.",
|
||||
"inlineInstallExtension": "Instalar agora",
|
||||
"internalError": "Oops! Alguma coisa está errada. O seguinte erro ocorreu: {{error}}",
|
||||
"incorrectRoomLockPassword": "Palavra-passe incorreta",
|
||||
"incorrectPassword": "Nome de utilizador ou palavra-passe incorretos",
|
||||
"internalError": "Oops! Alguma coisa correu mal. Ocorreu o seguinte erro: {{error}}",
|
||||
"internalErrorTitle": "Erro interno",
|
||||
"kickMessage": "Você pode contatar com {{participantDisplayName}} para obter mais detalhes.",
|
||||
"kickParticipantButton": "Remover",
|
||||
"kickParticipantDialog": "Tem certeza de que deseja remover este participante?",
|
||||
"kickParticipantTitle": "Chutar este participante?",
|
||||
"kickTitle": "Ai! {{participantDisplayName}} expulsou você da reunião",
|
||||
"liveStreaming": "Transmissão ao Vivo",
|
||||
"liveStreamingDisabledForGuestTooltip": "Visitantes não podem iniciar transmissão ao vivo.",
|
||||
"liveStreamingDisabledTooltip": "Iniciar transmissão ao vivo desativada.",
|
||||
"lockMessage": "Falha ao travar a conferência.",
|
||||
"lockRoom": "Adicionar reunião $t(lockRoomPasswordUppercase)",
|
||||
"lockTitle": "Bloqueio falhou",
|
||||
"logoutQuestion": "Deseja encerrar a sessão e finalizar a conferência?",
|
||||
"logoutTitle": "Encerrar sessão",
|
||||
"maxUsersLimitReached": "O limite para o número máximo de participantes foi atingido. A conferência está cheia. Entre em contato com o proprietário da reunião ou tente novamente mais tarde!",
|
||||
"kickMessage": "Pode contactar {{participantDisplayName}} para mais detalhes.",
|
||||
"kickParticipantButton": "Expulsar",
|
||||
"kickParticipantDialog": "Tem a certeza que quer expulsar este participante?",
|
||||
"kickParticipantTitle": "Expulsar este participante?",
|
||||
"kickTitle": "Ai! {{participantDisplayName}} expulsou-o da reunião",
|
||||
"liveStreaming": "Transmissão em direto",
|
||||
"liveStreamingDisabledBecauseOfActiveRecordingTooltip": "Não é possível enquanto a gravação estiver activa",
|
||||
"liveStreamingDisabledTooltip": "Início de transmissão em direto desactivada",
|
||||
"lockMessage": "Falha no bloqueio da conferência.",
|
||||
"lockRoom": "Adicionar reunião $t(lockRoomPassword)",
|
||||
"lockTitle": "Bloqueio falhado",
|
||||
"logoutQuestion": "Tem a certeza de que quer terminar a sessão e interromper a conferência?",
|
||||
"login": "Entrar",
|
||||
"logoutTitle": "Sair",
|
||||
"maxUsersLimitReached": "O limite para o número máximo de participantes foi atingido. A conferência está cheia. Por favor contacte o proprietário da reunião ou tente novamente mais tarde!",
|
||||
"maxUsersLimitReachedTitle": "Limite máximo de participantes atingido",
|
||||
"micConstraintFailedError": "Seu microfone não satisfaz algumas condições necessárias.",
|
||||
"micConstraintFailedError": "O seu microfone não satisfaz algumas das restrições exigidas.",
|
||||
"micNotFoundError": "O microfone não foi encontrado.",
|
||||
"micNotSendingData": "Vá para as configurações do seu computador para ativar o som do microfone e ajustar seu nível",
|
||||
"micNotSendingDataTitle": "Seu microfone está mudo pelas configurações do sistema",
|
||||
"micPermissionDeniedError": "Não foi permitido acessar o seu microfone. Você ainda pode entrar na conferência, mas sem enviar áudio. Clique no botão do microfone para tentar reparar.",
|
||||
"micUnknownError": "Não pode usar o microfone por uma razão desconhecida.",
|
||||
"muteParticipantBody": "Você não está habilitado para tirar o mudo deles, mas eles podem tirar o mudo deles mesmos a qualquer tempo.",
|
||||
"micNotSendingData": "Vá às definições do seu computador para desligar o seu microfone e ajustar o seu nível",
|
||||
"micNotSendingDataTitle": "O seu microfone está silenciado pelas definições do seu sistema",
|
||||
"micPermissionDeniedError": "Não concedeu autorização para utilizar o seu microfone. Ainda pode participar na conferência, mas outros não o ouvirão. Use o botão da câmara na barra de endereço para corrigir isto.",
|
||||
"micTimeoutError": "Não foi possível iniciar a fonte de áudio. Tempo limite esgotado!",
|
||||
"micUnknownError": "Não pode usar microfone por uma razão desconhecida.",
|
||||
"muteEveryoneElseDialog": "Uma vez silenciados, não poderá reativá-los, mas eles podem reativar-se a qualquer momento.",
|
||||
"muteEveryoneElseTitle": "Silenciar todos excepto {{whom}}?",
|
||||
"muteEveryoneDialog": "Tem a certeza de que quer silenciar toda a gente? Não poderá reativá-los, mas eles podem reativar-se a qualquer momento.",
|
||||
"muteEveryoneTitle": "Silenciar toda a gente?",
|
||||
"muteEveryoneElsesVideoDialog": "Quando a câmara for desativada, não poderá voltar a ligá-la, mas eles podem voltar a ligá-la em qualquer momento.",
|
||||
"muteEveryoneElsesVideoTitle": "Desativar a câmara de todos exceto {{whom}}?",
|
||||
"muteEveryonesVideoDialog": "Tem a certeza de que quer desativar a câmara de todos? Não poderá voltar a ligá-la, mas eles podem voltar a ligá-la a qualquer momento.",
|
||||
"muteEveryonesVideoDialogOk": "Desativar",
|
||||
"muteEveryonesVideoTitle": "Desativar a câmara de toda a gente?",
|
||||
"muteEveryoneSelf": "você mesmo",
|
||||
"muteEveryoneStartMuted": "A partir de agora, toda a gente começa a ficar calada",
|
||||
"muteParticipantBody": "Não poderá reativá-los, mas eles podem reativar-se a qualquer momento.",
|
||||
"muteParticipantButton": "Mudo",
|
||||
"muteParticipantDialog": "Tem certeza de que deseja silenciar este participante? Você não poderá desfazer isso, mas o participante pode reabilitar o áudio a qualquer momento.",
|
||||
"muteParticipantTitle": "Deixar mudo este participante?",
|
||||
"Ok": "Ok",
|
||||
"passwordLabel": "$t(lockRoomPasswordUppercase)",
|
||||
"passwordNotSupported": "A configuração de uma reunião $t(lockRoomPassword) não é suportada.",
|
||||
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) não suportado",
|
||||
"passwordRequired": "$t(lockRoomPasswordUppercase) requerido",
|
||||
"popupError": "Seu navegador está bloqueando janelas popup deste site. Habilite os popups nas configurações de segurança no seu navegador e tente novamente.",
|
||||
"popupErrorTitle": "Popup bloqueado",
|
||||
"recording": "Gravando",
|
||||
"recordingDisabledForGuestTooltip": "Visitantes não podem iniciar gravações.",
|
||||
"recordingDisabledTooltip": "Iniciar gravação desativada.",
|
||||
"rejoinNow": "Reconectar agora",
|
||||
"remoteControlAllowedMessage": "{{user}} aceitou sua requisição de controle remoto!",
|
||||
"remoteControlDeniedMessage": "{{user}} rejeitou sua requisição de controle remoto!",
|
||||
"remoteControlErrorMessage": "Um erro ocorreu enquanto tentava requerer a permissão de controle remoto de {{user}}!",
|
||||
"remoteControlRequestMessage": "Deseja permitir que {{user}} controle remotamente sua área de trabalho?",
|
||||
"remoteControlShareScreenWarning": "Note que se você pressionar \"Permitir\" você vai compartilhar sua tela!",
|
||||
"remoteControlStopMessage": "A sessão de controle remoto terminou!",
|
||||
"remoteControlTitle": "Conexão de área de trabalho remota",
|
||||
"muteParticipantDialog": "Tem a certeza de que quer silenciar este participante? Não poderá reativá-los, mas eles podem reativar-se a qualquer momento.",
|
||||
"muteParticipantTitle": "Silenciar este participante?",
|
||||
"muteParticipantsVideoButton": "Desativar a câmara",
|
||||
"muteParticipantsVideoTitle": "Desativar a câmara deste participante?",
|
||||
"muteParticipantsVideoBody": "Não poderá voltar a ligar a câmara, mas eles podem voltar a ligá-la a qualquer momento.",
|
||||
"Ok": "OK",
|
||||
"password": "Palavra-passe",
|
||||
"passwordLabel": "A reunião foi encerrada por um participante. Por favor, introduza a $t(lockRoomPassword) para participar.",
|
||||
"passwordNotSupported": "A definição na reunião $t(lockRoomPassword) não é suportada.",
|
||||
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) não é suportada.",
|
||||
"passwordRequired": "$t(lockRoomPasswordUppercase) necessário",
|
||||
"popupError": "O seu navegador está a bloquear janelas pop-up a partir deste site. Por favor, active os pop-ups nas definições de segurança do seu browser e tente novamente.",
|
||||
"popupErrorTitle": "Pop-up bloqueado",
|
||||
"readMore": "mais",
|
||||
"recording": "A gravar",
|
||||
"recordingDisabledBecauseOfActiveLiveStreamingTooltip": "Não possível enquanto a transmissão em direto estiver activa",
|
||||
"recordingDisabledTooltip": "Início de gravação desactivada.",
|
||||
"rejoinNow": "Reingressar agora",
|
||||
"remoteControlAllowedMessage": "{{user}} aceitou o seu pedido de controlo remoto!",
|
||||
"remoteControlDeniedMessage": "{{user}} rejeitou o seu pedido de controlo remoto!",
|
||||
"remoteControlErrorMessage": "Ocorreu um erro ao tentar solicitar permissões de controlo remoto de {{user}}!",
|
||||
"remoteControlRequestMessage": "Vai permitir que {{user}} controle remotamente o seu ambiente de trabalho?",
|
||||
"remoteControlShareScreenWarning": "Note que se pressionar \"Permitir\" irá partilhar o seu ecrã!",
|
||||
"remoteControlStopMessage": "A sessão de controlo remoto terminou!",
|
||||
"remoteControlTitle": "Controlo remoto da área de trabalho",
|
||||
"Remove": "Remover",
|
||||
"removePassword": "Remove $t(lockRoomPassword)",
|
||||
"removeSharedVideoMsg": "Deseja remover seu vídeo compartilhado?",
|
||||
"removeSharedVideoTitle": "Remover vídeo compartilhado",
|
||||
"reservationError": "Erro de sistema de reserva",
|
||||
"reservationErrorMsg": "Código do erro: {{code}}, mensagem: {{msg}}",
|
||||
"retry": "Tentar novamente",
|
||||
"screenSharingFailedToInstall": "Oops! Falhou a instalação da extensão de compartilhamento de tela.",
|
||||
"screenSharingFailedToInstallTitle": "A extensão de compartilhamento de tela falhou ao instalar",
|
||||
"screenSharingFirefoxPermissionDeniedError": "Algo deu errado enquanto estávamos tentando compartilhar sua tela. Por favor, certifique-se de que você nos deu permissão para fazê-lo. ",
|
||||
"screenSharingFirefoxPermissionDeniedTitle": "Opa! Não foi possível iniciar o compartilhamento de tela.",
|
||||
"screenSharingPermissionDeniedError": "Oops! Alguma coisa está errada com suas permissões de compartilhamento de tela. Recarregue e tente de novo.",
|
||||
"sendPrivateMessage": "Você enviou uma mensagem privada recentemente. Tem intenção de responder em privado, ou deseja enviar sua mensagem para o grupo?",
|
||||
"removePassword": "Remover $t(lockRoomPassword)",
|
||||
"removeSharedVideoMsg": "Tem a certeza de que gostaria de remover o seu vídeo partilhado?",
|
||||
"removeSharedVideoTitle": "Remover vídeo partilhado",
|
||||
"reservationError": "Erro no sistema de reservas",
|
||||
"reservationErrorMsg": "Código de erro: {{code}}, mensagem: {{msg}}",
|
||||
"retry": "Tentativa",
|
||||
"screenSharingAudio": "Partilhar áudio",
|
||||
"screenSharingFailed": "Oops! Algo correu mal, não fomos capazes de começar a partilhar o ecrã!",
|
||||
"screenSharingFailedTitle": "A partilha de ecrã falhou!",
|
||||
"screenSharingPermissionDeniedError": "Oops! Alguma coisa correu mal com as vossas permissões de partilha de ecrã. Por favor, volte a carregar e tente novamente.",
|
||||
"sendPrivateMessage": "Recebeu recentemente uma mensagem privada. Pretende responder a essa mensagem em privado, ou quer enviar a sua mensagem ao grupo?",
|
||||
"sendPrivateMessageCancel": "Enviar para o grupo",
|
||||
"sendPrivateMessageOk": "Enviar em privado",
|
||||
"sendPrivateMessageTitle": "Enviar em privado?",
|
||||
"serviceUnavailable": "Serviço indisponível",
|
||||
"sessTerminated": "Chamada terminada",
|
||||
"Share": "Compartilhar",
|
||||
"shareVideoLinkError": "Por favor, forneça um link do youtube correto.",
|
||||
"shareVideoTitle": "Compartilhar um vídeo",
|
||||
"shareYourScreen": "Compartilhar sua tela",
|
||||
"shareYourScreenDisabled": "Compartilhamento de tela desativada.",
|
||||
"shareYourScreenDisabledForGuest": "Visitantes não podem compartilhar tela.",
|
||||
"startLiveStreaming": "Iniciar transmissão ao vivo",
|
||||
"sessionRestarted": "Chamada reiniciada pela ponte",
|
||||
"Share": "Partilhar",
|
||||
"shareVideoLinkError": "Por favor, forneça uma ligação correcta ao youtube.",
|
||||
"shareVideoTitle": "Partilhar vídeo",
|
||||
"shareYourScreen": "Partilhe o seu ecrã",
|
||||
"shareYourScreenDisabled": "Partilha de ecrã desactivada.",
|
||||
"startLiveStreaming": "Iniciar a transmissão em directo",
|
||||
"startRecording": "Iniciar gravação",
|
||||
"startRemoteControlErrorMessage": "Um erro ocorreu enquanto tentava iniciar uma sessão de controle remoto!",
|
||||
"stopLiveStreaming": "Parar transmissão ao vivo",
|
||||
"stopRecording": "Parar a gravação",
|
||||
"stopRecordingWarning": "Tem certeza que deseja parar a gravação?",
|
||||
"stopStreamingWarning": "Tem certeza que deseja parar a transmissão ao vivo?",
|
||||
"streamKey": "Chave para transmissão ao vivo",
|
||||
"Submit": "Enviar",
|
||||
"thankYou": "Obrigado por usar o {{appName}}!",
|
||||
"startRemoteControlErrorMessage": "Ocorreu um erro ao tentar iniciar a sessão de controlo remoto!",
|
||||
"stopLiveStreaming": "Parar a transmissão em direto",
|
||||
"stopRecording": "Parar gravação",
|
||||
"stopRecordingWarning": "Tem a certeza de que gostaria de parar a gravação?",
|
||||
"stopStreamingWarning": "Tem a certeza de que gostaria de parar a transmissão em direto?",
|
||||
"streamKey": "Chave de transmissão em direto",
|
||||
"Submit": "Submeter",
|
||||
"thankYou": "Obrigado por utilizar {{appName}}!",
|
||||
"token": "token",
|
||||
"tokenAuthFailed": "Desculpe, você não está autorizado a entrar nesta chamada.",
|
||||
"tokenAuthFailedTitle": "Falha de autenticação",
|
||||
"transcribing": "Transcrevendo",
|
||||
"unlockRoom": "Remove a reunião $t(lockRoomPassword)",
|
||||
"userPassword": "senha do usuário",
|
||||
"WaitForHostMsg": "A conferência <b>{{room}}</b> ainda não começou. Se você é o anfitrião, faça a autenticação. Do contrário, aguarde a chegada do anfitrião.",
|
||||
"WaitForHostMsgWOk": "A conferência <b>{{room}}</b> ainda não começou. Se você é o anfitrião, pressione Ok para autenticar. Do contrário, aguarde a chegada do anfitrião.",
|
||||
"WaitingForHost": "Esperando o hospedeiro...",
|
||||
"tokenAuthFailed": "Desculpe, não está autorizado a juntar-se a esta chamada.",
|
||||
"tokenAuthFailedTitle": "A autenticação falhou",
|
||||
"transcribing": "Transcrição",
|
||||
"unlockRoom": "Retirar reunião $t(lockRoomPassword)",
|
||||
"user": "Utilizador",
|
||||
"userIdentifier": "Identificador do utilizador",
|
||||
"userPassword": "Palavra-passe do utilizador",
|
||||
"videoLink": "Ligação do vídeo",
|
||||
"WaitForHostMsg": "A conferência <b>{{room}}</b> ainda não começou. Se for o anfitrião, por favor autentique. Caso contrário, por favor aguarde que o anfitrião chegue.",
|
||||
"WaitForHostMsgWOk": "A conferência <b>{{room}}</b> ainda não começou. Se for o anfitrião, por favor prima Ok para autenticar. Caso contrário, por favor aguarde que o anfitrião chegue.",
|
||||
"WaitingForHostTitle": "À espera do anfitrião ...",
|
||||
"Yes": "Sim",
|
||||
"yourEntireScreen": "Toda sua tela"
|
||||
"yourEntireScreen": "O seu ecrã inteiro",
|
||||
"remoteUserControls": "Controlos remotos do utilizador {{username}}",
|
||||
"localUserControls": "Controlos locais de utilizador"
|
||||
},
|
||||
"dialOut": {
|
||||
"statusMessage": "está agora {{status}}"
|
||||
@@ -339,7 +379,7 @@
|
||||
"focusRemote": "Focar no vídeo de outro participante",
|
||||
"fullScreen": "Entrar ou sair da tela cheia",
|
||||
"keyboardShortcuts": "Atalhos de teclado",
|
||||
"localRecording": "Mostrar ou ocultar controles de gravação local",
|
||||
"localRecording": "Mostrar ou ocultar controlos de gravação local",
|
||||
"mute": "Deixar mudo ou não o microfone",
|
||||
"pushToTalk": "Pressione para falar",
|
||||
"raiseHand": "Erga ou baixe sua mão",
|
||||
@@ -387,7 +427,7 @@
|
||||
"on": "Ligado",
|
||||
"unknown": "Desconhecido"
|
||||
},
|
||||
"dialogTitle": "Controles da Gravação Local",
|
||||
"dialogTitle": "Controlos da Gravação Local",
|
||||
"duration": "Duração",
|
||||
"durationNA": "N/D",
|
||||
"encoding": "Codificando",
|
||||
@@ -407,11 +447,15 @@
|
||||
"participantStats": "Estatísticas dos Participantes",
|
||||
"sessionToken": "Token de Sessão",
|
||||
"start": "Iniciar gravação",
|
||||
"stop": "Parar a Gravação",
|
||||
"stop": "Parar gravação",
|
||||
"yes": "Sim"
|
||||
},
|
||||
"lockRoomPassword": "senha",
|
||||
"lockRoomPasswordUppercase": "Senha",
|
||||
"lonelyMeetingExperience": {
|
||||
"youAreAlone": "Você é o único na reunião",
|
||||
"button": "Convidar outros"
|
||||
},
|
||||
"me": "eu",
|
||||
"notify": {
|
||||
"connectedOneMember": "{{name}} entrou na reunião",
|
||||
@@ -447,6 +491,64 @@
|
||||
"passwordSetRemotely": "Definido por outro participante",
|
||||
"passwordDigitsOnly": "Até {{number}} dígitos",
|
||||
"poweredby": "distribuído por",
|
||||
"prejoin": {
|
||||
"audioAndVideoError": "Erro no áudio e vídeo:",
|
||||
"audioDeviceProblem": "Há um problema com o seu dispositivo de áudio",
|
||||
"audioOnlyError": "Erro no áudio:",
|
||||
"audioTrackError": "Não foi possível criar a pista de áudio.",
|
||||
"calling": "A chamar",
|
||||
"callMe": "Ligue-me",
|
||||
"callMeAtNumber": "Ligue-me para este número:",
|
||||
"configuringDevices": "A configurar os dispositivos...",
|
||||
"connectedWithAudioQ": "Está ligado com áudio?",
|
||||
"connection": {
|
||||
"good": "A sua ligação à Internet parece boa!",
|
||||
"nonOptimal": "A sua ligação à Internet não é óptima",
|
||||
"poor": "Tem uma má ligação à Internet"
|
||||
},
|
||||
"connectionDetails": {
|
||||
"audioClipping": "Prevemos que o seu áudio tenha cortes.",
|
||||
"audioHighQuality": "Prevemos que o seu áudio tenha excelente qualidade.",
|
||||
"audioLowNoVideo": "Prevemos que a qualidade do seu áudio seja baixa e sem vídeo.",
|
||||
"goodQuality": "Fantástico! A qualidade dos seus meios de comunicação vai ser óptima.",
|
||||
"noMediaConnectivity": "Não foi possível encontrar uma forma de estabelecer a conectividade dos meios de comunicação para este teste. Isto é tipicamente causado por uma firewall ou NAT.",
|
||||
"noVideo": "Prevemos que o seu vídeo seja terrível.",
|
||||
"undetectable": "Se mesmo assim não conseguir fazer chamadas no browser, recomendamos que se certifique de que os seus altifalantes, microfone e câmara estão devidamente configurados, que concedeu ao seu browser direitos de utilização do seu microfone e câmara, e que a versão do seu browser está actualizada. Se mesmo assim tiver problemas em telefonar, deverá contactar o criador da aplicação web.",
|
||||
"veryPoorConnection": "Prevemos que a qualidade da sua chamada seja realmente terrível.",
|
||||
"videoFreezing": "Prevemos que o seu vídeo congele, fique preto, e seja pixelizado.",
|
||||
"videoHighQuality": "Prevemos que o seu vídeo tenha boa qualidade.",
|
||||
"videoLowQuality": "Prevemos que o seu vídeo tenha baixa qualidade em termos de velocidade de fotogramas e resolução.",
|
||||
"videoTearing": "Prevemos que o seu vídeo seja pixelizado ou que tenha artefactos visuais."
|
||||
},
|
||||
"copyAndShare": "Copiar e partilhar a ligação da reunião.",
|
||||
"dialInMeeting": "Entrar com chamada telefónica",
|
||||
"dialInPin": "Entrar com chamada telefónica e introduzir o código PIN:",
|
||||
"dialing": "A marcar",
|
||||
"doNotShow": "Não volte a mostrar este ecrã",
|
||||
"errorDialOut": "Não foi possível marcar",
|
||||
"errorDialOutDisconnected": "Não foi possível marcar. Desligado",
|
||||
"errorDialOutFailed": "Não foi possível marcar. Falha na chamada",
|
||||
"errorDialOutStatus": "Erro ao obter o estado da chamada realizada",
|
||||
"errorMissingName": "Por favor, digite o seu nome para participar na reunião",
|
||||
"errorStatusCode": "Erro ao marcar, código do estado: {{status}}",
|
||||
"errorValidation": "Falhou a validação do número",
|
||||
"iWantToDialIn": "Quero entrar por telefone",
|
||||
"joinAudioByPhone": "Entrar com o áudio do telefone",
|
||||
"joinMeeting": "Entrar na reunião",
|
||||
"joinWithoutAudio": "Entrar sem áudio",
|
||||
"initiated": "Chamada iniciada",
|
||||
"linkCopied": "Ligação copiada para a área de transferência",
|
||||
"lookGood": "Parece que o seu microfone está a funcionar corretamente",
|
||||
"or": "ou",
|
||||
"premeeting": "Pré-reunião",
|
||||
"showScreen": "Ativar o ecrã de pré-reunião",
|
||||
"keyboardShortcuts" : "Ativar os atalhos de teclado",
|
||||
"startWithPhone": "Iniciar com o áudio do telefone",
|
||||
"screenSharingError": "Erro de partilha de ecrã:",
|
||||
"videoOnlyError": "Erro de vídeo:",
|
||||
"videoTrackError": "Não foi possível criar a pista de vídeo.",
|
||||
"viewAllNumbers": "ver todos os números"
|
||||
},
|
||||
"presenceStatus": {
|
||||
"busy": "Ocupado",
|
||||
"calling": "Chamando...",
|
||||
@@ -500,26 +602,39 @@
|
||||
},
|
||||
"settings": {
|
||||
"calendar": {
|
||||
"about": "A integração do calendário {{appName}} é usada para acessar com segurança o seu calendário para que ele possa ler os próximos eventos.",
|
||||
"disconnect": "Desconectar",
|
||||
"microsoftSignIn": "Entrar com Microsoft",
|
||||
"signedIn": "Atualmente acessando eventos do calendário para {{email}}. Clique no botão Desconectar abaixo para parar de acessar os eventos da agenda.",
|
||||
"about": "A integração do calendário {{appName}} é utilizada para aceder com segurança ao seu calendário para que este possa ler os próximos eventos.",
|
||||
"disconnect": "Desligar",
|
||||
"microsoftSignIn": "Iniciar sessão com a Microsoft",
|
||||
"signedIn": "Atualmente a aceder a eventos de calendário por {{email}}. Clique no botão Desconectar abaixo para parar de aceder a eventos de calendário.",
|
||||
"title": "Calendário"
|
||||
},
|
||||
"desktopShareFramerate": "Taxa de fotogramas para partilha do ambiente de trabalho",
|
||||
"desktopShareWarning": "É necessário reiniciar a partilha do ecrã para que as novas definições entrem em vigor.",
|
||||
"desktopShareHighFpsWarning": "Uma taxa de fotogramas mais elevada para a partilha do ambiente de trabalho pode afectar a sua largura de banda. É necessário reiniciar a partilha de ecrã para que as novas definições entrem em vigor.",
|
||||
"devices": "Dispositivos",
|
||||
"followMe": "Todos me seguem",
|
||||
"framesPerSecond": "fotogramas-por-segundo",
|
||||
"incomingMessage": "Receber mensagem",
|
||||
"language": "Idioma",
|
||||
"loggedIn": "Conectado como {{name}}",
|
||||
"loggedIn": "Sessão iniciada como {{name}}",
|
||||
"microphones": "Microfones",
|
||||
"moderator": "Moderador",
|
||||
"more": "Mais",
|
||||
"name": "Nome",
|
||||
"noDevice": "Nenhum",
|
||||
"participantJoined": "Entrar participante",
|
||||
"participantLeft": "Sair participante",
|
||||
"playSounds": "Reproduzir som quando",
|
||||
"sameAsSystem": "O mesmo que o sistema ({{label}})",
|
||||
"selectAudioOutput": "Saída de áudio",
|
||||
"selectCamera": "Câmera",
|
||||
"selectCamera": "Câmara",
|
||||
"selectMic": "Microfone",
|
||||
"startAudioMuted": "Todos iniciam mudos",
|
||||
"startVideoMuted": "Todos iniciam ocultos",
|
||||
"title": "Configurações"
|
||||
"sounds": "Sons",
|
||||
"speakers": "Participantes",
|
||||
"startAudioMuted": "Todos começam com microfone desligado",
|
||||
"startVideoMuted": "Todos começam com câmara desligada",
|
||||
"talkWhileMuted": "se fala e está com microfone desligado",
|
||||
"title": "Definições"
|
||||
},
|
||||
"settingsView": {
|
||||
"advanced": "",
|
||||
@@ -563,92 +678,123 @@
|
||||
"title": "Sua chamada de vídeo foi interrompida, porque seu computador foi dormir."
|
||||
},
|
||||
"toolbar": {
|
||||
"accessibilityLabel": {
|
||||
"audioOnly": "Alternar para apenas áudio",
|
||||
"audioRoute": "Selecionar o dispositivo de som",
|
||||
"callQuality": "Gerenciar qualidade do vídeo",
|
||||
"cc": "Alternar legendas",
|
||||
"chat": "Alternar para janela de chat",
|
||||
"document": "Alternar para documento compartilhado",
|
||||
"download": "Baixe nossos aplicativos",
|
||||
"feedback": "Deixar feedback",
|
||||
"fullScreen": "Alternar para tela cheia",
|
||||
"hangup": "Sair da chamada",
|
||||
"help": "Ajuda",
|
||||
"invite": "Convidar pessoas",
|
||||
"kick": "Remover participante",
|
||||
"localRecording": "Alternar controles de gravação local",
|
||||
"lockRoom": "Ativar/desativar senha de reunião",
|
||||
"moreActions": "Alternar mais menu de ações",
|
||||
"moreActionsMenu": "Menu de mais ações",
|
||||
"mute": "Alternar mudo do áudio",
|
||||
"pip": "Alternar modo Picture-in-Picture",
|
||||
"privateMessage": "Enviar mensagem privada",
|
||||
"profile": "Editar seu perfil",
|
||||
"raiseHand": "Alternar levantar a mão",
|
||||
"recording": "Alternar gravação",
|
||||
"remoteMute": "Silenciar participante",
|
||||
"Settings": "Alternar configurações",
|
||||
"sharedvideo": "Alternar compartilhamento de vídeo do Youtube",
|
||||
"shareRoom": "Convidar alguém",
|
||||
"shareYourScreen": "Alternar compartilhamento de tela",
|
||||
"shortcuts": "Alternar atalhos",
|
||||
"show": "Mostrar no palco",
|
||||
"speakerStats": "Alternar estatísticas do apresentador",
|
||||
"tileView": "Alternar visualização em blocos",
|
||||
"toggleCamera": "Alternar câmera",
|
||||
"videomute": "Alternar mudo do vídeo",
|
||||
"videoblur": "Alternar desfoque de vídeo"
|
||||
},
|
||||
"addPeople": "Adicionar pessoas à sua chamada",
|
||||
"audioOnlyOff": "Desabilitar modo de largura de banda baixa",
|
||||
"audioOnlyOn": "Habilitar modo de largura de banda baixa",
|
||||
"accessibilityLabel": {
|
||||
"audioOnly": "Mudar para apenas áudio",
|
||||
"audioRoute": "Selecionar o dispositivo de som",
|
||||
"authenticate": "Autenticar",
|
||||
"callQuality": "Gerenciar qualidade do vídeo",
|
||||
"chat": "Abrir ou fechar o bate-papo",
|
||||
"closeChat": "Fechar chat",
|
||||
"documentClose": "Fechar documento compartilhado",
|
||||
"documentOpen": "Abrir documento compartilhado",
|
||||
"download": "Baixe nossos aplicativos",
|
||||
"enterFullScreen": "Ver em tela cheia",
|
||||
"enterTileView": "Entrar em exibição de bloco",
|
||||
"exitFullScreen": "Sair da tela cheia",
|
||||
"exitTileView": "Sair de exibição de bloco",
|
||||
"feedback": "Deixar feedback",
|
||||
"hangup": "Sair",
|
||||
"callQuality": "Gerir a qualidade do vídeo",
|
||||
"cc": "Mudar legendas",
|
||||
"chat": "Abrir / Fechar chat",
|
||||
"document": "Mudar para documento partilhado",
|
||||
"download": "Descarregar as nossas aplicações",
|
||||
"embedMeeting": "Reunião incorporada",
|
||||
"feedback": "Deixar comentários",
|
||||
"fullScreen": "Mudar para ecrã completo",
|
||||
"grantModerator": "Atribuir Moderador",
|
||||
"hangup": "Sair da reunião",
|
||||
"help": "Ajuda",
|
||||
"invite": "Convidar pessoas",
|
||||
"login": "Iniciar sessão",
|
||||
"logout": "Encerrar sessão",
|
||||
"lowerYourHand": "Baixar a mão",
|
||||
"kick": "Remover participante",
|
||||
"lobbyButton": "Ativar/desativar sala de espera",
|
||||
"localRecording": "Mudar os controlos locais de gravação",
|
||||
"lockRoom": "Mudar palavra-chave de reunião",
|
||||
"moreActions": "Mais ações",
|
||||
"moreActionsMenu": "Menu de mais ações",
|
||||
"moreOptions": "Mostrar mais opções",
|
||||
"mute": "Mudo / Não mudo",
|
||||
"noAudioSignalTitle": "",
|
||||
"noAudioSignalDesc": "",
|
||||
"noAudioSignalDescSuggestion": "",
|
||||
"openChat": "Abrir chat",
|
||||
"pip": "Entrar em modo Quadro-a-Quadro",
|
||||
"muteEveryone": "Silenciar a todos",
|
||||
"muteEveryoneElse": "Silenciar todos os outros",
|
||||
"muteEveryonesVideo": "Desativar a câmara de todos",
|
||||
"muteEveryoneElsesVideo": "Desativar a câmara de todos os outros",
|
||||
"participants": "Participantes",
|
||||
"pip": "Mudar para o modo Picture-in-Picture",
|
||||
"privateMessage": "Enviar mensagem privada",
|
||||
"profile": "Editar seu perfil",
|
||||
"raiseHand": "Erguer / Baixar sua mão",
|
||||
"raiseYourHand": "Levantar a mão",
|
||||
"Settings": "Configurações",
|
||||
"sharedvideo": "Compartilhar um vídeo do YouTube",
|
||||
"profile": "Editar o seu perfil",
|
||||
"raiseHand": "Levantar / Baixar a mão",
|
||||
"recording": "Mudar gravação",
|
||||
"remoteMute": "Participante mudo",
|
||||
"remoteVideoMute": "Desativar a câmara do participante",
|
||||
"security": "Opções de segurança",
|
||||
"Settings": "Mudar configurações",
|
||||
"shareaudio": "Partilhar áudio",
|
||||
"sharedvideo": "Mudar a partilha de vídeos do YouTube",
|
||||
"shareRoom": "Convidar alguém",
|
||||
"shortcuts": "Ver atalhos",
|
||||
"speakerStats": "Estatísticas do Apresentador",
|
||||
"startScreenSharing": "Iniciar compart. de tela",
|
||||
"startSubtitles": "Iniciar legendas",
|
||||
"stopScreenSharing": "Parar compart. de tela",
|
||||
"stopSubtitles": "Parar legendas",
|
||||
"stopSharedVideo": "Parar vídeo do YouTube",
|
||||
"talkWhileMutedPopup": "Tentando falar? Você está em mudo.",
|
||||
"tileViewToggle": "Alternar visualização em blocos",
|
||||
"toggleCamera": "Alternar câmera",
|
||||
"videomute": "Iniciar ou parar a câmera",
|
||||
"startvideoblur": "Desfocar meu plano de fundo",
|
||||
"stopvideoblur": "Desativar desfoque de fundo"
|
||||
"shareYourScreen": "Iniciar / Parar de partilhar o seu ecrã",
|
||||
"shortcuts": "Mostrar / Esconder atalhos",
|
||||
"show": "Mostrar no palco",
|
||||
"speakerStats": "Mostrar / Esconder estatísticas dos participantes",
|
||||
"tileView": "Mudar para vista em quadrícula",
|
||||
"toggleCamera": "Mudar a câmara",
|
||||
"toggleFilmstrip": "Mudar para película de filme",
|
||||
"videomute": "Iniciar / Parar câmara",
|
||||
"videoblur": "Mudar o desfoque de vídeo",
|
||||
"selectBackground": "Selecionar plano de fundo",
|
||||
"expand": "Expandir",
|
||||
"collapse": "Colapsar"
|
||||
},
|
||||
"addPeople": "Adicione pessoas à sua chamada",
|
||||
"audioSettings": "Definições de áudio",
|
||||
"videoSettings": "Definições de vídeo",
|
||||
"audioOnlyOff": "Desativar modo de largura de banda baixa",
|
||||
"audioOnlyOn": "Ativar modo de largura de banda baixa",
|
||||
"audioRoute": "Selecionar o dispositivo de som",
|
||||
"authenticate": "Autenticar",
|
||||
"callQuality": "Gerir a qualidade do vídeo",
|
||||
"chat": "Abrir / Fechar chat",
|
||||
"closeChat": "Fechar chat",
|
||||
"documentClose": "Fechar documento partilhado",
|
||||
"documentOpen": "Abrir documento partilhado",
|
||||
"download": "Descarregar as nossas aplicações",
|
||||
"e2ee": "Criptografia ponta a ponta",
|
||||
"embedMeeting": "Incorporar reunião",
|
||||
"enterFullScreen": "Ver em ecrã completo",
|
||||
"enterTileView": "Ver em quadrícula",
|
||||
"exitFullScreen": "Sair de ecrã completo",
|
||||
"exitTileView": "Sair de quadrícula",
|
||||
"feedback": "Deixar comentários",
|
||||
"hangup": "Sair da reunião",
|
||||
"help": "Ajuda",
|
||||
"invite": "Convidar pessoas",
|
||||
"lobbyButtonDisable": "Desativar sala de espera",
|
||||
"lobbyButtonEnable": "Ativar sala de espera",
|
||||
"login": "Iniciar sessão",
|
||||
"logout": "Encerrar sessão",
|
||||
"lowerYourHand": "Baixar a mão",
|
||||
"moreActions": "Mais ações",
|
||||
"moreOptions": "Mais opções",
|
||||
"mute": "Mudo / Não mudo",
|
||||
"muteEveryone": "Silenciar todos",
|
||||
"muteEveryonesVideo": "Desativar a câmara de todos",
|
||||
"noAudioSignalTitle": "Não há nenhuma entrada vinda do seu microfone!",
|
||||
"noAudioSignalDesc": "Se não o silenciou propositadamente a partir de configurações do sistema ou hardware, considere mudar de dispositivo.",
|
||||
"noAudioSignalDescSuggestion": "Se não o silenciou propositadamente a partir das configurações do sistema ou hardware, considere mudar para o dispositivo sugerido.",
|
||||
"noAudioSignalDialInDesc": "Também pode marcar usando:",
|
||||
"noAudioSignalDialInLinkDesc": "Números de marcação",
|
||||
"noisyAudioInputTitle": "Seu microfone parece estar barulhento!",
|
||||
"noisyAudioInputDesc": "Parece que o seu microfone está a fazer barulho, por favor considere silenciar ou mudar de dispositivo.",
|
||||
"openChat": "Abrir chat",
|
||||
"participants": "Participantes",
|
||||
"pip": "Entrar no modo Picture-in-Picture",
|
||||
"privateMessage": "Enviar mensagem privada",
|
||||
"profile": "Editar o seu perfil",
|
||||
"raiseHand": "Levantar / Baixar a mão",
|
||||
"raiseYourHand": "Levantar a mão",
|
||||
"security": "Opções de segurança",
|
||||
"Settings": "Definições",
|
||||
"shareaudio": "Partilhar áudio",
|
||||
"sharedvideo": "Partilhar vídeo",
|
||||
"shareRoom": "Convidar alguém",
|
||||
"shortcuts": "Ver atalhos",
|
||||
"speakerStats": "Estatísticas dos participantes",
|
||||
"startScreenSharing": "Iniciar partilha de ecrã",
|
||||
"startSubtitles": "Iniciar legendas",
|
||||
"stopScreenSharing": "Parar partilha de ecrã",
|
||||
"stopSubtitles": "Parar legendas",
|
||||
"stopSharedVideo": "Parar vídeo do YouTube",
|
||||
"talkWhileMutedPopup": "Está a tentar falar? Está mudo.",
|
||||
"tileViewToggle": "Mudar para vista em quadrícula",
|
||||
"toggleCamera": "Mudar a câmara",
|
||||
"videomute": "Iniciar / Parar câmara",
|
||||
"selectBackground": "Selecionar plano de fundo"
|
||||
},
|
||||
"transcribing": {
|
||||
"ccButtonTooltip": "Iniciar/parar legendas",
|
||||
|
||||
@@ -200,8 +200,8 @@
|
||||
"dismiss": "Dispensar",
|
||||
"displayNameRequired": "Oi! Qual o seu nome?",
|
||||
"done": "Feito",
|
||||
"e2eeDescription": "Encriptação ponto-a-ponto é, no momento, EXPERIMENTAL. Por favor tenha em mente que habilitar a encriptação ponto-a-ponto irá desativar os serviços disponíveis no servidor como: gravação, transmissão ao vivo e telefonar participantes. Além disso a reunião só irá funcionar para os participantes entrando em browsers com suporte a funcionalidade.",
|
||||
"e2eeLabel": "Enable End-to-End Encryption",
|
||||
"e2eeDescription": "Encriptação ponto-a-ponto é, no momento, EXPERIMENTAL. Por favor tenha em mente que habilitar a encriptação ponto-a-ponto irá desativar os serviços disponíveis no servidor como: gravação, transmissão ao vivo e telefonar participantes. Além disso a reunião só irá funcionar para os participantes entrando em browsers com suporte a funcionalidade.",
|
||||
"e2eeLabel": "Enable End-to-End Encryption",
|
||||
"e2eeWarning": "WARNING: Not all participants in this meeting seem to have support for End-to-End encryption. If you enable it they won't be able to see nor hear you.",
|
||||
"enterDisplayName": "Digite seu nome aqui",
|
||||
"error": "Erro",
|
||||
@@ -304,12 +304,13 @@
|
||||
"transcribing": "Transcrevendo",
|
||||
"unlockRoom": "Remove a reunião $t(lockRoomPassword)",
|
||||
"userPassword": "senha do usuário",
|
||||
"videoLink": "Link do vídeo",
|
||||
"WaitForHostMsg": "A conferência <b>{{room}}</b> ainda não começou. Se você é o anfitrião, faça a autenticação. Do contrário, aguarde a chegada do anfitrião.",
|
||||
"WaitForHostMsgWOk": "A conferência <b>{{room}}</b> ainda não começou. Se você é o anfitrião, pressione Ok para autenticar. Do contrário, aguarde a chegada do anfitrião.",
|
||||
"WaitingForHost": "Esperando o anfitrião...",
|
||||
"Yes": "Sim",
|
||||
"yourEntireScreen": "Toda sua tela"
|
||||
},
|
||||
},
|
||||
"dialOut": {
|
||||
"statusMessage": "está agora {{status}}"
|
||||
},
|
||||
@@ -321,6 +322,28 @@
|
||||
},
|
||||
"embedMeeting": {
|
||||
"title": "Reunião em formato compacto"
|
||||
},
|
||||
"virtualBackground": {
|
||||
"apply": "Aplicar",
|
||||
"title": "Fundos virtuais",
|
||||
"blur": "Desfoque",
|
||||
"slightBlur": "Desfoque suave",
|
||||
"removeBackground": "Remover fundo",
|
||||
"addBackground": "Adicionar novo fundo",
|
||||
"pleaseWait": "Aguarde...",
|
||||
"none": "Nenhum",
|
||||
"uploadedImage": "Imagem enviada {{index}}",
|
||||
"deleteImage": "Excluir imagem",
|
||||
"image1" : "Praia",
|
||||
"image2" : "Parede branca neutra",
|
||||
"image3" : "Quarto branco vazio",
|
||||
"image4" : "Luminária preta",
|
||||
"image5" : "Montanha",
|
||||
"image6" : "Floresta",
|
||||
"image7" : "Alvorada",
|
||||
"desktopShareError": "Não foi possível compartilhar o desktop",
|
||||
"desktopShare":"Compartilhar desktop",
|
||||
"webAssemblyWarning": "Não há suporte para WebAssembly"
|
||||
},
|
||||
"feedback": {
|
||||
"average": "Média",
|
||||
@@ -499,6 +522,18 @@
|
||||
"oldElectronClientDescription1": "Você está usando um versão antiga do cliente Jitsi Meet que possui uma conhecida vulnerabilidade de segurança. Por favor tenha certeza de atulizar para a nossa ",
|
||||
"oldElectronClientDescription2": "última versão",
|
||||
"oldElectronClientDescription3": " agora!"
|
||||
},
|
||||
"participantsPane": {
|
||||
"close": "Fechar",
|
||||
"headings": {
|
||||
"lobby": "Sala de espera ({{count}})",
|
||||
"participantsList": "Participantes da reunião ({{count}})"
|
||||
},
|
||||
"actions": {
|
||||
"invite": "Convidar alguém",
|
||||
"muteAll": "Silenciar todos",
|
||||
"stopVideo": "Parar vídeo"
|
||||
}
|
||||
},
|
||||
"passwordSetRemotely": "Definido por outro participante",
|
||||
"passwordDigitsOnly": "Até {{number}} dígitos",
|
||||
@@ -514,23 +549,23 @@
|
||||
"configuringDevices": "Configurando dispositivos...",
|
||||
"connectedWithAudioQ": "Você está conectado com áudio?",
|
||||
"connection": {
|
||||
"good": "Sua conexão com a internet parece boa!",
|
||||
"nonOptimal": "Sua conexão com a internet não é boa",
|
||||
"poor": "Você tem uma conexão a internet ruim"
|
||||
"good": "Sua conexão com a internet parece boa!",
|
||||
"nonOptimal": "Sua conexão com a internet não é boa",
|
||||
"poor": "Você tem uma conexão a internet ruim"
|
||||
},
|
||||
"connectionDetails": {
|
||||
"audioClipping": "Espera-se um áudio que pique.",
|
||||
"audioHighQuality": "Espera-se um áudio de excelente qualidade.",
|
||||
"audioLowNoVideo": "Espera-se uma qualidade baixa de áudio e sem vídeo.",
|
||||
"goodQuality": "Muito bom! Qualidade da mídia será muito boa.",
|
||||
"noMediaConnectivity": "Não conseguimos estabelcer conexão com as mídias para o teste. Normalmente é um problema de firewall ou NAT.",
|
||||
"noVideo": "Espera-se um vídeo de qualidade ruim.",
|
||||
"undetectable": "Se você continuar fazendo a chamada no browser, recomenda-se que o alto-falante, microfones e câmera estejam corretamente configurados, que você permitiu que o browser acesse seu microfone e câmera, e o browser esteja atualizado. Se ainda assim tenha problemas na chamada, contacte o desenvolvedor da aplicação.",
|
||||
"veryPoorConnection": "Espera-se que a qualidade da chamada seja ruim.",
|
||||
"videoFreezing": "Espera-se um vídeo congelado, preto ou pixelado.",
|
||||
"videoHighQuality": "Espera-se um vídeo de boa qualidade.",
|
||||
"videoLowQuality": "Espera-se um vídeo de baixa qualidade em termos de taxa de frame e resolução.",
|
||||
"videoTearing": "Espera-se um vídeo pixelado ou com artefatos visuais."
|
||||
"audioClipping": "Espera-se um áudio que pique.",
|
||||
"audioHighQuality": "Espera-se um áudio de excelente qualidade.",
|
||||
"audioLowNoVideo": "Espera-se uma qualidade baixa de áudio e sem vídeo.",
|
||||
"goodQuality": "Muito bom! Qualidade da mídia será muito boa.",
|
||||
"noMediaConnectivity": "Não conseguimos estabelcer conexão com as mídias para o teste. Normalmente é um problema de firewall ou NAT.",
|
||||
"noVideo": "Espera-se um vídeo de qualidade ruim.",
|
||||
"undetectable": "Se você continuar fazendo a chamada no browser, recomenda-se que o alto-falante, microfones e câmera estejam corretamente configurados, que você permitiu que o browser acesse seu microfone e câmera, e o browser esteja atualizado. Se ainda assim tenha problemas na chamada, contacte o desenvolvedor da aplicação.",
|
||||
"veryPoorConnection": "Espera-se que a qualidade da chamada seja ruim.",
|
||||
"videoFreezing": "Espera-se um vídeo congelado, preto ou pixelado.",
|
||||
"videoHighQuality": "Espera-se um vídeo de boa qualidade.",
|
||||
"videoLowQuality": "Espera-se um vídeo de baixa qualidade em termos de taxa de frame e resolução.",
|
||||
"videoTearing": "Espera-se um vídeo pixelado ou com artefatos visuais."
|
||||
},
|
||||
"copyAndShare": "Copiar e compartilhar o link da reunião",
|
||||
"dialInMeeting": "Discar para a reunião",
|
||||
@@ -582,7 +617,7 @@
|
||||
},
|
||||
"raisedHand": "Gostaria de falar",
|
||||
"recording": {
|
||||
"limitNotificationDescriptionWeb": "Devido a demanda, sua gravação ficará limitada a {{limit}} minutos. Para gravação ilimitada tente <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"limitNotificationDescriptionWeb": "Devido a demanda, sua gravação ficará limitada a {{limit}} minutos. Para gravação ilimitada tente <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"limitNotificationDescriptionNative": "Devido a demanda, sua gravação ficará limitada a {{limit}} minutos. Para gravação ilimitada tente <3>{{app}}</3>.",
|
||||
"authDropboxText": "Enviar para o Dropbox",
|
||||
"availableSpace": "Espaço disponível: {{spaceLeft}} MB (aproximadamente {{duration}} minutos de gravação)",
|
||||
@@ -713,6 +748,8 @@
|
||||
"moreOptions": "Mostrar mais opções",
|
||||
"mute": "Alternar mudo do áudio",
|
||||
"muteEveryone": "Silenciar todos",
|
||||
"muteEveryonesVideo": "Desativar a câmera de todos",
|
||||
"participants": "Participantes",
|
||||
"pip": "Alternar modo Picture-in-Picture",
|
||||
"privateMessage": "Enviar mensagem privada",
|
||||
"profile": "Editar seu perfil",
|
||||
@@ -792,7 +829,8 @@
|
||||
"toggleCamera": "Alternar câmera",
|
||||
"videomute": "Iniciar ou parar a câmera",
|
||||
"startvideoblur": "Desfocar meu plano de fundo",
|
||||
"stopvideoblur": "Desativar desfoque de fundo"
|
||||
"stopvideoblur": "Desativar desfoque de fundo",
|
||||
"selectBackground": "Selecionar fundo"
|
||||
},
|
||||
"transcribing": {
|
||||
"ccButtonTooltip": "Iniciar/parar legendas",
|
||||
@@ -889,7 +927,7 @@
|
||||
"roomnameHint": "Digite o nome ou a URL da sala que você deseja entrar. Você pode digitar um nome, e apenas deixe para as pessoas que você quer se reunir digitem o mesmo nome.",
|
||||
"sendFeedback": "Enviar comentários",
|
||||
"terms": "Termos",
|
||||
"title": "Videoconferências mais seguras, flexíveis e totalmente gratuitas"
|
||||
"title": "Videoconferências mais seguras, flexíveis e totalmente gratuitas"
|
||||
},
|
||||
"lonelyMeetingExperience": {
|
||||
"youAreAlone": "Você é o único na reunião",
|
||||
|
||||
@@ -5,29 +5,26 @@
|
||||
"copyInvite": "Kopjo ftesë takimi",
|
||||
"copyLink": "Kopjo lidhje takimi",
|
||||
"copyStream": "Kopjo lidhje transmetimi të drejtpërdrejtë",
|
||||
"contacts": "kontakte",
|
||||
"countryNotSupported": "S’e mbulojmë ende këtë vend.",
|
||||
"countryReminder": "Thirrje jashtë ShBA-s? Ju lutemi, sigurohuni se e nisni me kodin e vendit!",
|
||||
"countryReminder": "Thirrje nga jashtë ShBA-s? Ju lutemi, sigurohuni se e nisni me kodin e vendit!",
|
||||
"defaultEmail": "Email-i Juaj Parazgjedhje",
|
||||
"disabled": "S’mund të ftoni persona.",
|
||||
"failedToAdd": "S’u arrit të shtohen pjesëmarrës",
|
||||
"footerText": "Formimi i numrave është i çaktivizuar.",
|
||||
"googleEmail": "Email Google",
|
||||
"inviteMoreHeader": "Jeni i vetmi në takim",
|
||||
"inviteMoreHeader": "Në takim jeni vetëm ju",
|
||||
"inviteMoreMailSubject": "Merrni pjesë në takim me {{appName}}",
|
||||
"inviteMorePrompt": "Ftoni më tepër persona",
|
||||
"linkCopied": "Lidhja u kopjua në të papastër",
|
||||
"loading": "Po kërkohet për persona dhe numra telefonash",
|
||||
"loadingNumber": "Po vlerësohet numër telefoni",
|
||||
"loadingPeople": "Po kërkohet për persona për t’i ftuar",
|
||||
"noResults": "S’ka përfundime kërkimi me përputhje",
|
||||
"noValidNumbers": "Ju lutemi, jepni një numër telefoni",
|
||||
"outlookEmail": "Email Outlook",
|
||||
"searchNumbers": "Shtoni numra telefoni",
|
||||
"searchPeople": "Kërkoni për persona",
|
||||
"searchPeopleAndNumbers": "Kërkoni për persona ose shtoni numrat e tyre të telefonit",
|
||||
"phoneNumbers": "numra telefonash",
|
||||
"searching": "Po kërkohet…",
|
||||
"shareInvite": "Jepuni të tjerëve ftesë takimi",
|
||||
"shareLink": "Që të ftoni të tjerë, jepuni lidhjen për në takim",
|
||||
"shareStream": "Jepuni të tjerëve lidhjen e transmetimit të drejtpërdrejtë",
|
||||
"sipAddresses": "adresa SIP",
|
||||
"telephone": "Telefon: {{number}}",
|
||||
"title": "Ftoni persona në këtë takim",
|
||||
"yahooEmail": "Email Yahoo"
|
||||
@@ -40,7 +37,7 @@
|
||||
"none": "S’ka pajisje audio"
|
||||
},
|
||||
"audioOnly": {
|
||||
"audioOnly": "Sasi e vogël trafiku"
|
||||
"audioOnly": "Gjerësi e ulët bande"
|
||||
},
|
||||
"calendarSync": {
|
||||
"addMeetingURL": "Shtoni një lidhje takimi",
|
||||
@@ -56,7 +53,7 @@
|
||||
"noEvents": "S’ka veprimtari të ardhshme të vëna në plan.",
|
||||
"ongoingMeeting": "takim në zhvillim e sipër",
|
||||
"permissionButton": "Hapni rregullimet",
|
||||
"permissionMessage": "Që të shihni në aplikacion takimet tuaja, lejet mbi Kalendarin janë të domosdoshme.",
|
||||
"permissionMessage": "Që të shihni në aplikacion takimet tuaja, janë të domosdoshme lejet mbi Kalendarin.",
|
||||
"refresh": "Rifresko kalendarin",
|
||||
"today": "Sot"
|
||||
},
|
||||
@@ -73,12 +70,17 @@
|
||||
},
|
||||
"privateNotice": "Mesazh privat për {{recipient}}",
|
||||
"title": "Fjalosje",
|
||||
"you": "ju"
|
||||
"you": "ju",
|
||||
"message": "Mesazh",
|
||||
"messageAccessibleTitle": "{{user}} thotë:",
|
||||
"messageAccessibleTitleMe": "unë them:",
|
||||
"smileysPanel": "Panel emoji-sh"
|
||||
},
|
||||
"chromeExtensionBanner": {
|
||||
"installExtensionText": "Instaloni zgjerimin për integrim të Google Calendar-it dhe Office 365-s",
|
||||
"buttonText": "Instaloni Zgjerimin për Chrome",
|
||||
"dontShowAgain": "Mos ma shfaq sërish këtë"
|
||||
"dontShowAgain": "Mos ma shfaq sërish këtë",
|
||||
"close": "Mbylle"
|
||||
},
|
||||
"connectingOverlay": {
|
||||
"joiningRoom": "Po ju lidhim me takimin tuaj…"
|
||||
@@ -94,14 +96,14 @@
|
||||
"DISCONNECTING": "Po shkëputet",
|
||||
"ERROR": "Gabim",
|
||||
"FETCH_SESSION_ID": "Po merret ID sesioni…",
|
||||
"GET_SESSION_ID_ERROR": "Gabim marrjeje IS sesioni: {{code}}",
|
||||
"GET_SESSION_ID_ERROR": "Gabim marrjeje ID sesioni: {{code}}",
|
||||
"GOT_SESSION_ID": "Po merret ID sesioni… U bë",
|
||||
"LOW_BANDWIDTH": "Videoja për {{displayName}} është mbyllur, për të kursyer sasi trafiku"
|
||||
},
|
||||
"connectionindicator": {
|
||||
"address": "Adresë:",
|
||||
"audio_ssrc": "SSRC Audioje:",
|
||||
"bandwidth": "Sasi e hamendësuar trafiku:",
|
||||
"bandwidth": "Gjerësi e hamendësuar bande:",
|
||||
"bitrate": "Bitrate:",
|
||||
"bridgeCount": "Numër shërbyesish: ",
|
||||
"codecs": "Kodekë (A/V): ",
|
||||
@@ -113,7 +115,7 @@
|
||||
"localaddress_plural": "Adresa vendore:",
|
||||
"localport": "Portë vendore:",
|
||||
"localport_plural": "Porta vendore:",
|
||||
"maxEnabledResolution": "dërgo maksimumi",
|
||||
"maxEnabledResolution": "maksimum dërgimi",
|
||||
"more": "Shfaq më tepër",
|
||||
"packetloss": "Humbje paketesh:",
|
||||
"quality": {
|
||||
@@ -150,10 +152,10 @@
|
||||
"joinInApp": "Merrni pjesë në këtë takim duke përdorur aplikacionin",
|
||||
"launchWebButton": "Nise në web",
|
||||
"title": "Po niset takimi juaj në {{app}}…",
|
||||
"tryAgainButton": "Riprovo në desktop"
|
||||
"tryAgainButton": "Riprovoni në desktop"
|
||||
},
|
||||
"defaultLink": "p.sh. {{url}}",
|
||||
"defaultNickname": "shembull. Ndrikulla",
|
||||
"defaultLink": "p.sh., {{url}}",
|
||||
"defaultNickname": "p.sh., Ndrikulla",
|
||||
"deviceError": {
|
||||
"cameraError": "S’u arrit të hyhej në kamerën tuaj",
|
||||
"cameraPermission": "Gabim në marrje lejesh mbi kamerën",
|
||||
@@ -206,12 +208,14 @@
|
||||
"e2eeDescription": "Fshehtëzimi Skaj-më-Skaj aktualisht është EKSPERIMENTAL. Ju lutemi, mbani parasysh se aktivizimi i fshehtëzimit skaj-më-skaj praktikisht do të çaktivizojë shërbime të ofruara më anë të shërbyesit, të tillë si: regjistrim, transmetim të drejtpërdrejtë dhe pjesëmarrje me telefon. Mbani parasysh gjithashtu se takimi do të funksionojë vetëm për persona që hyjnë në të nga shfletues që mbulojnë futje rrjedhash transmetimi.",
|
||||
"e2eeLabel": "Aktivizo Fshehtëzim Skaj-më-Skaj",
|
||||
"e2eeWarning": "KUJDES: Jo të gjithë pjesëmarrësit në këtë takim duket të kenë mbulim për fshehtëzim Skaj-më-Skaj. Në e aktivizofshi, ata s’do të jenë në gjendje t’ju shohin apo dëgjojnë.",
|
||||
"enterDisplayName": "Ju lute, jepni këtu emrin tuaj",
|
||||
"enterDisplayName": "Ju lutemi, jepni këtu emrin tuaj",
|
||||
"enterDisplayNameToJoin": "Që të merrni pjesë, ju lutemi, jepni emrin tuaj",
|
||||
"embedMeeting": "Trupëzoni takim",
|
||||
"error": "Gabim",
|
||||
"gracefulShutdown": "Shërbimi ynë është aktualisht i ndërprerë, për punë mirëmbajtjeje. Ju lutemi, riprovoni më vonë.",
|
||||
"grantModeratorDialog": "Jeni i sigurt se doni ta bëni moderator këtë pjesëmarrës?",
|
||||
"grantModeratorTitle": "Akordoni të drejta moderatori",
|
||||
"IamHost": "Jam organizatori",
|
||||
"IamHost": "Jam organizuesi",
|
||||
"incorrectRoomLockPassword": "Fjalëkalim i pasaktë",
|
||||
"incorrectPassword": "Emër përdoruesi ose fjalëkalim i pasaktë",
|
||||
"internalError": "Hëm! Diç shkoi ters. Ndodhi gabimi vijues: {{error}}",
|
||||
@@ -230,8 +234,8 @@
|
||||
"logoutQuestion": "Jeni i sigurt se doni të dilet dhe të ndalet konferenca?",
|
||||
"login": "Hyrje",
|
||||
"logoutTitle": "Dalje",
|
||||
"maxUsersLimitReached": "U mbërrit në kufirin për numër maksimum pjesëmarrësish. Konferenca është plot. Ju lutemi, lidhuni me të zotin e takimit, ose provoni më vonë!",
|
||||
"maxUsersLimitReachedTitle": "U mbërrit në kufirin për numër maksimum pjesëmarrësish",
|
||||
"maxUsersLimitReached": "U mbërrit në kufi numri maksimum pjesëmarrësish. Konferenca është plot. Ju lutemi, lidhuni me të zotin e takimit, ose provoni më vonë!",
|
||||
"maxUsersLimitReachedTitle": "U mbërrit në kufi numri maksimum pjesëmarrësish",
|
||||
"micConstraintFailedError": "Mikrofoni juaj s’plotëson disa nga kufizimet e domosdoshme.",
|
||||
"micNotFoundError": "S’u gjet mikrofon.",
|
||||
"micNotSendingData": "Kaloni te rregullimet e kompjuterit tuaj që t’i hiqni mikrofonit heshtimin dhe të ujdisni volumin për të",
|
||||
@@ -258,6 +262,7 @@
|
||||
"muteParticipantsVideoTitle": "Të çaktivizohet kamera e këtij pjesëmarrësi?",
|
||||
"muteParticipantsVideoBody": "S’do të jeni në gjendje të rihapni kamerën, por ata mund ta bëjnë këtë për veten në çfarëdo kohe.",
|
||||
"Ok": "OK",
|
||||
"password": "Fjalëkalim",
|
||||
"passwordLabel": "Takimi është kyçur nga njëri prej pjesëmarrësve. Që të merrni pjesë, ju lutemi, jepni $t(lockRoomPassword).",
|
||||
"passwordNotSupported": "Nuk mbulohet caktimi i një $t(lockRoomPassword) takimi.",
|
||||
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) nuk mbulohet",
|
||||
@@ -294,9 +299,9 @@
|
||||
"serviceUnavailable": "Shërbim jashtë funksionimi",
|
||||
"sessTerminated": "Thirrja përfundoi",
|
||||
"sessionRestarted": "Thirrje e rinisur nga ura",
|
||||
"Share": "Share",
|
||||
"shareVideoLinkError": "Ju lutemi, jepni një lidhje youtube të saktë.",
|
||||
"shareVideoTitle": "Ndani një video me të tjerë",
|
||||
"Share": "Ndajeni",
|
||||
"shareVideoLinkError": "Ju lutemi, jepni një lidhje Youtube të saktë.",
|
||||
"shareVideoTitle": "Ndani video me të tjerë",
|
||||
"shareYourScreen": "Tregojuni ekranin tuaj",
|
||||
"shareYourScreenDisabled": "Tregimi i ekrani është i çaktivizuar.",
|
||||
"startLiveStreaming": "Nis transmetim të drejtpërdrejtë",
|
||||
@@ -322,13 +327,15 @@
|
||||
"WaitForHostMsgWOk": "Konferenca <b>{{room}}</b> s’ka nisur ende. Nëse jeni organizatori, atëherë ju lutemi, shtypni OK, që të kryhet mirëfilltësimi. Përndryshe, ju lutemi, pritni që të mbërrijë organizatori.",
|
||||
"WaitingForHostTitle": "Po pritet për organizatorin…",
|
||||
"Yes": "Po",
|
||||
"yourEntireScreen": "Krejt ekranin tuaj"
|
||||
"yourEntireScreen": "Krejt ekranin tuaj",
|
||||
"remoteUserControls": "Kontrolle përdoruesi të largët për {{username}}",
|
||||
"localUserControls": "Kontrolle përdoruesi vendor"
|
||||
},
|
||||
"dialOut": {
|
||||
"statusMessage": "tani është {{status}}"
|
||||
},
|
||||
"documentSharing": {
|
||||
"title": "Dokument i ndarë"
|
||||
"title": "Dokument i Ndarë"
|
||||
},
|
||||
"e2ee": {
|
||||
"labelToolTip": "Komunikimi Audio dhe Video në këtë thirrje fshehtëzohet skaj më skaj"
|
||||
@@ -337,12 +344,26 @@
|
||||
"title": "Trupëzojeni këtë takim"
|
||||
},
|
||||
"virtualBackground": {
|
||||
"title": "Sfonde",
|
||||
"enableBlur": "Aktivizo turbullim",
|
||||
"apply": "Zbatoje",
|
||||
"title": "Sfonde virtualë",
|
||||
"blur": "Turbulloje",
|
||||
"slightBlur": "Turbullim Paksa",
|
||||
"removeBackground": "Hiqe sfondin",
|
||||
"uploadImage": "Ngarkoni figurë",
|
||||
"addBackground": "Shtoni sfond",
|
||||
"pleaseWait": "Ju lutemi, pritni…",
|
||||
"none": "Asnjë"
|
||||
"none": "Asnjë",
|
||||
"uploadedImage": "Ngarkoni figurë {{index}}",
|
||||
"deleteImage": "Fshije figurën",
|
||||
"image1" : "Plazh",
|
||||
"image2" : "Mur i bardhë neutral",
|
||||
"image3" : "Dhomë e bardhë e zbrazët",
|
||||
"image4" : "Llambadar i zi dyshemeje",
|
||||
"image5" : "Mal",
|
||||
"image6" : "Pyll",
|
||||
"image7" : "Ag",
|
||||
"desktopShareError": "S’u krijua dot dhënie desktopi",
|
||||
"desktopShare":"Dhënie desktopi",
|
||||
"webAssemblyWarning": "WebAssembly nuk mbulohet"
|
||||
},
|
||||
"feedback": {
|
||||
"average": "Çka",
|
||||
@@ -351,7 +372,8 @@
|
||||
"good": "E mirë",
|
||||
"rateExperience": "Vlerësoni rastin tuaj",
|
||||
"veryBad": "Shumë e Keqe",
|
||||
"veryGood": "Shumë e Mirë"
|
||||
"veryGood": "Shumë e Mirë",
|
||||
"star": "Yll"
|
||||
},
|
||||
"incomingCall": {
|
||||
"answer": "Përgjigjuni",
|
||||
@@ -368,6 +390,7 @@
|
||||
"country": "Vend",
|
||||
"dialANumber": "Për të marrë pjesë në takimin tuaj, formoni një nga këta numra dhe mandej jepni PIN-in.",
|
||||
"dialInConferenceID": "PIN:",
|
||||
"copyNumber":"Kopjoje numrin",
|
||||
"dialInNotSupported": "Na ndjeni, aktualisht nuk mbulohet formimi i numrave.",
|
||||
"dialInNumber": "Formim numri:",
|
||||
"dialInSummaryError": "Gabim në sjellje hollësish formimi numri tani. Ju lutemi, riprovoni më vonë.",
|
||||
@@ -376,6 +399,7 @@
|
||||
"inviteLiveStream": "Që të shihni transmetimin e drejtpërdrejtë të këtij takimi, klikoni mbi këtë lidhje: {{url}}",
|
||||
"invitePhone": "Nga ana tjetër, që të merrni pjesë me telefon, prekni këtë: {{number}},,{{conferenceID}}#\n",
|
||||
"invitePhoneAlternatives": "Po kërkoni për një tjetër numër?\nShihni numra takimi: {{url}}\n\n\nNëse po provohet gjithashtu numër përmes telefoni dhome, merrni pjesë pa lidhje audioje: {{silentUrl}}",
|
||||
"inviteSipEndpoint": "Për të marrë pjesë duke përdorur adresën SIP, jepni këtë: {{sipUri}}",
|
||||
"inviteURLFirstPartGeneral": "Jeni ftuar të merrni pjesë në një takim.",
|
||||
"inviteURLFirstPartPersonal": "{{name}} po ju fton në një takim.\n",
|
||||
"inviteURLSecondPart": "\nMerrni pjesë te takimi:\n{{url}}\n",
|
||||
@@ -386,6 +410,7 @@
|
||||
"noRoom": "S’u dha dhomë për të cilën të formësohet numri.",
|
||||
"numbers": "Numra Për T’u Përdorur",
|
||||
"password": "$t(lockRoomPasswordUppercase):",
|
||||
"sip": "Adresë SIP",
|
||||
"title": "Ndani me të tjerë",
|
||||
"tooltip": "Ndani me të tjerë lidhje dhe hollësi numrash për këtë takim",
|
||||
"label": "Hollësi numrash"
|
||||
@@ -404,6 +429,7 @@
|
||||
"support": "Asistencë",
|
||||
"supportMsg": "Nëse kjo vazhdon të ndodhë, lidhuni me"
|
||||
},
|
||||
"jitsiHome": "Stemë {{logo}}, lidhje për te Faqja Hyrëse",
|
||||
"keyboardShortcuts": {
|
||||
"focusLocal": "Fokusi te videoja juaj",
|
||||
"focusRemote": "Fokusi te videoja e një personi tjetër",
|
||||
@@ -411,11 +437,12 @@
|
||||
"keyboardShortcuts": "Shkurtore tastiere",
|
||||
"localRecording": "Shfaqni ose fshini kontrolle regjistrimi lokal",
|
||||
"mute": "Mbyllni ose hapni mikrofonin tuaj",
|
||||
"pushToTalk": "Push to talk",
|
||||
"pushToTalk": "Për të folur, shtypeni",
|
||||
"raiseHand": "Ngrini ose ulni dorën",
|
||||
"showSpeakerStats": "Shfaq statistika folësish",
|
||||
"toggleChat": "Hapni ose mbyllni fjalosjen",
|
||||
"toggleFilmstrip": "Shfaqni ose fshihni miniatura video",
|
||||
"toggleParticipantsPane": "Shfaqni ose fshihni kuadratin e pjesëmarrësve",
|
||||
"toggleScreensharing": "Kaloni nga kamera te dhënie ekrani, ose anasjelltas",
|
||||
"toggleShortcuts": "Shfaqni ose fshihni shkurtore tastiere",
|
||||
"videoMute": "Vini në punë ose ndalni kamerën tuaj"
|
||||
@@ -480,7 +507,7 @@
|
||||
"participantStats": "Statistika Pjesëmarrësish",
|
||||
"sessionToken": "Token Sesioni",
|
||||
"start": "Nis Regjistrim",
|
||||
"stop": "Ndal Regjistrim",
|
||||
"stop": "Ndale Regjistrimin",
|
||||
"yes": "Po"
|
||||
},
|
||||
"lockRoomPassword": "fjalëkalim",
|
||||
@@ -494,6 +521,7 @@
|
||||
"focus": "Fokusi te konferenca",
|
||||
"focusFail": "{{component}} jo i passhëm - riprovoni pas {{ms}} sekondash",
|
||||
"grantedTo": "U akorduan të drejta moderatori për {{to}}!",
|
||||
"hostAskedUnmute": "Organizuesi do të donte që të hiqnit heshtimin",
|
||||
"invitedOneMember": "U ftua {{name}}",
|
||||
"invitedThreePlusMembers": "U ftuan {{name}} dhe {{count}} të tjerë",
|
||||
"invitedTwoMembers": "U ftua {{first}} dhe {{second}} tjetër",
|
||||
@@ -509,6 +537,8 @@
|
||||
"passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) u hoq nga një tjetër pjesëmarrës",
|
||||
"passwordSetRemotely": "$t(lockRoomPasswordUppercase) u caktua nga një tjetër pjesëmarrës",
|
||||
"raisedHand": "{{name}} do të donte të fliste.",
|
||||
"screenShareNoAudio": " Kutizës për ndarje zëri me të tjerët s’i qe vënë shenjë te skena e përzgjedhjes.",
|
||||
"screenShareNoAudioTitle": "Ndarjes së audios s’i qe vënë shenjë",
|
||||
"somebody": "Dikush",
|
||||
"startSilentTitle": "Hytë pa audio!",
|
||||
"startSilentDescription": "Që të aktivizohet audioja, rihyni në takim",
|
||||
@@ -521,7 +551,36 @@
|
||||
"OldElectronAPPTitle": "Cenueshmëri sigurie!",
|
||||
"oldElectronClientDescription1": "Duket se përdorni një version të vjetër të klientit Jitsi Meet, i cili përmban cenueshmëri të ditura sigurie. Ju lutemi, siguroni përditësimin e tij me ",
|
||||
"oldElectronClientDescription2": "montimin tonë më të ri",
|
||||
"oldElectronClientDescription3": " që tani!"
|
||||
"oldElectronClientDescription3": " që tani!",
|
||||
"moderationInEffectDescription": "Ju lutemi, nëse doni të flisni, ngrini dorën",
|
||||
"moderationInEffectCSDescription": "Ju lutemi, nëse doni t’u jepni të tjerëve videon tuaj, ngrini dorën",
|
||||
"moderationInEffectVideoDescription": "Ju lutemi, nëse doni që videoja juaj të jetë e dukshme, ngrini dorën",
|
||||
"moderationInEffectTitle": "Mikrofoni është mbyllur nga moderatori",
|
||||
"moderationInEffectCSTitle": "Ndarje lënde me të tjerë është çaktivizuar nga moderatori",
|
||||
"moderationInEffectVideoTitle": "Vdeoja është mbyllur nga moderatori",
|
||||
"moderationRequestFromModerator": "Organizuesi do të donte që ju të hiqnit heshtimin",
|
||||
"moderationRequestFromParticipant": "Dëshiron të flasë",
|
||||
"moderationStartedTitle": "Filloi moderimi",
|
||||
"moderationStoppedTitle": "Moderimi u ndal",
|
||||
"moderationToggleDescription": "nga {{participantDisplayName}}",
|
||||
"raiseHandAction": "Ngrini dorën",
|
||||
"groupTitle": "Njoftime"
|
||||
},
|
||||
"participantsPane": {
|
||||
"close": "Mbylle",
|
||||
"headings": {
|
||||
"lobby": "Holli ({{count}})",
|
||||
"participantsList": "Pjesëmarrës në takim ({{count}})"
|
||||
},
|
||||
"actions": {
|
||||
"allow": "Lejoji pjesëmarrësit:",
|
||||
"invite": "Të Ftojnë Dikë",
|
||||
"askUnmute": "Të kërkojnë çheshtim",
|
||||
"muteAll": "Të Heshtojnë të tërë",
|
||||
"startModeration": "Të çheshtojnë veten ose të nisin videon",
|
||||
"stopEveryonesVideo": "Të ndalin videon e gjithkujt",
|
||||
"stopVideo": "Të ndalin video"
|
||||
}
|
||||
},
|
||||
"passwordSetRemotely": "caktuar nga një tjetër pjesëmarrës",
|
||||
"passwordDigitsOnly": "Deri në {{number}} shifra",
|
||||
@@ -577,6 +636,7 @@
|
||||
"or": "ose",
|
||||
"premeeting": "Para takimit",
|
||||
"showScreen": "Aktivizoni skenë para takimit",
|
||||
"keyboardShortcuts" : "Aktivizo shkurtore Tastiere",
|
||||
"startWithPhone": "Nise me audio telefoni",
|
||||
"screenSharingError": "Gabim ndarjeje ekrani me të tjerë:",
|
||||
"videoOnlyError": "Gabim video:",
|
||||
@@ -598,6 +658,7 @@
|
||||
"ringing": "Po i bihet ziles…"
|
||||
},
|
||||
"profile": {
|
||||
"avatar": "avatar",
|
||||
"setDisplayNameLabel": "Caktoni emrin tuaj për në ekran",
|
||||
"setEmailInput": "Jepni email",
|
||||
"setEmailLabel": "Caktoni email të gravatarit tuaj",
|
||||
@@ -612,12 +673,15 @@
|
||||
"beta": "BETA",
|
||||
"busy": "Po përpiqemi të lirojmë burime regjistrimi. Ju lutemi, riprovoni pas pak minutash.",
|
||||
"busyTitle": "Krejt regjistruesit janë të zënë",
|
||||
"copyLink": "Kopjoje Lidhjen",
|
||||
"error": "Regjistrimi dështoi. Ju lutemi, riprovoni.",
|
||||
"errorFetchingLink": "Gabim në sjellje lidhje regjistrimi.",
|
||||
"expandedOff": "Regjistrimi u ndal",
|
||||
"expandedOn": "Takimi është aktualisht duke u regjistruar.",
|
||||
"expandedPending": "Po niset regjistrimi…",
|
||||
"failedToStart": "S’u arrit të niset regjistrimi",
|
||||
"fileSharingdescription": "Ndajeni regjistrimin me pjesëmarrësit në takim",
|
||||
"linkGenerated": "Kemi prodhuar një lidhje për te regjistrimi juaj.",
|
||||
"live": "LIVE",
|
||||
"loggedIn": "I futur si {{userName}}",
|
||||
"off": "Regjistrimi u ndal",
|
||||
@@ -632,7 +696,8 @@
|
||||
"signIn": "Hyni",
|
||||
"signOut": "Dilni",
|
||||
"unavailable": "Hëm! {{serviceName}} s’është i passhëm aktualisht. Po punojmë për të zgjidhur problemin. Ju lutemi, riprovoni më vonë.",
|
||||
"unavailableTitle": "Regjistrim jo i passhëm"
|
||||
"unavailableTitle": "Regjistrim jo i passhëm",
|
||||
"uploadToCloud": "Ngarkojeni te reja"
|
||||
},
|
||||
"sectionList": {
|
||||
"pullToRefresh": "Tërhiqeni që të rifreskohet"
|
||||
@@ -645,7 +710,7 @@
|
||||
},
|
||||
"settings": {
|
||||
"calendar": {
|
||||
"about": "Integrimi i me kalendar {{appName}} përdoret për të hyrë me sukses te kalendari juaj, që kështu të mund të lexojë veprimtari të ardhshme.",
|
||||
"about": "Integrimi i me kalendar {{appName}} përdoret për të hyrë me sukses te kalendari juaj, që kështu të mund të lexohen veprimtari të ardhshme.",
|
||||
"disconnect": "Shkëputu",
|
||||
"microsoftSignIn": "Hyni me Microsoft",
|
||||
"signedIn": "Aktualisht duke parë veprimtari kalendari për {{email}}. Klikoni mbi butonin Shkëputu më poshtë që të ndalni parjen e veprimtarive të kalendarit.",
|
||||
@@ -660,6 +725,7 @@
|
||||
"more": "Më tepër",
|
||||
"name": "Emër",
|
||||
"noDevice": "Asnjë",
|
||||
"sameAsSystem": "Njësoj me sistemin ({{label}})",
|
||||
"selectAudioOutput": "Dalje audio",
|
||||
"selectCamera": "Kamerë",
|
||||
"selectMic": "Mikrofon",
|
||||
@@ -686,12 +752,12 @@
|
||||
"profileSection": "Profil",
|
||||
"serverURL": "URL Shërbyesi",
|
||||
"showAdvanced": "Shfaq rregullime të mëtejshme",
|
||||
"startWithAudioMuted": "Fillo me audio të heshtuar",
|
||||
"startWithVideoMuted": "Fillo me video të heshtuar",
|
||||
"startWithAudioMuted": "Fillo me audio të mbyllur",
|
||||
"startWithVideoMuted": "Fillo me video të mbyllur",
|
||||
"version": "Version"
|
||||
},
|
||||
"share": {
|
||||
"dialInfoText": "\n\n=====\n\nThjesht doni t’i bini numrin në telefonin tuaj?\n\n{{defaultDialInNumber}}Klikoni mbi këtë lidhje që të shihni numra telefoni për këtë takim\n{{dialInfoPageUrl}}",
|
||||
"dialInfoText": "\n\n=====\n\nThjesht doni t’i bini numrit në telefonin tuaj?\n\n{{defaultDialInNumber}}Klikoni mbi këtë lidhje, që të shihni numra telefoni për këtë takim\n{{dialInfoPageUrl}}",
|
||||
"mainText": "Që të merrni pjesë në takim, klikoni lidhjen vijuese:\n{{roomUrl}}"
|
||||
},
|
||||
"speaker": "Folës",
|
||||
@@ -705,7 +771,7 @@
|
||||
},
|
||||
"startupoverlay": {
|
||||
"policyText": " ",
|
||||
"genericTitle": "Takimit i duhet të përdorë mikrofonin dhe kamerën tuaj.",
|
||||
"genericTitle": "Takimi lyp përdorimin e mikrofonit dhe kamerës tuaj.",
|
||||
"title": "{{app}} i duhet të përdorë mikrofonin dhe kamerën tuaj."
|
||||
},
|
||||
"suspendedoverlay": {
|
||||
@@ -715,55 +781,61 @@
|
||||
},
|
||||
"toolbar": {
|
||||
"accessibilityLabel": {
|
||||
"audioOnly": "Hap/mbyll vetëm audion",
|
||||
"audioOnly": "Hap/Mbyll vetëm audion",
|
||||
"audioRoute": "Përzgjidhni pajisje zëri",
|
||||
"callQuality": "Administroni cilësi video",
|
||||
"cc": "Shfaq/Fshih titra",
|
||||
"chat": "Shfaq/Fshih dritare fjalosjesh",
|
||||
"chat": "Hap / Mbyll fjalosje",
|
||||
"document": "Shfaq/Fshih dokument të ndarë",
|
||||
"download": "Shkarkoni aplikacionet tona",
|
||||
"embedMeeting": "Trupëzoni takimin",
|
||||
"feedback": "Lini përshtypje",
|
||||
"fullScreen": "Kalo/Dil nga mënyra “Sa krejt ekrani”",
|
||||
"grantModerator": "Akordoji të Drejta Moderatori",
|
||||
"hangup": "Braktiseni thirrjen",
|
||||
"hangup": "Braktiseni takimin",
|
||||
"help": "Ndihmë",
|
||||
"invite": "Ftoni persona",
|
||||
"kick": "Përzini pjesëmarrës",
|
||||
"lobbyButton": "Aktivizo/çaktivizo mënyrën holl",
|
||||
"localRecording": "Shfaq/fshi kontrolle regjistrimi vendor",
|
||||
"lockRoom": "Aktivizoni/Çaktivizoni fjalëkalim takimi",
|
||||
"moreActions": "Shfaq/fshih menunë Më tepër veprime",
|
||||
"moreActionsMenu": "Menu më tepër veprime",
|
||||
"lobbyButton": "Aktivizo/Çaktivizo mënyrën holl",
|
||||
"localRecording": "Shfaq/Fshi kontrolle regjistrimi vendor",
|
||||
"lockRoom": "Aktivizo/Çaktivizo fjalëkalim takimi",
|
||||
"moreActions": "Më tepër veprime",
|
||||
"moreActionsMenu": "Menu “Më tepër veprime”",
|
||||
"moreOptions": "Shfaq më tepër mundësi",
|
||||
"mute": "Mbyllni/Hapni zërin",
|
||||
"mute": "Mbyll/Hap zërin",
|
||||
"muteEveryone": "Heshto gjithkënd",
|
||||
"muteEveryoneElse": "Heshto gjithkënd tjetër",
|
||||
"muteEveryonesVideo": "Çaktivizo kamerën e gjithkujt",
|
||||
"muteEveryoneElsesVideo": "Çaktivizo kamerën e gjithkujt tjetër",
|
||||
"participants": "Pjesëmarrës",
|
||||
"pip": "Kalo/Dil nga mënyra “Picture-in-Picture”",
|
||||
"privateMessage": "Dërgo mesazh privat",
|
||||
"profile": "Përpunoni profilin tuaj",
|
||||
"raiseHand": "Ngrini/ulni dorën",
|
||||
"recording": "Nisni/Ndalni regjistrim",
|
||||
"raiseHand": "Ngrini/Ulni dorën",
|
||||
"recording": "Nis/Ndal regjistrim",
|
||||
"remoteMute": "Heshto pjesëmarrësin",
|
||||
"remoteVideoMute": "Çaktivizo kamerën e pjesëmarrësit",
|
||||
"security": "Mundësi sigurie",
|
||||
"Settings": "Shfaqni/Fshihni rregullime",
|
||||
"sharedvideo": "Shfaqni/Fshini skenë për ndarje videoje YouTube me të tjerët",
|
||||
"Settings": "Shfaq/Fshih rregullime",
|
||||
"shareaudio": "Ndani audio me të tjerë",
|
||||
"sharedvideo": "Shfaq/Fshih skenë për ndarje videoje YouTube me të tjerët",
|
||||
"shareRoom": "Ftoni dikë",
|
||||
"shareYourScreen": "Aktivizoni/Çaktivizoni ndarje ekrani",
|
||||
"shortcuts": "Shfaqni/Fshini shkurtoret",
|
||||
"shareYourScreen": "Nisni / Ndalni dhënien e ekranit tuaj",
|
||||
"shortcuts": "Shfaq/Fshih shkurtoret",
|
||||
"show": "Show on stage",
|
||||
"speakerStats": "Shfaqni statistika folësi",
|
||||
"tileView": "Kaloni/Dilni nga mënyra mozaik",
|
||||
"toggleCamera": "Hapni/Mbyllni kamerën",
|
||||
"toggleFilmstrip": "Toggle filmstrip",
|
||||
"videomute": "Hapni/Mbyllni videon",
|
||||
"selectBackground": "Përzgjidhni Sfond"
|
||||
"tileView": "Kalo/Dil nga mënyra mozaik",
|
||||
"toggleCamera": "Hap/Mbyll kamerën",
|
||||
"toggleFilmstrip": "Shfaq/Fshih shirit filmi",
|
||||
"videomute": "Nis / Ndal kamerën",
|
||||
"videoblur": "Aktivizo/Çaktivizo turbullim videoje",
|
||||
"selectBackground": "Përzgjidhni Sfond",
|
||||
"expand": "Zgjeroje",
|
||||
"collapse": "Tkurre"
|
||||
},
|
||||
"addPeople": "Shtoni persona te thirrja juaj",
|
||||
"audioSettings": "Rregullime audio",
|
||||
"audioSettings": "Rregullime për audion",
|
||||
"videoSettings": "Rregullime për videon",
|
||||
"audioOnlyOff": "Çaktivizo mënyrën “Sasi e ulët të dhënash trafiku”",
|
||||
"audioOnlyOn": "Aktivizo mënyrën “Sasi e ulët të dhënash trafiku”",
|
||||
"audioRoute": "Përzgjidhni pajisje zëri",
|
||||
@@ -778,10 +850,10 @@
|
||||
"embedMeeting": "Trupëzoni takim",
|
||||
"enterFullScreen": "Shiheni sa krejt ekrani",
|
||||
"enterTileView": "Kalo te pamja me kuadrate",
|
||||
"exitFullScreen": "Dilni nga mënyra sa krejt ekrani",
|
||||
"exitFullScreen": "Dil nga mënyra sa krejt ekrani",
|
||||
"exitTileView": "Dil nga pamja me kuadrate",
|
||||
"feedback": "Lini përshtypje",
|
||||
"hangup": "Dilni",
|
||||
"hangup": "Braktisni takimin",
|
||||
"help": "Ndihmë",
|
||||
"invite": "Ftoni persona",
|
||||
"lobbyButtonDisable": "Çaktivizo mënyrën holl",
|
||||
@@ -802,6 +874,7 @@
|
||||
"noisyAudioInputTitle": "Mikrofoni juaj duket të jetë i zhurmshëm!",
|
||||
"noisyAudioInputDesc": "Dëgjohet sikur mikrofoni juaj prodhon zhurmë, ju lutemi, shihni mundësinë e heshtimit të tij, ose të ndërrimit të pajisjes.",
|
||||
"openChat": "Hapni fjalosje",
|
||||
"participants": "Pjesëmarrës",
|
||||
"pip": "Kalo nën mënyrën “Picture-in-Picture”",
|
||||
"privateMessage": "Dërgo mesazh privat",
|
||||
"profile": "Përpunoni profilin tuaj",
|
||||
@@ -809,7 +882,8 @@
|
||||
"raiseYourHand": "Ngrini dorën",
|
||||
"security": "Mundësi sigurie",
|
||||
"Settings": "Rregullime",
|
||||
"sharedvideo": "Ndani një video YouTube",
|
||||
"shareaudio": "Ndani audio me të tjerë",
|
||||
"sharedvideo": "Ndani video me të tjerë",
|
||||
"shareRoom": "Ftoni dikë",
|
||||
"shortcuts": "Shihni shkurtore",
|
||||
"speakerStats": "Statistika folësi",
|
||||
@@ -817,12 +891,11 @@
|
||||
"startSubtitles": "Nis titra",
|
||||
"stopScreenSharing": "Ndale tregimin e ekranit",
|
||||
"stopSubtitles": "Ndali titrat",
|
||||
"stopSharedVideo": "Ndale videon YouTube",
|
||||
"stopSharedVideo": "Ndale videon",
|
||||
"talkWhileMutedPopup": "Po provoni të flisni? Jeni i heshtuar.",
|
||||
"tileViewToggle": "Kaloni/Dilni nga mënyra mozaik",
|
||||
"toggleCamera": "Hapni/Mbyllni kamerën",
|
||||
"videomute": "Nise / Ndale kamerën",
|
||||
"videoSettings": "Rregullime për videon",
|
||||
"selectBackground": "Përzgjidhni sfond"
|
||||
},
|
||||
"transcribing": {
|
||||
@@ -831,7 +904,7 @@
|
||||
"expandedLabel": "Transkriptimi aktualisht është aktiv",
|
||||
"failedToStart": "S’u arrit të nisej transkriptim",
|
||||
"labelToolTip": "Takimit po i bëhet transkriptim",
|
||||
"off": "Transkriptimi i ndal",
|
||||
"off": "Transkriptimi u ndal",
|
||||
"pending": "Po përgatitet të transkriptohet takimi…",
|
||||
"start": "Fillo shfaqje titrash",
|
||||
"stop": "Ndal shfaqje titrash",
|
||||
@@ -849,6 +922,7 @@
|
||||
"react-nativeGrantPermissions": "Kur shfletuesi juaj të kërkojë leje, përzgjidhni <b><i>Lejoje</i></b>.",
|
||||
"safariGrantPermissions": "Kur shfletuesi juaj të kërkojë leje, përzgjidhni <b><i>OK</i></b>."
|
||||
},
|
||||
"volumeSlider": "Rrëshqitës volumi",
|
||||
"videoSIPGW": {
|
||||
"busy": "Po përpiqemi të lirojmë burime. Ju lutemi, riprovoni pas pak minutash.",
|
||||
"busyTitle": "Shërbimi i dhomës aktualisht është i zënë",
|
||||
@@ -888,11 +962,12 @@
|
||||
"mute": "Pjesëmarrësi është heshtuar",
|
||||
"muted": "I heshtuar",
|
||||
"videoMuted": "Kamera e çaktivizuar",
|
||||
"remoteControl": "Nis / Ndal kontroll së largëti",
|
||||
"remoteControl": "Nisni / Ndalni kontroll së largëti",
|
||||
"show": "Show on stage",
|
||||
"videomute": "Pjesëmarrësi ka ndalur kamerën"
|
||||
},
|
||||
"welcomepage": {
|
||||
"addMeetingName": "Shtoni emër Takimi",
|
||||
"accessibilityLabel": {
|
||||
"join": "Prekeni që të hyni",
|
||||
"roomname": "Jepni emër dhome"
|
||||
@@ -911,12 +986,15 @@
|
||||
"goSmall": "SHKO",
|
||||
"headerTitle": "Jitsi Meet",
|
||||
"headerSubtitle": "Takime me siguri dhe me cilësi të lartë",
|
||||
"info": "Dial-in info",
|
||||
"join": "CREATE / JOIN",
|
||||
"info": "Hollësi për dial-in",
|
||||
"join": "KRIJONI / MERRNI PJESË",
|
||||
"jitsiOnMobile": "Jitsi në celular – Shkarkoni aplikacione tona dhe nisni një takim prej ngado",
|
||||
"mobileDownLoadLinkIos": "Shkarkoni aplikacionin për celular me iOS",
|
||||
"mobileDownLoadLinkAndroid": "Shkarkoni aplikacionin për celular me Android",
|
||||
"mobileDownLoadLinkFDroid": "Shkarkoni aplikacionin për celular me F-Droid",
|
||||
"moderatedMessage": "Ose <a href=\"{{url}}\" rel=\"noopener noreferrer\" target=\"_blank\">rezervoni një URL takimi</a> paraprakisht, kur jeni i vetmi moderator.",
|
||||
"privacy": "Privatësi",
|
||||
"recentList": "Recent",
|
||||
"recentList": "Së fundi",
|
||||
"recentListDelete": "Fshije zërin",
|
||||
"recentListEmpty": "Lista juaj për “së fundi” aktualisht është e zbrazët. Bisedoni me ekipin tuaj dhe do të gjeni këtu krejt takimet tuaj së fundi.",
|
||||
"reducedUIText": "Mirë se vini në {{app}}!",
|
||||
@@ -926,7 +1004,15 @@
|
||||
"sendFeedback": "Dërgoni përshtypje",
|
||||
"startMeeting": "Nisni takim",
|
||||
"terms": "Kushte",
|
||||
"title": "Konferenca video të parrezik, me të gjitha veçoritë dhe plotësisht të lira"
|
||||
"title": "Konferenca video të parrezik, me të gjitha veçoritë dhe plotësisht të lira",
|
||||
"logo":{
|
||||
"calendar":"Stemë Calendar-i",
|
||||
"microsoftLogo":"Stemë Microsoft-i",
|
||||
"logoDeepLinking":"Stemë Jitsi Meet",
|
||||
"desktopPreviewThumbnail":"Miniaturë paraparjeje në desktop",
|
||||
"googleLogo":"Stemë Google",
|
||||
"policyLogo":"Stemë Policy"
|
||||
}
|
||||
},
|
||||
"lonelyMeetingExperience": {
|
||||
"button": "Ftoni të tjerë",
|
||||
@@ -936,6 +1022,8 @@
|
||||
"header": "Qendër ndihme"
|
||||
},
|
||||
"lobby": {
|
||||
"admit": "Pranoje",
|
||||
"admitAll": "Pranoji të tërë",
|
||||
"knockingParticipantList": "Listë pjesëmarrësish me trokitje",
|
||||
"allow": "Lejoje",
|
||||
"backToKnockModeButton": "Pa fjalëkalim, kërkoni pjesëmarrje",
|
||||
|
||||
@@ -535,6 +535,7 @@
|
||||
"participantsList": "సదస్యులు ({{count}})"
|
||||
},
|
||||
"actions": {
|
||||
"invite": "ప్రజలను ఆహ్వానించు",
|
||||
"muteAll": "అందరినీ మౌనించు",
|
||||
"stopVideo": "వీడియో ఆపివేయి"
|
||||
}
|
||||
|
||||
@@ -699,7 +699,7 @@
|
||||
"show": "Sahnede göster",
|
||||
"speakerStats": "Konuşmacı istatistiklerini aç/kapat",
|
||||
"tileView": "Döşeme görünümünü aç/kapat",
|
||||
"toggleCamera": "Kamerayı aç/kapat",
|
||||
"toggleCamera": "Kamerayı değiştir",
|
||||
"videomute": "Sessiz videoyu aç/kapat",
|
||||
"videoblur": ""
|
||||
},
|
||||
@@ -731,7 +731,7 @@
|
||||
"moreActions": "Daha fazla işlem",
|
||||
"moreOptions": "Daha fazla seçenek",
|
||||
"mute": "Sessiz / Sesli",
|
||||
"muteEveryone": "Mute everyone",
|
||||
"muteEveryone": "Herkesi sustur",
|
||||
"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.",
|
||||
@@ -757,7 +757,7 @@
|
||||
"stopSharedVideo": "Youtube videosunu durdur",
|
||||
"talkWhileMutedPopup": "Bir şey mi dediniz? Mikrofonunuz kapalı.",
|
||||
"tileViewToggle": "Döşeme görünümünü aç/kapat",
|
||||
"toggleCamera": "Kamerayı aç/kapat",
|
||||
"toggleCamera": "Kamerayı değiştir",
|
||||
"videomute": "Kamera başlat / durdur",
|
||||
"startvideoblur": "",
|
||||
"stopvideoblur": ""
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
{
|
||||
"addPeople": {
|
||||
"add": "Запросити",
|
||||
"addContacts": "Запросіть інших людей",
|
||||
"copyInvite": "Скопіювати запрошення на зустріч",
|
||||
"copyLink": "Скопіювати посилання на зустріч",
|
||||
"copyStream": "Скопіювати силку на пряму трансляцію",
|
||||
"countryNotSupported": "Поки що дзвінки за цим напрямком не підтримуються.",
|
||||
"countryReminder": "Чи ви намагаєтеся дзвонити за межі США? Будь ласка, переконайтеся, що правильно зазначили код країни!",
|
||||
"disabled": "Ви не можете запрошувати учасників.",
|
||||
@@ -15,7 +19,17 @@
|
||||
"searchPeople": "Пошук людей",
|
||||
"searchPeopleAndNumbers": "Пошук людей або додавання їхніх телефонних номерів",
|
||||
"telephone": "Номер: {{number}}",
|
||||
"title": "Запросити людей на цю зустріч"
|
||||
"title": "Запросити людей на цю зустріч",
|
||||
"defaultEmail": "Ваша адреса електронної пошти",
|
||||
"inviteMoreHeader": "Зараз ви одні на цій зустрічі",
|
||||
"inviteMoreMailSubject": "Приєднатись до зустрічі {{appName}} ",
|
||||
"inviteMorePrompt": "Запросити інших людей",
|
||||
"linkCopied": "Посилання скопійоване в буфер обміну",
|
||||
"outlookEmail": "Електронна пошта Outlook",
|
||||
"shareInvite": "Поділитись запрошенням на зустріч",
|
||||
"shareLink": "Поділитися посиланням на зустріч щоб запросити інших",
|
||||
"shareStream": "Поділитися посиланням на пряму трансляцію",
|
||||
"yahooEmail": "Електронна пошта Yahoo"
|
||||
},
|
||||
"audioDevices": {
|
||||
"bluetooth": "Bluetooth",
|
||||
@@ -37,9 +51,9 @@
|
||||
},
|
||||
"join": "Приєднатися",
|
||||
"joinTooltip": "Приєднатися до конференції",
|
||||
"nextMeeting": "наступна конференція",
|
||||
"nextMeeting": "Наступна конференція",
|
||||
"noEvents": "Відсутні заплановані події.",
|
||||
"ongoingMeeting": "поточна конференція",
|
||||
"ongoingMeeting": "Поточна конференція",
|
||||
"permissionButton": "Налаштування",
|
||||
"permissionMessage": "Потрібний доступ до календаря для відображення запланованих зустрічей.",
|
||||
"refresh": "Поновити календар",
|
||||
@@ -57,7 +71,7 @@
|
||||
},
|
||||
"privateNotice": "Приватне повідомлення для {{recipient}}",
|
||||
"title": "Чат",
|
||||
"you": ""
|
||||
"you": "Ви"
|
||||
},
|
||||
"chromeExtensionBanner": {
|
||||
"installExtensionText": "Встановити розширення для Календаря Google та інтеграції Office 365",
|
||||
@@ -80,7 +94,8 @@
|
||||
"FETCH_SESSION_ID": "Отримання ідентифікатора сесії...",
|
||||
"GET_SESSION_ID_ERROR": "Отримання помилки ідентифікатора сесії: {{code}}",
|
||||
"GOT_SESSION_ID": "Отримано ідентифікатора сесії... Виконано",
|
||||
"LOW_BANDWIDTH": "Відео для {{displayName}} було вимкнено для заощадження трафіку"
|
||||
"LOW_BANDWIDTH": "Відео для {{displayName}} було вимкнено для заощадження трафіку",
|
||||
"RECONNECTING": "Проблема з мережею.Перепідключення..."
|
||||
},
|
||||
"connectionindicator": {
|
||||
"address": "Адреса:",
|
||||
@@ -88,7 +103,6 @@
|
||||
"bitrate": "Бітрейт:",
|
||||
"bridgeCount": "Кількість серверів: ",
|
||||
"connectedTo": "З'єднано з:",
|
||||
"e2e_rtt": "E2E RTT:",
|
||||
"framerate": "Частота кадрів:",
|
||||
"less": "Показати менше",
|
||||
"localaddress_0": "Локальна адреса:",
|
||||
@@ -100,7 +114,7 @@
|
||||
"more": "Докладно",
|
||||
"packetloss": "Втрата пакетів:",
|
||||
"quality": {
|
||||
"good": "добру",
|
||||
"good": "добре",
|
||||
"inactive": "не активно",
|
||||
"lost": "втрачено",
|
||||
"nonoptimal": "не оптимально",
|
||||
@@ -127,19 +141,22 @@
|
||||
"appNotInstalled": "Щоби приєднатися до зустрічі, будь ласка, встановіть цей застосунок на вашому мобільному пристрої {{app}}.",
|
||||
"description": "Ми спробували запустити вашу зустріч у настільному застосунку {{app}}. Спробуйте ще раз або запустіть її у веб-версії {{app}}.",
|
||||
"descriptionWithoutWeb": "Нічого не відбулося? Ми спробували запустити конференцію у настільному застосунку {{app}}.",
|
||||
"downloadApp": "Звантажити застосунок",
|
||||
"downloadApp": "Завантажити застосунок",
|
||||
"launchWebButton": "Запустити у браузері",
|
||||
"openApp": "Перейти до застосунка",
|
||||
"openApp": "Перейти до застосунку",
|
||||
"title": "Запуск вашої зустрічі у {{app}}...",
|
||||
"tryAgainButton": "Спробуйте у настільному застосунку"
|
||||
"tryAgainButton": "Спробуйте у настільному застосунку",
|
||||
"ifDoNotHaveApp": "Якщо у вас ще немає застосунку:",
|
||||
"ifHaveApp": "Якщо ви вже встановили застосунок:",
|
||||
"joinInApp": "Підключитись до цієї зустрічі використовуючи застосунок"
|
||||
},
|
||||
"defaultLink": "напр. {{url}}",
|
||||
"defaultNickname": "напр. Петро Могила",
|
||||
"defaultNickname": "напр. Петро Гриб",
|
||||
"deviceError": {
|
||||
"cameraError": "Помилка доступу до камери",
|
||||
"cameraPermission": "Відсутні дозволи на доступу до камери",
|
||||
"microphoneError": "Помилка доступу до мікрофона",
|
||||
"microphonePermission": "Відсутні дозволи на доступ до мікрофона"
|
||||
"microphoneError": "Помилка доступу до мікрофону",
|
||||
"microphonePermission": "Відсутні дозволи на доступ до мікрофону"
|
||||
},
|
||||
"deviceSelection": {
|
||||
"noPermission": "Відсутній доступ",
|
||||
@@ -181,7 +198,7 @@
|
||||
"displayNameRequired": "Вітання! Як вас звати?",
|
||||
"done": "Готово",
|
||||
"e2eeDescription": "Наскрізне шифрування зараз в режимі ТЕСТУВАННЯ. Зверніть увагу, що увімкнення наскрізного шифрування призведе до вимкнення таких служб на стороні сервера: запису, живої трансляції запису в онлайні та участі у конференції за допомогою вхідного телефонного дзвінка. Також, просимо звернути увагу, що приєднання до зустрічі в такому разі буде можливе лише з браузера, який має підтримувати потоки зі вставкою (insertable streams).",
|
||||
"e2eeWarning": "УВАГА: Схоже, що не всі учасники цієї зустрічі мають підтримку технології наскрізного шифрування. Якщо ви увімкнете цю функцію, то вони не зможуть ані чути, ані бачити вас.",
|
||||
"e2eeWarning": "УВАГА: Схоже, що не всі учасники цієї зустрічі мають підтримку технології наскрізного шифрування. Якщо ви увімкнете цю функцію, то вони не зможуть чути та бачити вас.",
|
||||
"enterDisplayName": "Будь ласка, зазначте ваше ім'я",
|
||||
"error": "Помилка",
|
||||
"externalInstallationMsg": "Вам потрібно встановити наше розширення для спільного доступу до стільниці.",
|
||||
@@ -207,10 +224,10 @@
|
||||
"lockRoom": "Додати конференцію $t(lockRoomPasswordUppercase)",
|
||||
"lockTitle": "Обмеження доступу не вдалося",
|
||||
"logoutQuestion": "Ви впевнені, що бажаєте вийти та зупинити конференцію?",
|
||||
"logoutTitle": "Завершитb сеанс",
|
||||
"logoutTitle": "Завершити сеанс",
|
||||
"maxUsersLimitReached": "Досягнуто максимальне обмеження на кількість учасників. Більше неможливо приєднати учасників. Будь ласка, сконтактуйте з організатором конференції або спробуйте ще раз пізніше!",
|
||||
"maxUsersLimitReachedTitle": "Досягнуто максимального обмеження на кількість учасників",
|
||||
"micConstraintFailedError": "Ваш микрофон не відповідає вимогам.",
|
||||
"micConstraintFailedError": "Ваш мікрофон не відповідає вимогам.",
|
||||
"micNotFoundError": "Мікрофон не знайдено.",
|
||||
"micNotSendingData": "Перейдіть до системних налаштувань для увімкнення мікрофона та налаштування рівня чутливості",
|
||||
"micNotSendingDataTitle": "Ваш мікрофон вимкнено системними налаштуваннями",
|
||||
@@ -220,7 +237,7 @@
|
||||
"muteEveryoneElseTitle": "Вимкнути мікрофони всім, крім {{whom}}?",
|
||||
"muteEveryoneDialog": "Ви впевнені, що бажаєте вимкнути мікрофони всім. Ви не матимете змоги знову їх увімкнути, проте учасники зможуть це зробити самостійно.",
|
||||
"muteEveryoneTitle": "Вимкнути мікрофон всім?",
|
||||
"muteEveryoneSelf": "",
|
||||
"muteEveryoneSelf": "Вимкнути свій мікрофон",
|
||||
"muteEveryoneStartMuted": "Відтепер усі учасники приєднуватимуться із вимкненими мікрофонами",
|
||||
"muteParticipantBody": "Ви не зможете знову увімкнути звук учасникам, але вони можуть це зробити самі в будь-який час.",
|
||||
"muteParticipantButton": "Вимкнути звук",
|
||||
@@ -232,7 +249,7 @@
|
||||
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) не підтримується",
|
||||
"passwordRequired": "Потрібно $t(lockRoomPasswordUppercase)",
|
||||
"popupError": "Ваш браузер блокує виринаючі вікна на цьому сайті. Будь ласка, дозвольте виринаючі вікна у налаштуваннях безпеки вашого браузера та спробуйте ще раз.",
|
||||
"popupErrorTitle": "Заблоковано виринаюче вікно",
|
||||
"popupErrorTitle": "Заблоковано випливаюче вікно",
|
||||
"recording": "Запис",
|
||||
"recordingDisabledForGuestTooltip": "Гості не можуть здійснювати запис.",
|
||||
"recordingDisabledTooltip": "Запис вимкнено.",
|
||||
@@ -246,7 +263,7 @@
|
||||
"remoteControlTitle": "Віддалене керування стільницею",
|
||||
"Remove": "Вилучити",
|
||||
"removePassword": "Вилучити $t(lockRoomPassword)",
|
||||
"removeSharedVideoMsg": "Чи потрібно вилучити відео, яким ви поділилися?",
|
||||
"removeSharedVideoMsg": "Вилучити відео, яким ви поділилися?",
|
||||
"removeSharedVideoTitle": "Вилучити відео",
|
||||
"reservationError": "Помилка системи резервування",
|
||||
"reservationErrorMsg": "Код помилки: {{code}}, повідомлення: {{msg}}",
|
||||
@@ -279,17 +296,30 @@
|
||||
"streamKey": "Ключ доступу до трансляції",
|
||||
"Submit": "Гаразд",
|
||||
"thankYou": "Дякуємо, що користуєтеся {{appName}}!",
|
||||
"token": "токен",
|
||||
"token": "Токен",
|
||||
"tokenAuthFailed": "Перепрошуємо, у вас немає прав на приєднання до цієї конференції.",
|
||||
"tokenAuthFailedTitle": "Помилка авторизації",
|
||||
"transcribing": "Транскрибування запису",
|
||||
"unlockRoom": "Прибрати $t(lockRoomPassword)",
|
||||
"userPassword": "пароль користувача",
|
||||
"WaitForHostMsg": "конференція <b>{{room}}</b> ще не почалася. Якщо ви є організатором, будь ласка, авторизуйтеся або дочекайтеся організатора.",
|
||||
"WaitForHostMsgWOk": "конференція <b>{{room}}</b> ще не почалася. Якщо ви є організатором, будь ласка, клацніть на кнопку \"Гаразд\" для авторизації або дочекайтеся організатора.",
|
||||
"userPassword": "Пароль користувача",
|
||||
"WaitForHostMsg": "Конференція <b>{{room}}</b> ще не почалася. Якщо ви є організатором, будь ласка, авторизуйтеся або дочекайтеся організатора.",
|
||||
"WaitForHostMsgWOk": "Конференція <b>{{room}}</b> ще не почалася. Якщо ви є організатором, будь ласка, клацніть на кнопку \"Гаразд\" для авторизації або дочекайтеся організатора.",
|
||||
"WaitingForHost": "Чекаємо на організатора...",
|
||||
"Yes": "Так",
|
||||
"yourEntireScreen": "Увесь екран"
|
||||
"yourEntireScreen": "На повний екран" ,
|
||||
"add": "Добавити",
|
||||
"copied": "Скопійовано",
|
||||
"e2eeLabel": "E2EE ключ",
|
||||
"e2eeNoKey": "Відсутній",
|
||||
"e2eeSet": "Встановити",
|
||||
"e2eeToggleSet": "Встановити ключ",
|
||||
"grantModeratorDialog": "Ви впевнені,що хочете зробити цього учасника модератором?",
|
||||
"grantModeratorTitle": "Зробити модератором",
|
||||
"liveStreamingDisabledBecauseOfActiveRecordingTooltip": "Неможливо поки активний запис",
|
||||
"readMore": "Більше",
|
||||
"recordingDisabledBecauseOfActiveLiveStreamingTooltip": "Неможливо поки активно потокове мовлення",
|
||||
"screenSharingFailed": "Ой! Здається щось пішло не так, ми не можемо почати демонстрацію екрану!",
|
||||
"screenSharingFailedTitle": "Збій демонстації екрану!"
|
||||
},
|
||||
"dialOut": {
|
||||
"statusMessage": "зараз {{status}}"
|
||||
@@ -297,9 +327,12 @@
|
||||
"documentSharing": {
|
||||
"title": "Спільний документ"
|
||||
},
|
||||
"e2ee": {
|
||||
"e2ee": {
|
||||
"labelToolTip": "Звук та відео у цьому виклику наскрізно шифруються"
|
||||
},
|
||||
"embedMeeting": {
|
||||
"title": "Вбудувати цю зустріч"
|
||||
},
|
||||
"feedback": {
|
||||
"average": "Середньо",
|
||||
"bad": "Погано",
|
||||
@@ -307,7 +340,7 @@
|
||||
"good": "Добре",
|
||||
"rateExperience": "Оцінка якості зв'язку",
|
||||
"veryBad": "Дуже погано",
|
||||
"veryGood": "Вельми добре"
|
||||
"veryGood": "Дуже добре"
|
||||
},
|
||||
"incomingCall": {
|
||||
"answer": "Відповідь",
|
||||
@@ -338,7 +371,7 @@
|
||||
"liveStreamURL": "Трансляція:",
|
||||
"moreNumbers": "Більше номерів",
|
||||
"noNumbers": "Відсутні номери для набору.",
|
||||
"noPassword": "ні",
|
||||
"noPassword": "Ні",
|
||||
"noRoom": "Під час набору номеру не було вибрано жодної кімнати.",
|
||||
"numbers": "Номери для набору",
|
||||
"password": "$t(lockRoomPasswordUppercase):",
|
||||
@@ -355,7 +388,7 @@
|
||||
"send": "Надіслати"
|
||||
},
|
||||
"inlineDialogFailure": {
|
||||
"msg": "Невеличка пауза.",
|
||||
"msg": "Невелика пауза.",
|
||||
"retry": "Спробувати ще",
|
||||
"support": "Підтримка",
|
||||
"supportMsg": "Якщо це продовжуватиметься, будь ласка, сконтактуйте з"
|
||||
@@ -386,13 +419,15 @@
|
||||
"enterStreamKey": "Зазначте ваш ключ трансляції на YouTube.",
|
||||
"error": "Помилка трансляції. Будь ласка, спробуйте ще раз.",
|
||||
"errorAPI": "Помилка у доступі до ваших трансляцій на YouTube. Спробуйте увійти до системи ще раз.",
|
||||
"errorLiveStreamNotEnabled": "Трансляцію не активовано для {{email}}. Будь ласка, активуйте трансляцію або увійдіть до облікового запису з активною трансляцією.",
|
||||
"errorLiveStreamNotEnabled": "Трансляцію не активовано для {{email}}. Будь ласка, активуйте трансляцію або увійдіть до облікового запису з активною трансляцією.",
|
||||
"expandedOff": "Живу трансляцію зупинено",
|
||||
"expandedOn": "Зараз ця конференція транслюється на YouTube.",
|
||||
"expandedPending": "Починається жива трансляція.",
|
||||
"failedToStart": "Помилка трансляції відео",
|
||||
"getStreamKeyManually": "Живі трансляції не знайдено. Спробуйте отримати ключ живої трансляції від YouTube.",
|
||||
"invalidStreamKey": "Схоже, що ключ живої трансляції неправильний.",
|
||||
"limitNotificationDescriptionNative": "Ваша трансляція буде обмежена {{limit}} хв. Для необмеженого перегляду спробуйте {{app}}.",
|
||||
"limitNotificationDescriptionWeb": "Через високе навантаження, ваша поточна передача буде обмежена {{limit}} хв. Для необмеженої поточної передачі спробуйте <a href={{url}} rel='noopener noreferrer' target='_blank'> {{app}} </a>.",
|
||||
"off": "Трансляцію зупинено",
|
||||
"offBy": "{{name}} зупинив живу трансляцію",
|
||||
"on": "Трансляція",
|
||||
@@ -409,6 +444,36 @@
|
||||
"youtubeTerms": "Умови надання послуг YouTube",
|
||||
"googlePrivacyPolicy": "Політика приватності Google"
|
||||
},
|
||||
"lobby": {
|
||||
"disableDialogContent": "В даний час включений режим лобі. Ця функція гарантує, що небажані учасники не зможуть приєднатися до вашої зустрічі. Ви бажаєте його відключити?",
|
||||
"disableDialogSubmit": "Відключити",
|
||||
"emailField": "Введіть вашу адресу електронної пошти",
|
||||
"enableDialogPasswordField": "Встановіть пароль (необов'язково)",
|
||||
"enableDialogSubmit": "Включити",
|
||||
"enableDialogText": "Режим лобі дозволяє захистити вашу зустріч, позволяючи людям приєднуватись лише після офіційного одобрення модератором.",
|
||||
"enterPasswordButton": "Введіть пароль зустрічі",
|
||||
"enterPasswordTitle": "Введіть пароль аби приєднатись до зустрічі",
|
||||
"invalidPassword": "Невірний пароль",
|
||||
"joinRejectedMessage": "Ваш запит на приєднання був відхилений модератором.",
|
||||
"joinTitle": "Приєднатись до зустрічі",
|
||||
"joinWithPasswordMessage": "Пробую приєднатись з паролем, зачекайте...",
|
||||
"joiningMessage": "Ви приєднаєтесь до зустрічі, як тільи хтось прийме ваш запит",
|
||||
"joiningTitle": "Прохання приєднатись до зустрічі...",
|
||||
"joiningWithPasswordTitle": "Спроба приєднатись з паролем...",
|
||||
"knockButton": "Надіслати запит на приєднання",
|
||||
"knockTitle": "Хтось хоче приєднатись до зустрічі",
|
||||
"knockingParticipantList": "Список учасників які очікують",
|
||||
"nameField": "Введіть ваше ім'я",
|
||||
"notificationLobbyAccessDenied": "{{originParticipantName}} заборонив приєднатись {{targetParticipantName}}",
|
||||
"notificationLobbyAccessGranted": "{{originParticipantName}} дозволив приєднатись {{targetParticipantName}} ",
|
||||
"notificationLobbyDisabled": "Лобі відключено користувачем {{originParticipantName}}",
|
||||
"notificationLobbyEnabled": "Лобі включено користувачем {{originParticipantName}}",
|
||||
"notificationTitle": "Лобі",
|
||||
"passwordField": "Введіть пароль зустрічі",
|
||||
"passwordJoinButton": "Приєднатись",
|
||||
"reject": "Відмовити",
|
||||
"toggleLabel": "Включити лобі"
|
||||
},
|
||||
"localRecording": {
|
||||
"clientState": {
|
||||
"off": "Вимкнено",
|
||||
@@ -442,6 +507,10 @@
|
||||
"lockRoomPasswordUppercase": "Пароль",
|
||||
"me": "я",
|
||||
"notify": {
|
||||
"OldElectronAPPTitle": "Уразливість в системі безпеки!",
|
||||
"oldElectronClientDescription1": "Схоже, ви використовуєте стару версію клієнта Jitsi Meet, яка має відомі уразливості в системі безпеки. Переконайтеся, що ви оновились до нашої",
|
||||
"oldElectronClientDescription2": "останньої версії",
|
||||
"oldElectronClientDescription3": " зараз!",
|
||||
"connectedOneMember": "{{name}} приєднався до конференції",
|
||||
"connectedThreePlusMembers": "{{name}} та {{count}} інших користувачів приєдналися до конференції",
|
||||
"connectedTwoMembers": "{{first}} та {{second}} приєдналися до конференції",
|
||||
@@ -475,9 +544,45 @@
|
||||
"passwordSetRemotely": "встановлено іншим учасником",
|
||||
"passwordDigitsOnly": "До {{number}} цифр",
|
||||
"poweredby": "працює на",
|
||||
"prejoin": {
|
||||
"audioAndVideoError": "Помилка звуку та відео:",
|
||||
"audioOnlyError": "Помилка звуку:",
|
||||
"audioTrackError": "Не вдалось створити аудіо доріжку.",
|
||||
"callMe": "Позвоніть мені",
|
||||
"callMeAtNumber": "Позвоніть мені по цьому номеру:",
|
||||
"calling": "Звонимо",
|
||||
"configuringDevices": "Налаштування пристроїв...",
|
||||
"connectedWithAudioQ": "Ви підключили звук?",
|
||||
"copyAndShare": "Зкопіювати та поділитись посиланням на зустріч",
|
||||
"dialInMeeting": "Дозвонитись до зустрічі",
|
||||
"dialInPin": "Дозвонити до зустрічі та ввести ПІН код:",
|
||||
"dialing": "Дозвонитись",
|
||||
"doNotShow": "Не показувати знову",
|
||||
"errorDialOut": "Не вдалось дозвонитись",
|
||||
"errorDialOutDisconnected": "Не вдалось дозвонитись. Відключено",
|
||||
"errorDialOutFailed": "Не вдалось дозвонитись. Збій виклику",
|
||||
"errorDialOutStatus": "Помилка отримання статусу виклку",
|
||||
"errorStatusCode": "Помилка виклику, код статусу: {{status}}",
|
||||
"errorValidation": "Перевірка номеру не вдалась",
|
||||
"iWantToDialIn": "Я хочу дозвонитись",
|
||||
"initiated": "Виклтк ініційованийн",
|
||||
"joinAudioByPhone": "Підключитись з телефонним зв'язком",
|
||||
"joinMeeting": "Приєднатись до зустрічі",
|
||||
"joinWithoutAudio": "Приєднатись без звуку",
|
||||
"linkCopied": "Посилання скопійовано в буфер обміну",
|
||||
"lookGood": "Ваш мікрофон працює коректно",
|
||||
"or": "або",
|
||||
"premeeting": "Перед підключенням",
|
||||
"screenSharingError": "Помилка демонстрації екрану:",
|
||||
"showScreen": "Включити екран перед підключенням",
|
||||
"startWithPhone": "Розпочати з телефонним зв'язком",
|
||||
"videoOnlyError": "Помилка відео:",
|
||||
"videoTrackError": "Не вдалось створити відео доріжку.",
|
||||
"viewAllNumbers": "переглянути всіх учасників"
|
||||
},
|
||||
"presenceStatus": {
|
||||
"busy": "Зайнято",
|
||||
"calling": "Виклика . . .",
|
||||
"calling": "Виклик . . .",
|
||||
"connected": "З'єднано",
|
||||
"connecting": "З'єднання. . .",
|
||||
"connecting2": "З'єднання*...",
|
||||
@@ -508,6 +613,8 @@
|
||||
"expandedPending": "Починаємо запис конференції...",
|
||||
"failedToStart": "Помилка початку запису",
|
||||
"fileSharingdescription": "Поділіться записом з учасниками конференції",
|
||||
"limitNotificationDescriptionNative": "Из-за высокой нагрузки ваша запись будет ограничена {{limit}} мин. Для неограниченного количества записей попробуйте <3> {{app}} </3>.",
|
||||
"limitNotificationDescriptionWeb": "Из-за высокой нагрузки ваша запись будет ограничена {{limit}} мин. Для неограниченного количества записей попробуйте <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
|
||||
"live": "НАЖИВО ",
|
||||
"loggedIn": "Увійшов як {{userName}}",
|
||||
"off": "Запис зупинено",
|
||||
@@ -526,6 +633,12 @@
|
||||
"sectionList": {
|
||||
"pullToRefresh": "Потягніть для оновлення"
|
||||
},
|
||||
"security": {
|
||||
"about": "Ви можете добавити до конференції $t(lockRoomPassword). Учасникам необхідно буде представити $t(lockRoomPassword),перед тим як їм буде дозволено приєднатись до конференції.",
|
||||
"aboutReadOnly": "Учасники-модератори можуть добавити до конференції $t(lockRoomPassword). Учасникам необхідно буде представити $t(lockRoomPassword), перед тим як їм буде дозволено приєднатись до конференції.",
|
||||
"insecureRoomNameWarning": "Ім'я кімнати не є безпечним. Небажані учасники можуть приєднатись до вашої конференції. Подумайте про те, щоб захистити вашу зустріч використовуючи настройки безпеки.",
|
||||
"securityOptions": "Настройки безпеки"
|
||||
},
|
||||
"settings": {
|
||||
"calendar": {
|
||||
"about": "Інтеграція з календарем {{appName}} дозволяє отримати безпечний доступ до вашого календаря та синхронізувати заплановані заходи.",
|
||||
@@ -558,6 +671,8 @@
|
||||
"alertURLText": "Помилка адреси сервера",
|
||||
"buildInfoSection": "Інформація про збірку",
|
||||
"conferenceSection": "Номери для набору",
|
||||
"disableCrashReporting": "Отключить отправку отчетов о сбоях",
|
||||
"disableCrashReportingWarning": "Вы действительно хотите отключить отчеты о сбоях? Настройка будет применена после перезапуска приложения.",
|
||||
"disableCallIntegration": "Вимкнути вбудовану інтеграцію викликів",
|
||||
"disableP2P": "Вимкнути режим peer-to-peer",
|
||||
"displayName": "Ім'я на екрані",
|
||||
@@ -632,7 +747,11 @@
|
||||
"toggleCamera": "Увімкнути камеру",
|
||||
"toggleFilmstrip": "Показувати мініатюри",
|
||||
"videomute": "Показувати відео",
|
||||
"videoblur": "Розмивати тло"
|
||||
"videoblur": "Розмивати тло",
|
||||
"embedMeeting": "Встроить встречу",
|
||||
"grantModerator": "Сделать модератором",
|
||||
"lobbyButton": "Вкл/Выкл режим лобби",
|
||||
"security": "Настройки безопасности"
|
||||
},
|
||||
"addPeople": "Додати учасників до конференції",
|
||||
"audioOnlyOff": "Вимкнути режим заощадження трафіку",
|
||||
@@ -666,7 +785,7 @@
|
||||
"noAudioSignalDialInDesc": "Також ви можете зателефонувати за допомогою:",
|
||||
"noAudioSignalDialInLinkDesc": "Номери для додзвону",
|
||||
"noisyAudioInputTitle": "Схоже, що ваш мікрофон генерує багато шуму!",
|
||||
"noisyAudioInputDesc": "Схоже, що ваш мікрофон створює багато шуму, будь ласка, вимикайте його або змініть пристрій.",
|
||||
"noisyAudioInputDesc": "Схоже, що ваш мікрофон створює багато шуму, будь ласка, вимкніть його або змініть пристрій.",
|
||||
"openChat": "Відкрити чат",
|
||||
"pip": "Активувати режим картинка-у-картинці",
|
||||
"privateMessage": "Надіслати приватне повідомлення",
|
||||
@@ -688,7 +807,12 @@
|
||||
"toggleCamera": "Перемкнути камеру",
|
||||
"videomute": "Камера",
|
||||
"startvideoblur": "Розмивати тло",
|
||||
"stopvideoblur": "Вимкнути розмиття тла"
|
||||
"stopvideoblur": "Вимкнути розмиття тла",
|
||||
"e2ee": "Сквозное шифрование",
|
||||
"embedMeeting": "Встроить встречу",
|
||||
"lobbyButtonDisable": "Отключить режим лобби",
|
||||
"lobbyButtonEnable": "Включить режим лобби",
|
||||
"security": "Настройки безопасности"
|
||||
},
|
||||
"transcribing": {
|
||||
"ccButtonTooltip": "Показувати субтитри",
|
||||
@@ -699,8 +823,7 @@
|
||||
"off": "Транскрибування зупинено",
|
||||
"pending": "Підготовка до транскрибування конференції. . .",
|
||||
"start": "Показувати субтитри",
|
||||
"stop": "Не показувати субтитри",
|
||||
"tr": "TR"
|
||||
"stop": "Не показувати субтитри"
|
||||
},
|
||||
"userMedia": {
|
||||
"androidGrantPermissions": "Клацніть <b><i>Дозволити</i></b>, коли браузер надішле запит на надання дозволу.",
|
||||
@@ -746,6 +869,7 @@
|
||||
"domute": "Вимкнути звук",
|
||||
"domuteOthers": "Вимкнути мікрофони решті",
|
||||
"flip": "Віддзеркалити",
|
||||
"grantModerator": "Сделать модератором",
|
||||
"kick": "Вилучити",
|
||||
"moderator": "Модератор",
|
||||
"mute": "Без звуку",
|
||||
@@ -782,10 +906,13 @@
|
||||
"roomname": "Зазначте назву кімнати",
|
||||
"roomnameHint": "Зазначте назву кімнати або її адресу. Ви можете зазначити назву та передати його майбутнім учасникам зустрічі для входу до конференції.",
|
||||
"sendFeedback": "Зворотній зв’язок",
|
||||
"startMeeting": "Создать конференцию",
|
||||
"terms": "Умови користування",
|
||||
"title": "Захищена, повнофункціональна та безкоштовна система відеоконференцій"
|
||||
},
|
||||
"lonelyMeetingExperience": {
|
||||
"getHelp": "Отримати допомогу",
|
||||
"title": "Захищена, повнофункціональна і повністю безплатна система відеоконференцій",
|
||||
"button": "Запросити інших",
|
||||
"youAreAlone": "Лише ви берете участь у конференції"
|
||||
},
|
||||
|
||||
@@ -574,7 +574,7 @@
|
||||
"setDisplayNameLabel": "设定您的显示名称",
|
||||
"setEmailInput": "输入您的邮箱",
|
||||
"setEmailLabel": "设置您的个人全球统一标识邮箱",
|
||||
"title": "简介"
|
||||
"title": "个人信息"
|
||||
},
|
||||
"raisedHand": "请求发言",
|
||||
"recording": {
|
||||
@@ -621,7 +621,7 @@
|
||||
"disconnect": "断开连接",
|
||||
"microsoftSignIn": "Microsoft帐号登录",
|
||||
"signedIn": "目前通过 {{email}} 获取日历事件。点击下方断开连接按钮停止访问。",
|
||||
"title": "标题"
|
||||
"title": "日历集成"
|
||||
},
|
||||
"devices": "设备",
|
||||
"followMe": "分机随行",
|
||||
@@ -638,7 +638,7 @@
|
||||
"speakers": "发言人",
|
||||
"startAudioMuted": "所有人开始时静音",
|
||||
"startVideoMuted": "所有人开始时隐藏视频画面",
|
||||
"title": "抬头"
|
||||
"title": "设置"
|
||||
},
|
||||
"settingsView": {
|
||||
"advanced": "高级",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
196
lang/main.json
196
lang/main.json
@@ -5,6 +5,7 @@
|
||||
"copyInvite": "Copy meeting invitation",
|
||||
"copyLink": "Copy meeting link",
|
||||
"copyStream": "Copy live streaming link",
|
||||
"contacts": "contacts",
|
||||
"countryNotSupported": "We do not support this destination yet.",
|
||||
"countryReminder": "Calling outside the US? Please make sure you start with the country code!",
|
||||
"defaultEmail": "Your Default Email",
|
||||
@@ -16,19 +17,14 @@
|
||||
"inviteMoreMailSubject": "Join {{appName}} meeting",
|
||||
"inviteMorePrompt": "Invite more people",
|
||||
"linkCopied": "Link copied to clipboard",
|
||||
"loading": "Searching for people and phone numbers",
|
||||
"loadingNumber": "Validating phone number",
|
||||
"loadingPeople": "Searching for people to invite",
|
||||
"noResults": "No matching search results",
|
||||
"noValidNumbers": "Please enter a phone number",
|
||||
"outlookEmail": "Outlook Email",
|
||||
"searchNumbers": "Add phone numbers",
|
||||
"searchPeople": "Search for people",
|
||||
"searchPeopleAndNumbers": "Search for people or add their phone numbers",
|
||||
"phoneNumbers": "phone numbers",
|
||||
"searching": "Searching...",
|
||||
"shareInvite": "Share meeting invitation",
|
||||
"shareLink": "Share the meeting link to invite others",
|
||||
"shareStream": "Share the live streaming link",
|
||||
"sip": "SIP: {{address}}",
|
||||
"sipAddresses": "sip addresses",
|
||||
"telephone": "Telephone: {{number}}",
|
||||
"title": "Invite people to this meeting",
|
||||
"yahooEmail": "Yahoo Email"
|
||||
@@ -74,12 +70,17 @@
|
||||
},
|
||||
"privateNotice": "Private message to {{recipient}}",
|
||||
"title": "Chat",
|
||||
"you": "you"
|
||||
"you": "you",
|
||||
"message": "Message",
|
||||
"messageAccessibleTitle": "{{user}} says:",
|
||||
"messageAccessibleTitleMe": "me says:",
|
||||
"smileysPanel": "Emoji panel"
|
||||
},
|
||||
"chromeExtensionBanner": {
|
||||
"installExtensionText": "Install the extension for Google Calendar and Office 365 integration",
|
||||
"buttonText": "Install Chrome Extension",
|
||||
"dontShowAgain": "Don’t show me this again"
|
||||
"dontShowAgain": "Don’t show me this again",
|
||||
"close": "Close"
|
||||
},
|
||||
"connectingOverlay": {
|
||||
"joiningRoom": "Connecting you to your meeting..."
|
||||
@@ -208,10 +209,13 @@
|
||||
"e2eeLabel": "Enable End-to-End Encryption",
|
||||
"e2eeWarning": "WARNING: Not all participants in this meeting seem to have support for End-to-End encryption. If you enable it they won't be able to see nor hear you.",
|
||||
"enterDisplayName": "Please enter your name here",
|
||||
"enterDisplayNameToJoin": "Please enter your name to join",
|
||||
"embedMeeting": "Embed meeting",
|
||||
"error": "Error",
|
||||
"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",
|
||||
"hideShareAudioHelper": "Don't show this dialog again",
|
||||
"IamHost": "I am the host",
|
||||
"incorrectRoomLockPassword": "Incorrect password",
|
||||
"incorrectPassword": "Incorrect username or password",
|
||||
@@ -254,16 +258,21 @@
|
||||
"muteParticipantBody": "You won't be able to unmute them, but they can unmute themselves at any time.",
|
||||
"muteParticipantButton": "Mute",
|
||||
"muteParticipantDialog": "Are you sure you want to mute this participant? You won't be able to unmute them, but they can unmute themselves at any time.",
|
||||
"muteParticipantsVideoDialog": "Are you sure you want to turn off this participant's camera? You won't be able to turn the camera back on, but they can turn it back on at any time.",
|
||||
"muteParticipantTitle": "Mute this participant?",
|
||||
"muteParticipantsVideoButton": "Disable camera",
|
||||
"muteParticipantsVideoTitle": "Disable camera of this participant?",
|
||||
"muteParticipantsVideoBody": "You won't be able to turn the camera back on, but they can turn it back on at any time.",
|
||||
"noDropboxToken": "No valid Dropbox token",
|
||||
"Ok": "OK",
|
||||
"password": "Password",
|
||||
"passwordLabel": "The meeting has been locked by a participant. Please enter the $t(lockRoomPassword) to join.",
|
||||
"passwordNotSupported": "Setting a meeting $t(lockRoomPassword) is not supported.",
|
||||
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) not supported",
|
||||
"passwordRequired": "$t(lockRoomPasswordUppercase) required",
|
||||
"permissionErrorTitle": "Permission required",
|
||||
"permissionCameraRequiredError": "Camera permission is required to participate in conferences with video. Please grant it in Settings",
|
||||
"permissionMicRequiredError": "Microphone permission is required to participate in conferences with audio. Please grant it in Settings",
|
||||
"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",
|
||||
@@ -297,13 +306,24 @@
|
||||
"sessTerminated": "Call terminated",
|
||||
"sessionRestarted": "Call restarted by the bridge",
|
||||
"Share": "Share",
|
||||
"shareVideoLinkError": "Please provide a correct youtube link.",
|
||||
"shareVideoTitle": "Share a video",
|
||||
"shareAudio": "Continue",
|
||||
"shareAudioTitle" : "How to share audio",
|
||||
"shareAudioWarningTitle": "You need to stop screen sharing before sharing audio",
|
||||
"shareAudioWarningH1": "If you want to share just audio:",
|
||||
"shareAudioWarningD1": "you need to stop screen sharing before sharing your audio.",
|
||||
"shareAudioWarningD2": "you need to restart your screen sharing and check the \"share audio\" option.",
|
||||
"shareMediaWarningGenericH2": "If you want to share your screen and audio",
|
||||
"shareVideoLinkError": "Please provide a correct video link.",
|
||||
"shareVideoTitle": "Share video",
|
||||
"shareYourScreen": "Share your screen",
|
||||
"shareYourScreenDisabled": "Screen sharing disabled.",
|
||||
"startLiveStreaming": "Start live stream",
|
||||
"startRecording": "Start recording",
|
||||
"startRemoteControlErrorMessage": "An error occurred while trying to start the remote control session!",
|
||||
"shareScreenWarningTitle": "You need to stop audio sharing before sharing your screen",
|
||||
"shareScreenWarningH1": "If you want to share just your screen:",
|
||||
"shareScreenWarningD1": "you need to stop audio sharing before sharing your screen.",
|
||||
"shareScreenWarningD2": "you need to stop audio sharing, start screen sharing and check the \"share audio\" option.",
|
||||
"stopLiveStreaming": "Stop live stream",
|
||||
"stopRecording": "Stop recording",
|
||||
"stopRecordingWarning": "Are you sure you would like to stop the recording?",
|
||||
@@ -320,11 +340,16 @@
|
||||
"userIdentifier": "User identifier",
|
||||
"userPassword": "User password",
|
||||
"videoLink": "Video link",
|
||||
"viewUpgradeOptions": "View upgrade options",
|
||||
"viewUpgradeOptionsContent": "To get unlimited access to premium features like recording, transcriptions, RTMP Streaming & more, you'll need to upgrade your plan.",
|
||||
"viewUpgradeOptionsTitle": "You discovered a premium feature!",
|
||||
"WaitForHostMsg": "The conference <b>{{room}}</b> has not yet started. If you are the host then please authenticate. Otherwise, please wait for the host to arrive.",
|
||||
"WaitForHostMsgWOk": "The conference <b>{{room}}</b> has not yet started. If you are the host then please press Ok to authenticate. Otherwise, please wait for the host to arrive.",
|
||||
"WaitingForHostTitle": "Waiting for the host ...",
|
||||
"Yes": "Yes",
|
||||
"yourEntireScreen": "Your entire screen"
|
||||
"yourEntireScreen": "Your entire screen",
|
||||
"remoteUserControls": "Remote user controls of {{username}}",
|
||||
"localUserControls": "Local user controls"
|
||||
},
|
||||
"dialOut": {
|
||||
"statusMessage": "is now {{status}}"
|
||||
@@ -345,7 +370,20 @@
|
||||
"slightBlur": "Slight Blur",
|
||||
"removeBackground": "Remove background",
|
||||
"addBackground": "Add background",
|
||||
"none": "None"
|
||||
"pleaseWait": "Please wait...",
|
||||
"none": "None",
|
||||
"uploadedImage": "Uploaded image {{index}}",
|
||||
"deleteImage": "Delete image",
|
||||
"image1" : "Beach",
|
||||
"image2" : "White neutral wall",
|
||||
"image3" : "White empty room",
|
||||
"image4" : "Black floor lamp",
|
||||
"image5" : "Mountain",
|
||||
"image6" : "Forest ",
|
||||
"image7" : "Sunrise",
|
||||
"desktopShareError": "Could not create desktop share",
|
||||
"desktopShare":"Desktop share",
|
||||
"webAssemblyWarning": "WebAssembly not supported"
|
||||
},
|
||||
"feedback": {
|
||||
"average": "Average",
|
||||
@@ -354,7 +392,8 @@
|
||||
"good": "Good",
|
||||
"rateExperience": "Rate your meeting experience",
|
||||
"veryBad": "Very Bad",
|
||||
"veryGood": "Very Good"
|
||||
"veryGood": "Very Good",
|
||||
"star": "Star"
|
||||
},
|
||||
"incomingCall": {
|
||||
"answer": "Answer",
|
||||
@@ -371,6 +410,7 @@
|
||||
"country": "Country",
|
||||
"dialANumber": "To join your meeting, dial one of these numbers and then enter the pin.",
|
||||
"dialInConferenceID": "PIN:",
|
||||
"copyNumber":"Copy number",
|
||||
"dialInNotSupported": "Sorry, dialing in is currently not supported.",
|
||||
"dialInNumber": "Dial-in:",
|
||||
"dialInSummaryError": "Error fetching dial-in info now. Please try again later.",
|
||||
@@ -379,6 +419,11 @@
|
||||
"inviteLiveStream": "To view the live stream of this meeting, click this link: {{url}}",
|
||||
"invitePhone": "To join by phone instead, tap this: {{number}},,{{conferenceID}}#\n",
|
||||
"invitePhoneAlternatives": "Looking for a different dial-in number?\nSee meeting dial-in numbers: {{url}}\n\n\nIf also dialing-in through a room phone, join without connecting to audio: {{silentUrl}}",
|
||||
"inviteSipEndpoint": "To join using the SIP address, enter this: {{sipUri}}",
|
||||
"inviteTextiOSPersonal": "{{name}} is inviting you to a meeting.",
|
||||
"inviteTextiOSJoinSilent": "If you are dialing-in through a room phone, use this link to join without connecting to audio: {{silentUrl}}.",
|
||||
"inviteTextiOSInviteUrl": "Click the following link to join: {{inviteUrl}}.",
|
||||
"inviteTextiOSPhone": "To join via phone, use this number: {{number}},,{{conferenceID}}#. If you are looking for a different number, this is the full list: {{didUrl}}.",
|
||||
"inviteURLFirstPartGeneral": "You are invited to join a meeting.",
|
||||
"inviteURLFirstPartPersonal": "{{name}} is inviting you to a meeting.\n",
|
||||
"inviteURLSecondPart": "\nJoin the meeting:\n{{url}}\n",
|
||||
@@ -389,6 +434,7 @@
|
||||
"noRoom": "No room was specified to dial-in into.",
|
||||
"numbers": "Dial-in Numbers",
|
||||
"password": "$t(lockRoomPasswordUppercase):",
|
||||
"sip": "SIP address",
|
||||
"title": "Share",
|
||||
"tooltip": "Share link and dial-in info for this meeting",
|
||||
"label": "Dial-in info"
|
||||
@@ -407,6 +453,7 @@
|
||||
"support": "Support",
|
||||
"supportMsg": "If this keeps happening, reach out to"
|
||||
},
|
||||
"jitsiHome": "{{logo}} Logo, links to Homepage",
|
||||
"keyboardShortcuts": {
|
||||
"focusLocal": "Focus on your video",
|
||||
"focusRemote": "Focus on another person's video",
|
||||
@@ -498,6 +545,7 @@
|
||||
"focus": "Conference focus",
|
||||
"focusFail": "{{component}} not available - retry in {{ms}} sec",
|
||||
"grantedTo": "Moderator rights granted to {{to}}!",
|
||||
"hostAskedUnmute": "The host would like you to unmute",
|
||||
"invitedOneMember": "{{name}} has been invited",
|
||||
"invitedThreePlusMembers": "{{name}} and {{count}} others have been invited",
|
||||
"invitedTwoMembers": "{{first}} and {{second}} have been invited",
|
||||
@@ -514,7 +562,7 @@
|
||||
"passwordSetRemotely": "$t(lockRoomPasswordUppercase) set by another participant",
|
||||
"raisedHand": "{{name}} would like to speak.",
|
||||
"screenShareNoAudio": " Share audio box was not checked in the window selection screen.",
|
||||
"screenShareNoAudioTitle": "Share audio was not checked",
|
||||
"screenShareNoAudioTitle": "Couldn't share system audio!",
|
||||
"somebody": "Somebody",
|
||||
"startSilentTitle": "You joined with no audio output!",
|
||||
"startSilentDescription": "Rejoin the meeting to enable audio",
|
||||
@@ -527,16 +575,41 @@
|
||||
"OldElectronAPPTitle": "Security vulnerability!",
|
||||
"oldElectronClientDescription1": "You appear to be using an old version of the Jitsi Meet client which has known security vulnerabilities. Please make sure you update to our ",
|
||||
"oldElectronClientDescription2": "latest build",
|
||||
"oldElectronClientDescription3": " now!"
|
||||
"oldElectronClientDescription3": " now!",
|
||||
"moderationInEffectDescription": "Please raise hand if you want to speak",
|
||||
"moderationInEffectCSDescription": "Please raise hand if you want to share your video",
|
||||
"moderationInEffectVideoDescription": "Please raise your hand if you want your video to be visible",
|
||||
"moderationInEffectTitle": "The microphone is muted by the moderator",
|
||||
"moderationInEffectCSTitle": "Content sharing is disabled by moderator",
|
||||
"moderationInEffectVideoTitle": "The video is muted by the moderator",
|
||||
"moderationRequestFromModerator": "The host would like you to unmute",
|
||||
"moderationRequestFromParticipant": "Wants to speak",
|
||||
"moderationStartedTitle": "Moderation started",
|
||||
"moderationStoppedTitle": "Moderation stopped",
|
||||
"moderationToggleDescription": "by {{participantDisplayName}}",
|
||||
"raiseHandAction": "Raise hand",
|
||||
"groupTitle": "Notifications"
|
||||
},
|
||||
"participantsPane": {
|
||||
"close": "Close",
|
||||
"header": "Participants",
|
||||
"headings": {
|
||||
"lobby": "Lobby ({{count}})",
|
||||
"participantsList": "Meeting participants ({{count}})"
|
||||
"participantsList": "Meeting participants ({{count}})",
|
||||
"waitingLobby": "Waiting in lobby ({{count}})"
|
||||
},
|
||||
"actions": {
|
||||
"allow": "Allow attendees to:",
|
||||
"blockEveryoneMicCamera": "Block everyone's mic and camera",
|
||||
"invite": "Invite Someone",
|
||||
"askUnmute": "Ask to unmute",
|
||||
"mute": "Mute",
|
||||
"muteAll": "Mute all",
|
||||
"stopVideo": "Stop video"
|
||||
"muteEveryoneElse": "Mute everyone else",
|
||||
"startModeration": "Unmute themselves or start video",
|
||||
"stopEveryonesVideo": "Stop everyone's video",
|
||||
"stopVideo": "Stop video",
|
||||
"unblockEveryoneMicCamera": "Unblock everyone's mic and camera"
|
||||
}
|
||||
},
|
||||
"passwordSetRemotely": "Set by another participant",
|
||||
@@ -593,6 +666,7 @@
|
||||
"or": "or",
|
||||
"premeeting": "Pre meeting",
|
||||
"showScreen": "Enable pre meeting screen",
|
||||
"keyboardShortcuts" : "Enable Keyboard shortcuts",
|
||||
"startWithPhone": "Start with phone audio",
|
||||
"screenSharingError": "Screen sharing error:",
|
||||
"videoOnlyError": "Video error:",
|
||||
@@ -614,6 +688,7 @@
|
||||
"ringing": "Ringing..."
|
||||
},
|
||||
"profile": {
|
||||
"avatar": "avatar",
|
||||
"setDisplayNameLabel": "Set your display name",
|
||||
"setEmailInput": "Enter e-mail",
|
||||
"setEmailLabel": "Set your gravatar email",
|
||||
@@ -628,12 +703,15 @@
|
||||
"beta": "BETA",
|
||||
"busy": "We're working on freeing recording resources. Please try again in a few minutes.",
|
||||
"busyTitle": "All recorders are currently busy",
|
||||
"copyLink": "Copy Link",
|
||||
"error": "Recording failed. Please try again.",
|
||||
"errorFetchingLink": "Error fetching recording link.",
|
||||
"expandedOff": "Recording has stopped",
|
||||
"expandedOn": "The meeting is currently being recorded.",
|
||||
"expandedPending": "Recording is being started...",
|
||||
"failedToStart": "Recording failed to start",
|
||||
"fileSharingdescription": "Share recording with meeting participants",
|
||||
"linkGenerated": "We have generated a link to your recording.",
|
||||
"live": "LIVE",
|
||||
"loggedIn": "Logged in as {{userName}}",
|
||||
"off": "Recording stopped",
|
||||
@@ -648,7 +726,8 @@
|
||||
"signIn": "Sign in",
|
||||
"signOut": "Sign out",
|
||||
"unavailable": "Oops! The {{serviceName}} is currently unavailable. We're working on resolving the issue. Please try again later.",
|
||||
"unavailableTitle": "Recording unavailable"
|
||||
"unavailableTitle": "Recording unavailable",
|
||||
"uploadToCloud": "Upload to the cloud"
|
||||
},
|
||||
"sectionList": {
|
||||
"pullToRefresh": "Pull to refresh"
|
||||
@@ -667,8 +746,13 @@
|
||||
"signedIn": "Currently accessing calendar events for {{email}}. Click the Disconnect button below to stop accessing calendar events.",
|
||||
"title": "Calendar"
|
||||
},
|
||||
"desktopShareFramerate": "Desktop sharing frame rate",
|
||||
"desktopShareWarning": "You need to restart the screen share for the new settings to take effect.",
|
||||
"desktopShareHighFpsWarning": "A higher frame rate for desktop sharing might affect your bandwidth. You need to restart the screen share for the new settings to take effect.",
|
||||
"devices": "Devices",
|
||||
"followMe": "Everyone follows me",
|
||||
"framesPerSecond": "frames-per-second",
|
||||
"incomingMessage": "Incoming message",
|
||||
"language": "Language",
|
||||
"loggedIn": "Logged in as {{name}}",
|
||||
"microphones": "Microphones",
|
||||
@@ -676,12 +760,18 @@
|
||||
"more": "More",
|
||||
"name": "Name",
|
||||
"noDevice": "None",
|
||||
"participantJoined": "Participant Joined",
|
||||
"participantLeft": "Participant Left",
|
||||
"playSounds": "Play sound on",
|
||||
"sameAsSystem": "Same as system ({{label}})",
|
||||
"selectAudioOutput": "Audio output",
|
||||
"selectCamera": "Camera",
|
||||
"selectMic": "Microphone",
|
||||
"sounds": "Sounds",
|
||||
"speakers": "Speakers",
|
||||
"startAudioMuted": "Everyone starts muted",
|
||||
"startVideoMuted": "Everyone starts hidden",
|
||||
"talkWhileMuted": "Talk while muted",
|
||||
"title": "Settings"
|
||||
},
|
||||
"settingsView": {
|
||||
@@ -733,35 +823,41 @@
|
||||
"accessibilityLabel": {
|
||||
"audioOnly": "Toggle audio only",
|
||||
"audioRoute": "Select the sound device",
|
||||
"boo": "Boo",
|
||||
"callQuality": "Manage video quality",
|
||||
"cc": "Toggle subtitles",
|
||||
"chat": "Toggle chat window",
|
||||
"chat": "Open / Close chat",
|
||||
"clap": "Clap",
|
||||
"document": "Toggle shared document",
|
||||
"download": "Download our apps",
|
||||
"embedMeeting": "Embed meeting",
|
||||
"feedback": "Leave feedback",
|
||||
"fullScreen": "Toggle full screen",
|
||||
"grantModerator": "Grant Moderator",
|
||||
"hangup": "Leave the call",
|
||||
"hangup": "Leave the meeting",
|
||||
"help": "Help",
|
||||
"invite": "Invite people",
|
||||
"kick": "Kick participant",
|
||||
"laugh": "Laugh",
|
||||
"like": "Thumbs Up",
|
||||
"lobbyButton": "Enable/disable lobby mode",
|
||||
"localRecording": "Toggle local recording controls",
|
||||
"lockRoom": "Toggle meeting password",
|
||||
"moreActions": "Toggle more actions menu",
|
||||
"moreActions": "More actions",
|
||||
"moreActionsMenu": "More actions menu",
|
||||
"moreOptions": "Show more options",
|
||||
"mute": "Toggle mute audio",
|
||||
"mute": "Mute / Unmute",
|
||||
"muteEveryone": "Mute everyone",
|
||||
"muteEveryoneElse": "Mute everyone else",
|
||||
"muteEveryonesVideo": "Disable everyone's camera",
|
||||
"muteEveryoneElsesVideo": "Disable everyone else's camera",
|
||||
"participants": "Participants",
|
||||
"party": "Party Popper",
|
||||
"pip": "Toggle Picture-in-Picture mode",
|
||||
"privateMessage": "Send private message",
|
||||
"profile": "Edit your profile",
|
||||
"raiseHand": "Toggle raise hand",
|
||||
"raiseHand": "Raise / Lower your hand",
|
||||
"reactionsMenu": "Open / Close reactions menu",
|
||||
"recording": "Toggle recording",
|
||||
"remoteMute": "Mute participant",
|
||||
"remoteVideoMute": "Disable camera of participant",
|
||||
@@ -770,25 +866,33 @@
|
||||
"shareaudio": "Share audio",
|
||||
"sharedvideo": "Toggle YouTube video sharing",
|
||||
"shareRoom": "Invite someone",
|
||||
"shareYourScreen": "Toggle screenshare",
|
||||
"shareYourScreen": "Start / Stop sharing your screen",
|
||||
"shortcuts": "Toggle shortcuts",
|
||||
"show": "Show on stage",
|
||||
"speakerStats": "Toggle speaker statistics",
|
||||
"surprised": "Surprised",
|
||||
"tileView": "Toggle tile view",
|
||||
"toggleCamera": "Toggle camera",
|
||||
"toggleFilmstrip": "Toggle filmstrip",
|
||||
"videomute": "Toggle mute video",
|
||||
"selectBackground": "Select Background"
|
||||
"videomute": "Start / Stop camera",
|
||||
"videoblur": "Toggle video blur",
|
||||
"selectBackground": "Select Background",
|
||||
"expand": "Expand",
|
||||
"collapse": "Collapse"
|
||||
},
|
||||
"addPeople": "Add people to your call",
|
||||
"audioSettings": "Audio settings",
|
||||
"videoSettings": "Video settings",
|
||||
"audioOnlyOff": "Disable low bandwidth mode",
|
||||
"audioOnlyOn": "Enable low bandwidth mode",
|
||||
"audioRoute": "Select the sound device",
|
||||
"authenticate": "Authenticate",
|
||||
"boo": "Boo",
|
||||
"callQuality": "Manage video quality",
|
||||
"chat": "Open / Close chat",
|
||||
"clap": "Clap",
|
||||
"closeChat": "Close chat",
|
||||
"closeReactionsMenu": "Close reactions menu",
|
||||
"documentClose": "Close shared document",
|
||||
"documentOpen": "Open shared document",
|
||||
"download": "Download our apps",
|
||||
@@ -799,9 +903,11 @@
|
||||
"exitFullScreen": "Exit full screen",
|
||||
"exitTileView": "Exit tile view",
|
||||
"feedback": "Leave feedback",
|
||||
"hangup": "Leave",
|
||||
"hangup": "Leave the meeting",
|
||||
"help": "Help",
|
||||
"invite": "Invite people",
|
||||
"laugh": "Laugh",
|
||||
"like": "Thumbs Up",
|
||||
"lobbyButtonDisable": "Disable lobby mode",
|
||||
"lobbyButtonEnable": "Enable lobby mode",
|
||||
"login": "Login",
|
||||
@@ -820,29 +926,38 @@
|
||||
"noisyAudioInputTitle": "Your microphone appears to be noisy!",
|
||||
"noisyAudioInputDesc": "It sounds like your microphone is making noise, please consider muting or changing the device.",
|
||||
"openChat": "Open chat",
|
||||
"openReactionsMenu": "Open reactions menu",
|
||||
"participants": "Participants",
|
||||
"party": "Celebration",
|
||||
"pip": "Enter Picture-in-Picture mode",
|
||||
"privateMessage": "Send private message",
|
||||
"profile": "Edit your profile",
|
||||
"raiseHand": "Raise / Lower your hand",
|
||||
"raiseYourHand": "Raise your hand",
|
||||
"reactionBoo": "Send boo reaction",
|
||||
"reactionClap": "Send clap reaction",
|
||||
"reactionLaugh": "Send laugh reaction",
|
||||
"reactionLike": "Send thumbs up reaction",
|
||||
"reactionParty": "Send party popper reaction",
|
||||
"reactionSurprised": "Send surprised reaction",
|
||||
"security": "Security options",
|
||||
"Settings": "Settings",
|
||||
"shareaudio": "Share audio",
|
||||
"sharedvideo": "Share a YouTube video",
|
||||
"sharedvideo": "Share video",
|
||||
"shareRoom": "Invite someone",
|
||||
"shortcuts": "View shortcuts",
|
||||
"speakerStats": "Speaker stats",
|
||||
"startScreenSharing": "Start screen sharing",
|
||||
"startSubtitles": "Start subtitles",
|
||||
"stopAudioSharing": "Stop audio sharing",
|
||||
"stopScreenSharing": "Stop screen sharing",
|
||||
"stopSubtitles": "Stop subtitles",
|
||||
"stopSharedVideo": "Stop YouTube video",
|
||||
"stopSharedVideo": "Stop video",
|
||||
"surprised": "Surprised",
|
||||
"talkWhileMutedPopup": "Trying to speak? You are muted.",
|
||||
"tileViewToggle": "Toggle tile view",
|
||||
"toggleCamera": "Toggle camera",
|
||||
"videomute": "Start / Stop camera",
|
||||
"videoSettings": "Video settings",
|
||||
"selectBackground": "Select background"
|
||||
},
|
||||
"transcribing": {
|
||||
@@ -869,6 +984,7 @@
|
||||
"react-nativeGrantPermissions": "Select <b><i>Allow</i></b> when your browser asks for permissions.",
|
||||
"safariGrantPermissions": "Select <b><i>OK</i></b> when your browser asks for permissions."
|
||||
},
|
||||
"volumeSlider": "Volume slider",
|
||||
"videoSIPGW": {
|
||||
"busy": "We're working on freeing resources. Please try again in a few minutes.",
|
||||
"busyTitle": "The Room service is currently busy",
|
||||
@@ -913,6 +1029,7 @@
|
||||
"videomute": "Participant has stopped the camera"
|
||||
},
|
||||
"welcomepage": {
|
||||
"addMeetingName": "Add Meeting name",
|
||||
"accessibilityLabel": {
|
||||
"join": "Tap to join",
|
||||
"roomname": "Enter room name"
|
||||
@@ -934,6 +1051,9 @@
|
||||
"info": "Dial-in info",
|
||||
"join": "CREATE / JOIN",
|
||||
"jitsiOnMobile": "Jitsi on mobile – download our apps and start a meeting from anywhere",
|
||||
"mobileDownLoadLinkIos": "Download mobile app for iOS",
|
||||
"mobileDownLoadLinkAndroid": "Download mobile app for Android",
|
||||
"mobileDownLoadLinkFDroid": "Download mobile app for F-Droid",
|
||||
"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",
|
||||
@@ -946,7 +1066,15 @@
|
||||
"sendFeedback": "Send feedback",
|
||||
"startMeeting": "Start meeting",
|
||||
"terms": "Terms",
|
||||
"title": "Secure, fully featured, and completely free video conferencing"
|
||||
"title": "Secure, fully featured, and completely free video conferencing",
|
||||
"logo":{
|
||||
"calendar":"Calendar logo",
|
||||
"microsoftLogo":"Microsoft logo",
|
||||
"logoDeepLinking":"Jitsi meet logo",
|
||||
"desktopPreviewThumbnail":"Desktop preview thumbnail",
|
||||
"googleLogo":"Google Logo",
|
||||
"policyLogo":"Policy logo"
|
||||
}
|
||||
},
|
||||
"lonelyMeetingExperience": {
|
||||
"button": "Invite others",
|
||||
@@ -957,6 +1085,7 @@
|
||||
},
|
||||
"lobby": {
|
||||
"admit": "Admit",
|
||||
"admitAll": "Admit all",
|
||||
"knockingParticipantList": "Knocking participant list",
|
||||
"allow": "Allow",
|
||||
"backToKnockModeButton": "No password, ask to join instead",
|
||||
@@ -987,6 +1116,7 @@
|
||||
"passwordField": "Enter meeting password",
|
||||
"passwordJoinButton": "Join",
|
||||
"reject": "Reject",
|
||||
"rejectAll": "Reject all",
|
||||
"toggleLabel": "Enable lobby"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,9 @@ var loggingConfig = {
|
||||
// {@link #defaultLogLevel}:
|
||||
'modules/RTC/TraceablePeerConnection.js': 'info',
|
||||
'modules/statistics/CallStats.js': 'info',
|
||||
'modules/sdp/SDPUtil.js': 'info',
|
||||
'modules/xmpp/JingleSessionPC.js': 'info',
|
||||
'modules/xmpp/strophe.jingle.js': 'info',
|
||||
'modules/xmpp/strophe.util.js': 'log'
|
||||
};
|
||||
|
||||
|
||||
@@ -9,23 +9,27 @@ import {
|
||||
import {
|
||||
getCurrentConference,
|
||||
sendTones,
|
||||
setFollowMe,
|
||||
setPassword,
|
||||
setSubject
|
||||
} from '../../react/features/base/conference';
|
||||
import { overwriteConfig, getWhitelistedJSON } from '../../react/features/base/config';
|
||||
import { toggleDialog } from '../../react/features/base/dialog/actions';
|
||||
import { parseJWTFromURLParams } from '../../react/features/base/jwt';
|
||||
import JitsiMeetJS, { JitsiRecordingConstants } from '../../react/features/base/lib-jitsi-meet';
|
||||
import { MEDIA_TYPE } from '../../react/features/base/media';
|
||||
import {
|
||||
getLocalParticipant,
|
||||
getParticipantById,
|
||||
participantUpdated,
|
||||
pinParticipant,
|
||||
kickParticipant
|
||||
kickParticipant,
|
||||
raiseHand,
|
||||
isParticipantModerator
|
||||
} from '../../react/features/base/participants';
|
||||
import { updateSettings } from '../../react/features/base/settings';
|
||||
import { isToggleCameraEnabled, toggleCamera } from '../../react/features/base/tracks';
|
||||
import {
|
||||
sendMessage,
|
||||
setPrivateMessageRecipient,
|
||||
toggleChat
|
||||
} from '../../react/features/chat/actions';
|
||||
@@ -37,16 +41,22 @@ import { isEnabled as isDropboxEnabled } from '../../react/features/dropbox';
|
||||
import { toggleE2EE } from '../../react/features/e2ee/actions';
|
||||
import { invite } from '../../react/features/invite';
|
||||
import {
|
||||
captureLargeVideoScreenshot,
|
||||
resizeLargeVideo,
|
||||
selectParticipantInLargeVideo
|
||||
} from '../../react/features/large-video/actions';
|
||||
} from '../../react/features/large-video/actions.any';
|
||||
import {
|
||||
captureLargeVideoScreenshot,
|
||||
resizeLargeVideo
|
||||
} from '../../react/features/large-video/actions.web';
|
||||
import { toggleLobbyMode } from '../../react/features/lobby/actions';
|
||||
import { RECORDING_TYPES } from '../../react/features/recording/constants';
|
||||
import { getActiveSession } from '../../react/features/recording/functions';
|
||||
import { isScreenAudioSupported } from '../../react/features/screen-share';
|
||||
import { startScreenShareFlow, startAudioScreenShareFlow } from '../../react/features/screen-share/actions';
|
||||
import { playSharedVideo, stopSharedVideo } from '../../react/features/shared-video/actions.any';
|
||||
import { toggleTileView, setTileView } from '../../react/features/video-layout';
|
||||
import { muteAllParticipants } from '../../react/features/video-menu/actions';
|
||||
import { setVideoQuality } from '../../react/features/video-quality';
|
||||
import VirtualBackgroundDialog from '../../react/features/virtual-background/components/VirtualBackgroundDialog';
|
||||
import { getJitsiMeetTransport } from '../transport';
|
||||
|
||||
import { API_ID, ENDPOINT_TEXT_MESSAGE_NAME } from './constants';
|
||||
@@ -96,13 +106,14 @@ function initCommands() {
|
||||
const muteMediaType = mediaType ? mediaType : MEDIA_TYPE.AUDIO;
|
||||
|
||||
sendAnalytics(createApiEvent('muted-everyone'));
|
||||
const participants = APP.store.getState()['features/base/participants'];
|
||||
const localIds = participants
|
||||
.filter(participant => participant.local)
|
||||
.filter(participant => participant.role === 'moderator')
|
||||
.map(participant => participant.id);
|
||||
const localParticipant = getLocalParticipant(APP.store.getState());
|
||||
const exclude = [];
|
||||
|
||||
APP.store.dispatch(muteAllParticipants(localIds, muteMediaType));
|
||||
if (localParticipant && isParticipantModerator(localParticipant)) {
|
||||
exclude.push(localParticipant.id);
|
||||
}
|
||||
|
||||
APP.store.dispatch(muteAllParticipants(exclude, muteMediaType));
|
||||
},
|
||||
'toggle-lobby': isLobbyEnabled => {
|
||||
APP.store.dispatch(toggleLobbyMode(isLobbyEnabled));
|
||||
@@ -147,6 +158,17 @@ function initCommands() {
|
||||
|
||||
APP.store.dispatch(sendTones(tones, duration, pause));
|
||||
},
|
||||
'set-follow-me': value => {
|
||||
logger.debug('Set follow me command received');
|
||||
|
||||
if (value) {
|
||||
sendAnalytics(createApiEvent('follow.me.set'));
|
||||
} else {
|
||||
sendAnalytics(createApiEvent('follow.me.unset'));
|
||||
}
|
||||
|
||||
APP.store.dispatch(setFollowMe(value));
|
||||
},
|
||||
'set-large-video-participant': participantId => {
|
||||
logger.debug('Set large video participant command received');
|
||||
sendAnalytics(createApiEvent('largevideo.participant.set'));
|
||||
@@ -200,13 +222,17 @@ function initCommands() {
|
||||
const { raisedHand } = localParticipant;
|
||||
|
||||
sendAnalytics(createApiEvent('raise-hand.toggled'));
|
||||
APP.store.dispatch(
|
||||
participantUpdated({
|
||||
id: APP.conference.getMyUserId(),
|
||||
local: true,
|
||||
raisedHand: !raisedHand
|
||||
})
|
||||
);
|
||||
APP.store.dispatch(raiseHand(!raisedHand));
|
||||
},
|
||||
'toggle-share-audio': () => {
|
||||
sendAnalytics(createApiEvent('audio.screen.sharing.toggled'));
|
||||
if (isScreenAudioSupported()) {
|
||||
APP.store.dispatch(startAudioScreenShareFlow());
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
logger.error('Audio screen sharing is not supported by the current platform!');
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -242,6 +268,24 @@ function initCommands() {
|
||||
sendAnalytics(createApiEvent('avatar.url.changed'));
|
||||
APP.conference.changeLocalAvatarUrl(avatarUrl);
|
||||
},
|
||||
'send-chat-message': (message, to, ignorePrivacy = false) => {
|
||||
logger.debug('Send chat message command received');
|
||||
if (to) {
|
||||
const participant = getParticipantById(APP.store.getState(), to);
|
||||
|
||||
if (participant) {
|
||||
APP.store.dispatch(setPrivateMessageRecipient(participant));
|
||||
} else {
|
||||
logger.error(`Participant with id ${to} not found!`);
|
||||
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
APP.store.dispatch(setPrivateMessageRecipient());
|
||||
}
|
||||
|
||||
APP.store.dispatch(sendMessage(message, ignorePrivacy));
|
||||
},
|
||||
'send-endpoint-text-message': (to, text) => {
|
||||
logger.debug('Send endpoint message command received');
|
||||
try {
|
||||
@@ -263,6 +307,18 @@ function initCommands() {
|
||||
APP.store.dispatch(setVideoQuality(frameHeight));
|
||||
},
|
||||
|
||||
'start-share-video': url => {
|
||||
logger.debug('Share video command received');
|
||||
sendAnalytics(createApiEvent('share.video.start'));
|
||||
APP.store.dispatch(playSharedVideo(url));
|
||||
},
|
||||
|
||||
'stop-share-video': () => {
|
||||
logger.debug('Share video command received');
|
||||
sendAnalytics(createApiEvent('share.video.stop'));
|
||||
APP.store.dispatch(stopSharedVideo());
|
||||
},
|
||||
|
||||
/**
|
||||
* Starts a file recording or streaming session depending on the passed on params.
|
||||
* For RTMP streams, `rtmpStreamKey` must be passed on. `rtmpBroadcastID` is optional.
|
||||
@@ -406,6 +462,9 @@ function initCommands() {
|
||||
const whitelistedConfig = getWhitelistedJSON('config', config);
|
||||
|
||||
APP.store.dispatch(overwriteConfig(whitelistedConfig));
|
||||
},
|
||||
'toggle-virtual-background': () => {
|
||||
APP.store.dispatch(toggleDialog(VirtualBackgroundDialog));
|
||||
}
|
||||
};
|
||||
transport.on('event', ({ data, name }) => {
|
||||
@@ -515,6 +574,12 @@ function initCommands() {
|
||||
});
|
||||
break;
|
||||
}
|
||||
case 'get-custom-avatar-backgrounds' : {
|
||||
callback({
|
||||
avatarBackgrounds: APP.store.getState()['features/dynamic-branding'].avatarBackgrounds
|
||||
});
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
@@ -551,12 +616,48 @@ function shouldBeEnabled() {
|
||||
*/
|
||||
function toggleScreenSharing(enable) {
|
||||
if (JitsiMeetJS.isDesktopSharingEnabled()) {
|
||||
APP.conference.toggleScreenSharing(enable).catch(() => {
|
||||
logger.warn('Failed to toggle screen-sharing');
|
||||
});
|
||||
APP.store.dispatch(startScreenShareFlow(enable));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes sensitive data from a mouse event.
|
||||
*
|
||||
* @param {MouseEvent} event - The mouse event to sanitize.
|
||||
* @returns {Object}
|
||||
*/
|
||||
function sanitizeMouseEvent(event: MouseEvent) {
|
||||
const {
|
||||
clientX,
|
||||
clientY,
|
||||
movementX,
|
||||
movementY,
|
||||
offsetX,
|
||||
offsetY,
|
||||
pageX,
|
||||
pageY,
|
||||
x,
|
||||
y,
|
||||
screenX,
|
||||
screenY
|
||||
} = event;
|
||||
|
||||
return {
|
||||
clientX,
|
||||
clientY,
|
||||
movementX,
|
||||
movementY,
|
||||
offsetX,
|
||||
offsetY,
|
||||
pageX,
|
||||
pageY,
|
||||
x,
|
||||
y,
|
||||
screenX,
|
||||
screenY
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements API class that communicates with external API class and provides
|
||||
* interface to access Jitsi Meet features by external applications that embed
|
||||
@@ -660,6 +761,45 @@ class API {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify external application (if API is enabled) that the mouse has entered inside the iframe.
|
||||
*
|
||||
* @param {MouseEvent} event - The mousemove event.
|
||||
* @returns {void}
|
||||
*/
|
||||
notifyMouseEnter(event: MouseEvent) {
|
||||
this._sendEvent({
|
||||
name: 'mouse-enter',
|
||||
event: sanitizeMouseEvent(event)
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify external application (if API is enabled) that the mouse has entered inside the iframe.
|
||||
*
|
||||
* @param {MouseEvent} event - The mousemove event.
|
||||
* @returns {void}
|
||||
*/
|
||||
notifyMouseLeave(event: MouseEvent) {
|
||||
this._sendEvent({
|
||||
name: 'mouse-leave',
|
||||
event: sanitizeMouseEvent(event)
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify external application (if API is enabled) that the mouse has moved inside the iframe.
|
||||
*
|
||||
* @param {MouseEvent} event - The mousemove event.
|
||||
* @returns {void}
|
||||
*/
|
||||
notifyMouseMove(event: MouseEvent) {
|
||||
this._sendEvent({
|
||||
name: 'mouse-move',
|
||||
event: sanitizeMouseEvent(event)
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify external application that the video quality setting has changed.
|
||||
*
|
||||
|
||||
@@ -15,3 +15,8 @@ export const API_ID = parseURLParams(window.location).jitsi_meet_external_api_id
|
||||
* The payload name for the datachannel/endpoint text message event
|
||||
*/
|
||||
export const ENDPOINT_TEXT_MESSAGE_NAME = 'endpoint-text-message';
|
||||
|
||||
/**
|
||||
* The payload name for the datachannel/endpoint reaction event
|
||||
*/
|
||||
export const ENDPOINT_REACTION_NAME = 'endpoint-reaction';
|
||||
|
||||
22
modules/API/external/external_api.js
vendored
22
modules/API/external/external_api.js
vendored
@@ -41,13 +41,17 @@ const commands = {
|
||||
password: 'password',
|
||||
pinParticipant: 'pin-participant',
|
||||
resizeLargeVideo: 'resize-large-video',
|
||||
sendChatMessage: 'send-chat-message',
|
||||
sendEndpointTextMessage: 'send-endpoint-text-message',
|
||||
sendTones: 'send-tones',
|
||||
setFollowMe: 'set-follow-me',
|
||||
setLargeVideoParticipant: 'set-large-video-participant',
|
||||
setTileView: 'set-tile-view',
|
||||
setVideoQuality: 'set-video-quality',
|
||||
startRecording: 'start-recording',
|
||||
startShareVideo: 'start-share-video',
|
||||
stopRecording: 'stop-recording',
|
||||
stopShareVideo: 'stop-share-video',
|
||||
subject: 'subject',
|
||||
submitFeedback: 'submit-feedback',
|
||||
toggleAudio: 'toggle-audio',
|
||||
@@ -56,8 +60,10 @@ const commands = {
|
||||
toggleChat: 'toggle-chat',
|
||||
toggleFilmStrip: 'toggle-film-strip',
|
||||
toggleRaiseHand: 'toggle-raise-hand',
|
||||
toggleShareAudio: 'toggle-share-audio',
|
||||
toggleShareScreen: 'toggle-share-screen',
|
||||
toggleTileView: 'toggle-tile-view',
|
||||
toggleVirtualBackgroundDialog: 'toggle-virtual-background',
|
||||
toggleVideo: 'toggle-video'
|
||||
};
|
||||
|
||||
@@ -82,6 +88,9 @@ const events = {
|
||||
'incoming-message': 'incomingMessage',
|
||||
'log': 'log',
|
||||
'mic-error': 'micError',
|
||||
'mouse-enter': 'mouseEnter',
|
||||
'mouse-leave': 'mouseLeave',
|
||||
'mouse-move': 'mouseMove',
|
||||
'outgoing-message': 'outgoingMessage',
|
||||
'participant-joined': 'participantJoined',
|
||||
'participant-kicked-out': 'participantKickedOut',
|
||||
@@ -161,7 +170,7 @@ function parseArguments(args) {
|
||||
|
||||
switch (typeof firstArg) {
|
||||
case 'string': // old arguments format
|
||||
case undefined: {
|
||||
case 'undefined': {
|
||||
// Not sure which format but we are trying to parse the old
|
||||
// format because if the new format is used everything will be undefined
|
||||
// anyway.
|
||||
@@ -760,6 +769,17 @@ export default class JitsiMeetExternalAPI extends EventEmitter {
|
||||
return getCurrentDevices(this._transport);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns any custom avatars backgrounds.
|
||||
*
|
||||
* @returns {Promise} - Resolves with the list of custom avatar backgrounds.
|
||||
*/
|
||||
getCustomAvatarBackgrounds() {
|
||||
return this._transport.sendRequest({
|
||||
name: 'get-custom-avatar-backgrounds'
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current livestream url.
|
||||
*
|
||||
|
||||
@@ -19,7 +19,6 @@ import {
|
||||
import UIEvents from '../../service/UI/UIEvents';
|
||||
|
||||
import EtherpadManager from './etherpad/Etherpad';
|
||||
import SharedVideoManager from './shared_video/SharedVideo';
|
||||
import messageHandler from './util/MessageHandler';
|
||||
import UIUtil from './util/UIUtil';
|
||||
import VideoLayout from './videolayout/VideoLayout';
|
||||
@@ -33,15 +32,11 @@ const eventEmitter = new EventEmitter();
|
||||
UI.eventEmitter = eventEmitter;
|
||||
|
||||
let etherpadManager;
|
||||
let sharedVideoManager;
|
||||
|
||||
const UIListeners = new Map([
|
||||
[
|
||||
UIEvents.ETHERPAD_CLICKED,
|
||||
() => etherpadManager && etherpadManager.toggleEtherpad()
|
||||
], [
|
||||
UIEvents.SHARED_VIDEO_CLICKED,
|
||||
() => sharedVideoManager && sharedVideoManager.toggleSharedVideo()
|
||||
], [
|
||||
UIEvents.TOGGLE_FILMSTRIP,
|
||||
() => UI.toggleFilmstrip()
|
||||
@@ -58,14 +53,6 @@ UI.isFullScreen = function() {
|
||||
return UIUtil.isFullScreen();
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns true if there is a shared video which is being shown (?).
|
||||
* @returns {boolean} - true if there is a shared video which is being shown.
|
||||
*/
|
||||
UI.isSharedVideoShown = function() {
|
||||
return Boolean(sharedVideoManager && sharedVideoManager.isSharedVideoShown);
|
||||
};
|
||||
|
||||
/**
|
||||
* Notify user that server has shut down.
|
||||
*/
|
||||
@@ -112,8 +99,6 @@ UI.start = function() {
|
||||
// will be seen animating in.
|
||||
VideoLayout.resizeVideoArea();
|
||||
|
||||
sharedVideoManager = new SharedVideoManager(eventEmitter);
|
||||
|
||||
if (isMobileBrowser()) {
|
||||
$('body').addClass('mobile-browser');
|
||||
} else {
|
||||
@@ -411,60 +396,6 @@ UI.getLargeVideo = function() {
|
||||
return VideoLayout.getLargeVideo();
|
||||
};
|
||||
|
||||
/**
|
||||
* Show shared video.
|
||||
* @param {string} id the id of the sender of the command
|
||||
* @param {string} url video url
|
||||
* @param {string} attributes
|
||||
*/
|
||||
UI.onSharedVideoStart = function(id, url, attributes) {
|
||||
if (sharedVideoManager) {
|
||||
sharedVideoManager.onSharedVideoStart(id, url, attributes);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Update shared video.
|
||||
* @param {string} id the id of the sender of the command
|
||||
* @param {string} url video url
|
||||
* @param {string} attributes
|
||||
*/
|
||||
UI.onSharedVideoUpdate = function(id, url, attributes) {
|
||||
if (sharedVideoManager) {
|
||||
sharedVideoManager.onSharedVideoUpdate(id, url, attributes);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Stop showing shared video.
|
||||
* @param {string} id the id of the sender of the command
|
||||
* @param {string} attributes
|
||||
*/
|
||||
UI.onSharedVideoStop = function(id, attributes) {
|
||||
if (sharedVideoManager) {
|
||||
sharedVideoManager.onSharedVideoStop(id, attributes);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Show shared video.
|
||||
* @param {string} url video url
|
||||
*/
|
||||
UI.startSharedVideoEmitter = function(url) {
|
||||
if (sharedVideoManager) {
|
||||
sharedVideoManager.startSharedVideoEmitter(url);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Stop shared video.
|
||||
*/
|
||||
UI.stopSharedVideoEmitter = function() {
|
||||
if (sharedVideoManager) {
|
||||
sharedVideoManager.stopSharedVideoEmitter();
|
||||
}
|
||||
};
|
||||
|
||||
// TODO: Export every function separately. For now there is no point of doing
|
||||
// this because we are importing everything.
|
||||
export default UI;
|
||||
|
||||
@@ -11,6 +11,7 @@ import {
|
||||
isTokenAuthEnabled,
|
||||
getTokenAuthUrl
|
||||
} from '../../../react/features/authentication/functions';
|
||||
import { getReplaceParticipant } from '../../../react/features/base/config/functions';
|
||||
import { isDialogOpen } from '../../../react/features/base/dialog';
|
||||
import { setJWT } from '../../../react/features/base/jwt';
|
||||
import UIUtil from '../util/UIUtil';
|
||||
@@ -209,7 +210,9 @@ function logout(room: Object) {
|
||||
}).then(url => {
|
||||
// de-authenticate conference on the fly
|
||||
if (room.isJoined()) {
|
||||
room.join();
|
||||
const replaceParticipant = getReplaceParticipant(APP.store.getState());
|
||||
|
||||
room.join(null, replaceParticipant);
|
||||
}
|
||||
|
||||
return url;
|
||||
|
||||
@@ -1,655 +0,0 @@
|
||||
/* global $, APP, YT, interfaceConfig, onPlayerReady, onPlayerStateChange,
|
||||
onPlayerError */
|
||||
|
||||
import Logger from 'jitsi-meet-logger';
|
||||
|
||||
import {
|
||||
createSharedVideoEvent as createEvent,
|
||||
sendAnalytics
|
||||
} from '../../../react/features/analytics';
|
||||
import {
|
||||
participantJoined,
|
||||
participantLeft,
|
||||
pinParticipant
|
||||
} from '../../../react/features/base/participants';
|
||||
import { VIDEO_PLAYER_PARTICIPANT_NAME } from '../../../react/features/shared-video/constants';
|
||||
import { dockToolbox, showToolbox } from '../../../react/features/toolbox/actions.web';
|
||||
import { getToolboxHeight } from '../../../react/features/toolbox/functions.web';
|
||||
import UIEvents from '../../../service/UI/UIEvents';
|
||||
import Filmstrip from '../videolayout/Filmstrip';
|
||||
import LargeContainer from '../videolayout/LargeContainer';
|
||||
import VideoLayout from '../videolayout/VideoLayout';
|
||||
|
||||
const logger = Logger.getLogger(__filename);
|
||||
|
||||
export const SHARED_VIDEO_CONTAINER_TYPE = 'sharedvideo';
|
||||
|
||||
/**
|
||||
* Example shared video link.
|
||||
* @type {string}
|
||||
*/
|
||||
const updateInterval = 5000; // milliseconds
|
||||
|
||||
|
||||
/**
|
||||
* Manager of shared video.
|
||||
*/
|
||||
export default class SharedVideoManager {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
constructor(emitter) {
|
||||
this.emitter = emitter;
|
||||
this.isSharedVideoShown = false;
|
||||
this.isPlayerAPILoaded = false;
|
||||
this.mutedWithUserInteraction = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates if the player volume is currently on. This will return true if
|
||||
* we have an available player, which is currently in a PLAYING state,
|
||||
* which isn't muted and has it's volume greater than 0.
|
||||
*
|
||||
* @returns {boolean} indicating if the volume of the shared video is
|
||||
* currently on.
|
||||
*/
|
||||
isSharedVideoVolumeOn() {
|
||||
return this.player
|
||||
&& this.player.getPlayerState() === YT.PlayerState.PLAYING
|
||||
&& !this.player.isMuted()
|
||||
&& this.player.getVolume() > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates if the local user is the owner of the shared video.
|
||||
* @returns {*|boolean}
|
||||
*/
|
||||
isSharedVideoOwner() {
|
||||
return this.from && APP.conference.isLocalId(this.from);
|
||||
}
|
||||
|
||||
/**
|
||||
* Start shared video event emitter if a video is not shown.
|
||||
*
|
||||
* @param url of the video
|
||||
*/
|
||||
startSharedVideoEmitter(url) {
|
||||
|
||||
if (!this.isSharedVideoShown) {
|
||||
if (url) {
|
||||
this.emitter.emit(
|
||||
UIEvents.UPDATE_SHARED_VIDEO, url, 'start');
|
||||
sendAnalytics(createEvent('started'));
|
||||
}
|
||||
|
||||
logger.log('SHARED VIDEO CANCELED');
|
||||
sendAnalytics(createEvent('canceled'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop shared video event emitter done by the one who shared the video.
|
||||
*/
|
||||
stopSharedVideoEmitter() {
|
||||
|
||||
if (APP.conference.isLocalId(this.from)) {
|
||||
if (this.intervalId) {
|
||||
clearInterval(this.intervalId);
|
||||
this.intervalId = null;
|
||||
}
|
||||
this.emitter.emit(
|
||||
UIEvents.UPDATE_SHARED_VIDEO, this.url, 'stop');
|
||||
sendAnalytics(createEvent('stopped'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows the player component and starts the process that will be sending
|
||||
* updates, if we are the one shared the video.
|
||||
*
|
||||
* @param id the id of the sender of the command
|
||||
* @param url the video url
|
||||
* @param attributes
|
||||
*/
|
||||
onSharedVideoStart(id, url, attributes) {
|
||||
if (this.isSharedVideoShown) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.isSharedVideoShown = true;
|
||||
|
||||
// the video url
|
||||
this.url = url;
|
||||
|
||||
// the owner of the video
|
||||
this.from = id;
|
||||
|
||||
this.mutedWithUserInteraction = APP.conference.isLocalAudioMuted();
|
||||
|
||||
// listen for local audio mute events
|
||||
this.localAudioMutedListener = this.onLocalAudioMuted.bind(this);
|
||||
this.emitter.on(UIEvents.AUDIO_MUTED, this.localAudioMutedListener);
|
||||
|
||||
// This code loads the IFrame Player API code asynchronously.
|
||||
const tag = document.createElement('script');
|
||||
|
||||
tag.src = 'https://www.youtube.com/iframe_api';
|
||||
const firstScriptTag = document.getElementsByTagName('script')[0];
|
||||
|
||||
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
|
||||
|
||||
// sometimes we receive errors like player not defined
|
||||
// or player.pauseVideo is not a function
|
||||
// we need to operate with player after start playing
|
||||
// self.player will be defined once it start playing
|
||||
// and will process any initial attributes if any
|
||||
this.initialAttributes = attributes;
|
||||
|
||||
const self = this;
|
||||
|
||||
if (self.isPlayerAPILoaded) {
|
||||
window.onYouTubeIframeAPIReady();
|
||||
} else {
|
||||
window.onYouTubeIframeAPIReady = function() {
|
||||
self.isPlayerAPILoaded = true;
|
||||
const showControls
|
||||
= APP.conference.isLocalId(self.from) ? 1 : 0;
|
||||
const p = new YT.Player('sharedVideoIFrame', {
|
||||
height: '100%',
|
||||
width: '100%',
|
||||
videoId: self.url,
|
||||
playerVars: {
|
||||
'origin': location.origin,
|
||||
'fs': '0',
|
||||
'autoplay': 0,
|
||||
'controls': showControls,
|
||||
'rel': 0
|
||||
},
|
||||
events: {
|
||||
'onReady': onPlayerReady,
|
||||
'onStateChange': onPlayerStateChange,
|
||||
'onError': onPlayerError
|
||||
}
|
||||
});
|
||||
|
||||
// add listener for volume changes
|
||||
p.addEventListener(
|
||||
'onVolumeChange', 'onVolumeChange');
|
||||
|
||||
if (APP.conference.isLocalId(self.from)) {
|
||||
// adds progress listener that will be firing events
|
||||
// while we are paused and we change the progress of the
|
||||
// video (seeking forward or backward on the video)
|
||||
p.addEventListener(
|
||||
'onVideoProgress', 'onVideoProgress');
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates that a change in state has occurred for the shared video.
|
||||
* @param event the event notifying us of the change
|
||||
*/
|
||||
window.onPlayerStateChange = function(event) {
|
||||
// eslint-disable-next-line eqeqeq
|
||||
if (event.data == YT.PlayerState.PLAYING) {
|
||||
self.player = event.target;
|
||||
|
||||
if (self.initialAttributes) {
|
||||
// If a network update has occurred already now is the
|
||||
// time to process it.
|
||||
self.processVideoUpdate(
|
||||
self.player,
|
||||
self.initialAttributes);
|
||||
|
||||
self.initialAttributes = null;
|
||||
}
|
||||
self.smartAudioMute();
|
||||
// eslint-disable-next-line eqeqeq
|
||||
} else if (event.data == YT.PlayerState.PAUSED) {
|
||||
self.smartAudioUnmute();
|
||||
sendAnalytics(createEvent('paused'));
|
||||
}
|
||||
// eslint-disable-next-line eqeqeq
|
||||
self.fireSharedVideoEvent(event.data == YT.PlayerState.PAUSED);
|
||||
};
|
||||
|
||||
/**
|
||||
* Track player progress while paused.
|
||||
* @param event
|
||||
*/
|
||||
window.onVideoProgress = function(event) {
|
||||
const state = event.target.getPlayerState();
|
||||
|
||||
// eslint-disable-next-line eqeqeq
|
||||
if (state == YT.PlayerState.PAUSED) {
|
||||
self.fireSharedVideoEvent(true);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Gets notified for volume state changed.
|
||||
* @param event
|
||||
*/
|
||||
window.onVolumeChange = function(event) {
|
||||
self.fireSharedVideoEvent();
|
||||
|
||||
// let's check, if player is not muted lets mute locally
|
||||
if (event.data.volume > 0 && !event.data.muted) {
|
||||
self.smartAudioMute();
|
||||
} else if (event.data.volume <= 0 || event.data.muted) {
|
||||
self.smartAudioUnmute();
|
||||
}
|
||||
sendAnalytics(createEvent(
|
||||
'volume.changed',
|
||||
{
|
||||
volume: event.data.volume,
|
||||
muted: event.data.muted
|
||||
}));
|
||||
};
|
||||
|
||||
window.onPlayerReady = function(event) {
|
||||
const player = event.target;
|
||||
|
||||
// do not relay on autoplay as it is not sending all of the events
|
||||
// in onPlayerStateChange
|
||||
|
||||
player.playVideo();
|
||||
|
||||
const iframe = player.getIframe();
|
||||
|
||||
// eslint-disable-next-line no-use-before-define
|
||||
self.sharedVideo = new SharedVideoContainer(
|
||||
{ url,
|
||||
iframe,
|
||||
player });
|
||||
|
||||
// prevents pausing participants not sharing the video
|
||||
// to pause the video
|
||||
if (!APP.conference.isLocalId(self.from)) {
|
||||
$('#sharedVideo').css('pointer-events', 'none');
|
||||
}
|
||||
|
||||
VideoLayout.addLargeVideoContainer(
|
||||
SHARED_VIDEO_CONTAINER_TYPE, self.sharedVideo);
|
||||
|
||||
APP.store.dispatch(participantJoined({
|
||||
|
||||
// FIXME The cat is out of the bag already or rather _room is
|
||||
// not private because it is used in multiple other places
|
||||
// already such as AbstractPageReloadOverlay.
|
||||
conference: APP.conference._room,
|
||||
id: self.url,
|
||||
isFakeParticipant: true,
|
||||
name: VIDEO_PLAYER_PARTICIPANT_NAME
|
||||
}));
|
||||
|
||||
APP.store.dispatch(pinParticipant(self.url));
|
||||
|
||||
// If we are sending the command and we are starting the player
|
||||
// we need to continuously send the player current time position
|
||||
if (APP.conference.isLocalId(self.from)) {
|
||||
self.intervalId = setInterval(
|
||||
self.fireSharedVideoEvent.bind(self),
|
||||
updateInterval);
|
||||
}
|
||||
};
|
||||
|
||||
window.onPlayerError = function(event) {
|
||||
logger.error('Error in the player:', event.data);
|
||||
|
||||
// store the error player, so we can remove it
|
||||
self.errorInPlayer = event.target;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Process attributes, whether player needs to be paused or seek.
|
||||
* @param player the player to operate over
|
||||
* @param attributes the attributes with the player state we want
|
||||
*/
|
||||
processVideoUpdate(player, attributes) {
|
||||
if (!attributes) {
|
||||
return;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line eqeqeq
|
||||
if (attributes.state == 'playing') {
|
||||
|
||||
const isPlayerPaused
|
||||
= this.player.getPlayerState() === YT.PlayerState.PAUSED;
|
||||
|
||||
// If our player is currently paused force the seek.
|
||||
this.processTime(player, attributes, isPlayerPaused);
|
||||
|
||||
// Process mute.
|
||||
const isAttrMuted = attributes.muted === 'true';
|
||||
|
||||
if (player.isMuted() !== isAttrMuted) {
|
||||
this.smartPlayerMute(isAttrMuted, true);
|
||||
}
|
||||
|
||||
// Process volume
|
||||
if (!isAttrMuted
|
||||
&& attributes.volume !== undefined
|
||||
// eslint-disable-next-line eqeqeq
|
||||
&& player.getVolume() != attributes.volume) {
|
||||
|
||||
player.setVolume(attributes.volume);
|
||||
logger.info(`Player change of volume:${attributes.volume}`);
|
||||
}
|
||||
|
||||
if (isPlayerPaused) {
|
||||
player.playVideo();
|
||||
}
|
||||
// eslint-disable-next-line eqeqeq
|
||||
} else if (attributes.state == 'pause') {
|
||||
// if its not paused, pause it
|
||||
player.pauseVideo();
|
||||
|
||||
this.processTime(player, attributes, true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for time in attributes and if needed seek in current player
|
||||
* @param player the player to operate over
|
||||
* @param attributes the attributes with the player state we want
|
||||
* @param forceSeek whether seek should be forced
|
||||
*/
|
||||
processTime(player, attributes, forceSeek) {
|
||||
if (forceSeek) {
|
||||
logger.info('Player seekTo:', attributes.time);
|
||||
player.seekTo(attributes.time);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// check received time and current time
|
||||
const currentPosition = player.getCurrentTime();
|
||||
const diff = Math.abs(attributes.time - currentPosition);
|
||||
|
||||
// if we drift more than the interval for checking
|
||||
// sync, the interval is in milliseconds
|
||||
if (diff > updateInterval / 1000) {
|
||||
logger.info('Player seekTo:', attributes.time,
|
||||
' current time is:', currentPosition, ' diff:', diff);
|
||||
player.seekTo(attributes.time);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks current state of the player and fire an event with the values.
|
||||
*/
|
||||
fireSharedVideoEvent(sendPauseEvent) {
|
||||
// ignore update checks if we are not the owner of the video
|
||||
// or there is still no player defined or we are stopped
|
||||
// (in a process of stopping)
|
||||
if (!APP.conference.isLocalId(this.from) || !this.player
|
||||
|| !this.isSharedVideoShown) {
|
||||
return;
|
||||
}
|
||||
|
||||
const state = this.player.getPlayerState();
|
||||
|
||||
// if its paused and haven't been pause - send paused
|
||||
|
||||
if (state === YT.PlayerState.PAUSED && sendPauseEvent) {
|
||||
this.emitter.emit(UIEvents.UPDATE_SHARED_VIDEO,
|
||||
this.url, 'pause', this.player.getCurrentTime());
|
||||
} else if (state === YT.PlayerState.PLAYING) {
|
||||
// if its playing and it was paused - send update with time
|
||||
// if its playing and was playing just send update with time
|
||||
this.emitter.emit(UIEvents.UPDATE_SHARED_VIDEO,
|
||||
this.url, 'playing',
|
||||
this.player.getCurrentTime(),
|
||||
this.player.isMuted(),
|
||||
this.player.getVolume());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates video, if it's not playing and needs starting or if it's playing
|
||||
* and needs to be paused.
|
||||
* @param id the id of the sender of the command
|
||||
* @param url the video url
|
||||
* @param attributes
|
||||
*/
|
||||
onSharedVideoUpdate(id, url, attributes) {
|
||||
// if we are sending the event ignore
|
||||
if (APP.conference.isLocalId(this.from)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.isSharedVideoShown) {
|
||||
this.onSharedVideoStart(id, url, attributes);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-negated-condition
|
||||
if (!this.player) {
|
||||
this.initialAttributes = attributes;
|
||||
} else {
|
||||
this.processVideoUpdate(this.player, attributes);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop shared video if it is currently showed. If the user started the
|
||||
* shared video is the one in the id (called when user
|
||||
* left and we want to remove video if the user sharing it left).
|
||||
* @param id the id of the sender of the command
|
||||
*/
|
||||
onSharedVideoStop(id, attributes) {
|
||||
if (!this.isSharedVideoShown) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.from !== id) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.player) {
|
||||
// if there is no error in the player till now,
|
||||
// store the initial attributes
|
||||
if (!this.errorInPlayer) {
|
||||
this.initialAttributes = attributes;
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
this.emitter.removeListener(UIEvents.AUDIO_MUTED,
|
||||
this.localAudioMutedListener);
|
||||
this.localAudioMutedListener = null;
|
||||
|
||||
APP.store.dispatch(participantLeft(this.url, APP.conference._room));
|
||||
|
||||
VideoLayout.showLargeVideoContainer(SHARED_VIDEO_CONTAINER_TYPE, false)
|
||||
.then(() => {
|
||||
VideoLayout.removeLargeVideoContainer(
|
||||
SHARED_VIDEO_CONTAINER_TYPE);
|
||||
|
||||
if (this.player) {
|
||||
this.player.destroy();
|
||||
this.player = null;
|
||||
} else if (this.errorInPlayer) {
|
||||
// if there is an error in player, remove that instance
|
||||
this.errorInPlayer.destroy();
|
||||
this.errorInPlayer = null;
|
||||
}
|
||||
this.smartAudioUnmute();
|
||||
|
||||
// revert to original behavior (prevents pausing
|
||||
// for participants not sharing the video to pause it)
|
||||
$('#sharedVideo').css('pointer-events', 'auto');
|
||||
|
||||
this.emitter.emit(
|
||||
UIEvents.UPDATE_SHARED_VIDEO, null, 'removed');
|
||||
});
|
||||
|
||||
this.url = null;
|
||||
this.isSharedVideoShown = false;
|
||||
this.initialAttributes = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Receives events for local audio mute/unmute by local user.
|
||||
* @param muted boolena whether it is muted or not.
|
||||
* @param {boolean} indicates if this mute was a result of user interaction,
|
||||
* i.e. pressing the mute button or it was programmatically triggered
|
||||
*/
|
||||
onLocalAudioMuted(muted, userInteraction) {
|
||||
if (!this.player) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (muted) {
|
||||
this.mutedWithUserInteraction = userInteraction;
|
||||
} else if (this.player.getPlayerState() !== YT.PlayerState.PAUSED) {
|
||||
this.smartPlayerMute(true, false);
|
||||
|
||||
// Check if we need to update other participants
|
||||
this.fireSharedVideoEvent();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Mutes / unmutes the player.
|
||||
* @param mute true to mute the shared video, false - otherwise.
|
||||
* @param {boolean} Indicates if this mute is a consequence of a network
|
||||
* video update or is called locally.
|
||||
*/
|
||||
smartPlayerMute(mute, isVideoUpdate) {
|
||||
if (!this.player.isMuted() && mute) {
|
||||
this.player.mute();
|
||||
|
||||
if (isVideoUpdate) {
|
||||
this.smartAudioUnmute();
|
||||
}
|
||||
} else if (this.player.isMuted() && !mute) {
|
||||
this.player.unMute();
|
||||
if (isVideoUpdate) {
|
||||
this.smartAudioMute();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Smart mike unmute. If the mike is currently muted and it wasn't muted
|
||||
* by the user via the mike button and the volume of the shared video is on
|
||||
* we're unmuting the mike automatically.
|
||||
*/
|
||||
smartAudioUnmute() {
|
||||
if (APP.conference.isLocalAudioMuted()
|
||||
&& !this.mutedWithUserInteraction
|
||||
&& !this.isSharedVideoVolumeOn()) {
|
||||
sendAnalytics(createEvent('audio.unmuted'));
|
||||
logger.log('Shared video: audio unmuted');
|
||||
this.emitter.emit(UIEvents.AUDIO_MUTED, false, false);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Smart mike mute. If the mike isn't currently muted and the shared video
|
||||
* volume is on we mute the mike.
|
||||
*/
|
||||
smartAudioMute() {
|
||||
if (!APP.conference.isLocalAudioMuted()
|
||||
&& this.isSharedVideoVolumeOn()) {
|
||||
sendAnalytics(createEvent('audio.muted'));
|
||||
logger.log('Shared video: audio muted');
|
||||
this.emitter.emit(UIEvents.AUDIO_MUTED, true, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Container for shared video iframe.
|
||||
*/
|
||||
class SharedVideoContainer extends LargeContainer {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
constructor({ url, iframe, player }) {
|
||||
super();
|
||||
|
||||
this.$iframe = $(iframe);
|
||||
this.url = url;
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
show() {
|
||||
const self = this;
|
||||
|
||||
|
||||
return new Promise(resolve => {
|
||||
this.$iframe.fadeIn(300, () => {
|
||||
self.bodyBackground = document.body.style.background;
|
||||
document.body.style.background = 'black';
|
||||
this.$iframe.css({ opacity: 1 });
|
||||
APP.store.dispatch(dockToolbox(true));
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
hide() {
|
||||
const self = this;
|
||||
|
||||
APP.store.dispatch(dockToolbox(false));
|
||||
|
||||
return new Promise(resolve => {
|
||||
this.$iframe.fadeOut(300, () => {
|
||||
document.body.style.background = self.bodyBackground;
|
||||
this.$iframe.css({ opacity: 0 });
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
onHoverIn() {
|
||||
APP.store.dispatch(showToolbox());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
get id() {
|
||||
return this.url;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
resize(containerWidth, containerHeight) {
|
||||
let height, width;
|
||||
|
||||
if (interfaceConfig.VERTICAL_FILMSTRIP) {
|
||||
height = containerHeight - getToolboxHeight();
|
||||
width = containerWidth - Filmstrip.getVerticalFilmstripWidth();
|
||||
} else {
|
||||
height = containerHeight - Filmstrip.getFilmstripHeight();
|
||||
width = containerWidth;
|
||||
}
|
||||
|
||||
this.$iframe.width(width).height(height);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {boolean} do not switch on dominant speaker event if on stage.
|
||||
*/
|
||||
stayOnStage() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,6 @@ import {
|
||||
getParticipantById
|
||||
} from '../../../react/features/base/participants';
|
||||
import { getTrackByMediaTypeAndParticipant } from '../../../react/features/base/tracks';
|
||||
import { SHARED_VIDEO_CONTAINER_TYPE } from '../shared_video/SharedVideo';
|
||||
|
||||
import LargeVideoManager from './LargeVideoManager';
|
||||
import { VIDEO_CONTAINER_TYPE } from './VideoContainer';
|
||||
@@ -89,7 +88,7 @@ const VideoLayout = {
|
||||
const participant = getParticipantById(state, id);
|
||||
|
||||
if (participant?.isFakeParticipant) {
|
||||
return SHARED_VIDEO_CONTAINER_TYPE;
|
||||
return VIDEO_TYPE.CAMERA;
|
||||
}
|
||||
|
||||
const videoTrack = getTrackByMediaTypeAndParticipant(state['features/base/tracks'], MEDIA_TYPE.VIDEO, id);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* global APP, $ */
|
||||
|
||||
/* global APP */
|
||||
import { jitsiLocalStorage } from '@jitsi/js-utils';
|
||||
import Logger from 'jitsi-meet-logger';
|
||||
|
||||
import {
|
||||
@@ -30,44 +30,65 @@ const _shortcuts = new Map();
|
||||
const _shortcutsHelp = new Map();
|
||||
|
||||
/**
|
||||
* True if the keyboard shortcuts are enabled and false if not.
|
||||
* @type {boolean}
|
||||
* The key used to save in local storage if keyboard shortcuts are enabled.
|
||||
*/
|
||||
let enabled = true;
|
||||
const _enableShortcutsKey = 'enableShortcuts';
|
||||
|
||||
/**
|
||||
* Prefer keyboard handling of these elements over global shortcuts.
|
||||
* If a button is triggered using the Spacebar it should not trigger PTT.
|
||||
* If an input element is focused and M is pressed it should not mute audio.
|
||||
*/
|
||||
const _elementsBlacklist = [
|
||||
'input',
|
||||
'textarea',
|
||||
'button',
|
||||
'[role=button]',
|
||||
'[role=menuitem]',
|
||||
'[role=radio]',
|
||||
'[role=tab]',
|
||||
'[role=option]',
|
||||
'[role=switch]',
|
||||
'[role=range]',
|
||||
'[role=log]'
|
||||
];
|
||||
|
||||
/**
|
||||
* An element selector for elements that have their own keyboard handling.
|
||||
*/
|
||||
const _focusedElementsSelector = `:focus:is(${_elementsBlacklist.join(',')})`;
|
||||
|
||||
/**
|
||||
* Maps keycode to character, id of popover for given function and function.
|
||||
*/
|
||||
const KeyboardShortcut = {
|
||||
|
||||
init() {
|
||||
this._initGlobalShortcuts();
|
||||
|
||||
window.onkeyup = e => {
|
||||
if (!enabled) {
|
||||
if (!this.getEnabled()) {
|
||||
return;
|
||||
}
|
||||
const key = this._getKeyboardKey(e).toUpperCase();
|
||||
const num = parseInt(key, 10);
|
||||
|
||||
if (!($(':focus').is('input[type=text]')
|
||||
|| $(':focus').is('input[type=password]')
|
||||
|| $(':focus').is('textarea'))) {
|
||||
if (!document.querySelector(_focusedElementsSelector)) {
|
||||
if (_shortcuts.has(key)) {
|
||||
_shortcuts.get(key).function(e);
|
||||
} else if (!isNaN(num) && num >= 0 && num <= 9) {
|
||||
APP.store.dispatch(clickOnVideo(num));
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
window.onkeydown = e => {
|
||||
if (!enabled) {
|
||||
if (!this.getEnabled()) {
|
||||
return;
|
||||
}
|
||||
if (!($(':focus').is('input[type=text]')
|
||||
|| $(':focus').is('input[type=password]')
|
||||
|| $(':focus').is('textarea'))) {
|
||||
const focusedElement = document.querySelector(_focusedElementsSelector);
|
||||
|
||||
if (!focusedElement) {
|
||||
if (this._getKeyboardKey(e).toUpperCase() === ' ') {
|
||||
if (APP.conference.isLocalAudioMuted()) {
|
||||
sendAnalytics(createShortcutEvent(
|
||||
@@ -77,6 +98,11 @@ const KeyboardShortcut = {
|
||||
APP.conference.muteAudio(false);
|
||||
}
|
||||
}
|
||||
} else if (this._getKeyboardKey(e).toUpperCase() === 'ESCAPE') {
|
||||
// Allow to remove focus from selected elements using ESC key.
|
||||
if (focusedElement && focusedElement.blur) {
|
||||
focusedElement.blur();
|
||||
}
|
||||
}
|
||||
};
|
||||
},
|
||||
@@ -86,7 +112,13 @@ const KeyboardShortcut = {
|
||||
* @param {boolean} value - the new value.
|
||||
*/
|
||||
enable(value) {
|
||||
enabled = value;
|
||||
jitsiLocalStorage.setItem(_enableShortcutsKey, value);
|
||||
},
|
||||
|
||||
getEnabled() {
|
||||
// Should be enabled if not explicitly set to false
|
||||
// eslint-disable-next-line no-unneeded-ternary
|
||||
return jitsiLocalStorage.getItem(_enableShortcutsKey) === 'false' ? false : true;
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -110,20 +142,23 @@ const KeyboardShortcut = {
|
||||
* @param exec the function to be executed when the shortcut is pressed
|
||||
* @param helpDescription the description of the shortcut that would appear
|
||||
* in the help menu
|
||||
* @param altKey whether or not the alt key must be pressed.
|
||||
*/
|
||||
registerShortcut(// eslint-disable-line max-params
|
||||
shortcutChar,
|
||||
shortcutAttr,
|
||||
exec,
|
||||
helpDescription) {
|
||||
_shortcuts.set(shortcutChar, {
|
||||
helpDescription,
|
||||
altKey = false) {
|
||||
_shortcuts.set(altKey ? `:${shortcutChar}` : shortcutChar, {
|
||||
character: shortcutChar,
|
||||
function: exec,
|
||||
shortcutAttr
|
||||
shortcutAttr,
|
||||
altKey
|
||||
});
|
||||
|
||||
if (helpDescription) {
|
||||
this._addShortcutToHelp(shortcutChar, helpDescription);
|
||||
this._addShortcutToHelp(altKey ? `:${shortcutChar}` : shortcutChar, helpDescription);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -132,9 +167,10 @@ const KeyboardShortcut = {
|
||||
*
|
||||
* @param shortcutChar unregisters the given shortcut, which means it will
|
||||
* no longer be usable
|
||||
* @param altKey whether or not shortcut is combo with alt key
|
||||
*/
|
||||
unregisterShortcut(shortcutChar) {
|
||||
_shortcuts.delete(shortcutChar);
|
||||
unregisterShortcut(shortcutChar, altKey = false) {
|
||||
_shortcuts.delete(altKey ? `:${shortcutChar}` : shortcutChar);
|
||||
_shortcutsHelp.delete(shortcutChar);
|
||||
},
|
||||
|
||||
@@ -143,6 +179,15 @@ const KeyboardShortcut = {
|
||||
* @returns {string} e.key or something close if not supported
|
||||
*/
|
||||
_getKeyboardKey(e) {
|
||||
// If alt is pressed a different char can be returned so this takes
|
||||
// the char from the code. It also prefixes with a colon to differentiate
|
||||
// alt combo from simple keypress.
|
||||
if (e.altKey) {
|
||||
const key = e.code.replace('Key', '');
|
||||
|
||||
return `:${key}`;
|
||||
}
|
||||
|
||||
// If e.key is a string, then it is assumed it already plainly states
|
||||
// the key pressed. This may not be true in all cases, such as with Edge
|
||||
// and "?", when the browser cannot properly map a key press event to a
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user