diff --git a/app/src/RoomClient.js b/app/src/RoomClient.js index 2683985e..615b35f9 100644 --- a/app/src/RoomClient.js +++ b/app/src/RoomClient.js @@ -3588,90 +3588,117 @@ export default class RoomClient ([ track ] = stream.getVideoTracks()); - let producer; + let exists = false; - if (this._useSimulcast) + this._extraVideoProducers.forEach(function(value) { - // If VP9 is the only available video codec then use SVC. - const firstVideoCodec = this._mediasoupDevice - .rtpCapabilities - .codecs - .find((c) => c.kind === 'video'); + if (value._track.label===track.label) + { + exists=true; + } + }); - let encodings; + if (!exists) + { - if (firstVideoCodec.mimeType.toLowerCase() === 'video/vp9') - encodings = VIDEO_KSVC_ENCODINGS; - else if ('simulcastEncodings' in window.config) - encodings = window.config.simulcastEncodings; - else - encodings = VIDEO_SIMULCAST_ENCODINGS; + let producer; - producer = await this._sendTransport.produce( - { - track, - encodings, - codecOptions : + if (this._useSimulcast) + { + // If VP9 is the only available video codec then use SVC. + const firstVideoCodec = this._mediasoupDevice + .rtpCapabilities + .codecs + .find((c) => c.kind === 'video'); + + let encodings; + + if (firstVideoCodec.mimeType.toLowerCase() === 'video/vp9') + encodings = VIDEO_KSVC_ENCODINGS; + else if ('simulcastEncodings' in window.config) + encodings = window.config.simulcastEncodings; + else + encodings = VIDEO_SIMULCAST_ENCODINGS; + + producer = await this._sendTransport.produce( { - videoGoogleStartBitrate : 1000 - }, + track, + encodings, + codecOptions : + { + videoGoogleStartBitrate : 1000 + }, + appData : + { + source : 'extravideo' + } + }); + } + else + { + producer = await this._sendTransport.produce({ + track, appData : { source : 'extravideo' } }); + } + + this._extraVideoProducers.set(producer.id, producer); + + store.dispatch(producerActions.addProducer( + { + id : producer.id, + deviceLabel : device.label, + source : 'extravideo', + paused : producer.paused, + track : producer.track, + rtpParameters : producer.rtpParameters, + codec : producer.rtpParameters.codecs[0].mimeType.split('/')[1] + })); + + // store.dispatch(settingsActions.setSelectedWebcamDevice(deviceId)); + + await this._updateWebcams(); + + producer.on('transportclose', () => + { + this._extraVideoProducers.delete(producer.id); + + producer = null; + }); + + producer.on('trackended', () => + { + store.dispatch(requestActions.notify( + { + type : 'error', + text : intl.formatMessage({ + id : 'devices.cameraDisconnected', + defaultMessage : 'Camera disconnected' + }) + })); + + this.disableExtraVideo(producer.id) + .catch(() => {}); + }); + + logger.debug('addExtraVideo() succeeded'); + } else { - producer = await this._sendTransport.produce({ - track, - appData : - { - source : 'extravideo' - } - }); - } - - this._extraVideoProducers.set(producer.id, producer); - - store.dispatch(producerActions.addProducer( - { - id : producer.id, - deviceLabel : device.label, - source : 'extravideo', - paused : producer.paused, - track : producer.track, - rtpParameters : producer.rtpParameters, - codec : producer.rtpParameters.codecs[0].mimeType.split('/')[1] - })); - - // store.dispatch(settingsActions.setSelectedWebcamDevice(deviceId)); - - await this._updateWebcams(); - - producer.on('transportclose', () => - { - this._extraVideoProducers.delete(producer.id); - - producer = null; - }); - - producer.on('trackended', () => - { + logger.error('addExtraVideo() duplicate'); store.dispatch(requestActions.notify( { type : 'error', text : intl.formatMessage({ - id : 'devices.cameraDisconnected', - defaultMessage : 'Camera disconnected' + id : 'room.extraVideoDuplication', + defaultMessage : 'Extra videodevice duplication errordefault' }) })); - - this.disableExtraVideo(producer.id) - .catch(() => {}); - }); - - logger.debug('addExtraVideo() succeeded'); + } } catch (error) { diff --git a/app/src/translations/cn.json b/app/src/translations/cn.json index 14c5885f..3a620a25 100644 --- a/app/src/translations/cn.json +++ b/app/src/translations/cn.json @@ -59,6 +59,7 @@ "room.raisedHand": null, "room.loweredHand": null, "room.extraVideo": null, + "room.extraVideoDuplication": null, "room.overRoomLimit": null, "room.help": null, "room.about": null, diff --git a/app/src/translations/cs.json b/app/src/translations/cs.json index 163b59c8..27488304 100644 --- a/app/src/translations/cs.json +++ b/app/src/translations/cs.json @@ -58,6 +58,7 @@ "room.raisedHand": null, "room.loweredHand": null, "room.extraVideo": null, + "room.extraVideoDuplication": null, "room.overRoomLimit": null, "room.help": null, "room.about": null, diff --git a/app/src/translations/de.json b/app/src/translations/de.json index 5f3ebb93..b91d8305 100644 --- a/app/src/translations/de.json +++ b/app/src/translations/de.json @@ -59,6 +59,7 @@ "room.raisedHand": "{displayName} hebt die Hand", "room.loweredHand": "{displayName} senkt die Hand", "room.extraVideo": "Video hinzufügen", + "room.extraVideoDuplication": null, "room.overRoomLimit": "Der Raum ist voll, probiere es später nochmal", "room.help": "Hilfe", "room.about": "Über", diff --git a/app/src/translations/dk.json b/app/src/translations/dk.json index 058baac2..25de536e 100644 --- a/app/src/translations/dk.json +++ b/app/src/translations/dk.json @@ -59,6 +59,7 @@ "room.raisedHand": null, "room.loweredHand": null, "room.extraVideo": null, + "room.extraVideoDuplication": null, "room.overRoomLimit": null, "room.help": null, "room.about": null, diff --git a/app/src/translations/el.json b/app/src/translations/el.json index 91be893b..a7a8c53e 100644 --- a/app/src/translations/el.json +++ b/app/src/translations/el.json @@ -59,6 +59,7 @@ "room.raisedHand": null, "room.loweredHand": null, "room.extraVideo": null, + "room.extraVideoDuplication": null, "room.overRoomLimit": null, "room.help": null, "room.about": null, diff --git a/app/src/translations/en.json b/app/src/translations/en.json index f9f05aab..f598d98d 100644 --- a/app/src/translations/en.json +++ b/app/src/translations/en.json @@ -59,6 +59,7 @@ "room.raisedHand": "{displayName} raised their hand", "room.loweredHand": "{displayName} put their hand down", "room.extraVideo": "Extra video", + "room.extraVideoDuplication": "Extra videodevice duplication error", "room.overRoomLimit": "The room is full, retry after some time.", "room.help": "Help", "room.about": "About", diff --git a/app/src/translations/es.json b/app/src/translations/es.json index 3c45a5af..5ac08349 100644 --- a/app/src/translations/es.json +++ b/app/src/translations/es.json @@ -59,6 +59,7 @@ "room.raisedHand": null, "room.loweredHand": null, "room.extraVideo": null, + "room.extraVideoDuplication": null, "room.overRoomLimit": null, "room.help": null, "room.about": null, diff --git a/app/src/translations/fr.json b/app/src/translations/fr.json index 0389d8de..28a1b3a8 100644 --- a/app/src/translations/fr.json +++ b/app/src/translations/fr.json @@ -59,6 +59,7 @@ "room.raisedHand": null, "room.loweredHand": null, "room.extraVideo": null, + "room.extraVideoDuplication": null, "room.overRoomLimit": null, "room.help": null, "room.about": null, diff --git a/app/src/translations/hi.json b/app/src/translations/hi.json index c3058a3d..74d84fd7 100644 --- a/app/src/translations/hi.json +++ b/app/src/translations/hi.json @@ -59,6 +59,7 @@ "room.raisedHand": "{displayName} ने हाथ ऊपर कीया है", "room.loweredHand": "{displayName} ने हाथ नीचे कीया है ", "room.extraVideo": "अतीरिक्त विडियो", + "room.extraVideoDuplication": null, "room.overRoomLimit": "कमरा रिक्त नहीं है, कुछ देर बाद कोशिश करें", "room.help": "सहायता", "room.about": "बारे में", diff --git a/app/src/translations/hr.json b/app/src/translations/hr.json index 3a89cd9a..0fb3da77 100644 --- a/app/src/translations/hr.json +++ b/app/src/translations/hr.json @@ -59,6 +59,7 @@ "room.raisedHand": "{displayName} je podigao ruku", "room.loweredHand": "{displayName} je spustio ruku", "room.extraVideo": "Dodatni video", + "room.extraVideoDuplication": null, "room.overRoomLimit": "Soba je popunjena, pokušajte ponovno kasnije.", "room.help": "Pomoć", "room.about": "O programu", diff --git a/app/src/translations/hu.json b/app/src/translations/hu.json index 4e7781bc..e9a4fbba 100644 --- a/app/src/translations/hu.json +++ b/app/src/translations/hu.json @@ -59,14 +59,15 @@ "room.raisedHand": "{displayName} jelentkezik", "room.loweredHand": "{displayName} leeresztette a kezét", "room.extraVideo": "Kiegészítő videó", + "room.extraVideoDuplication": "Duplikációs hiba", "room.overRoomLimit": "A konferenciaszoba betelt..", "room.help": "Segítség", "room.about": "Névjegy", "room.shortcutKeys": "Billentyűparancsok", "room.browsePeersSpotlight": "Résztvevők böngészése", "room.stopAllScreenSharing": "Összes képernyőmegosztás leállítása", - "room.hideSelfView": null, - "room.showSelfView": null, + "room.hideSelfView": "Saját kamerakép elrejtése", + "room.showSelfView": "Saját kamerakép megjelenítése", "me.mutedPTT": "Némítva vagy, ha beszélnél nyomd le a SZÓKÖZ billentyűt", diff --git a/app/src/translations/it.json b/app/src/translations/it.json index edf7ba70..341eea09 100644 --- a/app/src/translations/it.json +++ b/app/src/translations/it.json @@ -59,6 +59,7 @@ "room.raisedHand": "{displayName} ha alzato la mano", "room.loweredHand": "{displayName} ha abbassato la mano", "room.extraVideo": "Video extra", + "room.extraVideoDuplication": null, "room.overRoomLimit": "La stanza è piena, riprova più tardi.", "room.help": "Aiuto", "room.about": "Informazioni su", diff --git a/app/src/translations/kk.json b/app/src/translations/kk.json index 966a33a7..d7777f13 100644 --- a/app/src/translations/kk.json +++ b/app/src/translations/kk.json @@ -59,6 +59,7 @@ "room.raisedHand": "{displayName} қолын көтерді", "room.loweredHand": "{displayName} қолын түсірді", "room.extraVideo": "Қосымша бейне", + "room.extraVideoDuplication": null, "room.overRoomLimit": "Бейнеконференция толды, біраз уақыттан кейін қайталап көріңіз.", "room.help": "Көмек", "room.about": "Біз туралы", diff --git a/app/src/translations/lv.json b/app/src/translations/lv.json index 21731ec2..cba836d0 100644 --- a/app/src/translations/lv.json +++ b/app/src/translations/lv.json @@ -59,6 +59,7 @@ "room.raisedHand": "{displayName} pacēla roku", "room.loweredHand": "{displayName} nolaida roku", "room.extraVideo": "Papildus video", + "room.extraVideoDuplication": null, "room.help": null, "room.about": null, "room.shortcutKeys": null, diff --git a/app/src/translations/nb.json b/app/src/translations/nb.json index 66526bf9..9064212b 100644 --- a/app/src/translations/nb.json +++ b/app/src/translations/nb.json @@ -59,6 +59,7 @@ "room.raisedHand": "{displayName} rakk opp hånden", "room.loweredHand": "{displayName} tok ned hånden", "room.extraVideo": "Ekstra video", + "room.extraVideoDuplication": null, "room.overRoomLimit": "Rommet er fullt, prøv igjen om litt.", "room.help": "Hjelp", "room.about": "Om", diff --git a/app/src/translations/pl.json b/app/src/translations/pl.json index 3a45adbb..8b259435 100644 --- a/app/src/translations/pl.json +++ b/app/src/translations/pl.json @@ -59,6 +59,7 @@ "room.raisedHand": "{displayName} podniósł rękę", "room.loweredHand": "{displayName} opuścił rękę", "room.extraVideo": "Dodatkowy strumień wideo", + "room.extraVideoDuplication": null, "room.overRoomLimit": "Pokój jest pełny, spróbuj za jakiś czas.", "room.help": "Pomoc", "room.about": "O programie", diff --git a/app/src/translations/pt.json b/app/src/translations/pt.json index 17ab0512..8d91382d 100644 --- a/app/src/translations/pt.json +++ b/app/src/translations/pt.json @@ -59,6 +59,7 @@ "room.raisedHand": null, "room.loweredHand": null, "room.extraVideo": null, + "room.extraVideoDuplication": null, "room.overRoomLimit": null, "room.help": null, "room.about": null, diff --git a/app/src/translations/ro.json b/app/src/translations/ro.json index 1877e947..b8d13afa 100644 --- a/app/src/translations/ro.json +++ b/app/src/translations/ro.json @@ -59,6 +59,7 @@ "room.raisedHand": null, "room.loweredHand": null, "room.extraVideo": null, + "room.extraVideoDuplication": null, "room.overRoomLimit": null, "room.help": null, "room.about": null, diff --git a/app/src/translations/ru.json b/app/src/translations/ru.json index 3046169a..039cd36c 100644 --- a/app/src/translations/ru.json +++ b/app/src/translations/ru.json @@ -59,6 +59,7 @@ "room.raisedHand": "{displayName} поднял(а) руку", "room.loweredHand": "{displayName} опустил(а) руку", "room.extraVideo": "Дополнительное видео", + "room.extraVideoDuplication": null, "room.overRoomLimit": "Видеоконференция заполнена, повторите попытку через некоторое время.", "room.help": "Помощь", "room.about": "О нас", diff --git a/app/src/translations/tr.json b/app/src/translations/tr.json index b1536982..b1370813 100644 --- a/app/src/translations/tr.json +++ b/app/src/translations/tr.json @@ -59,6 +59,7 @@ "room.raisedHand": "{displayName} elini kaldırdı", "room.loweredHand": "{displayName} elini indirdi", "room.extraVideo": "İlave video", + "room.extraVideoDuplication": null, "room.overRoomLimit": "Oda dolu, bir süre sonra tekrar deneyin", "room.help": "Yardım", "room.about": "Hakkında", diff --git a/app/src/translations/tw.json b/app/src/translations/tw.json index b37ce1b8..c1eef89d 100644 --- a/app/src/translations/tw.json +++ b/app/src/translations/tw.json @@ -59,6 +59,7 @@ "room.raisedHand": "{displayName} 舉手了", "room.loweredHand": "{displayName} 放下了他的手", "room.extraVideo": "其他視訊", + "room.extraVideoDuplication": null, "room.overRoomLimit": "房間已滿,請稍後重試", "room.help": "幫助", "room.about": "關於", diff --git a/app/src/translations/uk.json b/app/src/translations/uk.json index 2484d4b4..04a25669 100644 --- a/app/src/translations/uk.json +++ b/app/src/translations/uk.json @@ -1,228 +1,229 @@ -{ - "socket.disconnected": "Ви відключені", - "socket.reconnecting": "Ви від'єдналися, намагаєтесь знову підключитися", - "socket.reconnected": "Ви знову підключилися", - "socket.requestError": "Помилка при запиті сервера", - - "room.chooseRoom": "Виберіть назву кімнати, до якої хочете приєднатися", - "room.cookieConsent": "Цей веб-сайт використовує файли cookie для поліпшення роботи користувачів", - "room.consentUnderstand": "Я розумію", - "room.joined": "Ви приєдналися до кімнати", - "room.cantJoin": "Неможливо приєднатися до кімнати", - "room.youLocked": "Ви заблокували кімнату", - "room.cantLock": "Не вдається заблокувати кімнату", - "room.youUnLocked": "Ви розблокували кімнату", - "room.cantUnLock": "Не вдається розблокувати кімнату", - "room.locked": "Кімната зараз заблокована", - "room.unlocked": "Кімната зараз розблокована", - "room.newLobbyPeer": "Новий учасник увійшов у зал очікування", - "room.lobbyPeerLeft": "Учасник вийшов із зала очікування", - "room.lobbyPeerChangedDisplayName": "Учасник у залі очікування змінив ім'я на {displayName}", - "room.lobbyPeerChangedPicture": "Учасник залу очікування змінив зображення", - "room.setAccessCode": "Код доступу до кімнати оновлений", - "room.accessCodeOn": "Код доступу до кімнати зараз активований", - "room.accessCodeOff": "Код доступу до кімнати зараз відключений", - "room.peerChangedDisplayName": "{oldDisplayName} змінив ім'я на {displayName}", - "room.newPeer": "{displayName} приєднався до кімнати", - "room.newFile": "Новий файл є у доступі", - "room.toggleAdvancedMode": "Увімкнено розширений режим", - "room.setDemocratView": "Змінено макет на демократичний вигляд", - "room.setFilmStripView": "Змінено макет на вид фільму", - "room.loggedIn": "Ви ввійшли в систему", - "room.loggedOut": "Ви вийшли з системи", - "room.changedDisplayName": "Відображуване ім’я змінено на {displayName}", - "room.changeDisplayNameError": "Сталася помилка під час зміни вашого відображуваного імені", - "room.chatError": "Не вдається надіслати повідомлення в чаті", - "room.aboutToJoin": "Ви збираєтесь приєднатися до зустрічі", - "room.roomId": "Ідентифікатор кімнати: {roomName}", - "room.setYourName": "Встановіть своє ім'я для участі та виберіть, як ви хочете приєднатися:", - "room.audioOnly": "Тільки аудіо", - "room.audioVideo": "Аудіо та відео", - "room.youAreReady": "Добре, ви готові", - "room.emptyRequireLogin": "Кімната порожня! Ви можете увійти, щоб розпочати зустріч або чекати, поки хост приєднається", - "room.locketWait": "Кімната заблокована - дочекайтеся, поки хтось не впустить вас у ...", - "room.lobbyAdministration": "Адміністрація залу очікування", - "room.peersInLobby": "Учасники залу очікувань", - "room.lobbyEmpty": "Наразі у залі очікувань немає нікого", - "room.hiddenPeers": "{hiddenPeersCount, множина, один {учасник} інший {учасників}}", - "room.me": "Я", - "room.spotlights": "Учасники у центрі уваги", - "room.passive": "Пасивні учасники", - "room.videoPaused": "Це відео призупинено", - "room.muteAll": "Відключити звук всіх участників", - "room.stopAllVideo": "Зупинити все відео", - "room.closeMeeting": "Закрити зустріч", - "room.clearChat": "Очистити чат", - "room.clearFileSharing": "Очистити обмін файлами", - "room.speechUnsupported": "Ваш браузер не підтримує розпізнавання мовлення", - "room.moderatoractions": "Дії модератора", - "room.raisedHand": " {displayName} підняв руку", - "room.loweredHand": " {displayName} опустив руку", - "room.extraVideo": "Додаткове відео", - "room.overRoomLimit": "Кімната переповнена, спробуйте знову через деякий час", - "room.help": "Допомога", - "room.about": "Про нас", - "room.shortcutKeys": "Гарячі клавіші", - "room.browsePeersSpotlight": "Переглянути учасників у центрі уваги", - "room.stopAllScreenSharing": "Зупинити спільне використання екрану", - "room.hideSelfView": null, - "room.showSelfView": null, - - "me.mutedPTT": " У вас вимкнено звук, утримуйте клавішу SPACE-BAR (пробіл), щоб говорити", - "roles.gotRole": "Ви отримали роль {role}", - "roles.lostRole": "Ви втратили роль {role}", - - "tooltip.login": "Увійти", - "tooltip.logout": "Вихід", - "tooltip.admitFromLobby": "Вхід із залу очікувань", - "tooltip.lockRoom": "Заблокувати кімнату", - "tooltip.unLockRoom": "Розблокувати кімнату", - "tooltip.enterFullscreen": "Вивести повний екран", - "tooltip.leaveFullscreen": "Залишити повноекранний екран", - "tooltip.lobby": "Показати зал очікувань", - "tooltip.settings": "Показати налаштування", - "tooltip.participants": "Показати учасників", - "tooltip.kickParticipant": "Вигнати учасника", - "tooltip.muteParticipant": "Вимкнути звук учаснику", - "tooltip.muteParticipantVideo": "Вимкнути відео учаснику", - "tooltip.inSpotlight": null, - "tooltip.isSpeaker": null, - "tooltip.raisedHand": "Підняти руку", - "tooltip.muteScreenSharing": "Відключення спільного використання екрану", - "tooltip.unMuteScreenSharing": null, - "tooltip.unMuteParticipantVideo": null, - "tooltip.unMuteParticipant": null, - "tooltip.addParticipantToSpotlight": null, - "tooltip.removeParticipantFromSpotlight": null, - "tooltip.muteParticipantAudioModerator": "Відключення звуку учасника глобально", - "tooltip.muteParticipantVideoModerator": "Відключення відео учасника глобально", - "tooltip.muteScreenSharingModerator": "Відключення спільного використання екрану учаснику глобально", - - "label.roomName": "Назва кімнати", - "label.chooseRoomButton": "Продовжити", - "label.yourName": "Ваше ім'я", - "label.newWindow": "Нове вікно", - "label.fullscreen": "Повний екран", - "label.openDrawer": "Відкрити ящик", - "label.leave": "Залишити", - "label.chatInput": "Введіть повідомлення чату ...", - "label.chat": "Чат", - "label.filesharing": "Обмін файлами", - "label.participants": "Учасники", - "label.shareFile": "Надіслати файл", - "label.shareGalleryFile": "Поділитися зображенням", - "label.fileSharingUnsupported": "Обмін файлами не підтримується", - "label.unknown": "Невідомо", - "label.democrat": "Демократичний вигляд", - "label.filmstrip": "У вигляді кінострічки", - "label.low": "Низький", - "label.medium": "Середній", - "label.high": "Високий (HD)", - "label.veryHigh": "Дуже високий (FHD)", - "label.ultra": "Ультра (UHD)", - "label.close": "Закрити", - "label.media": "Медіа", - "label.appearance": "Зовнішній вигляд", - "label.advanced": "Розширений", - "label.addVideo": "Додати відео", - "label.promoteAllPeers": "Сприяти всім", - "label.moreActions": "Більше дій", - "label.version": "Версія", - "label.username": null, - "label.password": null, - "label.login": null, - "label.logout": null, - "label.join": null, - - "settings.settings": "Налаштування", - "settings.camera": "Камера", - "settings.selectCamera": "Вибрати відеопристрій", - "settings.cantSelectCamera": "Неможливо вибрати відеопристрій", - "settings.audio": "Аудіопристрій", - "settings.selectAudio": "Вибрати аудіопристрій", - "settings.cantSelectAudio": "Неможливо вибрати аудіопристрій", - "settings.audioOutput": "Пристрій аудіовиходу", - "settings.selectAudioOutput": "Виберіть пристрій аудіовиходу", - "settings.cantSelectAudioOutput": "Неможливо вибрати аудіо вихідний пристрій", - "settings.resolution": "Виберіть роздільну здатність відео", - "settings.frameRate": "Виберіть частоту кадрів відео", - "settings.screenSharingResolution": "Оберіть роздільну здатність екрану", - "settings.screenSharingFrameRate": "Виберіть частоту кадрів для спільного користування екраном", - "settings.layout": "Розміщення кімнати", - "settings.selectRoomLayout": "Вибір розташування кімнати", - "settings.advancedMode": "Розширений режим", - "settings.permanentTopBar": "Постійний верхній рядок", - "settings.aspectRatio": null, - "settings.selectAspectRatio": null, - "settings.lastn": "Кількість видимих відео", - "settings.hiddenControls": "Приховані засоби медіа", - "settings.notificationSounds": "Звуки сповіщення", - "settings.showNotifications": "Показати сповіщення", - "settings.buttonControlBar": "Окремий контроль медіа", - "settings.showAdvancedVideo": "Розширені налаштування відео", - "settings.showAdvancedAudio": "Розширені налаштування звуку", - "settings.echoCancellation": "Видалення відлуння", - "settings.autoGainControl": "Автоматичний контроль підсилення", - "settings.noiseSuppression": "Заглушення шуму", - "settings.drawerOverlayed": "Боковий ящик над вмістом", - "settings.voiceActivatedUnmute": "Активований голос вмикається", - "settings.noiseThreshold": "Поріг шуму", - "settings.mirrorOwnVideo": null, - - "filesharing.saveFileError": "Неможливо зберегти файл", - "filesharing.startingFileShare": "Спроба поділитися файлом", - "filesharing.successfulFileShare": "Файл готовий для обміну", - "filesharing.unableToShare": "Неможливо поділитися файлом", - "filesharing.error": "Виникла помилка обміну файлами", - "filesharing.finished": "Завантаження файлу закінчено", - "filesharing.save": "Зберегти", - "filesharing.sharedFile": "{displayName} поділився файлом", - "filesharing.download": "Завантажити", - "filesharing.missingSeeds": "Якщо цей процес триває тривалий час, може не з’явиться хтось, хто роздає цей торрент. Спробуйте попросити когось перезавантажити потрібний файл.", - - "devices.devicesChanged": "Ваші пристрої змінилися, налаштуйте ваші пристрої в діалоговому вікні налаштувань", - - "devices.enableOnlyMicrophone": null, - "device.audioUnsupported": "Аудіо не підтримується", - "device.activateAudio": "Активувати звук", - "device.muteAudio": "Вимкнути звук", - "device.unMuteAudio": "Увімкнути звук", - - "devices.enableOnlyCamera": null, - "device.videoUnsupported": "Відео не підтримується", - "device.startVideo": "Запустити відео", - "device.stopVideo": "Зупинити відео", - - "device.screenSharingUnsupported": "Обмін екраном не підтримується", - "device.startScreenSharing": "Початок спільного використання екрана", - "device.stopScreenSharing": "Зупинити спільний доступ до екрана", - - "devices.microphoneDisconnected": "Мікрофон відключений", - "devices.microphoneError": "Сталася помилка під час доступу до мікрофона", - "devices.microPhoneMute": "Вимкнено ваш мікрофон", - "devices.micophoneUnMute": "Не ввімкнено ваш мікрофон", - "devices.microphoneEnable": "Увімкнено мікрофон", - "devices.microphoneMuteError": "Не вдається вимкнути мікрофон", - "devices.microphoneUnMuteError": "Неможливо ввімкнути мікрофон", - - "devices.screenSharingDisconnected": "Спільний доступ до екрана відключений", - "devices.screenSharingError": "Сталася помилка під час доступу до екрану", - - "devices.cameraDisconnected": "Камера відключена", - "devices.cameraError": "Під час доступу до камери сталася помилка", - - "devices.enableBothMicrophoneAndCamera": null, - "devices.disableBothMicrophoneAndCamera": null, - "devices.chooseMedia": null, - - "moderator.clearChat": "Модератор очистив чат", - "moderator.clearFiles": "Модератор очистив файли", - "moderator.muteAudio": "Модератор відключив ваше аудіо (ваш звук)", - "moderator.modifyPeerRoles": null, - "moderator.muteVideo": "Модератор відключив ваше відео", - "moderator.stopScreenSharing": "Модератор припинив спільне користування екраном", - - "unsupportedBrowser.titleUnsupportedBrowser": "Виявлено браузер, що не підтримується", - "unsupportedBrowser.titlewebrtcUnavailable": "Необхідна функціональність недоступна у вашому браузері", - "unsupportedBrowser.bodyText": "Цей сервіс зустрічей вимагає функціональності, яка не підтримується вашим браузером. Оновіть або переключіться на інший браузер або перевірте свої налаштування. Браузери, що підтримуються: " -} +{ + "socket.disconnected": "Ви відключені", + "socket.reconnecting": "Ви від'єдналися, намагаєтесь знову підключитися", + "socket.reconnected": "Ви знову підключилися", + "socket.requestError": "Помилка при запиті сервера", + + "room.chooseRoom": "Виберіть назву кімнати, до якої хочете приєднатися", + "room.cookieConsent": "Цей веб-сайт використовує файли cookie для поліпшення роботи користувачів", + "room.consentUnderstand": "Я розумію", + "room.joined": "Ви приєдналися до кімнати", + "room.cantJoin": "Неможливо приєднатися до кімнати", + "room.youLocked": "Ви заблокували кімнату", + "room.cantLock": "Не вдається заблокувати кімнату", + "room.youUnLocked": "Ви розблокували кімнату", + "room.cantUnLock": "Не вдається розблокувати кімнату", + "room.locked": "Кімната зараз заблокована", + "room.unlocked": "Кімната зараз розблокована", + "room.newLobbyPeer": "Новий учасник увійшов у зал очікування", + "room.lobbyPeerLeft": "Учасник вийшов із зала очікування", + "room.lobbyPeerChangedDisplayName": "Учасник у залі очікування змінив ім'я на {displayName}", + "room.lobbyPeerChangedPicture": "Учасник залу очікування змінив зображення", + "room.setAccessCode": "Код доступу до кімнати оновлений", + "room.accessCodeOn": "Код доступу до кімнати зараз активований", + "room.accessCodeOff": "Код доступу до кімнати зараз відключений", + "room.peerChangedDisplayName": "{oldDisplayName} змінив ім'я на {displayName}", + "room.newPeer": "{displayName} приєднався до кімнати", + "room.newFile": "Новий файл є у доступі", + "room.toggleAdvancedMode": "Увімкнено розширений режим", + "room.setDemocratView": "Змінено макет на демократичний вигляд", + "room.setFilmStripView": "Змінено макет на вид фільму", + "room.loggedIn": "Ви ввійшли в систему", + "room.loggedOut": "Ви вийшли з системи", + "room.changedDisplayName": "Відображуване ім’я змінено на {displayName}", + "room.changeDisplayNameError": "Сталася помилка під час зміни вашого відображуваного імені", + "room.chatError": "Не вдається надіслати повідомлення в чаті", + "room.aboutToJoin": "Ви збираєтесь приєднатися до зустрічі", + "room.roomId": "Ідентифікатор кімнати: {roomName}", + "room.setYourName": "Встановіть своє ім'я для участі та виберіть, як ви хочете приєднатися:", + "room.audioOnly": "Тільки аудіо", + "room.audioVideo": "Аудіо та відео", + "room.youAreReady": "Добре, ви готові", + "room.emptyRequireLogin": "Кімната порожня! Ви можете увійти, щоб розпочати зустріч або чекати, поки хост приєднається", + "room.locketWait": "Кімната заблокована - дочекайтеся, поки хтось не впустить вас у ...", + "room.lobbyAdministration": "Адміністрація залу очікування", + "room.peersInLobby": "Учасники залу очікувань", + "room.lobbyEmpty": "Наразі у залі очікувань немає нікого", + "room.hiddenPeers": "{hiddenPeersCount, множина, один {учасник} інший {учасників}}", + "room.me": "Я", + "room.spotlights": "Учасники у центрі уваги", + "room.passive": "Пасивні учасники", + "room.videoPaused": "Це відео призупинено", + "room.muteAll": "Відключити звук всіх участників", + "room.stopAllVideo": "Зупинити все відео", + "room.closeMeeting": "Закрити зустріч", + "room.clearChat": "Очистити чат", + "room.clearFileSharing": "Очистити обмін файлами", + "room.speechUnsupported": "Ваш браузер не підтримує розпізнавання мовлення", + "room.moderatoractions": "Дії модератора", + "room.raisedHand": " {displayName} підняв руку", + "room.loweredHand": " {displayName} опустив руку", + "room.extraVideo": "Додаткове відео", + "room.extraVideoDuplication": null, + "room.overRoomLimit": "Кімната переповнена, спробуйте знову через деякий час", + "room.help": "Допомога", + "room.about": "Про нас", + "room.shortcutKeys": "Гарячі клавіші", + "room.browsePeersSpotlight": "Переглянути учасників у центрі уваги", + "room.stopAllScreenSharing": "Зупинити спільне використання екрану", + "room.hideSelfView": null, + "room.showSelfView": null, + + "me.mutedPTT": " У вас вимкнено звук, утримуйте клавішу SPACE-BAR (пробіл), щоб говорити", + "roles.gotRole": "Ви отримали роль {role}", + "roles.lostRole": "Ви втратили роль {role}", + + "tooltip.login": "Увійти", + "tooltip.logout": "Вихід", + "tooltip.admitFromLobby": "Вхід із залу очікувань", + "tooltip.lockRoom": "Заблокувати кімнату", + "tooltip.unLockRoom": "Розблокувати кімнату", + "tooltip.enterFullscreen": "Вивести повний екран", + "tooltip.leaveFullscreen": "Залишити повноекранний екран", + "tooltip.lobby": "Показати зал очікувань", + "tooltip.settings": "Показати налаштування", + "tooltip.participants": "Показати учасників", + "tooltip.kickParticipant": "Вигнати учасника", + "tooltip.muteParticipant": "Вимкнути звук учаснику", + "tooltip.muteParticipantVideo": "Вимкнути відео учаснику", + "tooltip.inSpotlight": null, + "tooltip.isSpeaker": null, + "tooltip.raisedHand": "Підняти руку", + "tooltip.muteScreenSharing": "Відключення спільного використання екрану", + "tooltip.unMuteScreenSharing": null, + "tooltip.unMuteParticipantVideo": null, + "tooltip.unMuteParticipant": null, + "tooltip.addParticipantToSpotlight": null, + "tooltip.removeParticipantFromSpotlight": null, + "tooltip.muteParticipantAudioModerator": "Відключення звуку учасника глобально", + "tooltip.muteParticipantVideoModerator": "Відключення відео учасника глобально", + "tooltip.muteScreenSharingModerator": "Відключення спільного використання екрану учаснику глобально", + + "label.roomName": "Назва кімнати", + "label.chooseRoomButton": "Продовжити", + "label.yourName": "Ваше ім'я", + "label.newWindow": "Нове вікно", + "label.fullscreen": "Повний екран", + "label.openDrawer": "Відкрити ящик", + "label.leave": "Залишити", + "label.chatInput": "Введіть повідомлення чату ...", + "label.chat": "Чат", + "label.filesharing": "Обмін файлами", + "label.participants": "Учасники", + "label.shareFile": "Надіслати файл", + "label.shareGalleryFile": "Поділитися зображенням", + "label.fileSharingUnsupported": "Обмін файлами не підтримується", + "label.unknown": "Невідомо", + "label.democrat": "Демократичний вигляд", + "label.filmstrip": "У вигляді кінострічки", + "label.low": "Низький", + "label.medium": "Середній", + "label.high": "Високий (HD)", + "label.veryHigh": "Дуже високий (FHD)", + "label.ultra": "Ультра (UHD)", + "label.close": "Закрити", + "label.media": "Медіа", + "label.appearance": "Зовнішній вигляд", + "label.advanced": "Розширений", + "label.addVideo": "Додати відео", + "label.promoteAllPeers": "Сприяти всім", + "label.moreActions": "Більше дій", + "label.version": "Версія", + "label.username": null, + "label.password": null, + "label.login": null, + "label.logout": null, + "label.join": null, + + "settings.settings": "Налаштування", + "settings.camera": "Камера", + "settings.selectCamera": "Вибрати відеопристрій", + "settings.cantSelectCamera": "Неможливо вибрати відеопристрій", + "settings.audio": "Аудіопристрій", + "settings.selectAudio": "Вибрати аудіопристрій", + "settings.cantSelectAudio": "Неможливо вибрати аудіопристрій", + "settings.audioOutput": "Пристрій аудіовиходу", + "settings.selectAudioOutput": "Виберіть пристрій аудіовиходу", + "settings.cantSelectAudioOutput": "Неможливо вибрати аудіо вихідний пристрій", + "settings.resolution": "Виберіть роздільну здатність відео", + "settings.frameRate": "Виберіть частоту кадрів відео", + "settings.screenSharingResolution": "Оберіть роздільну здатність екрану", + "settings.screenSharingFrameRate": "Виберіть частоту кадрів для спільного користування екраном", + "settings.layout": "Розміщення кімнати", + "settings.selectRoomLayout": "Вибір розташування кімнати", + "settings.advancedMode": "Розширений режим", + "settings.permanentTopBar": "Постійний верхній рядок", + "settings.aspectRatio": null, + "settings.selectAspectRatio": null, + "settings.lastn": "Кількість видимих відео", + "settings.hiddenControls": "Приховані засоби медіа", + "settings.notificationSounds": "Звуки сповіщення", + "settings.showNotifications": "Показати сповіщення", + "settings.buttonControlBar": "Окремий контроль медіа", + "settings.showAdvancedVideo": "Розширені налаштування відео", + "settings.showAdvancedAudio": "Розширені налаштування звуку", + "settings.echoCancellation": "Видалення відлуння", + "settings.autoGainControl": "Автоматичний контроль підсилення", + "settings.noiseSuppression": "Заглушення шуму", + "settings.drawerOverlayed": "Боковий ящик над вмістом", + "settings.voiceActivatedUnmute": "Активований голос вмикається", + "settings.noiseThreshold": "Поріг шуму", + "settings.mirrorOwnVideo": null, + + "filesharing.saveFileError": "Неможливо зберегти файл", + "filesharing.startingFileShare": "Спроба поділитися файлом", + "filesharing.successfulFileShare": "Файл готовий для обміну", + "filesharing.unableToShare": "Неможливо поділитися файлом", + "filesharing.error": "Виникла помилка обміну файлами", + "filesharing.finished": "Завантаження файлу закінчено", + "filesharing.save": "Зберегти", + "filesharing.sharedFile": "{displayName} поділився файлом", + "filesharing.download": "Завантажити", + "filesharing.missingSeeds": "Якщо цей процес триває тривалий час, може не з’явиться хтось, хто роздає цей торрент. Спробуйте попросити когось перезавантажити потрібний файл.", + + "devices.devicesChanged": "Ваші пристрої змінилися, налаштуйте ваші пристрої в діалоговому вікні налаштувань", + + "devices.enableOnlyMicrophone": null, + "device.audioUnsupported": "Аудіо не підтримується", + "device.activateAudio": "Активувати звук", + "device.muteAudio": "Вимкнути звук", + "device.unMuteAudio": "Увімкнути звук", + + "devices.enableOnlyCamera": null, + "device.videoUnsupported": "Відео не підтримується", + "device.startVideo": "Запустити відео", + "device.stopVideo": "Зупинити відео", + + "device.screenSharingUnsupported": "Обмін екраном не підтримується", + "device.startScreenSharing": "Початок спільного використання екрана", + "device.stopScreenSharing": "Зупинити спільний доступ до екрана", + + "devices.microphoneDisconnected": "Мікрофон відключений", + "devices.microphoneError": "Сталася помилка під час доступу до мікрофона", + "devices.microPhoneMute": "Вимкнено ваш мікрофон", + "devices.micophoneUnMute": "Не ввімкнено ваш мікрофон", + "devices.microphoneEnable": "Увімкнено мікрофон", + "devices.microphoneMuteError": "Не вдається вимкнути мікрофон", + "devices.microphoneUnMuteError": "Неможливо ввімкнути мікрофон", + + "devices.screenSharingDisconnected": "Спільний доступ до екрана відключений", + "devices.screenSharingError": "Сталася помилка під час доступу до екрану", + + "devices.cameraDisconnected": "Камера відключена", + "devices.cameraError": "Під час доступу до камери сталася помилка", + + "devices.enableBothMicrophoneAndCamera": null, + "devices.disableBothMicrophoneAndCamera": null, + "devices.chooseMedia": null, + + "moderator.clearChat": "Модератор очистив чат", + "moderator.clearFiles": "Модератор очистив файли", + "moderator.muteAudio": "Модератор відключив ваше аудіо (ваш звук)", + "moderator.modifyPeerRoles": null, + "moderator.muteVideo": "Модератор відключив ваше відео", + "moderator.stopScreenSharing": "Модератор припинив спільне користування екраном", + + "unsupportedBrowser.titleUnsupportedBrowser": "Виявлено браузер, що не підтримується", + "unsupportedBrowser.titlewebrtcUnavailable": "Необхідна функціональність недоступна у вашому браузері", + "unsupportedBrowser.bodyText": "Цей сервіс зустрічей вимагає функціональності, яка не підтримується вашим браузером. Оновіть або переключіться на інший браузер або перевірте свої налаштування. Браузери, що підтримуються: " +}