Compare commits

...

134 Commits

Author SHA1 Message Date
Aaron van Meerten
a49b6140e0 feature: empty token verification allow list 2022-12-15 09:02:48 -06:00
Saúl Ibarra Corretgé
c30d1e7479 fix(rn,dynamic-branding) fix handling bogus response from the backend 2022-12-15 12:19:17 +01:00
Avram Tudor
cbbe58a1ec fix(prejoin) fix prejoin app dialogs not being visible (#12689) 2022-12-15 11:29:08 +02:00
Robert Pintilii
aef5328aeb ref(TS) Convert some features to TS (#12651) 2022-12-14 14:23:07 +02:00
Gabriel Borlea
f5ac1b6271 chore(deps) lib-jitsi-meet@latest (#12684)
https://github.com/jitsi/lib-jitsi-meet/compare/v1556.0.0+d9ee8f59...v1557.0.0+8df33524
2022-12-14 12:12:45 +02:00
Titus Moldovan
ca9f0a6788 fix(rn,screenshare) rework the logic for unified-plan with multi-stream 2022-12-14 08:35:33 +01:00
Saúl Ibarra Corretgé
e7c5ae5936 fix(rn,config) don't disable multi-stream sending on RN
We don't plan to send both (camera and screen) streams at once, but we
do plan to align with web and have both streams at the same time, with
the camera being muted when we start screen sharing.
2022-12-14 08:35:33 +01:00
Saúl Ibarra Corretgé
c43a319576 feat(deps,rn) update react-native-webrtc@106
Brings in Unified Plan support!
2022-12-14 08:35:33 +01:00
Saúl Ibarra Corretgé
585c9aa0d2 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1554.0.0+a25023e7...v1556.0.0+d9ee8f59
2022-12-14 08:34:36 +01:00
Horatiu Muresan
768f10d966 feat(route) Redirect to a custom welcome page 2022-12-13 22:04:11 +02:00
Horatiu Muresan
704740969b fix(prejoin) Fix missing lib error 2022-12-13 22:04:11 +02:00
damencho
d444a45f00 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1553.0.0+57646337...v1554.0.0+a25023e7
2022-12-13 10:18:31 -06:00
Дамян Минков
9fbbe05d6c feat: Adds docs, config and scripts around the visitor mode. (#12658)
* feat: Moves handle of vnode from conferenceIQ stanza error to result.

* feat: Handles redirected to visitor node event.

* feat: Adds README and configurations.

* squash: Drop comment.

* copy edits

* image fix

* fix background for dark mode

* fix the background

* feat: Update s2soutinjection.

* Update README commands formatting.

* Update doc/extra-large-conference/README.md

Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>

* squash: Creates a generateVisitorConfig helper.

* squash: Moves the folder from doc.

* squash: Update example.

* squash: Drop config.

* squash: Rename var to look like template.

* squash: Fix plugins path.

* squash: Fix sort order of import.

* squash: Fix lint errors.

Co-authored-by: scott boone <scott.e.boone@gmail.com>
Co-authored-by: Scott Boone <scott.boone@8x8.com>
Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
2022-12-13 08:26:22 -06:00
Gabriel Borlea
3445c513ba chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1549.0.0+877c4546...v1553.0.0+57646337
2022-12-13 15:14:01 +01:00
Mihaela Dumitru
6a4276b4c8 fix(salesforce) require selected records + styling (#12669) 2022-12-12 19:15:45 +02:00
damencho
338b02a6b6 feat: Prints the error on problem sharing YouTube video. 2022-12-12 09:39:25 -06:00
damencho
ef2631e95a fix: Error in patching config.js 2022-12-12 09:14:16 -06:00
damencho
226ef9f33d fix: Fixes undefined error in some cases after patching config.js. 2022-12-12 08:46:42 -06:00
tmoldovan8x8
91ec5307ab fix(android) adds default notification icons 2022-12-12 15:12:05 +02:00
Nils Ohlmeier
fe0b7d3acc chore(deps): bumped rtcstats 9.5.0 -> 9.5.1 (#12664) 2022-12-09 21:14:00 -08:00
Saúl Ibarra Corretgé
9533650594 fix(e2ee) avoid running middleware when there is no conference
When hanging up, the conference transitions to undefined, so we should
skip all processing related to setting up listeners for a new
conference.
2022-12-09 14:44:18 +01:00
Avram Tudor
d7bedb2e07 ref(misc) remove unused code for dock / undock (#12661)
* ref(misc) remove unused code for dock / undock

* remove translations
2022-12-09 15:19:57 +02:00
Mihaela Dumitru
33e4da32e2 feat(giphy) disable feature from dynamic branding (#12620) 2022-12-08 16:02:31 +02:00
bgrozev
9a8a8ef7ad Bump js-utils to 2.0.5 (filter room names). (#12625)
* Bump js-utils to 2.0.5 (filter room names).
2022-12-07 10:35:42 -06:00
Calin-Teodor
703ed731c8 feat(base/redux): fixed local storage on native 2022-12-07 18:16:53 +02:00
William Liang
83dfb67f23 fix(video-mute) prevent multiple camera track creation 2022-12-07 10:23:20 -05:00
Robert Pintilii
51bdf67cf2 fix(dialog) Fix Dialog on mobile (#12650)
Use JitsiPortal on mobile
2022-12-07 11:27:55 +02:00
damencho
3adbda791c chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1548.0.0+8acdeb1d...v1549.0.0+877c4546
2022-12-06 19:10:02 -06:00
Jaya Allamsetty
924bb0e7ff chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1545.0.0+f8e587f7...v1548.0.0+8acdeb1d
2022-12-06 16:31:06 -06:00
tmoldovan8x8
4c9bfe3d4d feat(E2EE) add initial SAS verification UI 2022-12-06 18:29:33 +01:00
Jaya Allamsetty
1139311809 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1543.0.0+c57ac97e...v1545.0.0+f8e587f7
2022-12-06 10:53:20 -05:00
Calinteodor
2ad2e6ff0e feat(polls/web): removed sort options from polls (#12641)
* feat(polls/web): removed sort options from polls
2022-12-05 15:18:24 +02:00
damencho
46cc2e37ae feat: Update lib-jitsi-meet.
Fixes version of binary ljm.
2022-12-02 15:31:33 -06:00
Saúl Ibarra Corretgé
0ebac2ac6d fixup! 2022-12-02 19:05:47 +01:00
Saúl Ibarra Corretgé
90e33ee799 fixup devcontainer 2022-12-02 19:05:47 +01:00
Saúl Ibarra Corretgé
be982ae996 fix(build) use http for GitHub codespaces 2022-12-02 19:05:47 +01:00
Saúl Ibarra Corretgé
56114fe863 Create devcontainer.json 2022-12-02 19:05:47 +01:00
Saúl Ibarra Corretgé
a2e8a7f28f fix(toolbox) hide drawer after toggling camera
Fixes: https://github.com/jitsi/jitsi-meet/issues/12628
2022-12-02 15:31:44 +01:00
Pawel Domas
af072c3070 fix: get the current conference
state['features/base/conference'].conference is not the right way to get the current conference.
See getCurrentConference selector - it accounts for joining and other states.
2022-12-01 16:02:35 -05:00
Jaya Allamsetty
f42772ec5b chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1539.0.0+eb4873d2...v1541.0.0+9b34e0f7
2022-11-29 15:28:51 -05:00
Gabriel Borlea
2556a7ab77 fix(face-landmarks): assign empty array to facelandmarks in speakerstats if undefined 2022-11-29 19:12:43 +01:00
Charles Zablit
3cbf160f2b fix: always display transcription (#12325)
* feat: always display transcription

* fix: unused import
2022-11-29 09:50:19 -06:00
Дамян Минков
744960bb1a feat: Several module optimizations to avoid constant parsing of jids. (#12594)
* feat: Several module optimizations to avoid constant parsing of jids.

Caches the parsed values in a rotating table with limited size.
Skips constant creating of a stanza with never changing values - create it once and then just clone it.

* squash: Fixes extract_subdomain multiple values.

* squash: Fix table values when there is a nil element.

* squash: Fix skipping the roomless IQs.

* squash: Fix comments.
2022-11-28 14:18:59 -06:00
Дамян Минков
76471a0ea9 feat: Modules for implementing visitor nodes. (#12593)
* feat: Modules for implementing visitor nodes.

Still WIP, uses visitor nodes prosodies where we create the main participants and forward the visitors to watch. Used for huge conferences.

* squash: Fix comments.
2022-11-28 14:18:33 -06:00
Robert Pintilii
0ba033e07d ref(TS) Improve TS (#12612)
Remove unnecessary @ts-ignores
Remove unnecessary eslint-disable
2022-11-28 12:52:45 +02:00
Robert Pintilii
cb3fb3ada9 ref(TS) Convert some features to TS (#12611) 2022-11-28 12:52:24 +02:00
Calinteodor
48a6472b3b feat(lobby/prejoin/native): style updates (#12615)
feat(lobby/prejoin/native): style updates (#12615)
2022-11-25 13:59:45 +02:00
Roberto Vieira
691e92b7ec fix(ios) make initialPositionInSuperView a variable
Fixes: https://github.com/jitsi/jitsi-meet/issues/12446
2022-11-25 10:44:27 +01:00
Calin-Teodor
6e36340a83 feat(conference): fixed padding 2022-11-24 19:41:56 +02:00
Mihaela Dumitru
ae424c95de chore(whiteboard): bump excalidraw version (#12614) 2022-11-24 17:43:08 +02:00
Mihaela Dumitru
95b2979eb3 feat(whiteboard): use jitsi room name for socket io connection (#12610) 2022-11-24 14:20:40 +02:00
_norbert
a0c130568b fix(lang) update Hungarian translation 2022-11-23 19:33:13 +01:00
Robert Pintilii
643cc2db81 ref(TS) Convert some features to TS (#12591) 2022-11-23 11:12:26 +02:00
Calinteodor
6bce0bc917 fix: Native styles fixes (#12606)
* feat(conference/native): update indicator styles

* feat(prejoin/native): removed unnecessary styles

* feat(mobile/navigation): fixed header buttons style

* feat(mobile/navigation): fixed linter
2022-11-22 21:50:16 +02:00
Calinteodor
93566e313e feat(native): Last mobile release UI fixes (#12603)
* feat(base/modal): order props alphabetically

* feat(base/ui): added ripple color for tertiary button

* feat(prejoin): removed autoFocus from input and adjusted content

* feat(conference): adjusted RaisedHandCountLabel and added extra code spaces

* feat(prejoin): fixed content to fit tablets

* feat(conference): moved header button styles to navigation styles

* feat(mobile/navigation): updated header navigation button styles

* feat(prejoin): updated elements width, removed left inset
2022-11-22 18:13:36 +02:00
Gabriel Borlea
a7c653bc30 chore(deps) lib-jitsi-meet@latest (#12604)
https://github.com/jitsi/lib-jitsi-meet/compare/v1538.0.0+871968af...v1539.0.0+eb4873d2
2022-11-22 16:19:34 +02:00
Gabriel Borlea
4b969cf4ab feat(face-landmarks): add face landmarks timeline (#12561)
* feat(face-landmarks): add face landmarks timeline

fixes after rebase

* fixes after rebase compiling and linting

* fix: change keyboard shorcut for participants stats

* fix: label for emotions switch

* fix: linting issues

* code review changes

* fix linting issues

* code review changes 2

* fix typo
2022-11-22 15:56:37 +02:00
Saúl Ibarra Corretgé
3081b41d0d fix(android) temporarily disable P2P
For some reason one of the users gets a black screen when doing Android
to Android calls. If iOS is involved things Just Work (TM).

It seems to be related to the use of H.264, but since it works with iOS
there must be something else to it.
2022-11-22 14:00:47 +01:00
Saúl Ibarra Corretgé
30e5d213cb fix(android) sort codecs in the same order as iOS 2022-11-22 14:00:47 +01:00
Saúl Ibarra Corretgé
752da71387 feat(android) set compile and target SDKs to 32 2022-11-22 11:37:08 +01:00
Saúl Ibarra Corretgé
645609974a deps(android) update native dependencies 2022-11-22 11:37:08 +01:00
Saúl Ibarra Corretgé
4f2f6df2bb chore(deps) update xmldom to version 0.79 2022-11-22 11:37:08 +01:00
Jaya Allamsetty
e93c480e7c fix(conference) Remove the check for multi-stream mode for web client. 2022-11-21 14:40:25 -05:00
Calinteodor
a795e0797a feat(native): New mobile release UI fixes (#12592) 2022-11-21 16:07:27 +02:00
Andrei Gavrilescu
94ec2c720d feat(rtcstats): report pc connection failure (#12560)
* report pc connection failure

* typos

* code review / update rtcstats

* check for undefined APP
2022-11-21 15:32:18 +02:00
Abdullah Kerem Öğe
b11e14ea34 feat(deps,rn) update React Native to version 0.68.5 2022-11-21 10:37:48 +01:00
Robert Pintilii
f5f55c4f23 fix(dialog) Improvements (#12590)
Remove focus outline for the close icon
Increase max height
2022-11-21 11:09:03 +02:00
Duduman Bogdan Vlad
243a330318 feat(thumbnail,filmstrip) show blackend thumbnail for participant on stage 2022-11-21 10:03:03 +01:00
_norbert
98bc87ea18 lang: fixing typo in a hungarian lang file (#12559)
* fixing typo in a hungarian lang file

* revert end of line

Co-authored-by: bartuczns <bartucz.norbertsandor@nisz.hu>
2022-11-19 15:35:43 -06:00
Saúl Ibarra Corretgé
f7926c9cfb fixup! 2022-11-18 19:56:36 +01:00
Saúl Ibarra Corretgé
533501deb6 fixup! 2022-11-18 19:56:36 +01:00
Saúl Ibarra Corretgé
f38c9f5450 feat(notification,external-api) notify bridge channel failures 2022-11-18 19:56:36 +01:00
Jaya Allamsetty
55b80c948f chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1535.0.0+e6263e7c...v1538.0.0+871968af
2022-11-18 13:38:37 -05:00
Calinteodor
971fe0481f feat(chat/polls/native) Update chat and polls UI (#12550)
* feat(chat/polls/native): update ui
2022-11-18 14:46:54 +02:00
Calin-Teodor
1259e54d46 fix(conference/native): apply width and height only on the connection indicator 2022-11-18 13:22:55 +01:00
Calin-Teodor
0cb95f1dd6 fix(conference/native): video quality label ui updates 2022-11-18 13:22:55 +01:00
Calin-Teodor
5cde9a138b fix(conference/native): fixed title bar indicators style 2022-11-18 13:22:55 +01:00
robertpin
867c488e10 fix(dialog) Update max height 2022-11-18 13:22:43 +01:00
Calin-Teodor
7d9c13a618 feat(prejoin): updated styles 2022-11-18 11:02:05 +02:00
Hristo Terezov
48ed3b7dc6 fix(dialog): cancel hide timeout on openDialog
Since we unmount the dialog after a timeout because of an animation we
need to cancel the timeout in case we need to render new dialog.
Otherwise the actual hiding can be executed after we render the new
dialog.
2022-11-17 17:00:02 -06:00
Hristo Terezov
04abfe1a3b feat(dialog): add disableAutoHideOnSubmit prop
Needed for shared video dialog.
2022-11-17 17:00:02 -06:00
Alex Bumbu
d45decc393 Update JitsiMeet.h (#12574) 2022-11-17 16:31:37 +02:00
Saúl Ibarra Corretgé
88f8f48465 fix(participants) don't treat Jigasi like a fake participant
We only really want to know if a participant is Jigasi for displaying a
specific icon, for all other intents and purposes it's a normal
participant.
2022-11-17 15:13:54 +01:00
Saúl Ibarra Corretgé
8127ea2479 feat(redux) throw exception in case invalid listeners are registered
This allows catching mistakes early.
2022-11-17 11:07:57 +01:00
Saúl Ibarra Corretgé
b22915c169 fix(rn,filmstrip) fix invalid selector registered as state listener 2022-11-17 11:07:57 +01:00
Saúl Ibarra Corretgé
14fcd153e5 fix(rn,connection-indicator) align rendering with web
Use the same way for calculating que perceived quality and display it.
2022-11-17 11:07:57 +01:00
Robert Pintilii
48efe36cdf fix(dial-in) Fix warning (#12571)
Only show warning if the feature is enabled
2022-11-16 12:14:58 +02:00
Saúl Ibarra Corretgé
0c373e105b ref(StageFilmstrip) mark as experimental
THere are a bunch of unhandled corner cases involving virtual
screen-sharing participants.
2022-11-15 10:34:58 -06:00
Shawn
e57c7f92a8 refactor(end-conference): distinguish between component vs host module logic 2022-11-15 10:34:40 -06:00
Jaya Allamsetty
70fa44f85f chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1533.0.0+7b257686...v1535.0.0+e6263e7c
2022-11-15 11:08:37 -05:00
rinenweb
bcc5beb73d fix(lang) fixup main-el.json
Missing "{" in line 74 and name is not displayed at all when {name} is used in line 520.
2022-11-15 09:41:43 +01:00
Joseph Garrone
4ef4e45ee4 fix(styles) Remove Theme type annotation (#12544)
* tss-react doesn't need a type anotation for the Theme

* Update tss-react to 4.4.4
2022-11-15 09:50:22 +02:00
TTG
c9ff0bb75f lang: Remove Indonesian & Norwegian translations (#12554)
* Remove Indonesian translation

* Remove Norwegian translation
2022-11-13 21:38:42 -06:00
chipechop
282817db28 lang: Update main-it.json (#12541)
refining
2022-11-11 16:37:54 -06:00
Shawn
93ab7725e7 feat(toolbox) notify click for hangup-menu and end-meeting menu button 2022-11-11 16:06:53 -06:00
Calin-Teodor
53ccb97d34 fix(welcome/native): removed unused constant 2022-11-11 18:11:41 +01:00
Calin-Teodor
6346d99d0e fix(welcome/native): placeholder fix 2022-11-11 18:11:41 +01:00
Saúl Ibarra Corretgé
79c4cabbad feat(rn) make status bar visible at all times 2022-11-11 17:25:28 +01:00
Robert Pintilii
7a9f51b01b ref(TS) Convert some features to TS (#12546) 2022-11-11 10:20:33 +02:00
Robert Pintilii
a884a6b232 fix(ui) Fix new icons issues (#12545) 2022-11-11 09:58:55 +02:00
Jaya Allamsetty
b00a17c1c3 fix(connection-stats) Do not display max enabled resolution on SS tile. 2022-11-10 17:00:34 -05:00
bgrozev
99955df5c8 Cleanup sounds (switch to mp3, encode at lower bitrate).' (#12507)
* Reencode mp3 sounds at lower bitrate, mono.
* Encode wav sounds as mp3.
* Remove unused sound file.
* Add opus encoded sounds.
* Add a script to encode sounds.
2022-11-10 10:06:40 -06:00
Calin-Teodor
c0f0803f01 feat(base/modal): addBottomPadding default prop for extra padding on JitsiScreen 2022-11-10 17:22:36 +02:00
dependabot[bot]
b2c864cbba chore(deps): bump loader-utils from 1.4.0 to 1.4.1
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.4.0 to 1.4.1.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.1/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v1.4.0...v1.4.1)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-10 11:30:02 +01:00
Saúl Ibarra Corretgé
31957d4085 chore(fonts) drop no longer used font 2022-11-10 11:16:22 +01:00
Saúl Ibarra Corretgé
4f83fc2a6d fix(ios) fix uploading symbols to Crashlytics
Since we no longer use bitcode we need to upload them when we build the
app.
2022-11-10 11:16:06 +01:00
Robert Pintilii
4bd27730ce ref(TS) Convert some features to TS (#12523) 2022-11-10 10:45:56 +02:00
Robert Pintilii
817d7f0c0d fix(thumbnail) Fix top indicators sizes (#12539)
Fix sizes after icon update
2022-11-10 10:22:57 +02:00
Robert Pintilii
19a9b17425 fix(recording) Fix local recording (#12531)
Starting chrome 107, the recorder does not record any data if the audio stream has no tracks
To fix this we create a track for the local user (muted track)
2022-11-10 10:22:42 +02:00
Robert Pintilii
cc33930259 fix(thumbnail) Open native video context menu (#12532) 2022-11-10 09:20:42 +02:00
Jaya Allamsetty
6223e16ca5 ref(config) Cleanup unused flags related to multi-stream mode. 2022-11-09 15:23:30 -05:00
José Luís Andrade
99385ae3d7 fix(config) add "whiteboard" to toolbarButtons 2022-11-09 17:37:51 +01:00
Shawn
17cace070e feat(external-api) Add endConference command 2022-11-09 16:00:17 +01:00
Calin-Teodor
cdb2436b73 feat(base/ui): updated BUTTON_TYPES imports based upon native or web 2022-11-09 16:35:08 +02:00
Calin-Teodor
10db5ecf1f feat(welcome/native): improved ui 2022-11-09 14:52:26 +02:00
Robert Pintilii
cbb8b5f620 fix(dialog) Fix initial focus (#12509)
Don't focus on the close button if there's another focusable element
2022-11-09 12:07:37 +02:00
Jaya Allamsetty
f3e4c57036 Remove legacy signaling and legacy SS mode. (#12499)
* fix(connection-status): remove unused participant connectionStatus.
Always use trackStreamingStatus now that legacy endpoint based signaling has been removed.

* remove the check for source-name signaling.
Default to source-name signaling always.

* Remove the check for multi-stream mode.
Make that the default mode and remove the support for legacy SS mode.

* Remove presenter mode.

* update latest@lib-jitsi-meet
2022-11-08 14:15:49 -05:00
Calinteodor
1731d5188d feat(prejoin/native): updated UI (#12528) 2022-11-08 19:14:29 +02:00
Calinteodor
2c7dc5e40e feat(base/ui/native): Use new Input component (#12526)
feat(base/ui/native): replaced react native TextInput component with our native Input component
2022-11-08 17:46:46 +02:00
Calinteodor
74cd486232 feat(chat/native): moved ChatAndPollsNavigator to mobile/navigation (#12527)
* feat(chat/native): moved ChatAndPollsNavigator to mobile/navigation
2022-11-08 17:43:02 +02:00
Alexey Matveev
30f3bac217 feat(ios) add ability to go PiP while screen sharing 2022-11-08 16:25:36 +01:00
Vadim A. Misbakh-Soloviov
84fc4dd63f (feat) OpenResty Support
Signed-off-by: Vadim A. Misbakh-Soloviov <git@mva.name>
2022-11-08 08:53:50 -06:00
Robert Pintilii
936a1a6b0e ref(design) Update icons (#12489)
Remove unused icons
Remove fill none from icons
Rename some icons
2022-11-08 12:24:32 +02:00
Gabriel Borlea
f4e8f860b1 feat(rtc-stats): send camera off and on events (#12522)
* feat(rtc-stats): send camera off and on events

* code review
2022-11-08 11:41:53 +02:00
Nils Ohlmeier
ee544d25f8 chore(deps) @jitsi/rtcstats 9.4.1 (#12512)
* chore(deps) @jitsi/rtcstats 9.4.1

* squash: Fix missing package-lock change.

Co-authored-by: damencho <damencho@jitsi.org>
2022-11-07 09:59:35 -06:00
Alexey Matveev
c32866f6a2 flag to hide settings button in overflow menu (#12515)
* flag to hide settings button in overflow menu
2022-11-07 14:00:46 +02:00
Alexey Matveev
215c2825de fix(rn) fix hangup all action
Co-authored-by: Alexey Matveev <malex@1forma.ru>
2022-11-07 10:30:08 +01:00
Christoph Settgast
edb614783b fix(lang) update German translation
Signed-off-by: Christoph Settgast <csett86@web.de>
2022-11-05 14:18:16 -05:00
Alexey Matveev
0e19bc9cd6 ru-localization minors 2022-11-04 13:46:41 -05:00
Johan Bernhardsson
caff0c64af lang: Update Swedish 100% translation (#12511)
* first Swedish update

* 100% swedish

* Update main-sv.json

* Updated Swedish translation

* Updated Swedish translation dropped product name

Co-authored-by: Johan Bernhardsson <johan@kafait.se>
2022-11-04 13:45:15 -05:00
Petr Ferschmann
fcb1845e2a lang: Updated Czech Translation (#12388)
* Translation to czech language

* Updated czech translation

* Updated czech translation

Co-authored-by: Дамян Минков <damencho@jitsi.org>
2022-11-03 16:01:31 -05:00
Suleyman BİLGİN
977295bd87 lang: Update Turkish translation (#12348)
* Turkish translations that were missing were added, and certain terms were changed to sound pleasant.

* squash: new line

Co-authored-by: Suleyman Bilgin <suleymanbilgin@thy.com>
Co-authored-by: Дамян Минков <damencho@jitsi.org>
2022-11-03 16:01:12 -05:00
apetrus20
ed139f53ca fix(polls) refactor storage of poll data 2022-11-03 16:08:20 +01:00
Alexey Matveev
5692c3cb4d fix(lang) update Russian translation 2022-11-03 14:24:58 +01:00
915 changed files with 11401 additions and 11322 deletions

View File

@@ -0,0 +1,15 @@
{
"name": "Jitsi Meet Dev Container",
"image": "mcr.microsoft.com/devcontainers/universal:2",
"features": {
"ghcr.io/devcontainers/features/node:1": {
"version": "16"
}
},
"hostRequirements": {
"cpus": 4,
"memory": "8gb",
"storage": "32gb"
},
"postCreateCommand": "bash -i -c 'nvm use && npm install && cp tsconfig.web.json tsconfig.json'"
}

View File

@@ -141,7 +141,7 @@ react/features/sample/
```
The middleware must be imported in `react/features/app/` specifically
in `middlewares.any`, `middlewares.native.js` or `middlewares.web.js` where appropriate.
in `middlewares.any.ts`, `middlewares.native.ts` or `middlewares.web.ts` where appropriate.
Likewise for the reducer.
An `index.js` file must not be provided for exporting actions, action types and

View File

@@ -76,7 +76,7 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'androidx.appcompat:appcompat:1.5.1'
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7'

Binary file not shown.

Before

Width:  |  Height:  |  Size: 659 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 379 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 960 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#17A0DB</color>
<color name="colorPrimaryDark">#1081B2</color>
<color name="navigationBarColor">#161618</color>
</resources>

View File

@@ -2,7 +2,7 @@
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:editTextBackground">@drawable/rn_edit_text_material</item>
<item name="android:forceDarkAllowed">false</item>
<item name="android:navigationBarColor">@color/colorPrimaryDark</item>
<item name="android:navigationBarColor">@color/navigationBarColor</item>
<item name="android:windowDisablePreview">true</item>
</style>
</resources>

View File

@@ -1,5 +1,4 @@
import groovy.json.JsonSlurper
import org.apache.tools.ant.taskdefs.condition.Os
import org.gradle.util.VersionNumber
// Top-level build file where you can add configuration options common to all
@@ -12,16 +11,16 @@ buildscript {
}
dependencies {
classpath 'com.android.tools.build:gradle:7.0.4'
classpath 'com.google.gms:google-services:4.3.10'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1'
classpath 'com.google.gms:google-services:4.3.14'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
}
}
ext {
buildToolsVersion = "31.0.0"
compileSdkVersion = 31
compileSdkVersion = 32
minSdkVersion = 23
targetSdkVersion = 31
targetSdkVersion = 32
supportLibVersion = "28.0.0"
if (System.properties['os.arch'] == "aarch64") {

View File

@@ -42,10 +42,10 @@ public class WebRTCVideoDecoderFactory implements VideoDecoderFactory {
public VideoCodecInfo[] getSupportedCodecs() {
List<VideoCodecInfo> codecs = new ArrayList<>();
codecs.add(H264Utils.DEFAULT_H264_BASELINE_PROFILE_CODEC);
codecs.add(new VideoCodecInfo(VideoCodecMimeType.VP8.name(), new HashMap<>()));
codecs.add(new VideoCodecInfo(VideoCodecMimeType.VP9.name(), new HashMap<>()));
codecs.add(new VideoCodecInfo(VideoCodecMimeType.AV1.name(), new HashMap<>()));
codecs.add(H264Utils.DEFAULT_H264_BASELINE_PROFILE_CODEC);
return codecs.toArray(new VideoCodecInfo[codecs.size()]);
}

View File

@@ -43,10 +43,10 @@ public class WebRTCVideoEncoderFactory implements VideoEncoderFactory {
public VideoCodecInfo[] getSupportedCodecs() {
List<VideoCodecInfo> codecs = new ArrayList<>();
codecs.add(H264Utils.DEFAULT_H264_BASELINE_PROFILE_CODEC);
codecs.add(new VideoCodecInfo(VideoCodecMimeType.VP8.name(), new HashMap<>()));
codecs.add(new VideoCodecInfo(VideoCodecMimeType.VP9.name(), new HashMap<>()));
codecs.add(new VideoCodecInfo(VideoCodecMimeType.AV1.name(), new HashMap<>()));
codecs.add(H264Utils.DEFAULT_H264_BASELINE_PROFILE_CODEC);
return codecs.toArray(new VideoCodecInfo[codecs.size()]);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 699 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -27,7 +27,6 @@ import {
} from './react/features/app/actions';
import { showModeratedNotification } from './react/features/av-moderation/actions';
import { shouldShowModeratedNotification } from './react/features/av-moderation/functions';
import { setAudioOnly } from './react/features/base/audio-only';
import {
AVATAR_URL_COMMAND,
CONFERENCE_LEAVE_REASONS,
@@ -45,8 +44,10 @@ import {
conferenceUniqueIdSet,
conferenceWillJoin,
conferenceWillLeave,
dataChannelClosed,
dataChannelOpened,
e2eRttChanged,
generateVisitorConfig,
getConferenceOptions,
kickedOut,
lockStateChanged,
@@ -55,10 +56,7 @@ import {
p2pStatusChanged,
sendLocalParticipant
} from './react/features/base/conference';
import {
getMultipleVideoSendingSupportFeatureFlag,
getReplaceParticipant
} from './react/features/base/config/functions';
import { getReplaceParticipant } from './react/features/base/config/functions';
import {
checkAndNotifyForNewDevice,
getAvailableDevices,
@@ -77,7 +75,6 @@ import {
JitsiConnectionEvents,
JitsiE2ePingEvents,
JitsiMediaDevicesEvents,
JitsiParticipantConnectionStatus,
JitsiTrackErrors,
JitsiTrackEvents,
browser
@@ -101,9 +98,7 @@ import {
getNormalizedDisplayName,
getVirtualScreenshareParticipantByOwnerId,
localParticipantAudioLevelChanged,
localParticipantConnectionStatusChanged,
localParticipantRoleChanged,
participantConnectionStatusChanged,
participantKicked,
participantMutedUs,
participantPresenceChanged,
@@ -112,20 +107,15 @@ import {
screenshareParticipantDisplayNameChanged,
updateRemoteParticipantFeatures
} from './react/features/base/participants';
import {
getUserSelectedCameraDeviceId,
updateSettings
} from './react/features/base/settings';
import { updateSettings } from './react/features/base/settings';
import {
addLocalTrack,
createLocalPresenterTrack,
createLocalTracksF,
destroyLocalTracks,
getLocalJitsiAudioTrack,
getLocalJitsiVideoTrack,
getLocalTracks,
getLocalVideoTrack,
isLocalCameraTrackMuted,
isLocalTrackMuted,
isUserInteractionRequiredForUnmute,
replaceLocalTrack,
@@ -143,9 +133,12 @@ import {
import { maybeSetLobbyChatMessageListener } from './react/features/lobby/actions.any';
import { setNoiseSuppressionEnabled } from './react/features/noise-suppression/actions';
import {
DATA_CHANNEL_CLOSED_NOTIFICATION_ID,
NOTIFICATION_TIMEOUT_TYPE,
hideNotification,
isModerationNotificationDisplayed,
showNotification
showNotification,
showWarningNotification
} from './react/features/notifications';
import { mediaPermissionPromptVisibilityChanged } from './react/features/overlay';
import { suspendDetected } from './react/features/power-monitor';
@@ -154,9 +147,7 @@ import { isPrejoinPageVisible } from './react/features/prejoin/functions';
import { disableReceiver, stopReceiver } from './react/features/remote-control';
import { isScreenAudioShared, setScreenAudioShareState } from './react/features/screen-share/';
import { toggleScreenshotCaptureSummary } from './react/features/screenshot-capture';
import { isScreenshotCaptureEnabled } from './react/features/screenshot-capture/functions';
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 { handleToggleVideoMuted } from './react/features/toolbox/actions.any';
@@ -188,15 +179,6 @@ let _connectionPromise;
*/
let _onConnectionPromiseCreated;
/**
* This promise is used for chaining mutePresenterVideo calls in order to avoid calling GUM multiple times if it takes
* a while to finish.
*
* @type {Promise<void>}
* @private
*/
let _prevMutePresenterVideo = Promise.resolve();
/*
* Logic to open a desktop picker put on the window global for
* lib-jitsi-meet to detect and invoke
@@ -296,7 +278,8 @@ class ConferenceConnector {
/**
*
*/
constructor(resolve, reject) {
constructor(resolve, reject, conference) {
this._conference = conference;
this._resolve = resolve;
this._reject = reject;
this.reconnectTimeout = null;
@@ -355,6 +338,26 @@ class ConferenceConnector {
break;
}
case JitsiConferenceErrors.REDIRECTED: {
generateVisitorConfig(APP.store.getState(), params);
connection.disconnect().then(() => {
connect(this._conference.roomName).then(con => {
const localTracks = getLocalTracks(APP.store.getState()['features/base/tracks']);
const jitsiTracks = localTracks.map(t => t.jitsiTrack);
// visitors connect muted
jitsiTracks.forEach(t => t.mute());
// TODO disable option to unmute audio or video
this._conference.startConference(con, jitsiTracks);
});
});
break;
}
case JitsiConferenceErrors.GRACEFUL_SHUTDOWN:
APP.UI.notifyGracefulShutdown();
break;
@@ -478,13 +481,12 @@ export default {
*/
_localTracksInitialized: false,
isSharingScreen: false,
/**
* The local presenter video track (if any).
* @type {JitsiLocalTrack|null}
* Flag used to prevent the creation of another local video track in this.muteVideo if one is already in progress.
*/
localPresenterVideo: null,
isCreatingLocalTrack: false,
isSharingScreen: false,
/**
* Returns an object containing a promise which resolves with the created tracks &
@@ -530,22 +532,10 @@ export default {
firePermissionPromptIsShownEvent: true
};
// FIXME is there any simpler way to rewrite this spaghetti below ?
if (options.startScreenSharing) {
// This option has been deprecated since it is no longer supported as per the w3c spec.
// https://w3c.github.io/mediacapture-screen-share/#dom-mediadevices-getdisplaymedia. If the user has not
// interacted with the webpage before the getDisplayMedia call, the promise will be rejected by the
// browser. This has already been implemented in Firefox and Safari and will be implemented in Chrome soon.
// https://bugs.chromium.org/p/chromium/issues/detail?id=1198918
// Please note that Spot uses the same config option to use an external video input device label as
// screenshare and calls getUserMedia instead of getDisplayMedia for capturing the media. Therefore it
// needs to be supported here if _desktopSharingSourceDevice is provided.
const errMessage = new Error('startScreenSharing config option is no longer supported for web browsers');
const desktopPromise = config._desktopSharingSourceDevice
? this._createDesktopTrack()
: Promise.reject(errMessage);
tryCreateLocalTracks = desktopPromise
// Spot uses the _desktopSharingSourceDevice config option to use an external video input device label as
// screenshare and calls getUserMedia instead of getDisplayMedia for capturing the media.
if (options.startScreenSharing && config._desktopSharingSourceDevice) {
tryCreateLocalTracks = this._createDesktopTrack()
.then(([ desktopStream ]) => {
if (!requestedAudio) {
return [ desktopStream ];
@@ -764,7 +754,7 @@ export default {
// XXX The API will take care of disconnecting from the XMPP
// server (and, thus, leaving the room) on unload.
return new Promise((resolve, reject) => {
new ConferenceConnector(resolve, reject).connect();
new ConferenceConnector(resolve, reject, this).connect();
});
},
@@ -910,8 +900,7 @@ export default {
isLocalVideoMuted() {
// If the tracks are not ready, read from base/media state
return this._localTracksInitialized
? isLocalCameraTrackMuted(
APP.store.getState()['features/base/tracks'])
? isLocalTrackMuted(APP.store.getState()['features/base/tracks'], MEDIA_TYPE.VIDEO)
: isVideoMutedByUser(APP.store);
},
@@ -1031,36 +1020,6 @@ export default {
this.muteAudio(!this.isLocalAudioMuted(), showUI);
},
/**
* Simulates toolbar button click for presenter video mute. Used by
* shortcuts and API.
* @param mute true for mute and false for unmute.
* @param {boolean} [showUI] when set to false will not display any error
* dialogs in case of media permissions error.
*/
async mutePresenter(mute, showUI = true) {
const maybeShowErrorDialog = error => {
showUI && APP.store.dispatch(notifyCameraError(error));
};
const localVideo = getLocalJitsiVideoTrack(APP.store.getState());
if (mute) {
try {
await localVideo.setEffect(undefined);
} catch (err) {
logger.error('Failed to remove the presenter effect', err);
maybeShowErrorDialog(err);
}
} else {
try {
await localVideo.setEffect(await this._createPresenterStreamEffect());
} catch (err) {
logger.error('Failed to apply the presenter effect', err);
maybeShowErrorDialog(err);
}
}
},
/**
* Simulates toolbar button click for video mute. Used by shortcuts and API.
* @param mute true for mute and false for unmute.
@@ -1069,8 +1028,6 @@ export default {
*/
muteVideo(mute, showUI = true) {
if (this.videoSwitchInProgress) {
// Turning the camera on while the screen sharing mode is being turned off is causing issues around
// the presenter mode handling. It should be okay for the user to click the button again once that's done.
console.warn('muteVideo - unable to perform operations while video switch is in progress');
return;
@@ -1083,13 +1040,6 @@ export default {
return;
}
if (this.isSharingScreen) {
// Chain _mutePresenterVideo calls
_prevMutePresenterVideo = _prevMutePresenterVideo.then(() => this._mutePresenterVideo(mute));
return;
}
// If not ready to modify track's state yet adjust the base/media
if (!this._localTracksInitialized) {
// This will only modify base/media.video.muted which is then synced
@@ -1105,11 +1055,13 @@ export default {
const localVideo = getLocalJitsiVideoTrack(APP.store.getState());
if (!localVideo && !mute) {
if (!localVideo && !mute && !this.isCreatingLocalTrack) {
const maybeShowErrorDialog = error => {
showUI && APP.store.dispatch(notifyCameraError(error));
};
this.isCreatingLocalTrack = true;
// Try to create local video if there wasn't any.
// This handles the case when user joined with no video
// (dismissed screen sharing screen or in audio only mode), but
@@ -1131,6 +1083,9 @@ export default {
logger.debug(`muteVideo: calling useVideoStream for track: ${videoTrack}`);
return this.useVideoStream(videoTrack);
})
.finally(() => {
this.isCreatingLocalTrack = false;
});
} else {
// FIXME show error dialog if it fails (should be handled by react)
@@ -1401,8 +1356,6 @@ export default {
// Restore initial state.
this._localTracksInitialized = false;
this.isSharingScreen = false;
this.localPresenterVideo = null;
this.roomName = roomName;
const { tryCreateLocalTracks, errors } = this.createInitialLocalTracks(options);
@@ -1418,7 +1371,7 @@ export default {
this._createRoom(localTracks);
return new Promise((resolve, reject) => {
new ConferenceConnector(resolve, reject).connect();
new ConferenceConnector(resolve, reject, this).connect();
});
},
@@ -1498,30 +1451,13 @@ export default {
return;
}
// In the multi-stream mode, add the track to the conference if there is no existing track, replace it
// otherwise.
if (getMultipleVideoSendingSupportFeatureFlag(state)) {
const trackAction = oldTrack
? replaceLocalTrack(oldTrack, newTrack, room)
: addLocalTrack(newTrack);
// Add the track to the conference if there is no existing track, replace it otherwise.
const trackAction = oldTrack
? replaceLocalTrack(oldTrack, newTrack, room)
: addLocalTrack(newTrack);
APP.store.dispatch(trackAction)
.then(() => {
this.setVideoMuteStatus();
})
.then(resolve)
.catch(error => {
logger.error(`useVideoStream failed: ${error}`);
reject(error);
})
.then(onFinish);
return;
}
APP.store.dispatch(
replaceLocalTrack(oldTrack, newTrack, room))
APP.store.dispatch(trackAction)
.then(() => {
this._setSharingScreen(newTrack);
this.setVideoMuteStatus();
})
.then(resolve)
@@ -1534,33 +1470,6 @@ export default {
});
},
/**
* Sets `this.isSharingScreen` depending on provided video stream.
* In case new screen sharing status is not equal previous one
* it updates desktop sharing buttons in UI
* and notifies external application.
*
* @param {JitsiLocalTrack} [newStream] new stream to use or null
* @private
* @returns {void}
*/
_setSharingScreen(newStream) {
const wasSharingScreen = this.isSharingScreen;
this.isSharingScreen = newStream && newStream.videoType === 'desktop';
if (wasSharingScreen !== this.isSharingScreen) {
const details = {};
if (this.isSharingScreen) {
details.sourceType = newStream.sourceType;
}
APP.API.notifyScreenSharingStatusChanged(
this.isSharingScreen, details);
}
},
/**
* Start using provided audio stream.
* Stops previous audio stream.
@@ -1640,35 +1549,6 @@ export default {
const tracks = APP.store.getState()['features/base/tracks'];
const duration = getLocalVideoTrack(tracks)?.jitsiTrack.getDuration() ?? 0;
// It can happen that presenter GUM is in progress while screensharing is being turned off. Here it needs to
// wait for that GUM to be resolved in order to prevent leaking the presenter track(this.localPresenterVideo
// will be null when SS is being turned off, but it will initialize once GUM resolves).
let promise = _prevMutePresenterVideo = _prevMutePresenterVideo.then(() => {
// mute the presenter track if it exists.
if (this.localPresenterVideo) {
return (
this.localPresenterVideo.dispose().then(() => {
APP.store.dispatch(trackRemoved(this.localPresenterVideo));
this.localPresenterVideo = null;
})
.then(() => {
// This is needed only for setting the correct muted state in features/base/media.
// NOTE: It is important to be executed after we have disposed and removed the presenter track.
// This way all the side effects won't be executed and we won't start additional O/A cycle for
// replacing the track with video with the one without video. This O/A cycle is not needed since
// we are trying to destroy all tracks. Also due to the current async nature of muting the
// presenter, the final removal of the screen sharing track (see the code at the end of the
// function) can be executed between the removal of the stream with video and adding the
// original screen sharing stream to the peer connection. This will lead to a failure to remove
// the screen sharing track, compromising the screen sharing state in jitsi-meet and the user
// won't be able to turn off the screen sharing.
APP.store.dispatch(setVideoMuted(true, MEDIA_TYPE.PRESENTER));
})
);
}
});
// If system audio was also shared stop the AudioMixerEffect and dispose of the desktop audio track.
if (this._mixerEffect) {
const localAudio = getLocalJitsiAudioTrack(APP.store.getState());
@@ -1687,9 +1567,10 @@ export default {
}
APP.store.dispatch(setScreenAudioShareState(false));
let promise;
if (didHaveVideo && !ignoreDidHaveVideo) {
promise = promise.then(() => createLocalTracksF({ devices: [ 'video' ] }))
promise = createLocalTracksF({ devices: [ 'video' ] })
.then(([ stream ]) => {
logger.debug(`_turnScreenSharingOff using ${stream} for useVideoStream`);
@@ -1705,11 +1586,7 @@ export default {
);
});
} else {
promise = promise.then(() => {
logger.debug('_turnScreenSharingOff using null for useVideoStream');
return this.useVideoStream(null);
});
promise = this.useVideoStream(null);
}
return promise.then(
@@ -1727,56 +1604,6 @@ export default {
});
},
/**
* Toggles between screen sharing and camera video if the toggle parameter
* is not specified and starts the procedure for obtaining new screen
* sharing/video track otherwise.
*
* NOTE: this is currently ONLY used in the non-multi-stream case.
*
* @param {boolean} [toggle] - If true - new screen sharing track will be
* obtained. If false - new video track will be obtain. If not specified -
* toggles between screen sharing and camera video.
* @param {Object} [options] - Screen sharing options that will be passed to
* createLocalTracks.
* @param {boolean} [options.audioOnly] - Whether or not audioOnly is enabled.
* @param {Array<string>} [options.desktopSharingSources] - Array with the
* sources that have to be displayed in the desktop picker window ('screen',
* 'window', etc.).
* @param {Object} [options.desktopStream] - An existing desktop stream to
* use instead of creating a new desktop stream.
* @param {boolean} ignoreDidHaveVideo - if true ignore if video was on when sharing started.
* @return {Promise.<T>}
*/
async toggleScreenSharing(toggle = !this._untoggleScreenSharing, options = {}, ignoreDidHaveVideo) {
logger.debug(`toggleScreenSharing: ${toggle}`);
if (this.videoSwitchInProgress) {
return Promise.reject(`toggleScreenSharing: ${toggle} aborted - video switch in progress.`);
}
if (!JitsiMeetJS.isDesktopSharingEnabled()) {
return Promise.reject('Cannot toggle screen sharing: not supported.');
}
if (toggle) {
try {
await this._switchToScreenSharing(options);
if (this.isAudioOnly()) {
APP.store.dispatch(setAudioOnly(false));
}
return;
} catch (err) {
logger.error('Failed to switch to screensharing', err);
return;
}
}
return this._untoggleScreenSharing
? this._untoggleScreenSharing(ignoreDidHaveVideo)
: Promise.resolve();
},
/**
* Creates desktop (screensharing) {@link JitsiLocalTrack}
*
@@ -1849,228 +1676,6 @@ export default {
});
},
/**
* Creates a new instance of presenter effect. A new video track is created
* using the new set of constraints that are calculated based on
* the height of the desktop that is being currently shared.
*
* @param {number} height - The height of the desktop stream that is being
* currently shared.
* @param {string} cameraDeviceId - The device id of the camera to be used.
* @return {Promise<JitsiStreamPresenterEffect>} - A promise resolved with
* {@link JitsiStreamPresenterEffect} if it succeeds.
*/
async _createPresenterStreamEffect(height = null, cameraDeviceId = null) {
if (!this.localPresenterVideo) {
const camera = cameraDeviceId ?? getUserSelectedCameraDeviceId(APP.store.getState());
try {
this.localPresenterVideo = await createLocalPresenterTrack({ cameraDeviceId: camera }, height);
} catch (err) {
logger.error('Failed to create a camera track for presenter', err);
return;
}
APP.store.dispatch(trackAdded(this.localPresenterVideo));
}
try {
const effect = await createPresenterEffect(this.localPresenterVideo.stream);
return effect;
} catch (err) {
logger.error('Failed to create the presenter effect', err);
}
},
/**
* Tries to turn the presenter video track on or off. If a presenter track
* doesn't exist, a new video track is created.
*
* @param mute - true for mute and false for unmute.
*
* @private
*/
async _mutePresenterVideo(mute) {
const maybeShowErrorDialog = error => {
APP.store.dispatch(notifyCameraError(error));
};
// Check for NO-OP
if (mute && (!this.localPresenterVideo || this.localPresenterVideo.isMuted())) {
return;
} else if (!mute && this.localPresenterVideo && !this.localPresenterVideo.isMuted()) {
return;
}
// Create a new presenter track and apply the presenter effect.
if (!this.localPresenterVideo && !mute) {
const localVideo = getLocalJitsiVideoTrack(APP.store.getState());
const { height, width } = localVideo.track.getSettings() ?? localVideo.track.getConstraints();
const isPortrait = height >= width;
const DESKTOP_STREAM_CAP = 720;
const highResolutionTrack
= (isPortrait && width > DESKTOP_STREAM_CAP) || (!isPortrait && height > DESKTOP_STREAM_CAP);
// Resizing the desktop track for presenter is causing blurriness of the desktop share on chrome.
// Disable resizing by default, enable it only when config.js setting is enabled.
const resizeDesktopStream = highResolutionTrack && config.videoQuality?.resizeDesktopForPresenter;
if (resizeDesktopStream) {
let desktopResizeConstraints = {};
if (height && width) {
const advancedConstraints = [ { aspectRatio: (width / height).toPrecision(4) } ];
const constraint = isPortrait ? { width: DESKTOP_STREAM_CAP } : { height: DESKTOP_STREAM_CAP };
advancedConstraints.push(constraint);
desktopResizeConstraints.advanced = advancedConstraints;
} else {
desktopResizeConstraints = {
width: 1280,
height: 720
};
}
// Apply the constraints on the desktop track.
try {
await localVideo.track.applyConstraints(desktopResizeConstraints);
} catch (err) {
logger.error('Failed to apply constraints on the desktop stream for presenter mode', err);
return;
}
}
const trackHeight = resizeDesktopStream
? localVideo.track.getSettings().height ?? DESKTOP_STREAM_CAP
: height;
let effect;
try {
effect = await this._createPresenterStreamEffect(trackHeight);
} catch (err) {
logger.error('Failed to unmute Presenter Video', err);
maybeShowErrorDialog(err);
return;
}
// Replace the desktop track on the peerconnection.
try {
await localVideo.setEffect(effect);
APP.store.dispatch(setVideoMuted(mute, MEDIA_TYPE.PRESENTER));
this.setVideoMuteStatus();
} catch (err) {
logger.error('Failed to apply the Presenter effect', err);
}
} else {
APP.store.dispatch(setVideoMuted(mute, MEDIA_TYPE.PRESENTER));
}
},
/**
* Tries to switch to the screensharing mode by disposing camera stream and
* replacing it with a desktop one.
*
* @param {Object} [options] - Screen sharing options that will be passed to
* createLocalTracks.
*
* @return {Promise} - A Promise resolved if the operation succeeds or
* rejected with some unknown type of error in case it fails. Promise will
* be rejected immediately if {@link videoSwitchInProgress} is true.
*
* @private
*/
_switchToScreenSharing(options = {}) {
if (this.videoSwitchInProgress) {
return Promise.reject('Switch in progress.');
}
this.videoSwitchInProgress = true;
return this._createDesktopTrack(options)
.then(async streams => {
let desktopVideoStream = streams.find(stream => stream.getType() === MEDIA_TYPE.VIDEO);
this._desktopAudioStream = streams.find(stream => stream.getType() === MEDIA_TYPE.AUDIO);
const { audioOnly = false } = options;
// If we're in audio only mode dispose of the video track otherwise the screensharing state will be
// inconsistent.
if (audioOnly) {
desktopVideoStream.dispose();
desktopVideoStream = undefined;
if (!this._desktopAudioStream) {
return Promise.reject(AUDIO_ONLY_SCREEN_SHARE_NO_TRACK);
}
}
if (desktopVideoStream) {
logger.debug(`_switchToScreenSharing is using ${desktopVideoStream} for useVideoStream`);
await this.useVideoStream(desktopVideoStream);
}
if (this._desktopAudioStream) {
// Noise suppression doesn't work with desktop audio because we can't chain
// track effects yet, disable it first.
// We need to to wait for the effect to clear first or it might interfere with the audio mixer.
await APP.store.dispatch(setNoiseSuppressionEnabled(false));
const localAudio = getLocalJitsiAudioTrack(APP.store.getState());
// If there is a localAudio stream, mix in the desktop audio stream captured by the screen sharing
// api.
if (localAudio) {
this._mixerEffect = new AudioMixerEffect(this._desktopAudioStream);
logger.debug(`_switchToScreenSharing is mixing ${this._desktopAudioStream} and ${localAudio}`
+ ' as a single audio stream');
await localAudio.setEffect(this._mixerEffect);
} else {
// If no local stream is present ( i.e. no input audio devices) we use the screen share audio
// stream as we would use a regular stream.
logger.debug(`_switchToScreenSharing is using ${this._desktopAudioStream} for replacing it as`
+ ' the only audio track on the conference');
await room.replaceTrack(null, this._desktopAudioStream);
}
APP.store.dispatch(setScreenAudioShareState(true));
}
})
.then(() => {
this.videoSwitchInProgress = false;
if (isScreenshotCaptureEnabled(APP.store.getState(), false, true)) {
APP.store.dispatch(toggleScreenshotCaptureSummary(true));
}
sendAnalytics(createScreenSharingEvent('started'));
logger.log('Screen sharing started');
})
.catch(error => {
this.videoSwitchInProgress = false;
// Pawel: With this call I'm trying to preserve the original
// behaviour although it is not clear why would we "untoggle"
// on failure. I suppose it was to restore video in case there
// was some problem during "this.useVideoStream(desktopStream)".
// It's important to note that the handler will not be available
// if we fail early on trying to get desktop media (which makes
// sense, because the camera video is still being used, so
// nothing to "untoggle").
if (this._untoggleScreenSharing) {
this._untoggleScreenSharing();
}
// FIXME the code inside of _handleScreenSharingError is
// asynchronous, but does not return a Promise and is not part
// of the current Promise chain.
this._handleScreenSharingError(error);
return Promise.reject(error);
});
},
/**
* Handles {@link JitsiTrackError} returned by the lib-jitsi-meet when
* trying to create screensharing track. It will either do nothing if
@@ -2275,11 +1880,6 @@ export default {
(jitsiConference, p2p) =>
APP.store.dispatch(p2pStatusChanged(p2p)));
room.on(
JitsiConferenceEvents.PARTICIPANT_CONN_STATUS_CHANGED,
(id, connectionStatus) => APP.store.dispatch(
participantConnectionStatusChanged(id, connectionStatus)));
room.on(
JitsiConferenceEvents.DOMINANT_SPEAKER_CHANGED,
(dominant, previous, silence) => {
@@ -2290,16 +1890,6 @@ export default {
JitsiConferenceEvents.CONFERENCE_CREATED_TIMESTAMP,
conferenceTimestamp => APP.store.dispatch(conferenceTimestampChanged(conferenceTimestamp)));
room.on(JitsiConferenceEvents.CONNECTION_INTERRUPTED, () => {
APP.store.dispatch(localParticipantConnectionStatusChanged(
JitsiParticipantConnectionStatus.INTERRUPTED));
});
room.on(JitsiConferenceEvents.CONNECTION_RESTORED, () => {
APP.store.dispatch(localParticipantConnectionStatusChanged(
JitsiParticipantConnectionStatus.ACTIVE));
});
room.on(
JitsiConferenceEvents.DISPLAY_NAME_CHANGED,
(id, displayName) => {
@@ -2493,6 +2083,18 @@ export default {
room.on(
JitsiConferenceEvents.DATA_CHANNEL_OPENED, () => {
APP.store.dispatch(dataChannelOpened());
APP.store.dispatch(hideNotification(DATA_CHANNEL_CLOSED_NOTIFICATION_ID));
}
);
room.on(
JitsiConferenceEvents.DATA_CHANNEL_CLOSED, ev => {
APP.store.dispatch(dataChannelClosed(ev.code, ev.reason));
APP.store.dispatch(showWarningNotification({
descriptionKey: 'notify.dataChannelClosedDescription',
titleKey: 'notify.dataChannelClosed',
uid: DATA_CHANNEL_CLOSED_NOTIFICATION_ID
}, NOTIFICATION_TIMEOUT_TYPE.STICKY));
}
);
@@ -2519,77 +2121,38 @@ export default {
APP.UI.addListener(
UIEvents.VIDEO_DEVICE_CHANGED,
cameraDeviceId => {
const localVideo = getLocalJitsiVideoTrack(APP.store.getState());
const videoWasMuted = this.isLocalVideoMuted();
sendAnalytics(createDeviceChangedEvent('video', 'input'));
// If both screenshare and video are in progress, restart the
// presenter mode with the new camera device.
if (this.isSharingScreen && !videoWasMuted) {
const { height } = localVideo.track.getSettings();
createLocalTracksF({
devices: [ 'video' ],
cameraDeviceId
})
.then(([ stream ]) => {
// if we are in audio only mode or video was muted before
// changing device, then mute
if (this.isAudioOnly() || videoWasMuted) {
return stream.mute()
.then(() => stream);
}
// dispose the existing presenter track and create a new
// camera track.
// FIXME JitsiLocalTrack.dispose is async and should be waited for
this.localPresenterVideo && this.localPresenterVideo.dispose();
this.localPresenterVideo = null;
return this._createPresenterStreamEffect(height, cameraDeviceId)
.then(effect => localVideo.setEffect(effect))
.then(() => {
this.setVideoMuteStatus();
logger.log('Switched local video device while screen sharing and the video is unmuted');
this._updateVideoDeviceId();
})
.catch(err => APP.store.dispatch(notifyCameraError(err)));
// If screenshare is in progress but video is muted, update the default device
// id for video, dispose the existing presenter track and create a new effect
// that can be applied on un-mute.
} else if (this.isSharingScreen && videoWasMuted) {
logger.log('Switched local video device: while screen sharing and the video is muted');
const { height } = localVideo.track.getSettings();
return stream;
})
.then(stream => {
logger.info(`Switching the local video device to ${cameraDeviceId}.`);
return this.useVideoStream(stream);
})
.then(() => {
logger.info(`Switched local video device to ${cameraDeviceId}.`);
this._updateVideoDeviceId();
})
.catch(error => {
logger.error(`Failed to switch to selected camera:${cameraDeviceId}, error:${error}`);
// FIXME JitsiLocalTrack.dispose is async and should be waited for
this.localPresenterVideo && this.localPresenterVideo.dispose();
this.localPresenterVideo = null;
this._createPresenterStreamEffect(height, cameraDeviceId);
// if there is only video, switch to the new camera stream.
} else {
createLocalTracksF({
devices: [ 'video' ],
cameraDeviceId,
micDeviceId: null
})
.then(([ stream ]) => {
// if we are in audio only mode or video was muted before
// changing device, then mute
if (this.isAudioOnly() || videoWasMuted) {
return stream.mute()
.then(() => stream);
}
return stream;
})
.then(stream => {
logger.info(`Switching the local video device to ${cameraDeviceId}.`);
return this.useVideoStream(stream);
})
.then(() => {
logger.info(`Switched local video device to ${cameraDeviceId}.`);
this._updateVideoDeviceId();
})
.catch(error => {
logger.error(`Failed to switch to selected camera:${cameraDeviceId}, error:${error}`);
return APP.store.dispatch(notifyCameraError(error));
});
}
return APP.store.dispatch(notifyCameraError(error));
});
}
);
@@ -2613,7 +2176,6 @@ export default {
sendAnalytics(createDeviceChangedEvent('audio', 'input'));
createLocalTracksF({
devices: [ 'audio' ],
cameraDeviceId: null,
micDeviceId: selectedDeviceId
})
.then(([ stream ]) => {
@@ -2756,13 +2318,6 @@ export default {
cameraDeviceId: localVideo.getDeviceId()
}));
}
// If screenshare is in progress, get the device id from the presenter track.
if (this.localPresenterVideo) {
APP.store.dispatch(updateSettings({
cameraDeviceId: this.localPresenterVideo.getDeviceId()
}));
}
},
/**
@@ -3211,7 +2766,7 @@ export default {
return;
}
APP.store.dispatch(toggleScreensharingA(undefined, false, false, { desktopStream }));
APP.store.dispatch(toggleScreensharingA(undefined, false, { desktopStream }));
}
});
}

View File

@@ -79,15 +79,6 @@ var config = {
// This is useful when the client runs on a host with limited resources.
// noAutoPlayVideo: false,
// Enable / disable 500 Kbps bitrate cap on desktop tracks. When enabled,
// simulcast is turned off for the desktop share. If presenter is turned
// on while screensharing is in progress, the max bitrate is automatically
// adjusted to 2.5 Mbps. This takes a value between 0 and 1 which determines
// the probability for this to be enabled. This setting has been deprecated.
// desktopSharingFrameRate.max now determines whether simulcast will be enabled
// or disabled for the screenshare.
// capScreenshareBitrate: 1, // 0 to disable - deprecated.
// Whether to use fake constraints (height: 99999, width: 99999) when calling getDisplayMedia on
// Chromium based browsers. This is intended as a workaround for
// https://bugs.chromium.org/p/chromium/issues/detail?id=1056311
@@ -99,20 +90,6 @@ var config = {
// callStatsThreshold: 5, // enable callstats for 5% of the users.
},
// Feature Flags.
flags: {
// Enables source names in the signaling.
// sourceNameSignaling: false,
// Enables sending multiple video streams, i.e., camera and desktop tracks can be shared in the conference
// separately as two different streams instead of one composite stream.
// sendMultipleVideoStreams: false,
// Signal that this client supports receiving multiple video streams. Without this flag jicofo will enable
// multi-stream backward compatibility.
// receiveMultipleVideoStreams: true,
},
// Disables moderator indicators.
// disableModeratorIndicator: false,
@@ -523,9 +500,6 @@ var config = {
// 720: 'high',
// },
//
// // Provides a way to resize the desktop track to 720p (if it is greater than 720p) before creating a canvas
// // for the presenter mode (camera picture-in-picture mode with screenshare).
// resizeDesktopForPresenter: false,
// },
// Notification timeouts
@@ -606,9 +580,19 @@ var config = {
// Require users to always specify a display name.
// requireDisplayName: true,
// DEPRECATED! Use 'welcomePage.disabled' instead.
// Whether to use a welcome page or not. In case it's false a random room
// will be joined when no room is specified.
enableWelcomePage: true,
// enableWelcomePage: true,
// Configs for welcome page.
// welcomePage: {
// // Whether to disable welcome page. In case it's disabled a random room
// // will be joined when no room is specified.
// disabled: false,
// // If set,landing page will redirect to this URL.
// customUrl: ''
// },
// Disable app shortcuts that are registered upon joining a conference
// disableShortcuts: false,
@@ -727,7 +711,6 @@ var config = {
// 'chat',
// 'closedcaptions',
// 'desktop',
// 'dock-iframe',
// 'download',
// 'embedmeeting',
// 'etherpad',
@@ -755,8 +738,8 @@ var config = {
// 'stats',
// 'tileview',
// 'toggle-camera',
// 'undock-iframe',
// 'videoquality',
// 'whiteboard',
// ],
// Holds values related to toolbar visibility control.
@@ -792,11 +775,13 @@ var config = {
// 'desktop',
// 'download',
// 'embedmeeting',
// 'end-meeting',
// 'etherpad',
// 'feedback',
// 'filmstrip',
// 'fullscreen',
// 'hangup',
// 'hangup-menu',
// 'help',
// {
// key: 'invite',
@@ -829,6 +814,7 @@ var config = {
// key: 'add-passcode',
// preventExecution: false
// },
// 'whiteboard',
// ],
// List of pre meeting screens buttons to hide. The values must be one or more of the 5 allowed buttons:

View File

@@ -182,3 +182,8 @@ form {
background: rgba(0, 0, 0, .5);
border-radius: 4px;
}
/* Necessary for the new icons to work properly. */
.jitsi-icon svg path {
fill: inherit !important;
}

View File

@@ -121,13 +121,6 @@ ol.poll-result-list {
display: flex;
}
.poll-dragged {
opacity: 0.5;
* {
cursor: grabbing !important;
}
}
.poll-question {
font-size: 16px;
font-weight: 600;

View File

@@ -25,7 +25,7 @@
box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25), 0px 0px 0px 1px rgba(0, 0, 0, 0.1);
border-radius: 3px;
cursor: pointer;
padding: 4px;
padding: 1px;
position: absolute;
right: -4px;
top: -3px;

View File

@@ -2,7 +2,8 @@ $sidePanelWidth: 300px;
.prejoin-third-party {
flex-direction: column-reverse;
z-index: auto;
.content {
height: auto;
margin: 0 auto;

2
debian/control vendored
View File

@@ -20,7 +20,7 @@ Description: WebRTC JavaScript video conferences
Package: jitsi-meet-web-config
Architecture: all
Depends: openssl, nginx | nginx-full | nginx-extras | apache2, curl
Depends: openssl, nginx | nginx-full | nginx-extras | openresty | apache2, curl
Description: Configuration for web serving of Jitsi Meet
Jitsi Meet is a WebRTC JavaScript application that uses Jitsi
Videobridge to provide high quality, scalable video conferences.

View File

@@ -57,6 +57,10 @@ case "$1" in
|| [ "$NGINX_EXTRAS_INSTALL_CHECK" = "unpacked" ] ; then
FORCE_NGINX="true"
fi
OPENRESTY_INSTALL_CHECK="$(dpkg-query -f '${Status}' -W 'openresty' 2>/dev/null | awk '{print $3}' || true)"
if [ "$OPENRESTY_INSTALL_CHECK" = "installed" ] || [ "$OPENRESTY_INSTALL_CHECK" = "unpacked" ] ; then
FORCE_OPENRESTY="true"
fi
APACHE_INSTALL_CHECK="$(dpkg-query -f '${Status}' -W 'apache2' 2>/dev/null | awk '{print $3}' || true)"
if [ "$APACHE_INSTALL_CHECK" = "installed" ] || [ "$APACHE_INSTALL_CHECK" = "unpacked" ] ; then
FORCE_APACHE="true"
@@ -172,6 +176,10 @@ case "$1" in
fi
# Fixes multi-stream flags to workaround problem with mobile joining a multi-stream call with multi-stream disabled
FIX_MSG="//Enables multi-stream, do not delete me"
if ! grep -q "^${FIX_MSG}" $JITSI_MEET_CONFIG; then
sed -i "s#config.flags.sourceNameSignaling#${FIX_MSG}\nconfig.flags = config.flags || {};\nconfig.flags.sourceNameSignaling#g" $JITSI_MEET_CONFIG
fi
if ! grep -q "^config.flags.sourceNameSignaling*" $JITSI_MEET_CONFIG; then
echo "config.flags.sourceNameSignaling = true;" >> $JITSI_MEET_CONFIG
fi
@@ -182,21 +190,41 @@ case "$1" in
echo "config.flags.receiveMultipleVideoStreams = true;" >> $JITSI_MEET_CONFIG
fi
if [[ "$FORCE_NGINX" = "true" && ( -z "$JVB_HOSTNAME_OLD" || "$RECONFIGURING" = "true" ) ]] ; then
if [[ "$FORCE_OPENRESTY" = "true" ]]; then
NGX_COMMON_CONF_PATH="/usr/local/openresty/nginx/conf/$JVB_HOSTNAME.conf"
NGX_SVC_NAME=openresty
OPENRESTY_NGX_CONF="/usr/local/openresty/nginx/conf/nginx.conf"
else
NGX_COMMON_CONF_PATH="/etc/nginx/sites-available/$JVB_HOSTNAME.conf"
NGX_SVC_NAME=nginx
fi
if [[ ( "$FORCE_NGINX" = "true" || "$FORCE_OPENRESTY" = "true" ) && ( -z "$JVB_HOSTNAME_OLD" || "$RECONFIGURING" = "true" ) ]] ; then
# this is a reconfigure, lets just delete old links
if [ "$RECONFIGURING" = "true" ] ; then
rm -f /etc/nginx/sites-enabled/$JVB_HOSTNAME_OLD.conf
rm -f /etc/jitsi/meet/$JVB_HOSTNAME_OLD-config.js
if [[ "$FORCE_OPENRESTY" = "true" ]]; then
sed -i "/include.*$JVB_HOSTNAME_OLD/d" "$OPENRESTY_NGX_CONF"
fi
fi
# nginx conf
if [ ! -f /etc/nginx/sites-available/$JVB_HOSTNAME.conf ] ; then
cp /usr/share/jitsi-meet-web-config/jitsi-meet.example /etc/nginx/sites-available/$JVB_HOSTNAME.conf
if [ ! -f /etc/nginx/sites-enabled/$JVB_HOSTNAME.conf ] ; then
ln -s /etc/nginx/sites-available/$JVB_HOSTNAME.conf /etc/nginx/sites-enabled/$JVB_HOSTNAME.conf
if [ ! -f "$NGX_COMMON_CONF_PATH" ] ; then
cp /usr/share/jitsi-meet-web-config/jitsi-meet.example "$NGX_COMMON_CONF_PATH"
if [ ! -f /etc/nginx/sites-enabled/$JVB_HOSTNAME.conf ] && ! [[ "$FORCE_OPENRESTY" = "true" ]] ; then
ln -s "$NGX_COMMON_CONF_PATH" /etc/nginx/sites-enabled/$JVB_HOSTNAME.conf
fi
sed -i "s/jitsi-meet.example.com/$JVB_HOSTNAME/g" "$NGX_COMMON_CONF_PATH"
if [[ "$FORCE_OPENRESTY" = "true" ]]; then
OPENRESTY_NGX_CONF_MD5_ORIG=$(dpkg-query -s openresty | sed -n '/\/nginx\.conf /{s@.* @@;p}')
OPENRESTY_NGX_CONF_MD5_USERS=$(md5sum "$OPENRESTY_NGX_CONF" | sed 's@ .*@@')
if [[ "$OPENRESTY_NGX_CONF_MD5_USERS" = "$OPENRESTY_NGX_CONF_MD5_ORIG" ]]; then
sed -i "/^http \x7b/,/^\x7d/s@^\x7d@\tinclude $NGX_COMMON_CONF_PATH;\n\x7d@" "$OPENRESTY_NGX_CONF"
fi
fi
sed -i "s/jitsi-meet.example.com/$JVB_HOSTNAME/g" /etc/nginx/sites-available/$JVB_HOSTNAME.conf
fi
if [ "$CERT_CHOICE" = "$UPLOADED_CERT_CHOICE" ] ; then
@@ -204,14 +232,14 @@ case "$1" in
CERT_KEY_ESC=$(echo $CERT_KEY | sed 's/\./\\\./g')
CERT_KEY_ESC=$(echo $CERT_KEY_ESC | sed 's/\//\\\//g')
sed -i "s/ssl_certificate_key\ \/etc\/jitsi\/meet\/.*key/ssl_certificate_key\ $CERT_KEY_ESC/g" \
/etc/nginx/sites-available/$JVB_HOSTNAME.conf
"$NGX_COMMON_CONF_PATH"
CERT_CRT_ESC=$(echo $CERT_CRT | sed 's/\./\\\./g')
CERT_CRT_ESC=$(echo $CERT_CRT_ESC | sed 's/\//\\\//g')
sed -i "s/ssl_certificate\ \/etc\/jitsi\/meet\/.*crt/ssl_certificate\ $CERT_CRT_ESC/g" \
/etc/nginx/sites-available/$JVB_HOSTNAME.conf
"$NGX_COMMON_CONF_PATH"
fi
invoke-rc.d nginx reload || true
invoke-rc.d $NGX_SVC_NAME reload || true
elif [[ "$FORCE_APACHE" = "true" && ( -z "$JVB_HOSTNAME_OLD" || "$RECONFIGURING" = "true" ) ]] ; then
# this is a reconfigure, lets just delete old links

View File

@@ -24,6 +24,9 @@ set -e
case "$1" in
remove)
if [ -x "/etc/init.d/openresty" ]; then
invoke-rc.d openresty reload || true
fi
if [ -x "/etc/init.d/nginx" ]; then
invoke-rc.d nginx reload || true
fi
@@ -38,6 +41,7 @@ case "$1" in
rm -f /etc/jitsi/meet/$JVB_HOSTNAME-config.js
rm -f /etc/nginx/sites-available/$JVB_HOSTNAME.conf
rm -f /etc/nginx/sites-enabled/$JVB_HOSTNAME.conf
rm -f /usr/local/openresty/nginx/conf/$JVB_HOSTNAME.conf
rm -f /etc/apache2/sites-available/$JVB_HOSTNAME.conf
rm -f /etc/apache2/sites-enabled/$JVB_HOSTNAME.conf
rm -f /etc/jitsi/meet/$JVB_HOSTNAME.key

View File

@@ -15,6 +15,17 @@ upstream jvb1 {
server 127.0.0.1:9090;
keepalive 2;
}
map $arg_vnode $prosody_node {
default prosody;
v1 v1;
v2 v2;
v3 v3;
v4 v4;
v5 v5;
v6 v6;
v7 v7;
v8 v8;
}
server {
listen 80;
listen [::]:80;
@@ -95,7 +106,7 @@ server {
# BOSH
location = /http-bind {
proxy_pass http://prosody/http-bind?prefix=$prefix&$args;
proxy_pass http://$prosody_node/http-bind?prefix=$prefix&$args;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
@@ -104,7 +115,7 @@ server {
# xmpp websockets
location = /xmpp-websocket {
proxy_pass http://prosody/xmpp-websocket?prefix=$prefix&$args;
proxy_pass http://$prosody_node/xmpp-websocket?prefix=$prefix&$args;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

Binary file not shown.

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

Binary file not shown.

3
globals.d.ts vendored
View File

@@ -13,6 +13,8 @@ declare global {
keyboardshortcut: {
registerShortcut: Function;
unregisterShortcut: Function;
openDialog: Function;
enable: Function;
}
};
const interfaceConfig: any;
@@ -22,6 +24,7 @@ declare global {
JITSI_MEET_LITE_SDK?: boolean;
interfaceConfig?: any;
JitsiMeetJS?: any;
JitsiMeetElectron?: any;
}
const config: IConfig;

3
globals.native.d.ts vendored
View File

@@ -23,10 +23,13 @@ interface IWindow {
onerror: (event: string, source: any, lineno: any, colno: any, e: Error) => void;
onunhandledrejection: (event: any) => void;
setInterval: typeof setInterval;
clearInterval: typeof clearInterval;
setTimeout: typeof setTimeout;
clearTimeout: typeof clearTimeout;
setImmediate: typeof setImmediate;
clearImmediate: typeof clearImmediate;
addEventListener: Function;
}
interface INavigator {

View File

@@ -13,14 +13,14 @@ PODS:
- CocoaLumberjack/Core (= 3.7.2)
- CocoaLumberjack/Core (3.7.2)
- DoubleConversion (1.1.6)
- FBLazyVector (0.68.4)
- FBReactNativeSpec (0.68.4):
- FBLazyVector (0.68.5)
- FBReactNativeSpec (0.68.5):
- RCT-Folly (= 2021.06.28.00-v2)
- RCTRequired (= 0.68.4)
- RCTTypeSafety (= 0.68.4)
- React-Core (= 0.68.4)
- React-jsi (= 0.68.4)
- ReactCommon/turbomodule/core (= 0.68.4)
- RCTRequired (= 0.68.5)
- RCTTypeSafety (= 0.68.5)
- React-Core (= 0.68.5)
- React-jsi (= 0.68.5)
- ReactCommon/turbomodule/core (= 0.68.5)
- Firebase/Analytics (8.15.0):
- Firebase/Core
- Firebase/Core (8.15.0):
@@ -163,201 +163,201 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- RCTRequired (0.68.4)
- RCTTypeSafety (0.68.4):
- FBLazyVector (= 0.68.4)
- RCTRequired (0.68.5)
- RCTTypeSafety (0.68.5):
- FBLazyVector (= 0.68.5)
- RCT-Folly (= 2021.06.28.00-v2)
- RCTRequired (= 0.68.4)
- React-Core (= 0.68.4)
- React (0.68.4):
- React-Core (= 0.68.4)
- React-Core/DevSupport (= 0.68.4)
- React-Core/RCTWebSocket (= 0.68.4)
- React-RCTActionSheet (= 0.68.4)
- React-RCTAnimation (= 0.68.4)
- React-RCTBlob (= 0.68.4)
- React-RCTImage (= 0.68.4)
- React-RCTLinking (= 0.68.4)
- React-RCTNetwork (= 0.68.4)
- React-RCTSettings (= 0.68.4)
- React-RCTText (= 0.68.4)
- React-RCTVibration (= 0.68.4)
- React-callinvoker (0.68.4)
- React-Codegen (0.68.4):
- FBReactNativeSpec (= 0.68.4)
- RCTRequired (= 0.68.5)
- React-Core (= 0.68.5)
- React (0.68.5):
- React-Core (= 0.68.5)
- React-Core/DevSupport (= 0.68.5)
- React-Core/RCTWebSocket (= 0.68.5)
- React-RCTActionSheet (= 0.68.5)
- React-RCTAnimation (= 0.68.5)
- React-RCTBlob (= 0.68.5)
- React-RCTImage (= 0.68.5)
- React-RCTLinking (= 0.68.5)
- React-RCTNetwork (= 0.68.5)
- React-RCTSettings (= 0.68.5)
- React-RCTText (= 0.68.5)
- React-RCTVibration (= 0.68.5)
- React-callinvoker (0.68.5)
- React-Codegen (0.68.5):
- FBReactNativeSpec (= 0.68.5)
- RCT-Folly (= 2021.06.28.00-v2)
- RCTRequired (= 0.68.4)
- RCTTypeSafety (= 0.68.4)
- React-Core (= 0.68.4)
- React-jsi (= 0.68.4)
- React-jsiexecutor (= 0.68.4)
- ReactCommon/turbomodule/core (= 0.68.4)
- React-Core (0.68.4):
- RCTRequired (= 0.68.5)
- RCTTypeSafety (= 0.68.5)
- React-Core (= 0.68.5)
- React-jsi (= 0.68.5)
- React-jsiexecutor (= 0.68.5)
- ReactCommon/turbomodule/core (= 0.68.5)
- React-Core (0.68.5):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default (= 0.68.4)
- React-cxxreact (= 0.68.4)
- React-jsi (= 0.68.4)
- React-jsiexecutor (= 0.68.4)
- React-perflogger (= 0.68.4)
- React-Core/Default (= 0.68.5)
- React-cxxreact (= 0.68.5)
- React-jsi (= 0.68.5)
- React-jsiexecutor (= 0.68.5)
- React-perflogger (= 0.68.5)
- Yoga
- React-Core/CoreModulesHeaders (0.68.4):
- React-Core/CoreModulesHeaders (0.68.5):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.68.4)
- React-jsi (= 0.68.4)
- React-jsiexecutor (= 0.68.4)
- React-perflogger (= 0.68.4)
- React-cxxreact (= 0.68.5)
- React-jsi (= 0.68.5)
- React-jsiexecutor (= 0.68.5)
- React-perflogger (= 0.68.5)
- Yoga
- React-Core/Default (0.68.4):
- React-Core/Default (0.68.5):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-cxxreact (= 0.68.4)
- React-jsi (= 0.68.4)
- React-jsiexecutor (= 0.68.4)
- React-perflogger (= 0.68.4)
- React-cxxreact (= 0.68.5)
- React-jsi (= 0.68.5)
- React-jsiexecutor (= 0.68.5)
- React-perflogger (= 0.68.5)
- Yoga
- React-Core/DevSupport (0.68.4):
- React-Core/DevSupport (0.68.5):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default (= 0.68.4)
- React-Core/RCTWebSocket (= 0.68.4)
- React-cxxreact (= 0.68.4)
- React-jsi (= 0.68.4)
- React-jsiexecutor (= 0.68.4)
- React-jsinspector (= 0.68.4)
- React-perflogger (= 0.68.4)
- React-Core/Default (= 0.68.5)
- React-Core/RCTWebSocket (= 0.68.5)
- React-cxxreact (= 0.68.5)
- React-jsi (= 0.68.5)
- React-jsiexecutor (= 0.68.5)
- React-jsinspector (= 0.68.5)
- React-perflogger (= 0.68.5)
- Yoga
- React-Core/RCTActionSheetHeaders (0.68.4):
- React-Core/RCTActionSheetHeaders (0.68.5):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.68.4)
- React-jsi (= 0.68.4)
- React-jsiexecutor (= 0.68.4)
- React-perflogger (= 0.68.4)
- React-cxxreact (= 0.68.5)
- React-jsi (= 0.68.5)
- React-jsiexecutor (= 0.68.5)
- React-perflogger (= 0.68.5)
- Yoga
- React-Core/RCTAnimationHeaders (0.68.4):
- React-Core/RCTAnimationHeaders (0.68.5):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.68.4)
- React-jsi (= 0.68.4)
- React-jsiexecutor (= 0.68.4)
- React-perflogger (= 0.68.4)
- React-cxxreact (= 0.68.5)
- React-jsi (= 0.68.5)
- React-jsiexecutor (= 0.68.5)
- React-perflogger (= 0.68.5)
- Yoga
- React-Core/RCTBlobHeaders (0.68.4):
- React-Core/RCTBlobHeaders (0.68.5):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.68.4)
- React-jsi (= 0.68.4)
- React-jsiexecutor (= 0.68.4)
- React-perflogger (= 0.68.4)
- React-cxxreact (= 0.68.5)
- React-jsi (= 0.68.5)
- React-jsiexecutor (= 0.68.5)
- React-perflogger (= 0.68.5)
- Yoga
- React-Core/RCTImageHeaders (0.68.4):
- React-Core/RCTImageHeaders (0.68.5):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.68.4)
- React-jsi (= 0.68.4)
- React-jsiexecutor (= 0.68.4)
- React-perflogger (= 0.68.4)
- React-cxxreact (= 0.68.5)
- React-jsi (= 0.68.5)
- React-jsiexecutor (= 0.68.5)
- React-perflogger (= 0.68.5)
- Yoga
- React-Core/RCTLinkingHeaders (0.68.4):
- React-Core/RCTLinkingHeaders (0.68.5):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.68.4)
- React-jsi (= 0.68.4)
- React-jsiexecutor (= 0.68.4)
- React-perflogger (= 0.68.4)
- React-cxxreact (= 0.68.5)
- React-jsi (= 0.68.5)
- React-jsiexecutor (= 0.68.5)
- React-perflogger (= 0.68.5)
- Yoga
- React-Core/RCTNetworkHeaders (0.68.4):
- React-Core/RCTNetworkHeaders (0.68.5):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.68.4)
- React-jsi (= 0.68.4)
- React-jsiexecutor (= 0.68.4)
- React-perflogger (= 0.68.4)
- React-cxxreact (= 0.68.5)
- React-jsi (= 0.68.5)
- React-jsiexecutor (= 0.68.5)
- React-perflogger (= 0.68.5)
- Yoga
- React-Core/RCTSettingsHeaders (0.68.4):
- React-Core/RCTSettingsHeaders (0.68.5):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.68.4)
- React-jsi (= 0.68.4)
- React-jsiexecutor (= 0.68.4)
- React-perflogger (= 0.68.4)
- React-cxxreact (= 0.68.5)
- React-jsi (= 0.68.5)
- React-jsiexecutor (= 0.68.5)
- React-perflogger (= 0.68.5)
- Yoga
- React-Core/RCTTextHeaders (0.68.4):
- React-Core/RCTTextHeaders (0.68.5):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.68.4)
- React-jsi (= 0.68.4)
- React-jsiexecutor (= 0.68.4)
- React-perflogger (= 0.68.4)
- React-cxxreact (= 0.68.5)
- React-jsi (= 0.68.5)
- React-jsiexecutor (= 0.68.5)
- React-perflogger (= 0.68.5)
- Yoga
- React-Core/RCTVibrationHeaders (0.68.4):
- React-Core/RCTVibrationHeaders (0.68.5):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default
- React-cxxreact (= 0.68.4)
- React-jsi (= 0.68.4)
- React-jsiexecutor (= 0.68.4)
- React-perflogger (= 0.68.4)
- React-cxxreact (= 0.68.5)
- React-jsi (= 0.68.5)
- React-jsiexecutor (= 0.68.5)
- React-perflogger (= 0.68.5)
- Yoga
- React-Core/RCTWebSocket (0.68.4):
- React-Core/RCTWebSocket (0.68.5):
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-Core/Default (= 0.68.4)
- React-cxxreact (= 0.68.4)
- React-jsi (= 0.68.4)
- React-jsiexecutor (= 0.68.4)
- React-perflogger (= 0.68.4)
- React-Core/Default (= 0.68.5)
- React-cxxreact (= 0.68.5)
- React-jsi (= 0.68.5)
- React-jsiexecutor (= 0.68.5)
- React-perflogger (= 0.68.5)
- Yoga
- React-CoreModules (0.68.4):
- React-CoreModules (0.68.5):
- RCT-Folly (= 2021.06.28.00-v2)
- RCTTypeSafety (= 0.68.4)
- React-Codegen (= 0.68.4)
- React-Core/CoreModulesHeaders (= 0.68.4)
- React-jsi (= 0.68.4)
- React-RCTImage (= 0.68.4)
- ReactCommon/turbomodule/core (= 0.68.4)
- React-cxxreact (0.68.4):
- RCTTypeSafety (= 0.68.5)
- React-Codegen (= 0.68.5)
- React-Core/CoreModulesHeaders (= 0.68.5)
- React-jsi (= 0.68.5)
- React-RCTImage (= 0.68.5)
- ReactCommon/turbomodule/core (= 0.68.5)
- React-cxxreact (0.68.5):
- boost (= 1.76.0)
- DoubleConversion
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-callinvoker (= 0.68.4)
- React-jsi (= 0.68.4)
- React-jsinspector (= 0.68.4)
- React-logger (= 0.68.4)
- React-perflogger (= 0.68.4)
- React-runtimeexecutor (= 0.68.4)
- React-jsi (0.68.4):
- React-callinvoker (= 0.68.5)
- React-jsi (= 0.68.5)
- React-jsinspector (= 0.68.5)
- React-logger (= 0.68.5)
- React-perflogger (= 0.68.5)
- React-runtimeexecutor (= 0.68.5)
- React-jsi (0.68.5):
- boost (= 1.76.0)
- DoubleConversion
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-jsi/Default (= 0.68.4)
- React-jsi/Default (0.68.4):
- React-jsi/Default (= 0.68.5)
- React-jsi/Default (0.68.5):
- boost (= 1.76.0)
- DoubleConversion
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-jsiexecutor (0.68.4):
- React-jsiexecutor (0.68.5):
- DoubleConversion
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-cxxreact (= 0.68.4)
- React-jsi (= 0.68.4)
- React-perflogger (= 0.68.4)
- React-jsinspector (0.68.4)
- React-logger (0.68.4):
- React-cxxreact (= 0.68.5)
- React-jsi (= 0.68.5)
- React-perflogger (= 0.68.5)
- React-jsinspector (0.68.5)
- React-logger (0.68.5):
- glog
- react-native-background-timer (2.4.1):
- React-Core
@@ -385,76 +385,76 @@ PODS:
- react-native-video/Video (6.0.0-alpha.1):
- PromisesSwift
- React-Core
- react-native-webrtc (1.106.1):
- react-native-webrtc (106.0.0):
- JitsiWebRTC (~> 106.0.0)
- React-Core
- react-native-webview (11.15.1):
- React-Core
- React-perflogger (0.68.4)
- React-RCTActionSheet (0.68.4):
- React-Core/RCTActionSheetHeaders (= 0.68.4)
- React-RCTAnimation (0.68.4):
- React-perflogger (0.68.5)
- React-RCTActionSheet (0.68.5):
- React-Core/RCTActionSheetHeaders (= 0.68.5)
- React-RCTAnimation (0.68.5):
- RCT-Folly (= 2021.06.28.00-v2)
- RCTTypeSafety (= 0.68.4)
- React-Codegen (= 0.68.4)
- React-Core/RCTAnimationHeaders (= 0.68.4)
- React-jsi (= 0.68.4)
- ReactCommon/turbomodule/core (= 0.68.4)
- React-RCTBlob (0.68.4):
- RCTTypeSafety (= 0.68.5)
- React-Codegen (= 0.68.5)
- React-Core/RCTAnimationHeaders (= 0.68.5)
- React-jsi (= 0.68.5)
- ReactCommon/turbomodule/core (= 0.68.5)
- React-RCTBlob (0.68.5):
- RCT-Folly (= 2021.06.28.00-v2)
- React-Codegen (= 0.68.4)
- React-Core/RCTBlobHeaders (= 0.68.4)
- React-Core/RCTWebSocket (= 0.68.4)
- React-jsi (= 0.68.4)
- React-RCTNetwork (= 0.68.4)
- ReactCommon/turbomodule/core (= 0.68.4)
- React-RCTImage (0.68.4):
- React-Codegen (= 0.68.5)
- React-Core/RCTBlobHeaders (= 0.68.5)
- React-Core/RCTWebSocket (= 0.68.5)
- React-jsi (= 0.68.5)
- React-RCTNetwork (= 0.68.5)
- ReactCommon/turbomodule/core (= 0.68.5)
- React-RCTImage (0.68.5):
- RCT-Folly (= 2021.06.28.00-v2)
- RCTTypeSafety (= 0.68.4)
- React-Codegen (= 0.68.4)
- React-Core/RCTImageHeaders (= 0.68.4)
- React-jsi (= 0.68.4)
- React-RCTNetwork (= 0.68.4)
- ReactCommon/turbomodule/core (= 0.68.4)
- React-RCTLinking (0.68.4):
- React-Codegen (= 0.68.4)
- React-Core/RCTLinkingHeaders (= 0.68.4)
- React-jsi (= 0.68.4)
- ReactCommon/turbomodule/core (= 0.68.4)
- React-RCTNetwork (0.68.4):
- RCTTypeSafety (= 0.68.5)
- React-Codegen (= 0.68.5)
- React-Core/RCTImageHeaders (= 0.68.5)
- React-jsi (= 0.68.5)
- React-RCTNetwork (= 0.68.5)
- ReactCommon/turbomodule/core (= 0.68.5)
- React-RCTLinking (0.68.5):
- React-Codegen (= 0.68.5)
- React-Core/RCTLinkingHeaders (= 0.68.5)
- React-jsi (= 0.68.5)
- ReactCommon/turbomodule/core (= 0.68.5)
- React-RCTNetwork (0.68.5):
- RCT-Folly (= 2021.06.28.00-v2)
- RCTTypeSafety (= 0.68.4)
- React-Codegen (= 0.68.4)
- React-Core/RCTNetworkHeaders (= 0.68.4)
- React-jsi (= 0.68.4)
- ReactCommon/turbomodule/core (= 0.68.4)
- React-RCTSettings (0.68.4):
- RCTTypeSafety (= 0.68.5)
- React-Codegen (= 0.68.5)
- React-Core/RCTNetworkHeaders (= 0.68.5)
- React-jsi (= 0.68.5)
- ReactCommon/turbomodule/core (= 0.68.5)
- React-RCTSettings (0.68.5):
- RCT-Folly (= 2021.06.28.00-v2)
- RCTTypeSafety (= 0.68.4)
- React-Codegen (= 0.68.4)
- React-Core/RCTSettingsHeaders (= 0.68.4)
- React-jsi (= 0.68.4)
- ReactCommon/turbomodule/core (= 0.68.4)
- React-RCTText (0.68.4):
- React-Core/RCTTextHeaders (= 0.68.4)
- React-RCTVibration (0.68.4):
- RCTTypeSafety (= 0.68.5)
- React-Codegen (= 0.68.5)
- React-Core/RCTSettingsHeaders (= 0.68.5)
- React-jsi (= 0.68.5)
- ReactCommon/turbomodule/core (= 0.68.5)
- React-RCTText (0.68.5):
- React-Core/RCTTextHeaders (= 0.68.5)
- React-RCTVibration (0.68.5):
- RCT-Folly (= 2021.06.28.00-v2)
- React-Codegen (= 0.68.4)
- React-Core/RCTVibrationHeaders (= 0.68.4)
- React-jsi (= 0.68.4)
- ReactCommon/turbomodule/core (= 0.68.4)
- React-runtimeexecutor (0.68.4):
- React-jsi (= 0.68.4)
- ReactCommon/turbomodule/core (0.68.4):
- React-Codegen (= 0.68.5)
- React-Core/RCTVibrationHeaders (= 0.68.5)
- React-jsi (= 0.68.5)
- ReactCommon/turbomodule/core (= 0.68.5)
- React-runtimeexecutor (0.68.5):
- React-jsi (= 0.68.5)
- ReactCommon/turbomodule/core (0.68.5):
- DoubleConversion
- glog
- RCT-Folly (= 2021.06.28.00-v2)
- React-callinvoker (= 0.68.4)
- React-Core (= 0.68.4)
- React-cxxreact (= 0.68.4)
- React-jsi (= 0.68.4)
- React-logger (= 0.68.4)
- React-perflogger (= 0.68.4)
- React-callinvoker (= 0.68.5)
- React-Core (= 0.68.5)
- React-cxxreact (= 0.68.5)
- React-jsi (= 0.68.5)
- React-logger (= 0.68.5)
- React-perflogger (= 0.68.5)
- RNCalendarEvents (2.2.0):
- React
- RNCAsyncStorage (1.17.3):
@@ -706,8 +706,8 @@ SPEC CHECKSUMS:
boost: a7c83b31436843459a1961bfd74b96033dc77234
CocoaLumberjack: b7e05132ff94f6ae4dfa9d5bce9141893a21d9da
DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662
FBLazyVector: 023a2028f218d648b588348bfa9261b4914b93db
FBReactNativeSpec: 9f4902cc009389d3704ff75de2aa513dee34d5c2
FBLazyVector: 2b47ff52037bd9ae07cc9b051c9975797814b736
FBReactNativeSpec: 0e0d384ef17a33b385f13f0c7f97702c7cd17858
Firebase: 5f8193dff4b5b7c5d5ef72ae54bb76c08e2b841d
FirebaseAnalytics: 7761cbadb00a717d8d0939363eb46041526474fa
FirebaseCore: 5743c5785c074a794d35f2fff7ecc254a91e08b1
@@ -732,18 +732,18 @@ SPEC CHECKSUMS:
PromisesObjC: ab77feca74fa2823e7af4249b8326368e61014cb
PromisesSwift: 99fddfe4a0ec88a56486644c0da106694c92a604
RCT-Folly: 4d8508a426467c48885f1151029bc15fa5d7b3b8
RCTRequired: e6003505912d056f21f64465063cf4b79418f2b9
RCTTypeSafety: d7ef4745c8d9c9faa65c26b4b6230fc5cd4c4424
React: 6692c30fb74ab29078b25c31c9841d863e08cdd9
React-callinvoker: fe2b234fa518d8bb7600707c536ab0a3e1f5edba
React-Codegen: 9964bb2422c7014894182ac50068caae05f68551
React-Core: a07bcd2f15ff93cddc9ceb07eddeec3d2ff8d990
React-CoreModules: 7fb4ee0fc35ad2b7daf775f0ef6309efdd8d3d82
React-cxxreact: 51a8058a35a2f02ad4175334a7cd24aa5558ced4
React-jsi: 69b974b418d2658a3f1799903be7cbcb8ac59755
React-jsiexecutor: 4f35a29798ba9d0d892a84001d11f626688dbb8e
React-jsinspector: 6f75220cd4b6020976d340ab21c63458dd3cad9e
React-logger: 7013d2499df6346e6a72802d4084badaaa82543b
RCTRequired: 0f06b6068f530932d10e1a01a5352fad4eaacb74
RCTTypeSafety: b0ee81f10ef1b7d977605a2b266823dabd565e65
React: 3becd12bd51ea8a43bdde7e09d0f40fba7820e03
React-callinvoker: 11abfff50e6bf7a55b3a90b4dc2187f71f224593
React-Codegen: f8946ce0768fb8e92e092e30944489c4b2955b2d
React-Core: 203cdb6ee2657b198d97d41031c249161060e6ca
React-CoreModules: 6eb0c06a4a223fde2cb6a8d0f44f58b67e808942
React-cxxreact: afb0c6c07d19adbd850747fedeac20c6832d40b9
React-jsi: 14d37a6db2af2c1a49f6f5c2e4ee667c364ae45c
React-jsiexecutor: 45c0496ca8cef6b02d9fa0274c25cf458fe91a56
React-jsinspector: eb202e43b3879aba9a14f3f65788aec85d4e1ea9
React-logger: 98f663b292a60967ebbc6d803ae96c1381183b6d
react-native-background-timer: 17ea5e06803401a379ebf1f20505b793ac44d0fe
react-native-get-random-values: 30b3f74ca34e30e2e480de48e4add2706a40ac8f
react-native-keep-awake: afad8a51dfef9fe9655a6344771be32c8596d774
@@ -755,20 +755,20 @@ SPEC CHECKSUMS:
react-native-slider: 6e9b86e76cce4b9e35b3403193a6432ed07e0c81
react-native-splash-screen: 4312f786b13a81b5169ef346d76d33bc0c6dc457
react-native-video: bb6f12a7198db53b261fefb5d609dc77417acc8b
react-native-webrtc: 4a4c31be61f88d1d3356526eebce72f462a6760e
react-native-webrtc: 0a407105bf428c9157f2e8d4d6f7c844dc185933
react-native-webview: ea4899a1056c782afa96dd082179a66cbebf5504
React-perflogger: 0b0500685176e53ea582c45179a653aa82e4ae49
React-RCTActionSheet: 38469be9d20242f9c717e43c2983e8e3e6c640c4
React-RCTAnimation: 93774f3e8857e7c3c1cbbd277056d02be4496be1
React-RCTBlob: 6d0567d7a6561b62feb8c3b1cc33b3c591ba85ab
React-RCTImage: 1006a91318a6181a0256b89d2e321b6ea0e2e6e3
React-RCTLinking: 0b2300493c879c3bcac2d4c6b0178e8d0e5e2202
React-RCTNetwork: b9a33a95703651abed92490e50396d54b7270a17
React-RCTSettings: e6464123e5b5062fc23bb5adb51188a6061e9601
React-RCTText: 188d6f0ae20cd28891f59ecad41028ee2f793757
React-RCTVibration: a67beb7d2f3c73e9b74c4124ef61b84c601be649
React-runtimeexecutor: 088723cf020113e64736a709f52719dbb359c73e
ReactCommon: 1a4f19f3b4366feec03a98bdbb200b6085c5000f
React-perflogger: 0458a87ea9a7342079e7a31b0d32b3734fb8415f
React-RCTActionSheet: 22538001ea2926dea001111dd2846c13a0730bc9
React-RCTAnimation: 732ce66878d4aa151d56a0d142b1105aa12fd313
React-RCTBlob: 9cb9e3e9a41d27be34aaf89b0e0f52c7ca415d57
React-RCTImage: 6bd16627eb9c4bb79903c4cdec7c551266ee1a5b
React-RCTLinking: e9edfc8919c8fa9a3f3c7b34362811f58a2ebba4
React-RCTNetwork: 880eccd21bbe2660a0b63da5ccba75c46eceeaa6
React-RCTSettings: 8c85d8188c97d6c6bd470af6631a6c4555b79bb3
React-RCTText: bbd275ee287730c5acbab1aadc0db39c25c5c64e
React-RCTVibration: 9819a3bf6230e4b2a99877c21268b0b2416157a1
React-runtimeexecutor: b1f1995089b90696dbc2a7ffe0059a80db5c8eb1
ReactCommon: 149e2c0acab9bac61378da0db5b2880a1b5ff59b
RNCalendarEvents: 7e65eb4a94f53c1744d1e275f7fafcfaa619f7a3
RNCAsyncStorage: 005c0e2f09575360f142d0d1f1f15e4ec575b1af
RNCClipboard: 41d8d918092ae8e676f18adada19104fa3e68495
@@ -781,7 +781,7 @@ SPEC CHECKSUMS:
RNSound: 27e8268bdb0a1f191f219a33267f7e0445e8d62f
RNSVG: f3b60aeeaa81960e2e0536c3a9eef50b667ef3a9
RNWatch: dae6c858a2051dbdcfb00b9a86cf4d90400263b4
Yoga: c926c8eec5c78a788b51e6c8a604825d00d694d7
Yoga: c4d61225a466f250c35c1ee78d2d0b3d41fe661c
PODFILE CHECKSUM: e671cdcdb80fab67e305861c36bfae8ed5a5b0ef

View File

@@ -82,7 +82,7 @@ platform :ios do
export_xcargs: "-allowProvisioningUpdates"
)
# Upload the build to TestFlight (but don't distribute it)
# Upload the build to TestFlight
upload_to_testflight(
beta_app_description: ENV["JITSI_CHANGELOG"],
beta_app_feedback_email: ENV["JITSI_REVIEW_EMAIL"],
@@ -102,24 +102,10 @@ platform :ios do
uses_non_exempt_encryption: false
)
upload_symbols_to_crashlytics
# Cleanup
clean_build_artifacts
reset_git_repo(skip_clean: true)
end
lane :refresh_dsyms do
# Connect to Apple Store Connect
app_store_connect_api_key(
key_id: ENV["ASC_KEY_ID"],
issuer_id: ENV["ASC_ISSUER_ID"],
key_content: ENV["ASC_KEY_CONTENT"],
duration: 1200,
in_house: false
)
# Upload dSYMs to Crashlytics
download_dsyms(min_version: ENV["DSYMS_MIN_VERSION"]) # Download dSYM files from iTC
upload_symbols_to_crashlytics # Upload them to Crashlytics
clean_build_artifacts # Delete the local dSYM files
end
end

View File

@@ -57,8 +57,8 @@
openURL:(NSURL *_Nonnull)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *_Nonnull)options;
- (UIInterfaceOrientationMask)application:(UIApplication *)application
supportedInterfaceOrientationsForWindow:(UIWindow *)window;
- (UIInterfaceOrientationMask)application:(UIApplication *_Nonnull)application
supportedInterfaceOrientationsForWindow:(UIWindow *_Nonnull)window;
#pragma mark - Utility methods

View File

@@ -46,7 +46,7 @@ public class PiPViewCoordinator {
}
}
public let initialPositionInSuperView: Position = .lowerRightCorner
public var initialPositionInSuperView: Position = .lowerRightCorner
// Unused. Remove on the next major release.
@available(*, deprecated, message: "The PiP window size is now fixed to 150px.")

View File

@@ -26,7 +26,6 @@
"hsb": "Hornjoserbšćina",
"hu": "Magyar",
"hy": "Հայերեն",
"id": "Bahasa Indonesia",
"is": "Íslenska",
"it": "Italiano",
"ja": "日本語",
@@ -37,7 +36,6 @@
"ml": "മലയാളം",
"mn": "Монгол",
"mr": "मराठी",
"nb": "Norsk Bokmål",
"nl": "Nederlands",
"oc": "Occitan",
"pl": "Polski",

View File

@@ -1061,7 +1061,6 @@
"chat": "اظهِر/اخفِ نافذة الدردشة",
"clap": "تصفيق",
"collapse": "قلّص",
"dock": "إرساء في النافذة الرئيسية",
"document": "اظهِر/اخفِ الملف المشارك",
"download": "نزِّل التطبيق",
"embedMeeting": "ضمِّن المُلتقى",
@@ -1115,7 +1114,6 @@
"tileView": "اظهِر/اخفِ عرض العنوان",
"toggleCamera": "بدِّل الكاميرا",
"toggleFilmstrip": "بدِّل وضع الشريط السينمائي (filmstrip)",
"undock": "فك في نافذة منفصلة",
"videoblur": "استعمل/اخرج من وضع تغبيش خلفية الفيديو",
"videomute": "بدِّل وضع اخفاء الفيديو"
},
@@ -1133,7 +1131,6 @@
"closeReactionsMenu": "إغلاق قائمة ردود الفعل",
"disableNoiseSuppression": "قم بتعطيل خاصية منع الضوضاء",
"disableReactionSounds": "يمكنك تعطيل أصوات ردود الفعل لهذا المُلتقى",
"dock": "إرساء في النافذة الرئيسية",
"documentClose": "أغلق الملف المشارك",
"documentOpen": "افتح الملف المشارك",
"download": "نزِّل التطبيق",
@@ -1205,7 +1202,6 @@
"talkWhileMutedPopup": "أتحاول التحدث؟ الميكروفون لديك مكتوم.",
"tileViewToggle": "بدِّل عنوان العرض",
"toggleCamera": "بدِّل الكاميرا",
"undock": "فك في نافذة منفصلة",
"videoSettings": "اعدادات الفيديو",
"videomute": "استعمل / أوقف الكاميرا"
},

View File

@@ -1027,7 +1027,6 @@
"chat": "Obre o tanca el xat",
"clap": "Picament de mans",
"collapse": "Col·lapsa",
"dock": "Acobla a la finestra principal",
"document": "Activa o desactiva el document compartit",
"download": "Baixeu les nostres aplicacions",
"embedMeeting": "Insereix la reunió",
@@ -1079,7 +1078,6 @@
"tileView": "Activa o desactiva el mode mosaic",
"toggleCamera": "Activa o desactiva la càmera",
"toggleFilmstrip": "Mostra o amaga la cinta",
"undock": "Desacobla en una finestra separada",
"videoblur": "Activa o desactiva el desenfocament del vídeo",
"videomute": "Activa o desactiva la càmera"
},
@@ -1096,7 +1094,6 @@
"closeChat": "Tanca el xat",
"closeReactionsMenu": "Tanca el menú de reaccions",
"disableReactionSounds": "Podeu desactivar els sons de reacció per a aquesta reunió",
"dock": "Acobla en la finestra principal",
"documentClose": "Tanca el document compartit",
"documentOpen": "Obre el document compartit",
"download": "Baixeu les nostres aplicacions",
@@ -1166,7 +1163,6 @@
"talkWhileMutedPopup": "Intenteu parlar? Esteu silenciat.",
"tileViewToggle": "Activa o desactiva el mode mosaic",
"toggleCamera": "Activa o desactiva la càmera",
"undock": "Desacobla en una finestra principal",
"videoSettings": "Paràmetres de vídeo",
"videomute": "Inicia o atura la càmera"
},

File diff suppressed because it is too large Load Diff

View File

@@ -271,6 +271,7 @@
"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",
"hide": "Ausblenden",
"hideShareAudioHelper": "Diese Meldung nicht mehr anzeigen",
"incorrectPassword": "Name oder Passwort ungültig",
"incorrectRoomLockPassword": "Falsches Passwort",
@@ -388,6 +389,7 @@
"shareYourScreenDisabled": "Bildschirmfreigabe deaktiviert.",
"sharedVideoDialogError": "Fehler: Ungültige URL",
"sharedVideoLinkPlaceholder": "YouTube-URL oder direkte Video-URL",
"show": "Anzeigen",
"start": "Starte ",
"startLiveStreaming": "Livestream starten",
"startRecording": "Aufnahme starten",
@@ -624,6 +626,7 @@
"no": "Nein",
"participant": "Person",
"participantStats": "Personenstatistik",
"selectTabTitle": "🎥 Bitte dieses Tab zur Aufzeichnung auswählen",
"sessionToken": "Sitzungs-Token",
"start": "Aufnahme starten",
"stop": "Aufnahme stoppen",
@@ -1063,7 +1066,6 @@
"chat": "Chatfenster öffnen / schließen",
"clap": "Klatschen",
"collapse": "Einklappen",
"dock": "In Hauptfenster einbinden",
"document": "Geteiltes Dokument schließen",
"download": "Unsere Apps herunterladen",
"embedMeeting": "Konferenz einbetten",
@@ -1117,9 +1119,9 @@
"tileView": "Kachelansicht ein-/ausschalten",
"toggleCamera": "Kamera wechseln",
"toggleFilmstrip": "Miniaturansichten ein-/ausschalten",
"undock": "In eigenem Fenster anzeigen",
"videoblur": "Unscharfer Hintergrund ein-/ausschalten",
"videomute": "„Video stummschalten“ ein-/ausschalten"
"videomute": "„Video stummschalten“ ein-/ausschalten",
"whiteboard": "Whiteboard ein-/ausschalten"
},
"addPeople": "Personen zur Konferenz hinzufügen",
"audioOnlyOff": "Modus „Nur Audio“ deaktivieren",
@@ -1135,7 +1137,6 @@
"closeReactionsMenu": "Interaktionsmenü schließen",
"disableNoiseSuppression": "Rauschunterdrückung deaktivieren",
"disableReactionSounds": "Sie können die Interaktionstöne für diese Konferenz deaktivieren",
"dock": "In Hauptfenster einbinden",
"documentClose": "Geteiltes Dokument schließen",
"documentOpen": "Geteiltes Dokument öffnen",
"download": "Unsere Apps herunterladen",
@@ -1150,6 +1151,7 @@
"giphy": "GIPHY ein-/ausschalten",
"hangup": "Konferenz verlassen",
"help": "Hilfe",
"hideWhiteboard": "Whiteboard ausblenden",
"invite": "Personen einladen",
"joinBreakoutRoom": "In Breakout-Raum wechseln",
"laugh": "Lachen",
@@ -1195,6 +1197,7 @@
"shareaudio": "Audio teilen",
"sharedvideo": "Video teilen",
"shortcuts": "Tastenkürzel anzeigen",
"showWhiteboard": "Whiteboard anzeigen",
"silence": "Stille",
"speakerStats": "Sprechstatistik",
"startScreenSharing": "Bildschirmfreigabe starten",
@@ -1207,7 +1210,6 @@
"talkWhileMutedPopup": "Versuchen Sie zu sprechen? Ihr Mikrofon ist stummgeschaltet.",
"tileViewToggle": "Kachelansicht ein-/ausschalten",
"toggleCamera": "Kamera wechseln",
"undock": "In eigenem Fenster anzeigen",
"videoSettings": "Kameraeinstellungen",
"videomute": "Kamera starten / stoppen"
},
@@ -1219,6 +1221,8 @@
"labelToolTip": "Das Meeting wird transkribiert",
"off": "Transkribieren gestoppt",
"pending": "Transkribieren des Meetings wird vorbereitet…",
"sourceLanguageDesc": "Aktuell ist die Sprache der Konferenz auf <b>{{sourceLanguage}}</b> eingestellt. <br/> Sie könne dies hier ",
"sourceLanguageHere": "ändern",
"start": "Anzeige der Untertitel starten",
"stop": "Anzeige der Untertitel stoppen",
"subtitles": "Untertitel",

View File

@@ -71,7 +71,7 @@
"titleWithPolls": "Εισάγετε ένα ψευδώνυμο για τη χρήση της συνομιλίας"
},
"noMessagesMessage": "Δεν υπάρχουν μηνύματα στη συνάντηση ακόμα. Ξεκινήστε μια συζήτηση εδώ!",
"privateNotice": "Ιδιωτικό μηνύμα στον / στην {recipient}}",
"privateNotice": "Ιδιωτικό μηνύμα στον / στην {{recipient}}",
"sendButton": "Στείλτε",
"title": "Συνομιλία",
"titleWithPolls": "Συνομιλία",
@@ -517,7 +517,7 @@
"oldElectronClientDescription3": " τώρα!",
"passwordRemovedRemotely": "Το $t(lockRoomPasswordUppercase) αφαιρέθηκε από έναν άλλον συμμετέχοντα",
"passwordSetRemotely": "Το $t(lockRoomPasswordUppercase) ορίστηκε από άλλον συμμετέχοντα",
"raisedHand": "Ο/Η {{name}} θα ήθελε να μιλήσει.",
"raisedHand": "Ο/Η {{participantDisplayName}} θα ήθελε να μιλήσει.",
"somebody": "Κάποιος",
"startSilentDescription": "Ξαναμπείτε στη συνάντηση για να ενεργοποιήσετε τον ήχο",
"startSilentTitle": "Μπήκες χωρίς συσκευή εξόδου ήχου!",

View File

@@ -365,7 +365,7 @@
"mute": "Mute or unmute your microphone",
"pushToTalk": "Press to transmit",
"raiseHand": "Raise or lower your hand",
"showSpeakerStats": "Show speaker stats",
"showSpeakerStats": "Show participants stats",
"toggleChat": "Open or close the chat",
"toggleFilmstrip": "Show or hide video thumbnails",
"toggleScreensharing": "Switch between camera and screen sharing",
@@ -579,7 +579,7 @@
"minutes": "{{count}}m",
"name": "Name",
"seconds": "{{count}}s",
"speakerStats": "Speaker Stats",
"speakerStats": "Participants Stats",
"speakerTime": "Speaker Time"
},
"startupoverlay": {
@@ -626,7 +626,7 @@
"sharedvideo": "Toggle video sharing",
"shortcuts": "Toggle shortcuts",
"show": "Show on stage",
"speakerStats": "Toggle speaker statistics",
"speakerStats": "Toggle participants statistics",
"tileView": "Toggle tile view",
"toggleCamera": "Toggle camera",
"videoblur": "",
@@ -662,7 +662,7 @@
"shareRoom": "Invite someone",
"sharedvideo": "Share video",
"shortcuts": "View shortcuts",
"speakerStats": "Speaker stats",
"speakerStats": "Participants stats",
"startScreenSharing": "Start screen sharing",
"startSubtitles": "Start subtitles",
"startvideoblur": "",

View File

@@ -1067,7 +1067,6 @@
"chat": "Otvori/Zatvori chat",
"clap": "Plješći",
"collapse": "Sklopi",
"dock": "Prikvači u glavni prozor",
"document": "Uključi/Isključi dijeljeni dokument",
"download": "Preuzmi naše aplikacije",
"embedMeeting": "Ugradi sastanak",
@@ -1121,7 +1120,6 @@
"tileView": "Uključi/Isključi pločasti prikaz",
"toggleCamera": "Uključi/Isključi kameru",
"toggleFilmstrip": "Uključi/Isključi slike videa",
"undock": "Odspoji u zasebni prozor",
"videoblur": "Uključi/Isključi zamućenje videa",
"videomute": "Pokreni/Prekini kameru",
"whiteboard": "Pokaži/Sakrij ploču za prezentacije"
@@ -1140,7 +1138,6 @@
"closeReactionsMenu": "Zatvori izbornik reakcija",
"disableNoiseSuppression": "Isključi suzbijanje šumova",
"disableReactionSounds": "Za ovaj sastanak možeš isključiti zvukove reakcija",
"dock": "Prikvači u glavni prozor",
"documentClose": "Zatvori dijeljeni dokument",
"documentOpen": "Otvori dijeljeni dokument",
"download": "Preuzmi naše aplikacije",
@@ -1214,7 +1211,6 @@
"talkWhileMutedPopup": "Pokušavaš govoriti? Tvoj zvuk je isključen.",
"tileViewToggle": "Uključi/Isključi pločasti prikaz",
"toggleCamera": "Uključi/Isključi kameru",
"undock": "Odspoji u zasebni prozor",
"videoSettings": "Videopostavke",
"videomute": "Pokreni/Prekini kameru"
},

View File

@@ -1033,7 +1033,6 @@
"chat": "chat-woknješko pokazać/schować",
"clap": "placać",
"collapse": "pomjeńšić",
"dock": "we hłownej wobrazowce fiksěrować",
"document": "dźěleny dokument začinić",
"download": "naše aplikacije downloadować ",
"embedMeeting": "konferencu integrować",
@@ -1085,7 +1084,6 @@
"tileView": "kachlicowy napohlad zapnyć/hasnyć",
"toggleCamera": "kameru měnić",
"toggleFilmstrip": "miniaturowy napohlad zapnyć/hasnyć ",
"undock": "rozwjazać",
"videoblur": "njejasny widejo zapnyć/hasnyć ",
"videomute": "„něme šaltowanje wideja zapnyć/hasnyć "
},
@@ -1102,7 +1100,6 @@
"closeChat": "chat začinić",
"closeReactionsMenu": "meni za interakcije začinić",
"disableReactionSounds": "Móžeće zwuki za interakcije za tutu konferencu deaktiwěrować.",
"dock": "fiksěrować",
"documentClose": "dźěleny dokument začinić",
"documentOpen": "dźěleny dokument wočinić",
"download": "naše aplikacije downloadować",
@@ -1172,7 +1169,6 @@
"talkWhileMutedPopup": "Spytaće Wy rěčeć? Waš mikrofon je němy.",
"tileViewToggle": " kachlicowy napohlad zapnyć/hasnyć ",
"toggleCamera": "kameru měnić",
"undock": "rozwjazać",
"videoSettings": "nastajenja za widejo",
"videomute": "kameru startować/hasnyć"
},

View File

@@ -27,6 +27,25 @@
"audioOnly": {
"audioOnly": "Alacsony sávszélesség"
},
"breakoutRooms": {
"actions": {
"add": "Pihenőszoba hozzáadása",
"autoAssign": "Automatikus hozzárendelés a pihenőszobákhoz",
"close": "Bezárás",
"join": "Csatlakozás",
"leaveBreakoutRoom": "Pihenőszoba elhagyása",
"more": "Bővebben",
"remove": "Eltávolítás",
"sendToBreakoutRoom": "Résztvevő áthelyezése ide:"
},
"defaultName": "Pihenőszoba #{{index}}",
"mainRoom": "Fő szoba",
"notifications": {
"joined": "Csatlakozva a \"{{name}}\" pihenőszobához",
"joinedMainRoom": "Csatlakozva a fő szobához",
"joinedTitle": "Pihenőszobák"
}
},
"calendarSync": {
"addMeetingURL": "Értekezlet hivatkozásának hozzáadása",
"confirmAddLink": "Hozzáadható egy Jitsi hivatkozás az eseményhez?",
@@ -46,6 +65,7 @@
"today": "Ma"
},
"chat": {
"enter": "Belépés a szobába",
"error": "Hiba: az üzenetet nem sikerült elküldeni. Hiba oka: {{error}}",
"fieldPlaceHolder": "Írja ide az üzenetét",
"messageTo": "Privát üzenet a felhasználónak: {{recipient}}",
@@ -58,14 +78,21 @@
"noMessagesMessage": "A találkozón még nincsenek üzenetek. Itt kezdhet beszélgetést!",
"privateNotice": "Privát üzenet a felhasználónak: {{recipient}}",
"sendButton": "Küldés",
"tabs": {
"chat": "Csevegés",
"polls": "Szavazás"
},
"title": "Csevegés",
"titleWithPolls": "Csevegés",
"you": "neked"
"titleWithPolls": "Csevegés és szavazás",
"you": "te"
},
"chromeExtensionBanner": {
"buttonText": "Chrome kiterjesztés telepítése",
"dontShowAgain": "Ne jelenjen meg újra",
"installExtensionText": "Kiterjesztés telepítése a Google Calendar és az Office 365 integrációjához"
"installExtensionText": "Kiterjesztés telepítése a Google Calendar és az Office 365 integrációjához",
"raiseHandAction": "Kéz felemelése",
"reactionSounds": "Hangok kikapcsolása",
"reactionSoundsForAll": "Hangok kikapcsolása mindenkinek"
},
"connectingOverlay": {
"joiningRoom": "Kapcsolódás az értekezlethez…"
@@ -189,12 +216,18 @@
"dismiss": "Elutasítás",
"displayNameRequired": "Helló! Mi a neve?",
"done": "Kész",
"enterDisplayName": "Adja meg itt a nevét",
"e2eeDescription": "A végpontok közötti titkosítás jelenleg KÍSÉRLETES. Ne feledje, hogy a végpontok közötti titkosítás bekapcsolása hatékonyan letiltja a szerveroldali szolgáltatásokat, például: telefonos részvételt. Ne feledje azt is, hogy az értekezlet csak olyan felhasználók számára működik, akik olyan böngészőkből csatlakoznak, amelyek támogatják a beilleszthető adatfolyamokat.",
"e2eeLabel": "Végpontok közötti titkosítás engedélyezése",
"embedMeeting": "Meeting beágyazása",
"enterDisplayName": "Adja meg a nevét",
"error": "Hiba",
"externalInstallationMsg": "Telepíteni kell a munkaasztal megosztására való kiterjesztést.",
"externalInstallationTitle": "Kiterjesztésre van szükség",
"goToStore": "Ugrás az alkalmazásbolthoz",
"gracefulShutdown": "Jelenleg a szolgáltatás karbantartás miatt nem elérhető. Később próbálja meg ismét.",
"grantModeratorDialog": "Biztos, hogy moderátori jogokat kíván adni a következőnek: {{participantName}}?",
"grantModeratorTitle": "Moderátori jogok megadása",
"hideShareAudioHelper": "Ne mutassa ezt az ablakot többé",
"incorrectPassword": "Helytelen felhasználói név és jelszó",
"incorrectRoomLockPassword": "Helytelen jelszó",
"inlineInstallExtension": "Telepítés azonnal",
@@ -217,21 +250,34 @@
"maxUsersLimitReached": "A lehetséges résztvevők maximális száma elérve. A konferencia tele van. Lépjen kapcsolatba az értekezlet tulajdonosával vagy próbálkozzon később!",
"maxUsersLimitReachedTitle": "A lehetséges résztvevők maximális száma elérve",
"micConstraintFailedError": "A mikrofon nem felel meg bizonyos kikötéseknek.",
"micNotFoundError": "Nem található mikrofon.",
"micNotFoundError": "A mikrofon nem található.",
"micNotSendingData": "A számítógép beállításai között kell visszahangosítani a mikrofont vagy beállítani a hangfelvétel szintjét",
"micNotSendingDataTitle": "A mikrofon le van némítva a rendszerbeállításokban",
"micPermissionDeniedError": "Nem adott engedélyt a mikrofon használatához. Csatlakozhat a beszélgetéshez, de a többiek nem fogják Önt hallani. A címsorban lévő kamera ikonnal lehet ezt helyrehozni.",
"micUnknownError": "Ismeretlen ok miatt nem lehet a mikrofont használni.",
"moderationAudioLabel": "Engedélyezze a résztvevőknek saját némításuk feloldását",
"moderationVideoLabel": "Engedélyezze a résztvevőknek saját kamerájuk elindítását",
"muteEveryoneDialog": "Valóban mindenki elnémítható? Nem fogja tudni visszahangosítani, de ő önmagát bármikor vissza tudja majd hangosítani.",
"muteEveryoneElseDialog": "Némítás után már nem fogja tudni visszahangosítani, de ő önmagát bármikor vissza tudja hangosítani.",
"muteEveryoneElseTitle": "Mindenki elnémítása, kivéve: {{whom}}?",
"muteEveryoneElsesVideoDialog": "A kamera letiltása után nem tudja újra bekapcsolni, de ők bármikor újra bekapcsolhatják.",
"muteEveryoneElsesVideoTitle": "Mindenki kamerájának tilátsa, kivéve {{whom}}?",
"muteEveryoneSelf": "önmagamat",
"muteEveryoneStartMuted": "Mindenki elnémítva kezd ezután",
"muteEveryoneTitle": "Mindenki elnémítása?",
"muteEveryonesVideoDialog": "A résztvevők bármikor be tudják kapcsolni a kamerájukat.",
"muteEveryonesVideoDialogModerationOn": "A résztvevők bármikor kérhetik videójuk bekapcsolását.",
"muteEveryonesVideoTitle": "Minden résztvevő kameráját leállítja?",
"muteParticipantBody": "Nem fogja tudni visszahangosítani, de ő önmagát bármikor vissza tudja majd hangosítani.",
"muteParticipantButton": "Némítás",
"muteParticipantDialog": "Valóban elnémítható ez a résztvevő? Nem fogja tudni visszahangosítani, de ő önmagát bármikor vissza tudja majd hangosítani.",
"muteParticipantTitle": "Elnémítható a résztvevő?",
"muteParticipantsVideoBody": "Ön nem tudja újra bekapcsolni a kamerát, de ők bármikor újra bekapcsolhatják.",
"muteParticipantsVideoButton": "Kamera leállítása",
"muteParticipantsVideoDialog": "Biztosan le akarja tiltani ennek a résztvevőnek a kameráját? Ön nem tudja újra bekapcsolni a kamerát, de ők bármikor újra bekapcsolhatják.",
"muteParticipantsVideoDialogModerationOn": "Are you sure you want to turn off this participant's camera? You won't be able to turn the camera back on and neither will they.",
"muteParticipantsVideoTitle": "Letiltja ennek a résztvevőnek a kameráját?",
"password": "Jelszó",
"passwordLabel": "Az értekezletet zárolta egy résztvevő. Csatlakozáshoz adja meg a $t(lockRoomPassword).",
"passwordNotSupported": "Az értekezlet $t(lockRoomPassword) beállítása nem támogatott.",
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) nem támogatott",
@@ -249,6 +295,7 @@
"remoteControlShareScreenWarning": "Vegye figyelembe, hogy ha megnyomja az „Engedélyezés” lehetőséget, akkor megosztja a képernyőt!",
"remoteControlStopMessage": "A távoli munkamenet irányítása befejeződött!",
"remoteControlTitle": "Távoli asztal vezérlése",
"remoteUserControls": "{{username}} vezérlői",
"removePassword": "$t(lockRoomPassword) eltávolítása",
"removeSharedVideoMsg": "Valóban eltávolítható a megosztott videó?",
"removeSharedVideoTitle": "Megosztott videó eltávolítása",
@@ -267,11 +314,14 @@
"sendPrivateMessageTitle": "Privátban legyen elküldve?",
"serviceUnavailable": "Szolgáltatás nem elérhető",
"sessTerminated": "Hívás megszakadt",
"shareAudio": "Tovább",
"shareAudioTitle": "Hang megosztása",
"shareVideoLinkError": "Adjon meg egy helyes linket.",
"shareVideoTitle": "Videó megosztása",
"shareYourScreen": "Képernyő megosztása",
"shareYourScreenDisabled": "Képernyőmegosztás letiltva.",
"shareYourScreenDisabledForGuest": "Vendég nem végezhet képernyőmegosztást.",
"sharedVideoLinkPlaceholder": "YouTube link vagy közvetlen videó link",
"startLiveStreaming": "Élő közvetítés kezdése",
"startRecording": "Felvétel indítása",
"startRemoteControlErrorMessage": "Hiba történt a távoli vezérlés munkamenetének indítása közben!",
@@ -287,6 +337,7 @@
"transcribing": "Átirat készítése",
"unlockRoom": "Értekezlet $t(lockRoomPassword) eltávolítása",
"userPassword": "felhasználói jelszó",
"videoLink": "Videó link",
"yourEntireScreen": "A teljes képernyő"
},
"documentSharing": {
@@ -367,11 +418,16 @@
"showSpeakerStats": "Beszéd statisztikák megjelenítése",
"toggleChat": "Csevegés megnyitása vagy bezárása",
"toggleFilmstrip": "Videó bélyegképek megjelenítése vagy elrejtése",
"toggleParticipantsPane": "A résztvevők panel megjelenítése vagy elrejtése",
"toggleScreensharing": "Váltás kamera és képernyőmegosztás között",
"toggleShortcuts": "Gyorsbillentyűk megjelenítése vagy elrejtése",
"videoMute": "Kamera elindítása vagy leállítása",
"videoQuality": "Hívás minőségének kezelése"
},
"largeVideo": {
"screenIsShared": "Ön megosztja a képernyőjét",
"showMeWhatImSharing": "Látni szeretném mit osztok meg"
},
"liveStreaming": {
"busy": "Dolgozunk a közvetítési erőforrások felszabadításán. Kísérelje meg újra néhány perc múlva.",
"busyTitle": "Jelenleg minden közvetítő foglalt",
@@ -405,6 +461,44 @@
"unavailableTitle": "Élő közvetítés elérhetetlen",
"youtubeTerms": "YouTube szolgáltatási feltételek"
},
"lobby": {
"admit": "Engedélyezés",
"admitAll": "Mindet engedélyez",
"allow": "Engedélyez",
"backToKnockModeButton": "Csatlakozási kérelem küldése",
"chat": "Chat",
"dialogTitle": "Lobby mód",
"disableDialogContent": "A lobby mód jelenleg elérhető. Lehetőséged van csak azokat behívni a megbeszélésre, akik erre jogosultak általad. Szeretnéd kikapcsolni?",
"disableDialogSubmit": "Elutasítás",
"emailField": "Írd be az email címed",
"enableDialogPasswordField": "Jelszó megadása (választható)",
"enableDialogSubmit": "Elfogadás",
"enableDialogText": "A Lobby mód lehetővé teszi a megbeszélés védelmét azáltal, hogy csak a moderátor hivatalos jóváhagyása után engedi be az embereket.",
"enterPasswordButton": "Adja meg az értekezlet jelszavát",
"enterPasswordTitle": "Adja meg a jelszót az értekezlethez való csatlakozáshoz",
"errorMissingPassword": "Kérjük, adja meg az értekezlet jelszavát",
"invalidPassword": "Helytelen jelszó",
"joinRejectedMessage": "Csatlakozási kérelmét egy moderátor elutasította.",
"joinRejectedTitle": "Csatlakozási kérelem elutasítva.",
"joinTitle": "Csatlakozás az értekezlethez",
"joinWithPasswordMessage": "Csatlakozás jelszóval, kérjük várjon...",
"joiningMessage": "Amint valaki elfogadja kérését, csatlakoztatjuk az értekezlethez",
"joiningTitle": "Értekezlethez csatlakozás kérése...",
"joiningWithPasswordTitle": "Csatlakozás jelszóval...",
"knockButton": "Csatlakozási kérelem küldése",
"knockTitle": "Valaki szeretne csatlakozni az értekezlethez",
"nameField": "Adja meg a nevét",
"notificationLobbyAccessDenied": "{{targetParticipantName}} elutasításra került a csatlakozásod {{originParticipantName}} által",
"notificationLobbyAccessGranted": "{{targetParticipantName}} a csatlakozozásod elfogadva lett {{originParticipantName}} által",
"notificationLobbyDisabled": "Lobby tiltva lett {{originParticipantName}} által.",
"notificationLobbyEnabled": "Lobby engedélyezve lett {{originParticipantName}} által.",
"notificationTitle": "Lobby",
"passwordField": "Adja meg az értekezlet jelszavát",
"passwordJoinButton": "Csatlakozás",
"reject": "Elutasít",
"rejectAll": "Mindet elutasít",
"toggleLabel": "Lobby engedélyezése"
},
"localRecording": {
"clientState": {
"off": "Kikapcsolva",
@@ -449,11 +543,18 @@
"focus": "Konferencia fókusza",
"focusFail": "{{component}} nem elérhető újrapróbálkozás {{ms}} másodperc múlva",
"grantedTo": "Moderátori jogok biztosítva {{to}} számára!",
"hostAskedUnmute": "Kérlek hangosítsd vissza a mikrofonod.",
"invitedOneMember": "{{name}} meg lett hívva",
"invitedThreePlusMembers": "{{name}} és {{count}} másik felhasználó meg lett hívva",
"invitedTwoMembers": "{{first}} és {{second}} lett meghívva",
"kickParticipant": "{{kicked}} résztvevőt kirúgta {{kicker}}",
"leftOneMember": "{{name}} elhagyta az értekezletet",
"leftThreePlusMembers": "{{name}} és mások elhagyták az értekezletet",
"leftTwoMembers": "{{first}} és {{second}} elhagyták az értekezletet",
"localRecordingStarted": "{{name}} elkezdte rögzíteni az értekezletet.",
"localRecordingStopped": "{{name}} leállította a rögzítést.",
"me": "Én",
"moderationInEffectTitle": "A moderátor elnémította a mikrofonját",
"moderator": "Moderátori jogok biztosítva!",
"muted": "A beszélgetést elnémítva kezdte meg.",
"mutedRemotelyDescription": "Bármikor visszahangosíthatja magát, ha készen áll a beszédre. Némítsa le magát ismét, ha a felesleges zajoktól meg kívánja védeni az értekezletet.",
@@ -462,6 +563,10 @@
"newDeviceAction": "Alkalmaz",
"newDeviceAudioTitle": "Új hangeszköz észlelve",
"newDeviceCameraTitle": "Új kamera észlelve",
"noiseSuppressionFailedTitle": "Nem sikerült elindítani a zajcsökkentést",
"noiseSuppressionNoTrackDescription": "Kérjük, először kapcsolja ki a mikrofon némítását.",
"noiseSuppressionStereoDescription": "A sztereó zajcsökkentés jelenleg nem támogatott.",
"participantWantsToJoin": "Csatlakozni szeretne az értekezlethez",
"passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) egy másik résztvevő által eltávolítva",
"passwordSetRemotely": "$t(lockRoomPasswordUppercase) egy másik résztvevő által beállítva",
"raisedHand": "{{name}} beszélni szeretne.",
@@ -472,9 +577,115 @@
"suboptimalExperienceTitle": "Böngészőhiba",
"unmute": "Visszahangosítás"
},
"participantsPane": {
"actions": {
"allow": "Engedélyezés a résztvevőknek, hogy:",
"allowVideo": "Videó engedélyezése",
"askUnmute": "Kérje a némítás feloldását",
"audioModeration": "A némítást feloldhassák",
"blockEveryoneMicCamera": "Block everyone's mic and camera",
"invite": "Meghívás",
"moreModerationActions": "További moderálási opciók",
"moreModerationControls": "További moderálási vezérlők",
"moreParticipantOptions": "Résztvevő további beállításai",
"mute": "Némítás",
"muteAll": "Mindenkit elnémít",
"muteEveryoneElse": "Mute everyone else",
"stopEveryonesVideo": "Mindenki videójának leállítása",
"stopVideo": "Videó leállítása",
"unblockEveryoneMicCamera": "Unblock everyone's mic and camera",
"videoModeration": "Elindíthassák a videójukat"
},
"close": "Bezár",
"header": "Résztvevők",
"headings": {
"lobby": "Lobby ({{count}})",
"participantsList": "Résztvevők ({{count}})",
"waitingLobby": "Lobby-ban várakozók ({{count}})"
},
"search": "Résztvevők keresése"
},
"passwordDigitsOnly": "Legfeljebb {{number}} szám",
"passwordSetRemotely": "egy másik résztvevő által beállítva",
"polls": {
"answer": {
"skip": "Kihagyás",
"submit": "Küldés"
},
"by": "Létrehozta: {{ name }}",
"create": {
"addOption": "Opció hozzáadása",
"answerPlaceholder": "Opció {{index}}",
"cancel": "Mégsem",
"create": "Szavazás létrehozása",
"pollOption": "Opció {{index}}",
"pollQuestion": "Szavazás kérdése",
"questionPlaceholder": "Írja le a kérdést",
"removeOption": "Opció eltávolítása",
"send": "Küldés"
},
"notification": {
"description": "Szavazás megnyitása",
"title": "Új szavazás létrehozva"
},
"results": {
"changeVote": "Módosítás",
"empty": "Még nincsenek szavazások. Indítson szavazást itt!",
"hideDetailedResults": "Részletek elrejtése",
"showDetailedResults": "Részletek",
"vote": "Szavazás"
}
},
"poweredby": "Működteti a",
"prejoin": {
"audioAndVideoError": "Hang és videó hiba:",
"audioDeviceProblem": "Hiba lépett fel az hangeszközzel",
"audioOnlyError": "Hang hiba:",
"audioTrackError": "Nem lehet a hangot rögzíteni.",
"callMe": "Hívj fel",
"callMeAtNumber": "Hívj fel ezen a számon:",
"calling": "Hívás",
"configuringDevices": "Eszköz beállítás...",
"connectedWithAudioQ": "Csak hanggal szeretne csatlakozni?",
"connection": {
"good": "Az internet kapcsolat jónak tűnik!",
"nonOptimal": "Az internet kapcsolat nem optimális",
"poor": "Az internet kapcsolat nagyon gyenge!"
},
"connectionDetails": {
"goodQuality": "Fantasztikus! A média minősége kiváló lesz."
},
"copyAndShare": "Másolom és megosztom az értekezlet linkjét",
"dialInMeeting": "Behívás az értekezletbe",
"dialInPin": "Behívás az értkezeletbe és megadom a PIN kódot:",
"dialing": "Tárcsázás",
"doNotShow": "Ne mutassa mégegyszer ezt a képernyőt",
"errorDialOut": "Nem sikerült a behívás",
"errorDialOutDisconnected": "Nem sikerült a behívás. Kapcsolat bontása",
"errorDialOutFailed": "Nem sikerült a behívás. Hiba a hívásban",
"errorDialOutStatus": "Hiba a hívás státusz megadásában",
"errorMissingName": "Kérlet add meg a neved, hogy csatlakozhass a megbeszéléshez",
"errorNoPermissions": "Engedélyeznie kell a mikrofonhoz és a kamerához való hozzáférést",
"errorStatusCode": "Hiba a hiváskor, hiba kód: {{status}}",
"errorValidation": "Hívószám validációs hiba",
"iWantToDialIn": "Hívni szeretném",
"initiated": "Hívás felépítés",
"joinAudioByPhone": "Csatlakozás telefon beszélgetéssel",
"joinMeeting": "Csatlakozás",
"joinMeetingInLowBandwidthMode": "Csatlakozás alacsony sávszélességi módban",
"joinWithoutAudio": "Csatlakozás hang nélkül",
"keyboardShortcuts": "Gyorsbillentyűk engedélyezése",
"linkCopied": "A link a vágólapra másolva",
"lookGood": "A mikrofon megfelelően működik",
"or": "vagy",
"premeeting": "Csatlakozás előtt",
"screenSharingError": "Képernyő megosztás hiba:",
"showScreen": "Csatlakozás előtti kamerakép",
"startWithPhone": "Kezdés telefonhanggal",
"videoOnlyError": "Videó hiba:",
"videoTrackError": "Nem sikerült a videó megjelenítés.",
"viewAllNumbers": "Összes szám megjelenítése"
},
"presenceStatus": {
"busy": "Foglalt",
"calling": "Hívás…",
@@ -509,13 +720,19 @@
"failedToStart": "A felvétel indítása meghiúsult",
"fileSharingdescription": "Felvétel megosztása az értekezlet résztvevőivel",
"live": "ÉLŐ",
"localRecordingNoNotificationWarning": "A felvételt nem közöljük más résztvevőkkel. Értesítenie kell velük, hogy a találkozót rögzítették.",
"localRecordingStartWarning": "A megbeszélésből való kilépés előtt feltétlenül állítsa le a felvételt, hogy elmentse azt.",
"localRecordingStartWarningTitle": "Állítsa le a felvételt a mentéshez",
"localRecordingWarning": "Győződjön meg arról, hogy az aktuális lapot választotta a megfelelő videó és hang használatához. A felvétel jelenleg 1 GB-ra van korlátozva, ami körülbelül 100 perc.",
"loggedIn": "Belépve mint {{userName}}",
"off": "Felvétel leállítva",
"offBy": "{{name}} leállította a felvételt",
"on": "Felvétel",
"onBy": "{{name}} elindította a felvételt",
"onlyRecordSelf": "Csak az én hang- és videófolyamomat rögzítse",
"pending": "Értekezlet rögzítésének előkészítése…",
"rec": "REC",
"saveLocalRecording": "Felvétel mentése helyileg (béta)",
"serviceDescription": "A felvételt a rögzítési szolgáltatás veszi fel",
"serviceName": "Felvétel szolgáltatás",
"signIn": "Belépés",
@@ -527,6 +744,12 @@
"sectionList": {
"pullToRefresh": "Húzás a frissítéshez"
},
"security": {
"about": "Hozzáadhat jelszót az értekezlethez. A résztvevőknek meg kell adniuk a jelszót, mielőtt csatlakozhatnak az értekezlethez.",
"aboutReadOnly": "A moderátor résztvevői hozzáadhatnak egy jelszót az értekezlethez. A résztvevőknek meg kell adniuk a jelszót, mielőtt csatlakozhatnak az értekezlethez.",
"header": "Biztonsági beállítások",
"insecureRoomNameWarning": "The room name is unsafe. Unwanted participants may join your conference. Consider securing your meeting using the security button."
},
"settings": {
"calendar": {
"about": "A {{appName}} naptárintegráció a naptár biztonságos elérésére szolgál, így olvasni tudja a soron következő eseményeket.",
@@ -535,8 +758,13 @@
"signedIn": "Jelenleg ehhez az címhez tartozó naptár eseményei érhetőek el: {{email}}. Alább a „szétkapcsolás” gombra kattintva lehet leállítani a naptár eseményeinek elérését.",
"title": "Naptár"
},
"desktopShareFramerate": "Képernyőmegosztás sebessége (FPS)",
"desktopShareHighFpsWarning": "A nagyobb képkockasebesség az asztali megosztásnál hatással lehet a sávszélességre. Az új beállítások érvénybe léptetéséhez újra kell indítania a képernyőmegosztást.",
"desktopShareWarning": "Az új beállítások érvénybe léptetéséhez újra kell indítania a képernyőmegosztást.",
"devices": "Eszközök",
"followMe": "Mindenki engem kövessen",
"framesPerSecond": "képkocka / másodperc",
"incomingMessage": "Bejövő üzenet",
"language": "Nyelv",
"loggedIn": "Belépve mint {{name}}",
"microphones": "Mikrofonok",
@@ -544,12 +772,22 @@
"more": "Továbbiak",
"name": "Név",
"noDevice": "Nincs",
"participantJoined": "Résztvevő csatlakozott",
"participantKnocking": "Résztvevő belépett a lobby-ba",
"participantLeft": "Résztvevő kilépett",
"playSounds": "Hangok lejátszása a következőkhöz:",
"reactions": "Meeting reakciók",
"sameAsSystem": "Rendszerhang ({{label}})",
"selectAudioOutput": "Hangkimenet",
"selectCamera": "Kamera",
"selectMic": "Mikrofon",
"selfView": "Saját kép",
"sounds": "Hangok",
"speakers": "Hangszórók",
"startAudioMuted": "Mindenki elnémítva kezd",
"startReactionsMuted": "Reakció hangok némítása mindenki számára",
"startVideoMuted": "Mindenki videó nélkül kezd",
"talkWhileMuted": "Lenémított beszéd",
"title": "Beállítások"
},
"settingsView": {
@@ -577,14 +815,23 @@
},
"speaker": "Hangszóró",
"speakerStats": {
"angry": "Mérges",
"disgusted": "Felháborodott",
"fearful": "Félelmetes",
"happy": "Boldog",
"hours": "{{count}} h",
"minutes": "{{count}} perc",
"name": "Név",
"neutral": "Semleges",
"sad": "Szomorú",
"search": "Keresés",
"seconds": "{{count}} mp",
"speakerStats": "Beszélő statisztika",
"speakerTime": "Beszélő ideje"
"speakerTime": "Beszélő ideje",
"surprised": "Meglepett"
},
"startupoverlay": {
"genericTitle": "Az értekezlethez engedélyezni kell a mikrofont és kamerát.",
"policyText": " ",
"title": "A {{app}} használni szeretné a mikrofont és a kamerát."
},
@@ -599,36 +846,49 @@
"Settings": "Beállítások átváltása",
"audioOnly": "Csak a hang átváltása",
"audioRoute": "Hangeszköz kijelölése",
"boo": "Szomorú",
"callQuality": "Videóminőség kezelése",
"cc": "Feliratok átváltása",
"chat": "Csevegés ablak átváltása",
"clap": "Taps",
"document": "Megosztott dokumentum átváltása",
"download": "Alkalmazás letöltése",
"embedMeeting": "Meeting beágyazása",
"feedback": "Visszajelzés küldése",
"fullScreen": "Teljes képernyő átváltása",
"grantModerator": "Moderátori jogok megadása",
"hangup": "Beszélgetés elhagyása",
"help": "Súgó",
"invite": "Személyek meghívása",
"kick": "Résztvevő kirúgása",
"laugh": "Nevetés",
"like": "Hüvelykujj fel",
"localRecording": "Helyi felvétel vezérlőelemeinek átváltása",
"lockRoom": "Értekezlet jelszavának átváltása",
"moreActions": "További műveltek menü átváltása",
"moreActionsMenu": "További műveltek menü",
"moreActions": "További műveletek menü átváltása",
"moreActionsMenu": "További műveletek menü",
"moreOptions": "További beállítások megjelenítése",
"mute": "Hang némításának átváltása",
"muteEveryone": "Mindenki elnémítása",
"muteEveryonesVideoStream": "Mindenki videójának leállítása",
"noiseSuppression": "Zajcsökkentés",
"participants": "Résztvevők",
"pip": "Kép és képben mód átváltása",
"privateMessage": "Privát üzenet küldése",
"profile": "Adja meg a profilját",
"raiseHand": "Kéz felemelésének átváltása",
"recording": "Felvétel átváltása",
"remoteMute": "Résztvevők némítása",
"security": "Biztonsági Beállítások",
"shareRoom": "Valaki meghívása",
"shareYourScreen": "Képernyőmegosztás átváltása",
"shareaudio": "Hang megosztása",
"sharedvideo": "Videó megosztásának átváltása",
"shortcuts": "Gyorsbillentyűk átváltása",
"show": "Megjelenítés a színpadon",
"silence": "Néma",
"speakerStats": "Beszélő statisztika átváltása",
"surprised": "Meglepett",
"tileView": "Mozaikos nézet átváltása",
"toggleCamera": "Kamera átváltása",
"toggleFilmstrip": "Filmszalag átváltása",
@@ -639,13 +899,18 @@
"audioOnlyOff": "Alacsony sávszélességű mód letiltása",
"audioOnlyOn": "Alacsony sávszélességű mód engedélyezése",
"audioRoute": "Hangeszköz kijelölése",
"audioSettings": "Hangbeállítások",
"authenticate": "Hitelesítés",
"boo": "Szomorú",
"callQuality": "Videominőség kezelése",
"chat": "Csevegés megnyitása / bezárása",
"clap": "Taps",
"closeChat": "Csevegés bezárása",
"disableReactionSounds": "Kikapcsolhatja a reakcióhangokat a Meeting-en",
"documentClose": "Megosztott dokumentum bezárása",
"documentOpen": "Megosztott dokumentum megnyitása",
"download": "Alkalmazás letöltése",
"embedMeeting": "Meeting beágyazása",
"enterFullScreen": "Teljes képernyős megtekintés",
"enterTileView": "Mozaikos nézet indítása",
"exitFullScreen": "Kilépés a teljes képernyőből",
@@ -654,10 +919,14 @@
"hangup": "Kilépés",
"help": "Súgó",
"invite": "Személyek meghívása",
"joinBreakoutRoom": "Csatlakozás a pihenőszobához",
"laugh": "Nevetés",
"leaveBreakoutRoom": "Pihenőszoba elhagyása",
"like": "Hüvelykujj fel",
"login": "Bejelentkezés",
"logout": "Kijelentkezés",
"lowerYourHand": "Kéz leengedése",
"moreActions": "További műveltek",
"moreActions": "További műveletek",
"moreOptions": "További beállítások",
"mute": "Némítás / Visszahangosítás",
"muteEveryone": "Mindenki elnémítása",
@@ -666,28 +935,42 @@
"noAudioSignalDialInDesc": "Be is tárcsázhat:",
"noAudioSignalDialInLinkDesc": "Betárcsázási számok",
"noAudioSignalTitle": "Nincs bemenet a mikrofonjáról!",
"noiseSuppression": "Zajcsökkentés",
"noisyAudioInputDesc": "Úgy tűnik, hogy ez a mikrofon zajos. Le kellene némítani vagy cserélni az eszközt.",
"noisyAudioInputTitle": "Zajosnak tűnik a mikrofonja!",
"openChat": "Csevegés megnyitása",
"participants": "Résztvevők",
"pip": "Belépés kép a képben módba",
"privateMessage": "Privát üzenet küldése",
"profile": "Adja meg a profilját",
"raiseHand": "Kéz felemelése / leengedése",
"raiseYourHand": "Kéz felemelése",
"reactionBoo": "Boo reakció küldése",
"reactionClap": "Tapsolás reakció küldése",
"reactionLaugh": "Nevetés reakció küldése",
"reactionLike": "Hüvelykujj fel reakció küldése",
"reactionSilence": "Néma arc reakció küldése",
"reactionSurprised": "Meglepett reakció küldése",
"security": "Biztonsági Beállítások",
"selectBackground": "Háttér beállítása",
"shareRoom": "Valaki meghívása",
"shareaudio": "Hang megosztása",
"sharedvideo": "Videó megosztása",
"shortcuts": "Gyorsbillentyűk megtekintése",
"silence": "Néma",
"speakerStats": "Beszélő statisztika",
"startScreenSharing": "Képernyőmegosztás kezdése",
"startSubtitles": "Feliratok kezdése",
"startvideoblur": "Háttér elhomályosítása",
"stopScreenSharing": "Képernyőmegosztás leállítása",
"stopSharedVideo": "Videó leállítása",
"stopSharedVideo": "Kamera leállítása",
"stopSubtitles": "Felirat leállítása",
"stopvideoblur": "Háttér elhomályosításának letiltása",
"surprised": "Meglepett",
"talkWhileMutedPopup": "Úgy tűnik beszélni szeretne, de le van némítva.",
"tileViewToggle": "Mozaikos nézet átváltása",
"toggleCamera": "Kamera átváltása",
"videoSettings": "Videóbeállítások",
"videomute": "Kamera indítása / leállítása"
},
"transcribing": {
@@ -725,12 +1008,15 @@
"pending": "{{displayName}} -t meghívta"
},
"videoStatus": {
"adjustFor": "Igazítsa a legjobb:",
"audioOnly": "CsH",
"audioOnlyExpanded": "Jelenleg az alacsony sávszélességű mód az aktív, vagyis csak hangot lehet fogadni és képernyőmegosztást.",
"bestPerformance": "Teljesítményhez",
"callQuality": "Videominőség",
"hd": "MF",
"hdTooltip": "Magas felbontású videó megtekintése",
"highDefinition": "Magas felbontású",
"highestQuality": "Minőséghez",
"labelTooiltipNoVideo": "Nincs videó",
"labelTooltipAudioOnly": "Alacsony sávszélességű mód aktiválva",
"ld": "AF",
@@ -738,6 +1024,7 @@
"lowDefinition": "Alacsony felbontású",
"onlyAudioAvailable": "„Csak hang” mód elérhető",
"onlyAudioSupported": "Csak a hang támogatott ebben a böngészőben.",
"performanceSettings": "Teljesítménybeállítások",
"sd": "SF",
"sdTooltip": "Szabványos felbontású videó megtekintése",
"standardDefinition": "Szabványos felbontású"
@@ -745,7 +1032,10 @@
"videothumbnail": {
"domute": "Némítás",
"domuteOthers": "Mindenki más elnémítása",
"domuteVideoOfOthers": "Mindenki más kamerájának letiltása",
"flip": "Tükrözés",
"grantModerator": "Moderátori jogok megadása",
"hideSelfView": "Saját kép elrejtése",
"kick": "Kirúgás",
"moderator": "Moderátor",
"mute": "A résztvevő le van némítva",
@@ -754,6 +1044,29 @@
"show": "Megjelenítés a színpadon",
"videomute": "A résztvevő leállította a kameráját"
},
"virtualBackground": {
"addBackground": "Háttér hozzáadása",
"apply": "Alkalmaz",
"backgroundEffectError": "Hiba a háttér effekt hozzáadásnál.",
"blur": "Elmosódott",
"deleteImage": "Delete image",
"desktopShare": "Asztal megosztása",
"desktopShareError": "Nem lehet asztalt megosztani",
"image1": "Tengerpart",
"image2": "Fehér semleges fal",
"image3": "Fehér üres szoba",
"image4": "Fekete állólámpa",
"image5": "Hegy",
"image6": "Erdő",
"image7": "Napfelkelte",
"none": "Nincs",
"pleaseWait": "Kérjük várjon...",
"removeBackground": "Háttér eltávolítása",
"slightBlur": "Enyhén elmosódott",
"title": "Virtuális háttérképek",
"uploadedImage": "Feltöltött kép {{index}}"
},
"volumeSlider": "Hangerő szabályzó",
"welcomepage": {
"accessibilityLabel": {
"join": "Koppintson a csatlakozáshoz",
@@ -771,17 +1084,20 @@
"getHelp": "Segítség kérése",
"go": "Indítás",
"goSmall": "Indítás",
"headerSubtitle": "Biztonságos és magas színvonalú konferenciák",
"info": "Információ",
"jitsiOnMobile": "Jitsi Mobil töltse le az app-ot, és indítson megbeszélést bárhonnan",
"join": "LÉTREHOZ /HOZZÁAD",
"privacy": "Adatvédelem",
"recentList": "Legutóbbi",
"recentListDelete": "Törlés",
"recentListDelete": "Lista törlés",
"recentListEmpty": "A legutóbbi lista jelenleg üres. Csevegjen a csapattal és minden előző értekezlet itt lesz megtalálható.",
"reducedUIText": "Üdvözlet a {{app}} programban!",
"roomNameAllowedChars": "Az értekezlet neve nem tartalmazhatja a következő karaktereket: ?, &, :, ', \", %, #.",
"roomname": "Adja meg a szoba nevét",
"roomnameHint": "Adja meg a kívánt nevet vagy URL-t, amelyhez csatlakozni szeretne. Bármiképp elnevezheti, csak ossza meg az értekezlet résztvevőivel, hogy ők ugyanezt a nevet tudják majd megadni.",
"sendFeedback": "Visszajelzés küldése",
"startMeeting": "Csatlakozás",
"terms": "Feltételek",
"title": "Biztonságos, maradéktalanul felszerelt és teljesen ingyenes videokonferencia"
}

View File

@@ -1,791 +0,0 @@
{
"addPeople": {
"add": "Undang",
"countryNotSupported": "Negara ini belum tersedia.",
"countryReminder": "Memanggil di luar negara AS? Pastikan dengan menggunakan kode negara!",
"disabled": "Kamu tidak dapat mengundang.",
"failedToAdd": "Gagal menambahkan peserta",
"footerText": "Panggilan keluar di-nonaktifkan.",
"loading": "Sedang mencari orang dan nomor telepon.",
"loadingNumber": "Memvalidasi nomor telepon",
"loadingPeople": "Mencari orang untuk diundang",
"noResults": "Tidak ada pencarian yang cocok.",
"noValidNumbers": "Masukkan nomor telepon yang benar.",
"searchNumbers": "Mencari nomor telepon",
"searchPeople": "Mencari orang",
"searchPeopleAndNumbers": "Cari orang beserta nomor teleponnya",
"telephone": "Telepon: {{number}}",
"title": "Undang orang-orang ke sini."
},
"audioDevices": {
"bluetooth": "Bluetooth",
"headphones": "Headphones",
"none": "Perangkat suara tidak tersedia",
"phone": "Telepon",
"speaker": "Pengeras suara"
},
"audioOnly": {
"audioOnly": "Suara saja"
},
"calendarSync": {
"addMeetingURL": "Buat link pertemuan",
"confirmAddLink": "Tambahkan link Jitsi pada event ini?",
"error": {
"appConfiguration": "Ada konfigurasi yang tidak tepat.",
"generic": "Kesalahan terjadi. Cek pengaturan atau coba lakukan refresh.",
"notSignedIn": "Kesalahan berkaitan dengan autentikasi pada event. Cek pengaturan dan coba lagi"
},
"join": "Gabung",
"joinTooltip": "Gabung di pertemuan",
"nextMeeting": "Pertemuan Berikutnya",
"noEvents": "Belum ada event tersedia.",
"ongoingMeeting": "Pertemuan yang sedang berjalan",
"permissionButton": "Buka Pengaturan",
"permissionMessage": "Setelan permisi diperlukan untuk melihat pertemuan.",
"refresh": "Muat ulang",
"today": "Hari ini"
},
"chat": {
"error": "Error: your message was not sent. Reason: {{error}}",
"fieldPlaceHolder": "Type your message here",
"messageTo": "Private message to {{recipient}}",
"messagebox": "Type a message",
"nickname": {
"popover": "Choose a nickname",
"title": "Enter a nickname to use chat",
"titleWithPolls": "Enter a nickname to use chat"
},
"noMessagesMessage": "There are no messages in the meeting yet. Start a conversation here!",
"privateNotice": "Private message to {{recipient}}",
"sendButton": "Kirim",
"title": "Chat",
"titleWithPolls": "Chat",
"you": "you"
},
"chromeExtensionBanner": {
"buttonText": "Install Chrome Extension",
"dontShowAgain": "Dont show me this again",
"installExtensionText": "Install the extension for Google Calendar and Office 365 integration"
},
"connectingOverlay": {
"joiningRoom": "Connecting you to your meeting..."
},
"connection": {
"ATTACHED": "Attached",
"AUTHENTICATING": "Authenticating",
"AUTHFAIL": "Authentication failed",
"CONNECTED": "Connected",
"CONNECTING": "Connecting",
"CONNFAIL": "Connection failed",
"DISCONNECTED": "Disconnected",
"DISCONNECTING": "Disconnecting",
"ERROR": "Error",
"FETCH_SESSION_ID": "Obtaining session-id...",
"GET_SESSION_ID_ERROR": "Get session-id error: {{code}}",
"GOT_SESSION_ID": "Obtaining session-id... Done",
"LOW_BANDWIDTH": "Video for {{displayName}} has been turned off to save bandwidth"
},
"connectionindicator": {
"address": "Address:",
"bandwidth": "Estimated bandwidth:",
"bitrate": "Bitrate:",
"bridgeCount": "Server count: ",
"connectedTo": "Connected to:",
"framerate": "Frame rate:",
"less": "Show less",
"localaddress": "Local address:",
"localaddress_plural": "Local addresses:",
"localport": "Local port:",
"localport_plural": "Local ports:",
"more": "Show more",
"packetloss": "Packet loss:",
"quality": {
"good": "Good",
"inactive": "Inactive",
"lost": "Lost",
"nonoptimal": "Nonoptimal",
"poor": "Poor"
},
"remoteaddress": "Remote address:",
"remoteaddress_plural": "Remote addresses:",
"remoteport": "Remote port:",
"remoteport_plural": "Remote ports:",
"resolution": "Resolution:",
"status": "Connection:",
"transport": "Transport:",
"transport_plural": "Transports:"
},
"dateUtils": {
"earlier": "Earlier",
"today": "Today",
"yesterday": "Yesterday"
},
"deepLinking": {
"appNotInstalled": "You need the {{app}} mobile app to join this meeting on your phone.",
"description": "Nothing happened? We tried launching your meeting in the {{app}} desktop app. Try again or launch it in the {{app}} web app.",
"descriptionWithoutWeb": "Nothing happened? We tried launching your meeting in the {{app}} desktop app.",
"downloadApp": "Download the app",
"launchWebButton": "Launch in web",
"openApp": "Continue to the app",
"title": "Launching your meeting in {{app}}...",
"tryAgainButton": "Try again in desktop"
},
"defaultLink": "e.g. {{url}}",
"defaultNickname": "ex. Jane Pink",
"deviceError": {
"cameraError": "Failed to access your camera",
"cameraPermission": "Error obtaining camera permission",
"microphoneError": "Failed to access your microphone",
"microphonePermission": "Error obtaining microphone permission"
},
"deviceSelection": {
"noPermission": "Permission not granted",
"previewUnavailable": "Preview unavailable",
"selectADevice": "Select a device",
"testAudio": "Play a test sound"
},
"dialOut": {
"statusMessage": "is now {{status}}"
},
"dialog": {
"Back": "Back",
"Cancel": "Cancel",
"IamHost": "I am the host",
"Ok": "Ok",
"Remove": "Remove",
"Share": "Share",
"Submit": "Submit",
"WaitForHostMsg": "The conference has not yet started. If you are the host then please authenticate. Otherwise, please wait for the host to arrive.",
"WaitingForHost": "Waiting for the host ...",
"Yes": "Yes",
"accessibilityLabel": {
"liveStreaming": "Live Stream"
},
"allow": "Allow",
"alreadySharedVideoMsg": "Another participant is already sharing a video. This conference allows only one shared video at a time.",
"alreadySharedVideoTitle": "Only one shared video is allowed at a time",
"applicationWindow": "Application window",
"cameraConstraintFailedError": "Your camera does not satisfy some of the required constraints.",
"cameraNotFoundError": "Camera was not found.",
"cameraNotSendingData": "We are unable to access your camera. Please check if another application is using this device, select another device from the settings menu or try to reload the application.",
"cameraNotSendingDataTitle": "Unable to access camera",
"cameraPermissionDeniedError": "You have not granted permission to use your camera. You can still join the conference but others won't see you. Use the camera button in the address bar to fix this.",
"cameraUnknownError": "Cannot use camera for an unknown reason.",
"cameraUnsupportedResolutionError": "Your camera does not support required video resolution.",
"close": "Close",
"conferenceDisconnectMsg": "You may want to check your network connection. Reconnecting in {{seconds}} sec...",
"conferenceDisconnectTitle": "You have been disconnected.",
"conferenceReloadMsg": "We're trying to fix this. Reconnecting in {{seconds}} sec...",
"conferenceReloadTitle": "Unfortunately, something went wrong.",
"confirm": "Confirm",
"confirmNo": "No",
"confirmYes": "Yes",
"connectError": "Oops! Something went wrong and we couldn't connect to the conference.",
"connectErrorWithMsg": "Oops! Something went wrong and we couldn't connect to the conference: {{msg}}",
"connecting": "Connecting",
"contactSupport": "Contact support",
"copy": "Copy",
"dismiss": "Dismiss",
"displayNameRequired": "Hi! Whats your name?",
"done": "Done",
"enterDisplayName": "Enter your name here",
"error": "Error",
"externalInstallationMsg": "You need to install our desktop sharing extension.",
"externalInstallationTitle": "Extension required",
"goToStore": "Go to the webstore",
"gracefulShutdown": "Our service is currently down for maintenance. Please try again later.",
"incorrectPassword": "Incorrect username or password",
"incorrectRoomLockPassword": "Incorrect password",
"inlineInstallExtension": "Install now",
"inlineInstallationMsg": "You need to install our desktop sharing extension.",
"internalError": "Oops! Something went wrong. The following error occurred: {{error}}",
"internalErrorTitle": "Internal error",
"kickMessage": "You can contact {{participantDisplayName}} for more details.",
"kickParticipantButton": "Kick",
"kickParticipantDialog": "Are you sure you want to kick this participant?",
"kickParticipantTitle": "Kick this participant?",
"kickTitle": "Ouch! {{participantDisplayName}} kicked you out of the meeting",
"liveStreaming": "Live Streaming",
"liveStreamingDisabledForGuestTooltip": "Guests can't start live streaming.",
"liveStreamingDisabledTooltip": "Start live stream disabled.",
"lockMessage": "Failed to lock the conference.",
"lockRoom": "Add meeting $t(lockRoomPasswordUppercase)",
"lockTitle": "Lock failed",
"logoutQuestion": "Are you sure you want to logout and stop the conference?",
"logoutTitle": "Logout",
"maxUsersLimitReached": "The limit for maximum number of participants has been reached. The conference is full. Please contact the meeting owner or try again later!",
"maxUsersLimitReachedTitle": "Maximum participants limit reached",
"micConstraintFailedError": "Your microphone does not satisfy some of the required constraints.",
"micNotFoundError": "Microphone was not found.",
"micNotSendingData": "Go to your computer's settings to unmute your mic and adjust its level",
"micNotSendingDataTitle": "Your mic is muted by your system settings",
"micPermissionDeniedError": "You have not granted permission to use your microphone. You can still join the conference but others won't hear you. Use the camera button in the address bar to fix this.",
"micUnknownError": "Cannot use microphone for an unknown reason.",
"muteEveryoneDialog": "Are you sure you want to mute everyone? You won't be able to unmute them, but they can unmute themselves at any time.",
"muteEveryoneElseDialog": "Once muted, you won't be able to unmute them, but they can unmute themselves at any time.",
"muteEveryoneElseTitle": "Mute everyone except {{whom}}?",
"muteEveryoneSelf": "yourself",
"muteEveryoneStartMuted": "Everyone starts muted from now on",
"muteEveryoneTitle": "Mute everyone?",
"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.",
"muteParticipantTitle": "Mute this participant?",
"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",
"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",
"recording": "Recording",
"recordingDisabledForGuestTooltip": "Guests can't start recordings.",
"recordingDisabledTooltip": "Start recording disabled.",
"rejoinNow": "Rejoin now",
"remoteControlAllowedMessage": "{{user}} accepted your remote control request!",
"remoteControlDeniedMessage": "{{user}} rejected your remote control request!",
"remoteControlErrorMessage": "An error occurred while trying to request remote control permissions from {{user}}!",
"remoteControlRequestMessage": "Will you allow {{user}} to remotely control your desktop?",
"remoteControlShareScreenWarning": "Note that if you press \"Allow\" you will share your screen!",
"remoteControlStopMessage": "The remote control session ended!",
"remoteControlTitle": "Remote desktop control",
"removePassword": "Remove $t(lockRoomPassword)",
"removeSharedVideoMsg": "Are you sure you would like to remove your shared video?",
"removeSharedVideoTitle": "Remove shared video",
"reservationError": "Reservation system error",
"reservationErrorMsg": "Error code: {{code}}, message: {{msg}}",
"retry": "Retry",
"screenSharingAudio": "Share audio",
"screenSharingFailedToInstall": "Oops! Your screen sharing extension failed to install.",
"screenSharingFailedToInstallTitle": "Screen sharing extension failed to install",
"screenSharingFirefoxPermissionDeniedError": "Something went wrong while we were trying to share your screen. Please make sure that you have given us permission to do so. ",
"screenSharingFirefoxPermissionDeniedTitle": "Oops! We werent able to start screen sharing!",
"screenSharingPermissionDeniedError": "Oops! Something went wrong with your screen sharing extension permissions. Please reload and try again.",
"sendPrivateMessage": "You recently received a private message. Did you intend to reply to that privately, or you want to send your message to the group?",
"sendPrivateMessageCancel": "Send to the group",
"sendPrivateMessageOk": "Send privately",
"sendPrivateMessageTitle": "Send privately?",
"serviceUnavailable": "Service unavailable",
"sessTerminated": "Call terminated",
"shareVideoLinkError": "Please provide a correct link.",
"shareVideoTitle": "Share a video",
"shareYourScreen": "Share your screen",
"shareYourScreenDisabled": "Screen sharing disabled.",
"shareYourScreenDisabledForGuest": "Guests can't screen share.",
"startLiveStreaming": "Start live stream",
"startRecording": "Start recording",
"startRemoteControlErrorMessage": "An error occurred while trying to start the remote control session!",
"stopLiveStreaming": "Stop live stream",
"stopRecording": "Stop recording",
"stopRecordingWarning": "Are you sure you would like to stop the recording?",
"stopStreamingWarning": "Are you sure you would like to stop the live streaming?",
"streamKey": "Live stream key",
"thankYou": "Thank you for using {{appName}}!",
"token": "token",
"tokenAuthFailed": "Sorry, you're not allowed to join this call.",
"tokenAuthFailedTitle": "Authentication failed",
"transcribing": "Transcribing",
"unlockRoom": "Remove meeting $t(lockRoomPassword)",
"userPassword": "user password",
"yourEntireScreen": "Your entire screen"
},
"documentSharing": {
"title": "Shared Document"
},
"feedback": {
"average": "Average",
"bad": "Bad",
"detailsLabel": "Tell us more about it.",
"good": "Good",
"rateExperience": "Rate your meeting experience",
"veryBad": "Very Bad",
"veryGood": "Very Good"
},
"helpView": {
"title": "Help centre"
},
"incomingCall": {
"answer": "Answer",
"audioCallTitle": "Incoming call",
"decline": "Dismiss",
"productLabel": "from Jitsi Meet",
"videoCallTitle": "Incoming video call"
},
"info": {
"accessibilityLabel": "Show info",
"addPassword": "Add $t(lockRoomPassword)",
"cancelPassword": "Cancel $t(lockRoomPassword)",
"conferenceURL": "Link:",
"country": "Country",
"dialANumber": "To join your meeting, dial one of these numbers and then enter the pin.",
"dialInConferenceID": "PIN:",
"dialInNotSupported": "Sorry, dialing in is currently not supported.",
"dialInNumber": "Dial-in:",
"dialInSummaryError": "Error fetching dial-in info now. Please try again later.",
"dialInTollFree": "Toll Free",
"genericError": "Whoops, something went wrong.",
"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}}",
"inviteURLFirstPartGeneral": "You are invited to join a meeting.",
"inviteURLFirstPartPersonal": "{{name}} is inviting you to a meeting.\n",
"inviteURLSecondPart": "\nJoin the meeting:\n{{url}}\n",
"label": "Meeting info",
"liveStreamURL": "Live stream:",
"moreNumbers": "More numbers",
"noNumbers": "No dial-in numbers.",
"noPassword": "None",
"noRoom": "No room was specified to dial-in into.",
"numbers": "Dial-in Numbers",
"password": "$t(lockRoomPasswordUppercase):",
"title": "Share",
"tooltip": "Share link and dial-in info for this meeting"
},
"inlineDialogFailure": {
"msg": "We stumbled a bit.",
"retry": "Try again",
"support": "Support",
"supportMsg": "If this keeps happening, reach out to"
},
"inviteDialog": {
"alertText": "Failed to invite some participants.",
"header": "Invite",
"searchCallOnlyPlaceholder": "Enter phone number",
"searchPeopleOnlyPlaceholder": "Search for participants",
"searchPlaceholder": "Participant or phone number",
"send": "Kirim"
},
"keyboardShortcuts": {
"focusLocal": "Focus on your video",
"focusRemote": "Focus on another person's video",
"fullScreen": "View or exit full screen",
"keyboardShortcuts": "Keyboard shortcuts",
"localRecording": "Show or hide local recording controls",
"mute": "Mute or unmute your microphone",
"pushToTalk": "Push to talk",
"raiseHand": "Raise or lower your hand",
"showSpeakerStats": "Show speaker stats",
"toggleChat": "Open or close the chat",
"toggleFilmstrip": "Show or hide video thumbnails",
"toggleScreensharing": "Switch between camera and screen sharing",
"toggleShortcuts": "Show or hide keyboard shortcuts",
"videoMute": "Start or stop your camera",
"videoQuality": "Manage call quality"
},
"liveStreaming": {
"busy": "We're working on freeing streaming resources. Please try again in a few minutes.",
"busyTitle": "All streamers are currently busy",
"changeSignIn": "Switch accounts.",
"choose": "Choose a live stream",
"chooseCTA": "Choose a streaming option. You're currently logged in as {{email}}.",
"enterStreamKey": "Enter your YouTube live stream key here.",
"error": "Live Streaming failed. Please try again.",
"errorAPI": "An error occurred while accessing your YouTube broadcasts. Please try logging in again.",
"errorLiveStreamNotEnabled": "Live Streaming is not enabled on {{email}}. Please enable live streaming or log into an account with live streaming enabled.",
"expandedOff": "The live streaming has stopped",
"expandedOn": "The meeting is currently being streamed to YouTube.",
"expandedPending": "The live streaming is being started...",
"failedToStart": "Live Streaming failed to start",
"getStreamKeyManually": "We werent able to fetch any live streams. Try getting your live stream key from YouTube.",
"googlePrivacyPolicy": "Google Privacy Policy",
"invalidStreamKey": "Live stream key may be incorrect.",
"off": "Live Streaming stopped",
"offBy": "{{name}} stopped the live streaming",
"on": "Live Streaming",
"onBy": "{{name}} started the live streaming",
"pending": "Starting Live Stream...",
"serviceName": "Live Streaming service",
"signIn": "Sign in with Google",
"signInCTA": "Sign in or enter your live stream key from YouTube.",
"signOut": "Sign out",
"signedInAs": "You are currently signed in as:",
"start": "Start a live stream",
"streamIdHelp": "What's this?",
"title": "Live Stream",
"unavailableTitle": "Live Streaming unavailable",
"youtubeTerms": "YouTube terms of services"
},
"localRecording": {
"clientState": {
"off": "Off",
"on": "On",
"unknown": "Unknown"
},
"dialogTitle": "Local Recording Controls",
"duration": "Duration",
"durationNA": "N/A",
"encoding": "Encoding",
"label": "LOR",
"labelToolTip": "Local recording is engaged",
"localRecording": "Local Recording",
"me": "Me",
"messages": {
"engaged": "Local recording engaged.",
"finished": "Recording session {{token}} finished. Please send the recorded file to the moderator.",
"finishedModerator": "Recording session {{token}} finished. The recording of the local track has been saved. Please ask the other participants to submit their recordings.",
"notModerator": "You are not the moderator. You cannot start or stop local recording."
},
"moderator": "Moderator",
"no": "No",
"participant": "Participant",
"participantStats": "Participant Stats",
"sessionToken": "Session Token",
"start": "Start Recording",
"stop": "Stop Recording",
"yes": "Yes"
},
"lockRoomPassword": "password",
"lockRoomPasswordUppercase": "Password",
"lonelyMeetingExperience": {
"button": "Invite others",
"youAreAlone": "You are the only one in the meeting"
},
"me": "me",
"notify": {
"OldElectronAPPTitle": "Security vulnerability!",
"connectedOneMember": "{{name}} joined the meeting",
"connectedThreePlusMembers": "{{name}} and {{count}} others joined the meeting",
"connectedTwoMembers": "{{first}} and {{second}} joined the meeting",
"disconnected": "disconnected",
"focus": "Conference focus",
"focusFail": "{{component}} not available - retry in {{ms}} sec",
"grantedTo": "Moderator rights granted to {{to}}!",
"invitedOneMember": "{{name}} has been invited",
"invitedThreePlusMembers": "{{name}} and {{count}} others have been invited",
"invitedTwoMembers": "{{first}} and {{second}} have been invited",
"kickParticipant": "{{kicked}} was kicked by {{kicker}}",
"me": "Me",
"moderator": "Moderator rights granted!",
"muted": "You have started the conversation muted.",
"mutedRemotelyDescription": "You can always unmute when you're ready to speak. Mute back when you're done to keep noise away from the meeting.",
"mutedRemotelyTitle": "You have been muted by {{participantDisplayName}}!",
"mutedTitle": "You're muted!",
"newDeviceAction": "Use",
"newDeviceAudioTitle": "New audio device detected",
"newDeviceCameraTitle": "New camera detected",
"oldElectronClientDescription1": "You appear to be using an old verion of the Jitsi Meet client which has known security vulnerabilities. Please make sure you update to our ",
"oldElectronClientDescription2": "latest build",
"oldElectronClientDescription3": " now!",
"passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) removed by another participant",
"passwordSetRemotely": "$t(lockRoomPasswordUppercase) set by another participant",
"raisedHand": "{{name}} would like to speak.",
"somebody": "Somebody",
"startSilentDescription": "Rejoin the meeting to enable audio",
"startSilentTitle": "You joined with no audio output!",
"suboptimalBrowserWarning": "We are afraid your meeting experience isn't going to be that great here. We are looking for ways to improve this, but until then please try using one of the <a href='{{recommendedBrowserPageLink}}' target='_blank'>fully supported browsers</a>.",
"suboptimalExperienceTitle": "Browser Warning",
"unmute": "Unmute"
},
"passwordDigitsOnly": "Up to {{number}} digits",
"passwordSetRemotely": "set by another participant",
"poweredby": "powered by",
"presenceStatus": {
"busy": "Busy",
"calling": "Calling...",
"connected": "Connected",
"connecting": "Connecting...",
"connecting2": "Connecting*...",
"disconnected": "Disconnected",
"expired": "Expired",
"ignored": "Ignored",
"initializingCall": "Initializing Call...",
"invited": "Invited",
"rejected": "Rejected",
"ringing": "Ringing..."
},
"profile": {
"setDisplayNameLabel": "Set your display name",
"setEmailInput": "Enter email",
"setEmailLabel": "Set your gravatar email",
"title": "Profile"
},
"raisedHand": "Would like to speak",
"recording": {
"authDropboxText": "Upload to Dropbox",
"availableSpace": "Available space: {{spaceLeft}} MB (approximately {{duration}} minutes of recording)",
"beta": "BETA",
"busy": "We're working on freeing recording resources. Please try again in a few minutes.",
"busyTitle": "All recorders are currently busy",
"error": "Recording failed. Please try again.",
"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",
"live": "LIVE",
"loggedIn": "Logged in as {{userName}}",
"off": "Recording stopped",
"offBy": "{{name}} stopped the recording",
"on": "Recording",
"onBy": "{{name}} started the recording",
"pending": "Preparing to record the meeting...",
"rec": "REC",
"serviceDescription": "Your recording will be saved by the recording service",
"serviceName": "Recording service",
"signIn": "Sign in",
"signOut": "Sign out",
"title": "Recording",
"unavailable": "Oops! The {{serviceName}} is currently unavailable. We're working on resolving the issue. Please try again later.",
"unavailableTitle": "Recording unavailable"
},
"sectionList": {
"pullToRefresh": "Pull to refresh"
},
"settings": {
"calendar": {
"about": "The {{appName}} calendar integration is used to securely access your calendar so it can read upcoming events.",
"disconnect": "Disconnect",
"microsoftSignIn": "Sign in with Microsoft",
"signedIn": "Currently accessing calendar events for {{email}}. Click the Disconnect button below to stop accessing calendar events.",
"title": "Calendar"
},
"devices": "Devices",
"followMe": "Everyone follows me",
"language": "Language",
"loggedIn": "Logged in as {{name}}",
"microphones": "Microphones",
"moderator": "Moderator",
"more": "More",
"name": "Name",
"noDevice": "None",
"selectAudioOutput": "Audio output",
"selectCamera": "Camera",
"selectMic": "Microphone",
"speakers": "Speakers",
"startAudioMuted": "Everyone starts muted",
"startVideoMuted": "Everyone starts hidden",
"title": "Settings"
},
"settingsView": {
"advanced": "Advanced",
"alertOk": "OK",
"alertTitle": "Warning",
"alertURLText": "The entered server URL is invalid",
"buildInfoSection": "Build Information",
"conferenceSection": "Conference",
"disableCallIntegration": "Disable native call integration",
"disableP2P": "Disable Peer-To-Peer mode",
"displayName": "Display name",
"email": "Email",
"header": "Settings",
"profileSection": "Profile",
"serverURL": "Server URL",
"showAdvanced": "Show advanced settings",
"startWithAudioMuted": "Start with audio muted",
"startWithVideoMuted": "Start with video muted",
"version": "Version"
},
"share": {
"dialInfoText": "\n\n=====\n\nJust want to dial in on your phone?\n\n{{defaultDialInNumber}}Click this link to see the dial in phone numbers for this meeting\n{{dialInfoPageUrl}}",
"mainText": "Click the following link to join the meeting:\n{{roomUrl}}"
},
"speaker": "Speaker",
"speakerStats": {
"hours": "{{count}}h",
"minutes": "{{count}}m",
"name": "Name",
"seconds": "{{count}}s",
"speakerStats": "Speaker Stats",
"speakerTime": "Speaker Time"
},
"startupoverlay": {
"policyText": " ",
"title": "{{app}} needs to use your microphone and camera."
},
"suspendedoverlay": {
"rejoinKeyTitle": "Rejoin",
"text": "Press the <i>Rejoin</i> button to reconnect.",
"title": "Your video call was interrupted because this computer went to sleep."
},
"toolbar": {
"Settings": "Settings",
"accessibilityLabel": {
"Settings": "Toggle settings",
"audioOnly": "Toggle audio only",
"audioRoute": "Select the sound device",
"callQuality": "Manage video quality",
"cc": "Toggle subtitles",
"chat": "Toggle chat window",
"document": "Toggle shared document",
"download": "Download our apps",
"feedback": "Leave feedback",
"fullScreen": "Toggle full screen",
"hangup": "Leave the call",
"help": "Help",
"invite": "Invite people",
"kick": "Kick participant",
"localRecording": "Toggle local recording controls",
"lockRoom": "Toggle meeting password",
"moreActions": "Toggle more actions menu",
"moreActionsMenu": "More actions menu",
"moreOptions": "Show more options",
"mute": "Toggle mute audio",
"muteEveryone": "Mute everyone",
"pip": "Toggle Picture-in-Picture mode",
"privateMessage": "Send private message",
"profile": "Edit your profile",
"raiseHand": "Toggle raise hand",
"recording": "Toggle recording",
"remoteMute": "Mute participant",
"shareRoom": "Invite someone",
"shareYourScreen": "Toggle screenshare",
"sharedvideo": "Toggle video sharing",
"shortcuts": "Toggle shortcuts",
"show": "Show on stage",
"speakerStats": "Toggle speaker statistics",
"tileView": "Toggle tile view",
"toggleCamera": "Toggle camera",
"toggleFilmstrip": "Toggle filmstrip",
"videoblur": "Toggle video blur",
"videomute": "Toggle mute video"
},
"addPeople": "Add people to your call",
"audioOnlyOff": "Disable low bandwidth mode",
"audioOnlyOn": "Enable low bandwidth mode",
"audioRoute": "Select the sound device",
"authenticate": "Authenticate",
"callQuality": "Manage video quality",
"chat": "Open / Close chat",
"closeChat": "Close chat",
"documentClose": "Close shared document",
"documentOpen": "Open shared document",
"download": "Download our apps",
"enterFullScreen": "View full screen",
"enterTileView": "Enter tile view",
"exitFullScreen": "Exit full screen",
"exitTileView": "Exit tile view",
"feedback": "Leave feedback",
"hangup": "Leave",
"help": "Help",
"invite": "Invite people",
"login": "Login",
"logout": "Logout",
"lowerYourHand": "Lower your hand",
"moreActions": "More actions",
"moreOptions": "More options",
"mute": "Mute / Unmute",
"muteEveryone": "Mute everyone",
"noAudioSignalDesc": "If you did not purposely mute it from system settings or hardware, consider switching the device.",
"noAudioSignalDescSuggestion": "If you did not purposely mute it from system settings or hardware, consider switching to the suggested device.",
"noAudioSignalDialInDesc": "You can also dial-in using:",
"noAudioSignalDialInLinkDesc": "Dial-in numbers",
"noAudioSignalTitle": "There is no input coming from your mic!",
"noisyAudioInputDesc": "It sounds like your microphone is making noise, please consider muting or changing the device.",
"noisyAudioInputTitle": "Your microphone appears to be noisy!",
"openChat": "Open chat",
"pip": "Enter Picture-in-Picture mode",
"privateMessage": "Send private message",
"profile": "Edit your profile",
"raiseHand": "Raise / Lower your hand",
"raiseYourHand": "Raise your hand",
"shareRoom": "Invite someone",
"sharedvideo": "Share video",
"shortcuts": "View shortcuts",
"speakerStats": "Speaker stats",
"startScreenSharing": "Start screen sharing",
"startSubtitles": "Start subtitles",
"startvideoblur": "Blur my background",
"stopScreenSharing": "Stop screen sharing",
"stopSharedVideo": "Stop video",
"stopSubtitles": "Stop subtitles",
"stopvideoblur": "Disable background blur",
"talkWhileMutedPopup": "Trying to speak? You are muted.",
"tileViewToggle": "Toggle tile view",
"toggleCamera": "Toggle camera",
"videomute": "Start / Stop camera"
},
"transcribing": {
"ccButtonTooltip": "Start / Stop subtitles",
"error": "Transcribing failed. Please try again.",
"expandedLabel": "Transcribing is currently on",
"failedToStart": "Transcribing failed to start",
"labelToolTip": "The meeting is being transcribed",
"off": "Transcribing stopped",
"pending": "Preparing to transcribe the meeting...",
"start": "Start showing subtitles",
"stop": "Stop showing subtitles",
"tr": "TR"
},
"userMedia": {
"androidGrantPermissions": "Select <b><i>Allow</i></b> when your browser asks for permissions.",
"chromeGrantPermissions": "Select <b><i>Allow</i></b> when your browser asks for permissions.",
"edgeGrantPermissions": "Select <b><i>Yes</i></b> when your browser asks for permissions.",
"electronGrantPermissions": "Please grant permissions to use your camera and microphone",
"firefoxGrantPermissions": "Select <b><i>Share Selected Device</i></b> when your browser asks for permissions.",
"iexplorerGrantPermissions": "Select <b><i>OK</i></b> when your browser asks for permissions.",
"nwjsGrantPermissions": "Please grant permissions to use your camera and microphone",
"operaGrantPermissions": "Select <b><i>Allow</i></b> when your browser asks for permissions.",
"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."
},
"videoSIPGW": {
"busy": "We're working on freeing resources. Please try again in a few minutes.",
"busyTitle": "The Room service is currently busy",
"errorAlreadyInvited": "{{displayName}} already invited",
"errorInvite": "Conference not established yet. Please try again later.",
"errorInviteFailed": "We're working on resolving the issue. Please try again later.",
"errorInviteFailedTitle": "Inviting {{displayName}} failed",
"errorInviteTitle": "Error inviting room",
"pending": "{{displayName}} has been invited"
},
"videoStatus": {
"audioOnly": "AUD",
"audioOnlyExpanded": "You are in low bandwidth mode. In this mode you will receive only audio and screen sharing.",
"callQuality": "Video Quality",
"hd": "HD",
"hdTooltip": "Viewing high definition video",
"highDefinition": "High definition",
"labelTooiltipNoVideo": "No video",
"labelTooltipAudioOnly": "Low bandwidth mode enabled",
"ld": "LD",
"ldTooltip": "Viewing low definition video",
"lowDefinition": "Low definition",
"onlyAudioAvailable": "Only audio is available",
"onlyAudioSupported": "We only support audio in this browser.",
"sd": "SD",
"sdTooltip": "Viewing standard definition video",
"standardDefinition": "Standard definition"
},
"videothumbnail": {
"domute": "Mute",
"domuteOthers": "Mute everyone else",
"flip": "Flip",
"kick": "Kick out",
"moderator": "Moderator",
"mute": "Participant is muted",
"muted": "Muted",
"remoteControl": "Start / Stop remote control",
"show": "Show on stage",
"videomute": "Participant has stopped the camera"
},
"welcomepage": {
"accessibilityLabel": {
"join": "Tap to join",
"roomname": "Enter room name"
},
"appDescription": "Go ahead, video chat with the whole team. In fact, invite everyone you know. {{app}} is a fully encrypted, 100% open source video conferencing solution that you can use all day, every day, for free — with no account needed.",
"audioVideoSwitch": {
"audio": "Voice",
"video": "Video"
},
"calendar": "Calendar",
"connectCalendarButton": "Connect your calendar",
"connectCalendarText": "Connect your calendar to view all your meetings in {{app}}. Plus, add {{provider}} meetings to your calendar and start them with one click.",
"enterRoomTitle": "Start a new meeting",
"getHelp": "Get help",
"go": "GO",
"goSmall": "GO",
"info": "Info",
"join": "CREATE / JOIN",
"privacy": "Privacy",
"recentList": "Recent",
"recentListDelete": "Delete",
"recentListEmpty": "Your recent list is currently empty. Chat with your team and you will find all your recent meetings here.",
"reducedUIText": "Welcome to {{app}}!",
"roomNameAllowedChars": "Meeting name should not contain any of these characters: ?, &, :, ', \", %, #.",
"roomname": "Enter room name",
"roomnameHint": "Enter the name or URL of the room you want to join. You may make a name up, just let the people you are meeting know it so that they enter the same name.",
"sendFeedback": "Send feedback",
"terms": "Terms",
"title": "Secure, fully featured, and completely free video conferencing"
}
}

View File

@@ -78,12 +78,12 @@
},
"carmode": {
"actions": {
"selectSoundDevice": "Scegli audio"
"selectSoundDevice": "Scegli uscita audio"
},
"labels": {
"buttonLabel": "Modalità Auto",
"title": "Modalità Auto",
"videoStopped": "Il tuo video è fermo"
"videoStopped": "Il tuo video è disabilitato"
}
},
"chat": {
@@ -143,7 +143,7 @@
"address": "Indirizzo:",
"audio_ssrc": "Audio SSRC:",
"bandwidth": "Banda stimata:",
"bitrate": "Bitrate:",
"bitrate": "Velocità:",
"bridgeCount": "Conteggio server:",
"codecs": "Codec (A/V): ",
"connectedTo": "Connesso a:",
@@ -278,13 +278,13 @@
"internalError": "Ops! Qualcosa è andato storto. Questo è l'errore: {{error}}",
"internalErrorTitle": "Errore interno",
"kickMessage": "Puoi contattare {{participantDisplayName}} per maggiori dettagli.",
"kickParticipantButton": "Escludi",
"kickParticipantDialog": "Sei sicuro di voler escludere questo partecipante?",
"kickParticipantTitle": "Escludi questo partecipante?",
"kickTitle": "Escluso dalla riunione",
"linkMeeting": "Link meeting",
"linkMeetingTitle": "Link meeting to Salesforce",
"liveStreaming": "Diretta",
"kickParticipantButton": "Espelli",
"kickParticipantDialog": "Sei sicuro di voler espellere questo partecipante?",
"kickParticipantTitle": "Espelli questo partecipante?",
"kickTitle": "Espulso dalla riunione",
"linkMeeting": "Collega la riunione",
"linkMeetingTitle": "Collega la riunione a Salesforce",
"liveStreaming": "Diretta streaming",
"liveStreamingDisabledBecauseOfActiveRecordingTooltip": "Impossibile durante la registrazione.",
"localUserControls": "Controlli dell'utente locale",
"lockMessage": "Impossibile bloccare la riunione.",
@@ -306,21 +306,21 @@
"moderationVideoLabel": "Permetti ai partecipanti di riattivare la videocamera",
"muteEveryoneDialog": "I partecipanti possono riaccenderli in quasiasi momento.",
"muteEveryoneDialogModerationOn": "I partecipanti possono fare richiesta di parlare in ogni momento.",
"muteEveryoneElseDialog": "Una volta spenti i microfoni non potrai riattivarli, ma loro potranno farlo in qualsiasi momento.",
"muteEveryoneElseTitle": "Spengo il microfono a tutti, eccetto a {{whom}}?",
"muteEveryoneElsesVideoDialog": "Una volta spente le videocamere non potrai riaccenderle, ma ogni partecipante potrà farlo in ogni momento.",
"muteEveryoneElsesVideoTitle": "Spengo tutte le videocamere, tranne a {{whom}}?",
"muteEveryoneElseDialog": "Una volta spenti i microfoni non potrai riattivarli, ma ogni partecipante potrà farlo in qualsiasi momento.",
"muteEveryoneElseTitle": "Spengo il microfono a tutti, tranne che a {{whom}}?",
"muteEveryoneElsesVideoDialog": "Una volta spente le videocamere non potrai riaccenderle, ma ogni partecipante potrà farlo in qualsiasi momento.",
"muteEveryoneElsesVideoTitle": "Spengo la videocamera a tutti, tranne che a {{whom}}?",
"muteEveryoneSelf": "tu",
"muteEveryoneStartMuted": "Tutti cominciano a microfono spento, d'adesso in avanti",
"muteEveryoneTitle": "Spengo i microfoni a tutti?",
"muteEveryonesVideoDialog": "Sei sicuro di voler spegnere le videocamere a tutti? Non potrai riaccenderle, ma ogni partecipante potrà farlo in ogni momento.",
"muteEveryoneTitle": "Spengo il microfono a tutti?",
"muteEveryonesVideoDialog": "Sei sicuro di voler spegnere le videocamere di tutti? Non potrai riaccenderle, ma ogni partecipante potrà farlo in qualsiasi momento.",
"muteEveryonesVideoDialogModerationOn": "I partecipanti possono fare richiesta di trasmettere video in ogni momento.",
"muteEveryonesVideoDialogOk": "Spegni",
"muteEveryonesVideoTitle": "Vuoi spegnere le videocamere di tutti?",
"muteEveryonesVideoTitle": "Spengo la videocamera a tutti?",
"muteParticipantBody": "Non sarai in grado di riattivare il loro microfono, ma loro potranno riattivarlo in qualsiasi momento.",
"muteParticipantButton": "Spegni audio",
"muteParticipantButton": "Silenzia",
"muteParticipantsVideoBody": "Una volta spenta la videocamera non potrai riaccenderla, ma lui potrà riattivarla in qualsiasi momento.",
"muteParticipantsVideoBodyModerationOn": "Non potrai riaccendere le videocamere, né potranno loro.",
"muteParticipantsVideoBodyModerationOn": "Non potrai riaccendere le videocamere, né loro potranno.",
"muteParticipantsVideoButton": "Spegni video",
"muteParticipantsVideoDialog": "Sei sicuro di voler spegnere la videocamera di questo partecipante? Lui potrà riattivarla in ogni momento.",
"muteParticipantsVideoDialogModerationOn": "Are you sure you want to turn off this participant's camera? You won't be able to turn the camera back on and neither will they.",
@@ -388,10 +388,10 @@
"shareYourScreen": "Condividi schermo",
"shareYourScreenDisabled": "Condivisione schermo disabilitata.",
"sharedVideoDialogError": "Errore: URL non valido",
"sharedVideoLinkPlaceholder": "Link YouTube o link video diretto",
"sharedVideoLinkPlaceholder": "Link YouTube o link diretto, al video",
"show": "Mostra",
"start": "Avvia ",
"startLiveStreaming": "Avvia diretta",
"startLiveStreaming": "Avvia diretta streaming",
"startRecording": "Inizia a registrare",
"startRemoteControlErrorMessage": "Si è verificato un errore nel tentativo di avviare la sessione di controllo remoto!",
"stopLiveStreaming": "Ferma la diretta streaming",
@@ -592,8 +592,8 @@
"nameField": "Scrivi il tuo nome",
"notificationLobbyAccessDenied": "{{targetParticipantName}} è stato respinto da {{originParticipantName}}",
"notificationLobbyAccessGranted": "{{targetParticipantName}} è stato autorizzato ad entrare da {{originParticipantName}}",
"notificationLobbyDisabled": "La sala d'attesa è stata disattivata da {{originParticipantName}}",
"notificationLobbyEnabled": "La sala d'attesa è stata attivata da {{originParticipantName}}",
"notificationLobbyDisabled": "{{originParticipantName}} ha aggiunto la sala d'attesa alla riunione",
"notificationLobbyEnabled": "{{originParticipantName}} ha tolto la sala d'attesa alla riunione",
"notificationTitle": "Sala d'attesa",
"passwordField": "Inserisci la password della riunione",
"passwordJoinButton": "Entra",
@@ -655,7 +655,7 @@
"focusFail": "{{component}} non disponibile - riprovo tra {{ms}} sec",
"gifsMenu": "GIPHY",
"groupTitle": "Notifiche",
"hostAskedUnmute": "Il moderatore ti dice di accendere il microfono",
"hostAskedUnmute": "Il moderatore ti chiede di accendere il microfono",
"invitedOneMember": "{{displayName}} è stato invitato",
"invitedThreePlusMembers": "Hai invitato {{name}} e altri {{count}}",
"invitedTwoMembers": "Hai invitato {{first}} e {{second}}",
@@ -686,7 +686,7 @@
"moderator": "Impostati i permessi di moderatore!",
"muted": "Hai iniziato la conversazione con audio disattivato.",
"mutedRemotelyDescription": "Puoi sempre attivare il microfono, quando vuoi parlare. Spegni il microfono quando hai finito, per non introdurre rumori di fondo nella riunione.",
"mutedRemotelyTitle": "Ti è stato disattivato l'audio da {{participantDisplayName}}!",
"mutedRemotelyTitle": "{{participantDisplayName}} ti ha spento il microfono",
"mutedTitle": "Hai audio disattivato!",
"newDeviceAction": "OK, usala",
"newDeviceAudioTitle": "Trovata nuova origine audio",
@@ -717,7 +717,7 @@
"suboptimalExperienceTitle": "Avviso sul browser",
"unmute": "Accendi microfono",
"videoMutedRemotelyDescription": "Puoi riaccenderla in qualsiasi momento.",
"videoMutedRemotelyTitle": "La videocamera ti è stata spenta da {{participantDisplayName}}!",
"videoMutedRemotelyTitle": "{{participantDisplayName}} ti ha spento la videocamera",
"videoUnmuteBlockedDescription": "Riattivazione video e condivisione schermo sono state momentaneamente bloccate per limiti di sistema.",
"videoUnmuteBlockedTitle": "Riattivazione video e condivisione schermo bloccate!",
"viewLobby": "Vedi sala d'attesa",
@@ -830,8 +830,8 @@
"initiated": "Chiamata avviata",
"joinAudioByPhone": "Collegati usando un telefono, per parlare",
"joinMeeting": "Collegati alla riunione",
"joinMeetingInLowBandwidthMode": "Entra con il solo audio",
"joinWithoutAudio": "Collegati senza poter parlare",
"joinMeetingInLowBandwidthMode": "Entra in modalità banda limitata",
"joinWithoutAudio": "Collegati senza poter parlare mai",
"keyboardShortcuts": "Attiva le scorciatoie da tastiera",
"linkCopied": "Collegamento copiato negli appunti",
"lookGood": "Sembra che il tuo microfono funzioni correttamente",
@@ -943,7 +943,7 @@
"security": {
"about": "Puoi aggiungere una $t(lockRoomPassword) alla riunione. I partecipanti dovranno fornire la $t(lockRoomPassword) per essere autorizzati a partecipare alla riunione.",
"aboutReadOnly": "I moderatori della riunione possono aggiungere $t(lockRoomPassword). I partecipanti dovranno fornire la $t(lockRoomPassword) per essere autorizzati a partecipare alla riunione.",
"insecureRoomNameWarning": "Il nome della riunione non è sicuro. Dei partecipanti indesiderati potrebbero unirsi alla riunione. Puoi proteggere l'accesso alla riunione col bottone sicurezza.",
"insecureRoomNameWarning": "Il nome della riunione non è sicuro. Dei partecipanti indesiderati potrebbero unirsi alla riunione. Puoi proteggere l'accesso alla riunione nelle Impostazioni di sicurezza.",
"title": "Impostazioni di sicurezza"
},
"settings": {
@@ -964,7 +964,7 @@
"incomingMessage": "Messaggio in arrivo",
"language": "Lingua",
"loggedIn": "Connesso come {{name}}",
"maxStageParticipants": "Numero massimo di partecipanti che possono essere aggiunti come oratori",
"maxStageParticipants": "Numero massimo video che possono essere fissati nella schemata",
"microphones": "Microfoni",
"moderator": "Moderatore",
"more": "Mostra di più",
@@ -985,7 +985,7 @@
"startAudioMuted": "Tutti cominciano a microfono spento",
"startReactionsMuted": "Spegni i suoni delle reazioni a tutti",
"startVideoMuted": "Tutti cominciano a videocamera disattivata",
"talkWhileMuted": "Parla senza microfono",
"talkWhileMuted": "Parli a microfono spento",
"title": "Impostazioni"
},
"settingsView": {
@@ -1067,7 +1067,6 @@
"chat": "Conversazione",
"clap": "Applaudi",
"collapse": "Riduci",
"dock": "Aggancia alla finestra principale",
"document": "Documenti condivisi",
"download": "Scarica le nostre app",
"embedMeeting": "Incorpora riunione altrove",
@@ -1121,7 +1120,6 @@
"tileView": "Vedi tutti i partecipanti, o uno solo",
"toggleCamera": "Cambia videocamera",
"toggleFilmstrip": "Pellicola",
"undock": "Sgancia in una finestra separata",
"videoblur": "Sfoca video",
"videomute": "Videocamera",
"whiteboard": "Usa lavagna"
@@ -1140,7 +1138,6 @@
"closeReactionsMenu": "Chiudi il menù reazioni",
"disableNoiseSuppression": "Interrompi riduzione rumore",
"disableReactionSounds": "Puoi disattivare i suoni delle reaction, in questa riunione",
"dock": "Aggancia nella finestra principale",
"documentClose": "Chiudi documento condiviso",
"documentOpen": "Apri documento condiviso",
"download": "Scarica le nostre app",
@@ -1214,7 +1211,6 @@
"talkWhileMutedPopup": "Stai provando a parlare? Il microfono è disattivato.",
"tileViewToggle": "Vedi tutti i partecipanti insieme, o uno solo",
"toggleCamera": "Cambia videocamera",
"undock": "Sgancia in una finestra separata",
"videoSettings": "Impostazioni video",
"videomute": "Videocamera"
},
@@ -1278,7 +1274,7 @@
},
"videothumbnail": {
"connectionInfo": "Info connessione",
"domute": "Disattiva audio",
"domute": "Silenzia",
"domuteOthers": "Disattiva audio di tutti gli altri",
"domuteVideo": "Disattiva video",
"domuteVideoOfOthers": "Disattiva video di tutti gli altri",
@@ -1289,12 +1285,12 @@
"moderator": "Moderatore",
"mute": "Il partecipante ha il microfono spento",
"muted": "Audio disattivato",
"pinToStage": "Aggiungi agli oratori",
"pinToStage": "Fissa questo video",
"remoteControl": "Controllo remoto",
"screenSharing": "Il partecipante sta condividendo lo schermo",
"show": "Mostra tra gli oratori",
"showSelfView": "Mostra tua immagine",
"unpinFromStage": "Togli",
"unpinFromStage": "Libera questo video",
"videoMuted": "Video disattivato",
"videomute": "Il partecipante ha la videocamera spenta"
},

View File

@@ -1,716 +0,0 @@
{
"addPeople": {
"add": "Inviter",
"countryNotSupported": "",
"countryReminder": "",
"disabled": "Du kan ikke invitere folk.",
"failedToAdd": "Klarte ikke å lagge til deltagere",
"footerText": "Å ringe ut er avskrudd",
"loading": "Søker etter folk og telefonnumre",
"loadingNumber": "Bekrefter telefonnummer",
"loadingPeople": "Søker etter folk å inviterte",
"noResults": "",
"noValidNumbers": "Skriv inn et telefonnummer",
"searchNumbers": "Legg til telefonnumre",
"searchPeople": "Søk etter folk",
"searchPeopleAndNumbers": "Søk etter folk eller legg til telefonnumrene deres",
"telephone": "Telefon: {{number}}",
"title": "Inviter folk til dette møtet"
},
"audioDevices": {
"bluetooth": "Blåtann",
"headphones": "Hodetelefoner",
"none": "Ingen lydenheter tilgjengelig",
"phone": "Telefon",
"speaker": "Høyttaler"
},
"audioOnly": {
"audioOnly": "Lav båndbredde"
},
"calendarSync": {
"addMeetingURL": "Legg til en møtelenke",
"confirmAddLink": "Ønsker du å legge til en Jitsi-lenke til denne hendelsen?",
"join": "Ta del",
"joinTooltip": "Ta del i møtet",
"nextMeeting": "neste møte",
"noEvents": "",
"ongoingMeeting": "pågående møte",
"permissionButton": "Åpne innstillinger",
"permissionMessage": "",
"refresh": "",
"today": "I dag"
},
"chat": {
"error": "",
"fieldPlaceHolder": "Skriv inn din melding her",
"messageTo": "Privat melding til {{recipient}}",
"messagebox": "Skriv en melding",
"nickname": {
"popover": "Velg et kallenavn",
"title": "",
"titleWithPolls": ""
},
"sendButton": "Send",
"title": "",
"titleWithPolls": ""
},
"chromeExtensionBanner": {
"dontShowAgain": "Ikke vis meg dette igjen"
},
"connection": {
"ATTACHED": "Vedlagt",
"AUTHENTICATING": "Bekrefter",
"AUTHFAIL": "",
"CONNECTED": "Tilkoblet",
"CONNECTING": "Kobler til",
"CONNFAIL": "",
"DISCONNECTED": "Frakoblet",
"DISCONNECTING": "Kobler fra",
"ERROR": "Feil",
"FETCH_SESSION_ID": "Henter økt-ID…",
"GOT_SESSION_ID": "Henter økt-ID… Ferdig",
"RECONNECTING": ""
},
"connectionindicator": {
"address": "Adresse:",
"bandwidth": "Anslått båndbredde:",
"bitrate": "",
"bridgeCount": "",
"connectedTo": "Ansluttet til:",
"framerate": "",
"less": "Vis mindre",
"localaddress": "Lokal adresse:",
"localaddress_plural": "Lokale adresser:",
"localport": "Lokal port:",
"localport_plural": "Lokale porter:",
"more": "Vis mer",
"packetloss": "Pakketap:",
"quality": {
"good": "God",
"inactive": "Inaktiv",
"lost": "Tapt",
"nonoptimal": "Suboptimal",
"poor": "Dårlig"
},
"remoteaddress": "Fjernadresser:",
"remoteaddress_plural": "Fjernadresser:",
"remoteport": "",
"remoteport_plural": "",
"resolution": "Oppløsning:",
"status": "Tilknytning:",
"transport": "",
"transport_plural": "",
"turn": ""
},
"dateUtils": {
"earlier": "Tidligere",
"today": "I dag",
"yesterday": "I går"
},
"deepLinking": {
"downloadApp": "Last ned programmet",
"openApp": "Fortsett til programmet"
},
"defaultLink": "f.eks.",
"deviceError": {
"cameraError": "",
"cameraPermission": "",
"microphoneError": "",
"microphonePermission": ""
},
"deviceSelection": {
"noPermission": "Tilgang ikke innvilget",
"previewUnavailable": "Forhåndsvisning utilgjengelig",
"selectADevice": "Velg en enhet",
"testAudio": "Spill en testlyd"
},
"dialOut": {
"statusMessage": "er nå {{status}}"
},
"dialog": {
"Back": "Tilbake",
"Cancel": "Avbryt",
"IamHost": "Jeg er vertsskap",
"Ok": "OK",
"Remove": "Fjern",
"Share": "Del",
"Submit": "Send inn",
"WaitForHostMsg": "",
"WaitingForHost": "",
"Yes": "Ja",
"accessibilityLabel": {
"liveStreaming": ""
},
"allow": "Tillat",
"alreadySharedVideoMsg": "",
"alreadySharedVideoTitle": "",
"applicationWindow": "",
"cameraConstraintFailedError": "",
"cameraNotFoundError": "",
"cameraNotSendingData": "",
"cameraNotSendingDataTitle": "",
"cameraPermissionDeniedError": "",
"cameraUnknownError": "",
"cameraUnsupportedResolutionError": "",
"close": "",
"conferenceDisconnectMsg": "",
"conferenceDisconnectTitle": "Du har blitt frakoblet.",
"conferenceReloadMsg": "",
"conferenceReloadTitle": "",
"confirm": "Bekreft",
"confirmNo": "Nei",
"confirmYes": "Ja",
"connectError": "",
"connectErrorWithMsg": "",
"connecting": "Kobler til",
"contactSupport": "Kontakt brukerstøtte",
"copy": "Kopier",
"dismiss": "Forkast",
"displayNameRequired": "Hei. Hva heter du?",
"done": "Ferdig",
"enterDisplayName": "Skriv inn navnet ditt her",
"error": "Feil",
"externalInstallationMsg": "",
"externalInstallationTitle": "Programtillegg kreves",
"goToStore": "",
"gracefulShutdown": "",
"incorrectPassword": "",
"incorrectRoomLockPassword": "",
"inlineInstallExtension": "Installer nå",
"inlineInstallationMsg": "",
"internalError": "",
"internalErrorTitle": "",
"kickMessage": "",
"kickParticipantButton": "Kast ut",
"kickParticipantDialog": "Er du sikker på at du vil kaste ut denne deltageren?",
"kickParticipantTitle": "Kast ut denne deltageren?",
"kickTitle": "Oida. {{participantDisplayName}} kastet deg ut av møtet",
"liveStreaming": "",
"liveStreamingDisabledForGuestTooltip": "",
"liveStreamingDisabledTooltip": "",
"lockMessage": "Klarte ikke å låse konferansen.",
"lockRoom": "",
"lockTitle": "",
"logoutQuestion": "",
"logoutTitle": "Logg ut",
"maxUsersLimitReached": "",
"maxUsersLimitReachedTitle": "",
"micConstraintFailedError": "",
"micNotFoundError": "",
"micNotSendingData": "",
"micNotSendingDataTitle": "",
"micPermissionDeniedError": "",
"micUnknownError": "",
"muteEveryoneElseTitle": "Forstum alle unntatt {{whom}}?",
"muteEveryoneSelf": "deg selv",
"muteEveryoneStartMuted": "Alle starter forstummet fra nå av",
"muteEveryoneTitle": "Forstum alle?",
"muteParticipantBody": "Du vil ikke kunne oppheve forstumming av dem, men de kan oppheve forstumming selv når som helst.",
"muteParticipantButton": "Forstum",
"muteParticipantDialog": "",
"muteParticipantTitle": "",
"passwordLabel": "",
"passwordNotSupported": "",
"passwordNotSupportedTitle": "",
"passwordRequired": "",
"popupError": "",
"popupErrorTitle": "Oppsprett blokkert",
"recording": "",
"recordingDisabledForGuestTooltip": "",
"recordingDisabledTooltip": "",
"rejoinNow": "",
"remoteControlAllowedMessage": "",
"remoteControlDeniedMessage": "",
"remoteControlErrorMessage": "",
"remoteControlRequestMessage": "",
"remoteControlShareScreenWarning": "",
"remoteControlStopMessage": "",
"remoteControlTitle": "",
"removePassword": "Fjern",
"removeSharedVideoMsg": "",
"removeSharedVideoTitle": "Fjern delt video",
"reservationError": "",
"reservationErrorMsg": "",
"retry": "Prøv igjen",
"screenSharingAudio": "Del lyd",
"screenSharingFailedToInstall": "",
"screenSharingFailedToInstallTitle": "",
"screenSharingFirefoxPermissionDeniedError": "",
"screenSharingFirefoxPermissionDeniedTitle": "",
"screenSharingPermissionDeniedError": "",
"sendPrivateMessageCancel": "Send til gruppen",
"sendPrivateMessageOk": "Send privat",
"sendPrivateMessageTitle": "Send privat?",
"serviceUnavailable": "Tjenesten er utilgjengelig",
"sessTerminated": "",
"shareVideoLinkError": "",
"shareVideoTitle": "Del en video",
"shareYourScreen": "Del skjermen din",
"shareYourScreenDisabled": "Skjermdeling er avskrudd.",
"shareYourScreenDisabledForGuest": "",
"startLiveStreaming": "",
"startRecording": "Start opptak",
"startRemoteControlErrorMessage": "",
"stopLiveStreaming": "",
"stopRecording": "Stopp opptak",
"stopRecordingWarning": "",
"stopStreamingWarning": "",
"streamKey": "",
"thankYou": "Takk for at du bruker {{appName}}.",
"token": "symbol",
"tokenAuthFailed": "",
"tokenAuthFailedTitle": "",
"transcribing": "",
"unlockRoom": "",
"userPassword": "brukerpassord",
"yourEntireScreen": "Hele skjermen din"
},
"documentSharing": {
"title": "Delt dokument"
},
"feedback": {
"average": "Middels",
"bad": "Dårlig",
"detailsLabel": "Fortell oss om det.",
"good": "God",
"rateExperience": "Vurder din møteopplevelse",
"veryBad": "Veldig dårlig",
"veryGood": "Veldig god"
},
"incomingCall": {
"answer": "Svar",
"audioCallTitle": "",
"decline": "",
"productLabel": "",
"videoCallTitle": ""
},
"info": {
"accessibilityLabel": "Vis info",
"addPassword": "Legg til $t(lockRoomPassword)",
"cancelPassword": "Avbryt $t(lockRoomPassword)",
"conferenceURL": "Lenke:",
"country": "Land",
"dialANumber": "",
"dialInConferenceID": "",
"dialInNotSupported": "",
"dialInNumber": "",
"dialInSummaryError": "",
"dialInTollFree": "",
"genericError": "",
"inviteLiveStream": "",
"invitePhone": "",
"invitePhoneAlternatives": "",
"inviteURLFirstPartGeneral": "",
"inviteURLFirstPartPersonal": "",
"inviteURLSecondPart": "",
"label": "",
"liveStreamURL": "",
"moreNumbers": "Flere nummer",
"noNumbers": "",
"noPassword": "",
"noRoom": "",
"numbers": "",
"password": "",
"title": "Del",
"tooltip": ""
},
"inlineDialogFailure": {
"msg": "",
"retry": "Prøv igjen",
"support": "Brukerstøtte",
"supportMsg": ""
},
"inviteDialog": {
"alertText": "",
"header": "Inviter",
"searchCallOnlyPlaceholder": "",
"searchPeopleOnlyPlaceholder": "",
"searchPlaceholder": "",
"send": "Send"
},
"keyboardShortcuts": {
"focusLocal": "",
"focusRemote": "",
"fullScreen": "",
"keyboardShortcuts": "Tastatursnarveier",
"localRecording": "",
"mute": "",
"pushToTalk": "",
"raiseHand": "",
"showSpeakerStats": "",
"toggleChat": "",
"toggleFilmstrip": "",
"toggleScreensharing": "",
"toggleShortcuts": "",
"videoMute": ""
},
"liveStreaming": {
"busy": "",
"busyTitle": "",
"changeSignIn": "",
"choose": "",
"chooseCTA": "",
"enterStreamKey": "",
"error": "",
"errorAPI": "",
"errorLiveStreamNotEnabled": "",
"expandedOff": "",
"expandedOn": "",
"expandedPending": "",
"failedToStart": "",
"getStreamKeyManually": "",
"invalidStreamKey": "",
"off": "",
"on": "",
"pending": "",
"serviceName": "",
"signIn": "",
"signInCTA": "",
"signOut": "",
"signedInAs": "©",
"start": "",
"streamIdHelp": "",
"unavailableTitle": ""
},
"localRecording": {
"clientState": {
"off": "",
"on": "",
"unknown": ""
},
"dialogTitle": "",
"duration": "",
"durationNA": "",
"encoding": "",
"label": "",
"labelToolTip": "",
"localRecording": "",
"me": "",
"messages": {
"engaged": "",
"finished": "",
"finishedModerator": "",
"notModerator": ""
},
"moderator": "",
"no": "",
"participant": "",
"participantStats": "",
"sessionToken": "",
"start": "",
"stop": "",
"yes": ""
},
"lockRoomPassword": "",
"lockRoomPasswordUppercase": "",
"me": "",
"notify": {
"connectedOneMember": "",
"connectedThreePlusMembers": "",
"connectedTwoMembers": "",
"disconnected": "",
"focus": "",
"focusFail": "",
"grantedTo": "",
"invitedOneMember": "",
"invitedThreePlusMembers": "",
"invitedTwoMembers": "",
"kickParticipant": "",
"me": "",
"moderator": "",
"muted": "",
"mutedRemotelyDescription": "",
"mutedRemotelyTitle": "",
"mutedTitle": "",
"newDeviceAction": "",
"newDeviceAudioTitle": "",
"newDeviceCameraTitle": "",
"passwordRemovedRemotely": "",
"passwordSetRemotely": "",
"raisedHand": "",
"somebody": "",
"startSilentDescription": "",
"startSilentTitle": "",
"suboptimalExperienceDescription": "",
"suboptimalExperienceTitle": "",
"unmute": ""
},
"passwordDigitsOnly": "",
"passwordSetRemotely": "",
"poweredby": "",
"presenceStatus": {
"busy": "",
"calling": "",
"connected": "",
"connecting": "",
"connecting2": "",
"disconnected": "",
"expired": "",
"ignored": "",
"initializingCall": "",
"invited": "",
"rejected": "",
"ringing": ""
},
"profile": {
"setDisplayNameLabel": "",
"setEmailInput": "",
"setEmailLabel": "",
"title": ""
},
"recording": {
"authDropboxText": "",
"availableSpace": "",
"beta": "",
"busy": "",
"busyTitle": "",
"error": "",
"expandedOff": "",
"expandedOn": "",
"expandedPending": "",
"failedToStart": "",
"fileSharingdescription": "",
"live": "",
"loggedIn": "",
"off": "",
"on": "",
"pending": "",
"rec": "",
"serviceDescription": "",
"serviceName": "",
"signIn": "",
"signOut": "",
"unavailable": "",
"unavailableTitle": ""
},
"sectionList": {
"pullToRefresh": ""
},
"settings": {
"calendar": {
"about": "",
"disconnect": "",
"microsoftSignIn": "",
"signedIn": "",
"title": ""
},
"devices": "",
"followMe": "",
"language": "",
"loggedIn": "",
"moderator": "",
"more": "",
"name": "",
"noDevice": "",
"selectAudioOutput": "",
"selectCamera": "",
"selectMic": "",
"startAudioMuted": "",
"startVideoMuted": "",
"title": ""
},
"settingsView": {
"alertOk": "",
"alertTitle": "",
"alertURLText": "",
"buildInfoSection": "",
"conferenceSection": "",
"displayName": "",
"email": "",
"header": "",
"profileSection": "",
"serverURL": "",
"startWithAudioMuted": "",
"startWithVideoMuted": "",
"version": ""
},
"share": {
"dialInfoText": "",
"mainText": ""
},
"speaker": "",
"speakerStats": {
"hours": "",
"minutes": "",
"name": "",
"seconds": "",
"speakerStats": "",
"speakerTime": ""
},
"startupoverlay": {
"policyText": "",
"title": ""
},
"suspendedoverlay": {
"rejoinKeyTitle": "",
"text": "",
"title": ""
},
"toolbar": {
"Settings": "",
"accessibilityLabel": {
"Settings": "",
"audioOnly": "",
"audioRoute": "",
"callQuality": "",
"cc": "",
"chat": "",
"document": "",
"feedback": "",
"fullScreen": "",
"hangup": "",
"invite": "",
"kick": "",
"localRecording": "",
"lockRoom": "",
"moreActions": "",
"moreActionsMenu": "",
"mute": "",
"pip": "",
"profile": "",
"raiseHand": "",
"recording": "",
"remoteMute": "",
"shareRoom": "",
"shareYourScreen": "",
"sharedvideo": "",
"shortcuts": "",
"show": "",
"speakerStats": "",
"tileView": "",
"toggleCamera": "",
"videoblur": "",
"videomute": ""
},
"addPeople": "",
"audioOnlyOff": "",
"audioOnlyOn": "",
"audioRoute": "",
"authenticate": "",
"callQuality": "",
"chat": "",
"closeChat": "",
"documentClose": "",
"documentOpen": "",
"enterFullScreen": "",
"enterTileView": "",
"exitFullScreen": "",
"exitTileView": "",
"feedback": "",
"hangup": "",
"invite": "",
"login": "",
"logout": "",
"lowerYourHand": "",
"moreActions": "",
"mute": "",
"openChat": "",
"pip": "",
"profile": "",
"raiseHand": "",
"raiseYourHand": "",
"shareRoom": "",
"sharedvideo": "",
"shortcuts": "",
"speakerStats": "",
"startScreenSharing": "",
"startSubtitles": "",
"startvideoblur": "",
"stopScreenSharing": "",
"stopSharedVideo": "",
"stopSubtitles": "",
"stopvideoblur": "",
"talkWhileMutedPopup": "",
"tileViewToggle": "",
"toggleCamera": "",
"videomute": ""
},
"transcribing": {
"ccButtonTooltip": "",
"error": "",
"expandedLabel": "",
"failedToStart": "",
"labelToolTip": "",
"off": "",
"pending": "",
"start": "",
"stop": "",
"tr": ""
},
"userMedia": {
"androidGrantPermissions": "",
"chromeGrantPermissions": "",
"edgeGrantPermissions": "",
"electronGrantPermissions": "",
"firefoxGrantPermissions": "",
"iexplorerGrantPermissions": "",
"nwjsGrantPermissions": "",
"operaGrantPermissions": "",
"react-nativeGrantPermissions": "",
"safariGrantPermissions": ""
},
"videoSIPGW": {
"busy": "",
"busyTitle": "",
"errorAlreadyInvited": "",
"errorInvite": "",
"errorInviteFailed": "",
"errorInviteFailedTitle": "",
"errorInviteTitle": "",
"pending": ""
},
"videoStatus": {
"audioOnly": "",
"audioOnlyExpanded": "",
"callQuality": "",
"hd": "",
"highDefinition": "",
"labelTooiltipNoVideo": "",
"labelTooltipAudioOnly": "",
"ld": "",
"lowDefinition": "",
"onlyAudioAvailable": "",
"onlyAudioSupported": "",
"sd": "",
"standardDefinition": ""
},
"videothumbnail": {
"domute": "",
"flip": "",
"kick": "",
"moderator": "",
"mute": "",
"muted": "",
"remoteControl": "",
"show": "",
"videomute": ""
},
"welcomepage": {
"accessibilityLabel": {
"join": "",
"roomname": ""
},
"appDescription": "",
"audioVideoSwitch": {
"audio": "",
"video": ""
},
"calendar": "",
"connectCalendarButton": "",
"connectCalendarText": "",
"enterRoomTitle": "",
"go": "",
"info": "",
"join": "",
"privacy": "",
"recentList": "",
"recentListDelete": "",
"recentListEmpty": "",
"reducedUIText": "",
"roomname": "",
"roomnameHint": "",
"sendFeedback": "",
"terms": "",
"title": ""
}
}

View File

@@ -1057,7 +1057,6 @@
"chat": "Przełączanie okna rozmowy",
"clap": "Klaskanie",
"collapse": "Zwiń",
"dock": "Zadokuj w głównym oknie",
"document": "Przełączanie wspólnego dokumentu",
"download": "Pobierz nasze aplikacje",
"embedMeeting": "Osadź spotkanie",
@@ -1109,7 +1108,6 @@
"tileView": "Przełącz widok kafelkowy",
"toggleCamera": "Przełączanie kamery",
"toggleFilmstrip": "Przełącz filmstrip",
"undock": "Oddokuj w osobnym oknie",
"videoblur": "Przełącz rozmazanie obrazu",
"videomute": "Przełączanie wyciszonego filmu wideo"
},
@@ -1127,7 +1125,6 @@
"closeReactionsMenu": "Zamknij reakcje",
"disableNoiseSuppression": "Wyłącz tłumienie szumów",
"disableReactionSounds": "Wyłącz dźwięki reakcji dla tego spotkania",
"dock": "Zadokuj w głównym oknie",
"documentClose": "Zamknij udostępniony dokument",
"documentOpen": "Otwarty udostępniony dokument",
"download": "Pobierz nasze aplikacje",
@@ -1197,7 +1194,6 @@
"talkWhileMutedPopup": "Próbujesz mówić? Jesteś wyciszony.",
"tileViewToggle": "Przełączanie kafelkowego widoku",
"toggleCamera": "Przełączanie kamery",
"undock": "Oddokuj w osobnym oknie",
"videoSettings": "Ustawienia video",
"videomute": "Włącz / Wyłącz kamerę"
},

View File

@@ -1067,7 +1067,6 @@
"chat": "Abrir / Fechar chat",
"clap": "Aplausos",
"collapse": "Colapsar",
"dock": "Ancorar na janela principal",
"document": "Mudar para documento partilhado",
"download": "Descarregar as nossas aplicações",
"embedMeeting": "Reunião incorporada",
@@ -1121,7 +1120,6 @@
"tileView": "Mudar a vista em quadrícula",
"toggleCamera": "Mudar a câmara",
"toggleFilmstrip": "Mudar a película de filme",
"undock": "Desancorar numa janela separada",
"videoblur": "Mudar o desfoque de vídeo",
"videomute": "Iniciar / Parar câmara",
"whiteboard": "Mostrar / Esconder quadro branco"
@@ -1140,7 +1138,6 @@
"closeReactionsMenu": "Fechar menu de reações",
"disableNoiseSuppression": "Desativar a supressão de ruído",
"disableReactionSounds": "Pode desactivar os sons de reacção para esta reunião",
"dock": "Ancorar na janela principal",
"documentClose": "Fechar documento partilhado",
"documentOpen": "Abrir documento partilhado",
"download": "Descarregar as nossas aplicações",
@@ -1214,7 +1211,6 @@
"talkWhileMutedPopup": "Está a tentar falar? Está com o microfone desativado.",
"tileViewToggle": "Mudar para vista em quadrícula",
"toggleCamera": "Mudar a câmara",
"undock": "Desancorar numa janela separada",
"videoSettings": "Definições de vídeo",
"videomute": "Iniciar / Parar câmara"
},

View File

@@ -41,21 +41,21 @@
},
"breakoutRooms": {
"actions": {
"add": "Добавить переговорную",
"autoAssign": "Привязать к переговорной автоматически",
"add": "Добавить сессионный зал",
"autoAssign": "Привязать к залу автоматически",
"close": "Закрыть",
"join": "Присоединиться",
"leaveBreakoutRoom": "Покинуть переговорную",
"leaveBreakoutRoom": "Покинуть сессионный зал",
"more": "Больше",
"remove": "Удалить",
"sendToBreakoutRoom": "Отправить участника к:"
},
"defaultName": "Комната отдыха #{{index}}",
"defaultName": "Сессионный зал #{{index}}",
"mainRoom": "Главная комната",
"notifications": {
"joined": "Подключение к \"{{name}}\" комнате отдыха",
"joinedMainRoom": "Соединение с главной комнатой",
"joinedTitle": "Комнаты отдыха"
"joined": "Вход в сессионный зал \"{{name}}\"",
"joinedMainRoom": "Вход в главную комнату",
"joinedTitle": "Сессионные залы"
}
},
"calendarSync": {
@@ -725,6 +725,7 @@
"videoModeration": "Разрешить видео"
},
"close": "Закрыть",
"header": "Участники",
"headings": {
"lobby": "Лобби ({{count}})",
"participantsList": "Список участников ({{count}})",
@@ -917,6 +918,7 @@
"title": "Настройки безопасности"
},
"settings": {
"buttonLabel": "Настройки",
"calendar": {
"about": "Интеграция с календарем {{appName}} используется для безопасного доступа к вашему календарю и синхронизации запланированных мероприятий.",
"disconnect": "Отключиться",
@@ -970,11 +972,16 @@
"displayName": "Отображаемое имя",
"email": "Email",
"header": "Настройки",
"help": "Помощь",
"links": "Ссылки",
"privacy": "Конфиденциальность",
"profileSection": "Профиль",
"serverURL": "Адрес сервера",
"showAdvanced": "Показать дополнительные настройки",
"startCarModeInLowBandwidthMode": "Включать упрощенный режим на ограниченном канале",
"startWithAudioMuted": "Начать с отключенным звуком",
"startWithVideoMuted": "Начать с отключенным видео",
"terms": "Условия",
"version": "Версия"
},
"share": {
@@ -1019,7 +1026,7 @@
"audioOnly": "Вкл/Выкл только звук",
"audioRoute": "Выбрать аудиоустройство",
"boo": "Бу",
"breakoutRoom": "Присоединиться/выйти из переговорной",
"breakoutRoom": "Войти/выйти из сессионного зала",
"callQuality": "Качество связи",
"carmode": "Упрощенный режим",
"cc": "Вкл/Выкл субтитры",
@@ -1029,6 +1036,7 @@
"document": "Закрыть общий документ",
"download": "Скачать приложение",
"embedMeeting": "Встроить встречу",
"endConference": "Завершить встречу для всех",
"expand": "Расширять",
"feedback": "Оставить отзыв",
"fullScreen": "Полноэкранный/оконный режим",
@@ -1092,13 +1100,15 @@
"clap": "Аплодисменты",
"closeChat": "Закрыть чат",
"closeReactionsMenu": "Закрыть меню реакций",
"disableReactionSounds": "",
"disableNoiseSuppression": "Выключить шумоподавление",
"disableReactionSounds": "Выключить звуки реакций",
"documentClose": "Закрыть общий документ",
"documentOpen": "Открыть общий документ",
"download": "Скачать приложение",
"e2ee": "Сквозное шифрование",
"embedMeeting": "Встроить встречу",
"enterFullScreen": "Полный экран",
"endConference": "Завершить встречу для всех",
"enterFullScreen": "На полный экран",
"enterTileView": "Общий план",
"exitFullScreen": "Полный экран",
"exitTileView": "Крупный план",
@@ -1107,9 +1117,9 @@
"hangup": "Выход",
"help": "Справка",
"invite": "Пригласить",
"joinBreakoutRoom": "Войти в переговорную",
"joinBreakoutRoom": "Войти в сессионный зал",
"laugh": "Смеяться",
"leaveBreakoutRoom": "Покинуть переговорную",
"leaveBreakoutRoom": "Покинуть сессионный зал",
"leaveConference": "Покинуть встречу",
"like": "Мне нравится",
"linkToSalesforce": "Ссылка на Salesforce",

View File

@@ -6,30 +6,22 @@
"copyInvite": "Kopiera mötesinbjudan",
"copyLink": "Kopiera möteslänk",
"copyStream": "Kopiera livestreamlänk",
"countryNotSupported": "Vi stöder inte den här platsen ännu.",
"countryNotSupported": "Vi stöder inte det här landsnumret ännu.",
"countryReminder": "Ringer du till utlandsnummer? Börja alltid med landskoden.",
"defaultEmail": "Din mailadress",
"disabled": "Du kan inte bjuda in andra.",
"failedToAdd": "Kunde inte lägga till deltagare",
"footerText": "Utringningsfunktionen är avstängd.",
"googleEmail": "Google email",
"inviteMoreHeader": "Du är enda deltagaren i mötet",
"inviteMoreMailSubject": "Anslut till {{appName}} möte",
"inviteMorePrompt": "Bjud in fler personer",
"linkCopied": "Länk kopierad till utklipp",
"loading": "Söker efter personer och telefonnummer",
"loadingNumber": "Bekräftar telefonnummer",
"loadingPeople": "Söker efter personer att bjuda in",
"noResults": "Inga sökträffar",
"noValidNumbers": "Ange ett telefonnummer",
"outlookEmail": "Outlook email",
"phoneNumbers": "Telefonnummer",
"searchNumbers": "Lägg till telefonnummer",
"searchPeople": "Sök efter personer",
"searchPeopleAndNumbers": "Sök efter personer eller lägg till deras telefonnummer",
"searching": "Söker....",
"shareInvite": "Dela mötes inbjudan",
"shareLink": "Dela mötes inbjudan för att bjuda in fler",
"shareInvite": "Dela mötesinbjudan",
"shareLink": "Dela mötesinbjudan för att bjuda in fler",
"shareStream": "Dela livestreamlänken",
"sipAddresses": "sip-adress",
"telephone": "Telefon: {{number}}",
@@ -38,6 +30,7 @@
},
"audioDevices": {
"bluetooth": "Bluetooth",
"car": "Bil",
"headphones": "Hörlurar",
"none": "Inga ljudenheter tillgängliga",
"phone": "Telefon",
@@ -46,6 +39,25 @@
"audioOnly": {
"audioOnly": "Enbart ljud"
},
"breakoutRooms": {
"actions": {
"add": "Lägg till grupprum",
"autoAssign": "Automatisk fördelning av grupprum",
"close": "Stäng",
"join": "Gå med",
"leaveBreakoutRoom": "Lämna grupprum",
"more": "Mer",
"remove": "Ta bort",
"sendToBreakoutRoom": "Skicka deltagare till grupprum:"
},
"defaultName": "Grupprum #{{index}}",
"mainRoom": "Huvudrum",
"notifications": {
"joined": "Gick med i \"{{name}}\"",
"joinedMainRoom": "Gick med i huvudrummet",
"joinedTitle": "Grupprum"
}
},
"calendarSync": {
"addMeetingURL": "Lägg till en möteslänk",
"confirmAddLink": "Vill du lägga till en Jitsi-länk i händelsen?",
@@ -64,15 +76,27 @@
"refresh": "Uppdatera kalender",
"today": "Idag"
},
"carmode": {
"actions": {
"selectSoundDevice": "Välj ljudkälla"
},
"labels": {
"buttonLabel": "Billäge",
"title": "Billäge",
"videoStopped": "Video avstängd"
}
},
"chat": {
"enter": "Delta i mötet",
"error": "Fel: ditt meddelande skickades inte. Orsak: {{error}}",
"fieldPlaceHolder": "Skriv ditt meddelande här",
"lobbyChatMessageTo": "Skicka meddelande",
"message": "Meddelande",
"messageAccessibleTitle": "{{user}} Säger:",
"messageAccessibleTitleMe": "Jag säger: ",
"messageTo": "Privat meddelande till {{recipient}}",
"messagebox": "Skriv ett meddelande",
"newMessages": "Nytt meddelande",
"nickname": {
"popover": "Välj ett namn",
"title": "Skriv in ett namn för att börja använda chatten",
@@ -83,7 +107,7 @@
"sendButton": "Skicka",
"smileysPanel": "Emoji panel",
"tabs": {
"chat": "Chat",
"chat": "Chatt",
"polls": "Omröstningar"
},
"title": "Chatt",
@@ -92,6 +116,7 @@
},
"chromeExtensionBanner": {
"buttonText": "Installera Chrome-tillägg",
"buttonTextEdge": "Installera Edge-tillägg",
"close": "Stäng",
"dontShowAgain": "Visa inte det här igen",
"installExtensionText": "Installera tillägget för integration med Google Kalender och Office 365"
@@ -112,8 +137,7 @@
"FETCH_SESSION_ID": "Hämtar sessions-id ...",
"GET_SESSION_ID_ERROR": "Hämta sessions-id-fel: {{code}}",
"GOT_SESSION_ID": "Hämta sessions-id ... Klart",
"LOW_BANDWIDTH": "Video för {{displayName}} har stängts av för att spara bandbredd",
"RECONNECTING": "Ett nätverksproblem uppstod. Återansluter..."
"LOW_BANDWIDTH": "Video för {{displayName}} har stängts av för att spara bandbredd"
},
"connectionindicator": {
"address": "Adress:",
@@ -149,7 +173,6 @@
"status": "Anslutning:",
"transport": "Transport:",
"transport_plural": "Transporter:",
"turn": " (turn)",
"video_ssrc": "Video SSRC:"
},
"dateUtils": {
@@ -164,11 +187,11 @@
"downloadApp": "Hämta appen",
"ifDoNotHaveApp": "Om du inte har appen än:",
"ifHaveApp": "Om du redan har appen:",
"joinInApp": "Delta i denna möte med din app",
"joinInApp": "Delta i detta möte med din app",
"launchWebButton": "Starta på webben",
"openApp": "Fortsätt till appen",
"title": "Startar ditt möte i {{app}} ...",
"tryAgainButton": "Försök igen på skrivbordet"
"tryAgainButton": "Försök igen på skrivbordet",
"unsupportedBrowser": "Det verkar som att du använder en webbläsare som vi inte stöder."
},
"defaultLink": "t ex. {{url}}",
"defaultNickname": "till exempel Julia Eriksson",
@@ -184,6 +207,9 @@
"selectADevice": "Välj en enhet",
"testAudio": "Spela upp ett testljud"
},
"dialIn": {
"screenTitle": "Ring in"
},
"dialOut": {
"statusMessage": "är nu {{status}}"
},
@@ -196,13 +222,14 @@
"Share": "Dela",
"Submit": "Skicka",
"WaitForHostMsg": "Konferensen har inte börjat än. Autentisera konferensen om du är värd. Vänta annars på att värden startar konferensen.",
"WaitingForHost": "Väntar på värden ...",
"WaitingForHostTitle": "Väntar på värden ...",
"Yes": "Ja",
"accessibilityLabel": {
"liveStreaming": "Livesändning"
},
"add": "Lägg till",
"addMeetingNote": "Mötesinformation",
"addOptionalNote": "Ytterligare information",
"allow": "Tillåt",
"alreadySharedVideoMsg": "En annan deltagare delar redan en video. Konferensen tillåter bara en video-delning åt gången.",
"alreadySharedVideoTitle": "Endast en delad video åt gången tillåts",
@@ -234,22 +261,20 @@
"displayNameRequired": "Hej, vad heter du?",
"done": "Klar",
"e2eeDescription": "Stödet för End-to-End kryptering är EXPERIMENTELLT. Notera att om du aktiverar det kommer vissa funktioner som t.ex. telefondeltagande försvinna. Mötet kommer även att begränsas till deltagare med webbläsare som har stöd för insertable streams.",
"e2eeDisabledDueToMaxModeDescription": "Det går inte att aktivera end-to-end-kryptering på grund av stort antal deltagare i konferensen.",
"e2eeLabel": "Aktivera \"end-to-end\" kryptering",
"e2eeWarning": "Varning, alla deltagare i mötet har ej stöd för \"end-to-end\" kryptering",
"e2eeWillDisableDueToMaxModeDescription": "VARNING: End-to-end-kryptering kommer att inaktiveras automatiskt om fler deltagare går med i konferensen.",
"embedMeeting": "Bädda in möte",
"enterDisplayName": "Ange namn",
"error": "Fel",
"externalInstallationMsg": "Misslyckades att installera skrivbordsdelnings-tillägget.",
"externalInstallationTitle": "Tillägg krävs",
"goToStore": "Gå till appbutiken",
"gracefulShutdown": "Vår tjänst är för tillfället nedstängd för underhåll. Vänligen försök senare.",
"grantModeratorDialog": "Är du säker du vill göra denna deltagare till en moderator?",
"grantModeratorTitle": "Godkänn moderator",
"hide": "Dölj",
"hideShareAudioHelper": "Visa inte denna dialog igen ",
"incorrectPassword": "Fel användarnamn eller lösenord",
"incorrectRoomLockPassword": "Felaktigt lösenord",
"inlineInstallExtension": "Installera nu",
"inlineInstallationMsg": "Misslyckades att installera skrivbordsdelnings-tillägget.",
"internalError": "Ett fel uppstod. Fel: {{error}}",
"internalErrorTitle": "Internt fel",
"kickMessage": "Du kan kontakta {{participantDisplayName}} för mer information.",
@@ -257,10 +282,10 @@
"kickParticipantDialog": "Vill du sparka ut den här deltagaren?",
"kickParticipantTitle": "Tysta deltagaren?",
"kickTitle": "Aj! {{participantDisplayName}} sparkade ut dig ur mötet",
"liveStreaming": "Strömma",
"linkMeeting": "Länka möte",
"linkMeetingTitle": "Länka möte till Salesforce",
"liveStreaming": "Streama",
"liveStreamingDisabledBecauseOfActiveRecordingTooltip": "Ej möjligt medan inspelning pågår",
"liveStreamingDisabledForGuestTooltip": "Gäster kan inte starta en livesändning.",
"liveStreamingDisabledTooltip": "Starta livesändning har inaktiverats.",
"localUserControls": "Lokala användarkontroller",
"lockMessage": "Misslyckades att låsa konferensen.",
"lockRoom": "Lägg till möte $t(lockRoomPasswordUppercase)",
@@ -277,7 +302,10 @@
"micPermissionDeniedError": "Du har inte tillåtit användning av din mikrofon. Du kan gå med i mötet men de andra kan då inte höra dej. Om du vill tillåta användning av din mikrofon gör du det via mikrofonknappen i URL-fältet.",
"micTimeoutError": "Time out, kunde ej starta ljud enhet",
"micUnknownError": "Av okänd anledning kan inte din mikrofon användas.",
"moderationAudioLabel": "Tillåt deltagarna att slå på ljudet för sig själva",
"moderationVideoLabel": "Tillåt deltagarna att starta sin video",
"muteEveryoneDialog": "Är du säker på att du vill tysta alla? Du kan inte slå på mikrofonen åt dem, men de kan själva slå på sin egen mikrofon när som helst.",
"muteEveryoneDialogModerationOn": "Deltagarna kan när som helst begära att få prata.",
"muteEveryoneElseDialog": "När någon tystats kan du inte slå på mikrofonen, men de kan själva slå på sin egen mikrofon när som helst.",
"muteEveryoneElseTitle": "Tysta alla utom {{whom}}?",
"muteEveryoneElsesVideoDialog": "När kameran är inaktiverad kan den inte aktiveras igen. Däremot kan övriga deltagare aktivera sina kameror.",
@@ -286,15 +314,16 @@
"muteEveryoneStartMuted": "Alla börjar tystade",
"muteEveryoneTitle": "Tysta alla?",
"muteEveryonesVideoDialog": "Är du säker du vill inaktivera allas kameror. Du kommer inte att kunna aktivera dessa igen. Däremot kommer deltagarna att kunna aktivera sin egen kamera när som.",
"muteEveryonesVideoDialogOk": "Inkativera",
"muteEveryonesVideoDialogModerationOn": "Deltagarna kan när som helst begära att få aktivera sin kamera.",
"muteEveryonesVideoDialogOk": "Inaktivera",
"muteEveryonesVideoTitle": "Inaktiveras allas kameror",
"muteParticipantBody": "Du kan inte aktivera deras mikrofoner, men de kan göra det själva.",
"muteParticipantButton": "Tysta",
"muteParticipantDialog": "Vill du tysta den här deltagaren? Du kan inte aktivera mikrofonen igen, men deltagaren kan när som helst göra det själv.",
"muteParticipantTitle": "Tysta deltagaren?",
"muteParticipantsVideoBody": "Du kommer inte att kunna aktivera kameran igen. Däremot kan deltagaren kunna aktivera sin egen kamera när som.",
"muteParticipantsVideoBodyModerationOn": "Du och deltagarna kommer inte att kunna aktivera kameran igen.",
"muteParticipantsVideoButton": "Inaktivera kamera",
"muteParticipantsVideoDialog": "Är du säker du vill inaktivera denna deltagares kamera. Du kommer inte att kunna aktivera den igen. Däremot kan deltagaren kunna aktivera sin egen kamera när som.",
"muteParticipantsVideoDialogModerationOn": "Är du säker på att du vill inaktivera den här deltagarens kamera? Du kommer inte att kunna aktivera kameran igen och inte de heller.",
"muteParticipantsVideoTitle": "Inaktivera denna deltagares kamera?",
"noDropboxToken": "Ingen giltig dropbox tecken",
"password": "Lösenord",
@@ -308,10 +337,9 @@
"popupError": "Din webbläsare blockerar pop-up-fönster från sajten. Tillåt pop-up-fönster från den här sajten i inställningarna och försök igen.",
"popupErrorTitle": "Pop-up blockerad",
"readMore": "Mer",
"recentlyUsedObjects": "Dina senaste använda objekt",
"recording": "Inspelning",
"recordingDisabledBecauseOfActiveLiveStreamingTooltip": "Ej möjligt medan livestreaming pågår.",
"recordingDisabledForGuestTooltip": "Gäster kan inte starta inspelningar.",
"recordingDisabledTooltip": "Starta inspelning har inaktiverats.",
"rejoinNow": "Återanslut nu",
"remoteControlAllowedMessage": "{{user}} godkände din begäran om fjärrstyrning.",
"remoteControlDeniedMessage": "{{user}} avböjde din begäran om fjärrstyrning.",
@@ -330,11 +358,13 @@
"screenSharingAudio": "Dela ljud",
"screenSharingFailed": "Oops! Något gick fel, skärmdelning kunde ej startas.",
"screenSharingFailedTitle": "Skärmdelning misslyckades!",
"screenSharingFailedToInstall": "Utökningen för skärmdelning kunde inte installeras.",
"screenSharingFailedToInstallTitle": "Utökningen för skärmdelning kunde inte installeras",
"screenSharingFirefoxPermissionDeniedError": "Något gick fel när du försökte dela skärmen. Det kan vara för att du inte tillåter det. ",
"screenSharingFirefoxPermissionDeniedTitle": "Skärmdelningen misslyckades!",
"screenSharingPermissionDeniedError": "Något är fel med åtkomstinställningarna för skärmdelningen. Ladda om sidan och försök igen.",
"searchInSalesforce": "Sök i Salesforce",
"searchResults": "Sökresultat ({{count}})",
"searchResultsDetailsError": "Något gick fel när ägardata hämtades.",
"searchResultsError": "Något gick fel när data hämtades.",
"searchResultsNotFound": "Inga sökresultat hittades.",
"searchResultsTryAgain": "Try using alternative keywords.",
"sendPrivateMessage": "Du har fått ett privat meddelande. Tänkte du svara på det privat, eller vill du skicka ditt meddelande till alla deltagare?",
"sendPrivateMessageCancel": "Skicka till alla deltagare",
"sendPrivateMessageOk": "Skicka privat",
@@ -357,7 +387,10 @@
"shareVideoTitle": "Ta bort en delad video",
"shareYourScreen": "Dela din skärm",
"shareYourScreenDisabled": "Skärmdelning har inaktiverats.",
"shareYourScreenDisabledForGuest": "Gäster kan inte skärmdela.",
"sharedVideoDialogError": "Fel: Ogiltig URL",
"sharedVideoLinkPlaceholder": "YouTube-länk eller direkt videolänk",
"show": "Visa",
"start": "Starta",
"startLiveStreaming": "Starta livesändning",
"startRecording": "Starta inspelning",
"startRemoteControlErrorMessage": "Ett fel inträffade när fjärrsessionen skulle starta!",
@@ -400,6 +433,10 @@
"veryBad": "Mycket dåligt",
"veryGood": "Mycket bra"
},
"giphy": {
"noResults": "Inga resultat funna :(",
"search": "Sök efter GIPHY"
},
"helpView": {
"title": "Hjälpcenter"
},
@@ -443,9 +480,11 @@
"noRoom": "Inget rum specificerades för inringning.",
"numbers": "Inringningsnummer",
"password": "$t(lockRoomPasswordUppercase):",
"reachedLimit": "Du har nått gränsen för din prenumeration.",
"sip": "SIP adress",
"title": "Dela",
"tooltip": "Dela länk och information om inringning för mötet"
"tooltip": "Dela länk och information om inringning för mötet",
"upgradeOptions": "Vänligen kontrollera om uppgraderingsalternativen är på"
},
"inlineDialogFailure": {
"msg": "Vi slirade lite.",
@@ -466,6 +505,7 @@
"focusLocal": "Sätt fokus på din videobild",
"focusRemote": "Fokusera på någon annans video",
"fullScreen": "Visa eller stäng fullskärm",
"giphyMenu": "Växla GIPHY meny",
"keyboardShortcuts": "Tangentbordsgenvägar",
"localRecording": "Visa eller dölj lokala inspelningsverktyg",
"mute": "Tysta eller aktivera din mikrofon",
@@ -479,6 +519,10 @@
"toggleShortcuts": "Visa eller dölj kortkommandon",
"videoMute": "Aktivera / avaktivera din kamera"
},
"largeVideo": {
"screenIsShared": "Du delar din skärm",
"showMeWhatImSharing": "Visa mig vad det är jag delar"
},
"liveStreaming": {
"busy": "Vi försöker frigöra fler strömningsresurser. Försök igen senare.",
"busyTitle": "Alla strömningsresurser är upptagna",
@@ -495,6 +539,7 @@
"failedToStart": "Strömningen kunde inte påbörjas",
"getStreamKeyManually": "Vi kunde inte hämta några direktströmmar. Försök att få din direktströmningsnyckel från YouTube.",
"googlePrivacyPolicy": "Googles sekretesspolicy",
"inProgress": "Inspelning eller livestreaming pågår",
"invalidStreamKey": "Livesändningslösenordet kan vara felaktigt.",
"limitNotificationDescriptionNative": "Din strömning är begränsad till {{limit}} min. För obegränsad strömning, prova {{app}}.",
"limitNotificationDescriptionWeb": "På grund av stor efterfrågan kommer din strömning att begränsas till {{limit}} min. För obegränsad strömning, prova <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
@@ -504,13 +549,14 @@
"onBy": "{{name}} startade direktströmningen",
"pending": "Börja strömma ...",
"serviceName": "Livesändningstjänst",
"sessionAlreadyActive": "Den här sessionen spelas redan in eller livestreamas.",
"signIn": "Logga in med Google",
"signInCTA": "Logga in eller ange ditt livesändningslösenord från YouTube.",
"signOut": "Logga ut",
"signedInAs": "Du är nu inloggad som:",
"start": "Starta en livesändning",
"streamIdHelp": "Vad är det här?",
"title": "Livesändning",
"title": "Direktsändning",
"unavailableTitle": "Livesändning otillgänglig",
"youtubeTerms": "Tjänstevillkor för YouTube"
},
@@ -519,6 +565,7 @@
"admitAll": "Godkänn alla",
"allow": "Tillåt",
"backToKnockModeButton": "Tillbaka till väntrum",
"chat": "Chatt",
"dialogTitle": "Väntrum",
"disableDialogContent": "Väntrumsläge är för närvarande aktiverat. Denna funktion säkerställer att oönskade deltagare inte kan gå med i ditt möte. Vill du inaktivera det?",
"disableDialogSubmit": "Inaktivera",
@@ -531,6 +578,7 @@
"errorMissingPassword": "Ange möteslösenord",
"invalidPassword": "Felaktigt lösenord",
"joinRejectedMessage": "Din anslutningsbegäran avvisades av en moderator.",
"joinRejectedTitle": "Anslutningsbegäran avvisades.",
"joinTitle": "Anslut till mötet",
"joinWithPasswordMessage": "Försöker ansluta med lösenord, vänta...",
"joiningMessage": "Du kommer anslutas till mötet så snart någon accepterat din begäran",
@@ -539,6 +587,8 @@
"knockButton": "Anslut till mötet",
"knockTitle": "Någon önskar delta i mötet",
"knockingParticipantList": "Väntande deltagare",
"lobbyChatStartedNotification": "{{moderator}} startade en lobbychatt med {{attendee}}",
"lobbyChatStartedTitle": "{{moderator}} har startat en lobbychatt med dig.",
"nameField": "Ange ditt namn",
"notificationLobbyAccessDenied": "{{targetParticipantName}} har nekats att delta av {{originParticipantName}}",
"notificationLobbyAccessGranted": "{{targetParticipantName}} har godkänts att delta av {{originParticipantName}}",
@@ -549,7 +599,7 @@
"passwordJoinButton": "Anslut",
"reject": "Avvisa",
"rejectAll": "Avvisa alla",
"title": "Väntrum",
"title": "Lobby",
"toggleLabel": "Aktivera väntrum"
},
"localRecording": {
@@ -576,6 +626,7 @@
"no": "Nej",
"participant": "Deltagare",
"participantStats": "Deltagarstatistik",
"selectTabTitle": "🎥 Välj den här fliken för inspelning",
"sessionToken": "Sessionstoken",
"start": "Starta inspelning",
"stop": "Avsluta inspelning",
@@ -590,19 +641,36 @@
"me": "jag",
"notify": {
"OldElectronAPPTitle": "Säkerhetsproblem!",
"allowAction": "Tillåt",
"allowedUnmute": "Du kan slå på mikrofonen, starta kameran eller dela din skärm.",
"audioUnmuteBlockedDescription": "Aktivering av mikrofonen har tillfälligt blockerats på grund av systembegränsningar.",
"audioUnmuteBlockedTitle": "Mikrofonen har blockerats!",
"chatMessages": "Chattmeddelanden",
"connectedOneMember": "{{name}} har gått med i mötet",
"connectedThreePlusMembers": "{{name}} och {{count}} andra har gått med i mötet",
"connectedTwoMembers": "{{first}} och {{second}} har gått med i mötet",
"disconnected": "frånkopplad",
"displayNotifications": "Visa aviseringar för",
"focus": "Konferensfokus",
"focusFail": "{{component}} inte tillgänglig försöker igen om {{ms}} sek",
"grantedTo": "Moderatorsrättigheter tilldelat till {{to}}!",
"gifsMenu": "GIPHY",
"groupTitle": "Notifieringar",
"hostAskedUnmute": "Värden vill att du ska stänga av ljudet",
"invitedOneMember": "{{name}} har bjudits in",
"invitedThreePlusMembers": "{{name}} och {{count}} andra har bjudits in",
"invitedTwoMembers": "{{first}} och {{second}} har bjudits in",
"kickParticipant": "{{kicked}} sparkades ut av {{kicker}}",
"leftOneMember": "{{name}} lämnade mötet",
"leftThreePlusMembers": "{{name}} och många andra lämnade mötet",
"leftTwoMembers": "{{first}} och {{second}} lämnade mötet",
"linkToSalesforce": "Länk till Salesforce",
"linkToSalesforceDescription": "Du kan länka mötessammanfattningen till ett Salesforce-objekt.",
"linkToSalesforceError": "Det gick inte att länka mötet till Salesforce",
"linkToSalesforceKey": "Länka detta möte",
"linkToSalesforceProgress": "Länkar möte till Salesforce...",
"linkToSalesforceSuccess": "Mötet länkades till Salesforce",
"localRecordingStarted": "{{name}} har påbörjat en lokal inspelning.",
"localRecordingStopped": "{{name}} har stoppat en lokal inspelning.",
"me": "Jag",
"moderationInEffectCSDescription": "Räck upp handen om du vill dela din video",
"moderationInEffectCSTitle": "Innehållsdelning är inaktiverat av moderator",
@@ -623,39 +691,56 @@
"newDeviceAction": "Använd",
"newDeviceAudioTitle": "Ny ljudenhet hittad",
"newDeviceCameraTitle": "Ny kamera hittad",
"noiseSuppressionDesktopAudioDescription": "Brusreducering kan inte aktiveras när du delar skrivbordsljud, vänligen inaktivera det och försök igen.",
"noiseSuppressionFailedTitle": "Det gick inte att starta brusreducering",
"noiseSuppressionNoTrackDescription": "Slå på mikrofonen först.",
"noiseSuppressionStereoDescription": "Brusreducering i stereoljud stöds för närvarande inte.",
"oldElectronClientDescription1": "Den version av Jitsi meet som används är gammal och har säkerhetsluckor. Var god uppdatera till den senaste versionen.",
"oldElectronClientDescription2": "senast build",
"oldElectronClientDescription3": "nu!",
"participantWantsToJoin": "Vill vara med på mötet",
"participantsWantToJoin": "Vill vara med på mötet",
"passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) togs bort av en annan deltagare",
"passwordSetRemotely": "$t(lockRoomPasswordUppercase) satt av en annan deltagare",
"raiseHandAction": "Räck upp handen",
"raisedHand": "{{name}} vill prata.",
"raisedHands": "{{participantName}} och {{raisedHands}} fler personer",
"reactionSounds": "Inaktivera ljud",
"reactionSoundsForAll": "Inaktivera ljud för alla",
"screenShareNoAudio": "\"Dela ljudrutan\" aktiverades inte i fönstret för val av fönster.",
"screenShareNoAudioTitle": "Det gick inte att dela systemljud!",
"selfViewTitle": "Du kan alltid ta bort döljandet av självvyn från inställningarna",
"somebody": "Någon",
"startSilentDescription": "Anslut till mötet igen för att aktivera ljud",
"startSilentTitle": "Du gick med utan ljud aktiverat!",
"suboptimalBrowserWarning": "Din mötesupplevelse kommer tyvärr inte att bli så bra. Vi letar efter sätt att förbättra detta, men fram till dess kan du försöka använda en av de <a href='{{recommendedBrowserPageLink}}' target='_blank'> fullt stödda webbläsarna </a>.",
"suboptimalExperienceDescription": "Hmm... din upplevelse med {{appName}} kommer inte att bli särskilt bra. Vi försöker hitta sätt att förbättra det, men till dess använd en av <a href='{{recommendedBrowserPageLink}}' target='_blank'>de helt stödda webbläsarna</a>.",
"suboptimalExperienceTitle": "Webbläsarvarning",
"unmute": "Slå på mikrofonen",
"videoMutedRemotelyDescription": "Du kan alltid slå på den igen.",
"videoMutedRemotelyTitle": "Din kamera har inaktiverats av {{participantDisplayName}}!"
"videoMutedRemotelyTitle": "Din kamera har inaktiverats av {{participantDisplayName}}!",
"videoUnmuteBlockedDescription": "Aktivering av kameran och delning av skrivbord har tillfälligt blockerats på grund av systembegränsningar.",
"videoUnmuteBlockedTitle": "Aktivering av kameran och skrivbordsdelning blockerad!",
"viewLobby": "Visa lobby",
"waitingParticipants": "{{waitingParticipants}} personer"
},
"participantsPane": {
"actions": {
"allow": "Låt deltagarna:",
"allowVideo": "Tillåt kamera",
"askUnmute": "Be om att aktivera ljud",
"audioModeration": "Slå på ljudet för sig själva",
"blockEveryoneMicCamera": "Inaktivera allas mikrofon och kamera",
"invite": "Bjud in någon",
"moreModerationActions": "Fler modereringsalternativ",
"moreModerationControls": "Fler modereringskontroller",
"moreParticipantOptions": "Fler deltagaralternativ",
"mute": "Stäng av ljud",
"muteAll": "Stäng av all ljud",
"muteAll": "Stäng av allt ljud",
"muteEveryoneElse": "Inaktivera ljud för alla deltagare",
"startModeration": "Slå på ljudet själv eller starta video",
"stopEveryonesVideo": "Inaktivera allas video",
"stopVideo": "Inaktivera video",
"unblockEveryoneMicCamera": "Aktivera allas mikrofon och kamera"
"unblockEveryoneMicCamera": "Aktivera allas mikrofon och kamera",
"videoModeration": "Starta deras video"
},
"close": "Stäng",
"headings": {
@@ -663,19 +748,22 @@
"participantsList": "Mötesdeltagare ({{count}})",
"waitingLobby": "Väntar i väntrum ({{count}})"
},
"search": "Sök efter deltagare",
"title": "Deltagare"
},
"passwordDigitsOnly": "Ange max {{number}} siffror",
"passwordSetRemotely": "satt av en annan deltagare",
"pinnedParticipant": "Deltagaren är fäst",
"polls": {
"answer": {
"skip": "Skippa",
"skip": "Avstå",
"submit": "Skicka"
},
"by": "Av {{ name }}",
"create": {
"addOption": "Lägg till alternativ",
"answerPlaceholder": "Alternativ",
"cancel": "Cancellera",
"cancel": "Avbryt",
"create": "Skapa en omröstning",
"pollOption": "Alternativ för omröstning",
"pollQuestion": "Fråga för omröstning",
@@ -735,12 +823,14 @@
"errorDialOutFailed": "Kunde inte ringa ut. Samtal misslyckades",
"errorDialOutStatus": "Kunde inte hämta status på utgående samtal",
"errorMissingName": "Ange ditt namn för att ansluta till mötet",
"errorNoPermissions": "Du måste aktivera mikrofon- och kameraåtkomst",
"errorStatusCode": "Kunde inte ringa ut, statuskod: {{status}}",
"errorValidation": "Ogiltigt nummer",
"iWantToDialIn": "Jag vill ringa in",
"initiated": "Samtalet påbörjades",
"joinAudioByPhone": "Anslut med ljud via telefon",
"joinMeeting": "Anslut till mötet",
"joinMeetingInLowBandwidthMode": "Gå med i lågbandbreddsläge",
"joinWithoutAudio": "Anslut utan ljud",
"keyboardShortcuts": "Aktivera kortkommandon",
"linkCopied": "Länken kopierades till urklipp",
@@ -768,6 +858,9 @@
"rejected": "Avvisad",
"ringing": "Ringer..."
},
"privacyView": {
"title": "Privat"
},
"profile": {
"avatar": "avatar",
"setDisplayNameLabel": "Ange ditt visningsnamn",
@@ -776,6 +869,19 @@
"title": "Profil"
},
"raisedHand": "Räck upp handen",
"raisedHandsLabel": "Antal upphöjda händer",
"record": {
"already": {
"linked": "Mötet är redan länkat till detta Salesforce-objekt."
},
"type": {
"account": "Konto",
"contact": "Kontakt",
"lead": "Leda",
"opportunity": "Tillfälle",
"owner": "Ägare"
}
},
"recording": {
"authDropboxText": "Ladda upp till Dropbox",
"availableSpace": "Tillgängligt utrymme: {{spaceLeft}} MB (ungefär {{duration}} minuter inspelning)",
@@ -790,27 +896,47 @@
"expandedPending": "Inspelningen påbörjas...",
"failedToStart": "Inspelningen kunde inte påbörjas",
"fileSharingdescription": "Dela inspelningen med mötesdeltagare",
"highlight": "Framhäva",
"highlightMoment": "Framhäv ögonblick",
"highlightMomentDisabled": "Du kan framhäva ögonblick när inspelningen startar",
"highlightMomentSuccess": "Moment framhävt",
"highlightMomentSucessDescription": "Ditt framhävda ögonblick läggs till i mötessammanfattningen.",
"inProgress": "Inspelning eller livestreaming pågår",
"limitNotificationDescriptionNative": "På grund av stor efterfrågan är din inspelning begränsad till {{limit}} min. För obegränsade inspelningar, försök <3>{{app}}</3>.",
"limitNotificationDescriptionWeb": "På grund av stor efterfrågan är din inspelning begränsad till {{limit}} min. För obegränsade inspelningar, prova <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
"linkGenerated": "Vi har genererat en länk till din inspelning.",
"live": "LIVE",
"localRecordingNoNotificationWarning": "Inspelningen kommer inte att meddelas till andra deltagare. Du måste meddela dem att mötet inspelas.",
"localRecordingNoVideo": "Video spelas inte in",
"localRecordingStartWarning": "Se till att du stoppar inspelningen innan du avslutar mötet för att spara det.",
"localRecordingStartWarningTitle": "Stoppa inspelningen för att spara den",
"localRecordingVideoStop": "Om du stoppar din video stoppas även den lokala inspelningen. Är du säker på att du vill fortsätta?",
"localRecordingVideoWarning": "För att spela in din video måste du ha den på när du startar inspelningen",
"localRecordingWarning": "Se till att du väljer den aktuella fliken för att kunna använda rätt video och ljud. Inspelningen är för närvarande begränsad till 1 GB, vilket är cirka 100 minuter.",
"loggedIn": "Inloggad som {{userName}}",
"noStreams": "Ingen ljud- eller videoström upptäcktes.",
"off": "Inspelningen avslutades",
"offBy": "{{name}} avslutade inspelningen",
"on": "Inspelning",
"onBy": "{{name}} påbörjade inspelningen",
"onlyRecordSelf": "Spela bara in mina ljud- och videoströmmar",
"pending": "Förbereder inspelning av mötet...",
"rec": "REC",
"saveLocalRecording": "Spara inspelningsfil lokalt (beta)",
"serviceDescription": "Din inspelning kommer att sparas av inspelningstjänsten",
"serviceDescriptionCloud": "Molninspelning",
"serviceDescriptionCloudInfo": "Inspelade möten rensas automatiskt 24 timmar efter inspelningstiden.",
"serviceName": "Inspelningstjänst",
"sessionAlreadyActive": "Den här sessionen spelas redan in eller livestreamas.",
"signIn": "Logga in",
"signOut": "Logga ut",
"surfaceError": "Välj aktuell flik.",
"title": "Inspelning",
"unavailable": "{{serviceName}} är inte tillgänglig. Vi försöker åtgärda felet. Försök igen senare.",
"unavailableTitle": "Inspelning kan inte göras",
"uploadToCloud": "Ladda upp till molnet"
},
"screenshareDisplayName": "{{name}}s skärm",
"sectionList": {
"pullToRefresh": "Dra för att uppdatera"
},
@@ -818,9 +944,10 @@
"about": "Du kan lägga till ett $t(lockRoomPassword) till ditt möte. Deltagarna måste ange $t(lockRoomPassword) innan de får gå med i mötet.",
"aboutReadOnly": "Moderatorn kan lägga till ett $t(lockRoomPassword) till mötet. Deltagarna måste ange $t(lockRoomPassword) innan de får gå med i mötet.",
"insecureRoomNameWarning": "Rummets namn är osäkert. Oönskade deltagare kan gå med i din konferens. Överväg att säkra ditt möte med hjälp av säkerhetsknappen.",
"securityOptions": "Säkerhetsalternativ"
"title": "Säkerhetsalternativ"
},
"settings": {
"buttonLabel": "Inställningar",
"calendar": {
"about": "Kalenderintegrationen med {{appName}} används för att hämta din kalender på ett säkert sätt så att den kan läsa framtida händelser.",
"disconnect": "Koppla ifrån",
@@ -837,12 +964,14 @@
"incomingMessage": "Inkommande meddelande",
"language": "Språk",
"loggedIn": "Inloggad som {{name}}",
"maxStageParticipants": "Maximalt antal deltagare som kan fästas på huvudscenen",
"microphones": "Mikrofoner",
"moderator": "Moderator",
"more": "Mer",
"name": "Namn",
"noDevice": "Inga enheter",
"participantJoined": "Deltagare ansluten",
"participantKnocking": "Deltagare har anslutit till lobbyn",
"participantLeft": "Deltagare lämnat mötet",
"playSounds": "Spelljud på",
"reactions": "Reaktioner",
@@ -850,9 +979,11 @@
"selectAudioOutput": "Ljudutmatning",
"selectCamera": "Kamera",
"selectMic": "Mikrofon",
"selfView": "Självvy",
"sounds": "Ljud",
"speakers": "Högtalare",
"startAudioMuted": "Alla börjar tystade",
"startReactionsMuted": "Stäng av reaktionsljud för alla",
"startVideoMuted": "Alla börjar osynliga",
"talkWhileMuted": "Prata medan din ljud är inaktiverad",
"title": "Inställningar"
@@ -870,13 +1001,20 @@
"disableCrashReportingWarning": "Är du säker på att du vill inaktivera kraschrapportering? Inställningen tillämpas när du startar om appen.",
"disableP2P": "Inaktivera Dator-till-dator-läge",
"displayName": "Skärmnamn",
"displayNamePlaceholderText": "Exempel: John Doe",
"email": "E-post",
"goTo": "Gå till",
"header": "Inställningar",
"help": "Hjälp",
"links": "Länkar",
"privacy": "Sekretess",
"profileSection": "Profil",
"serverURL": "Serverlänk",
"showAdvanced": "Visa avancerade inställningar",
"startCarModeInLowBandwidthMode": "Starta billäget i lågbandbreddsläge",
"startWithAudioMuted": "Starta med ljudet avstängt",
"startWithVideoMuted": "Starta med videon avstängd",
"terms": "Villkor",
"version": "Version"
},
"share": {
@@ -885,13 +1023,21 @@
},
"speaker": "Talare",
"speakerStats": {
"angry": "Arg",
"disgusted": "Äcklad",
"displayEmotions": "Visa känslor",
"fearful": "Rädd",
"happy": "Glad",
"hours": "{{count}} h",
"minutes": "{{count}} m",
"name": "Namn",
"neutral": "Neutral",
"sad": "Ledsen",
"search": "Sök",
"seconds": "{{count}} s",
"speakerStats": "Talarstatistik",
"speakerTime": "Talartid"
"speakerTime": "Talartid",
"surprised": "Överraskad"
},
"startupoverlay": {
"genericTitle": "Mötet måste använda din mikrofon och kamera.",
@@ -903,6 +1049,10 @@
"text": "Klicka på knappen <i>Återanslut</i> för att koppla upp igen.",
"title": "Ditt videosamtal avbröts då din dator gick in i viloläge."
},
"termsView": {
"title": "Villkor"
},
"toggleTopPanelLabel": "Växla topppanelen",
"toolbar": {
"Settings": "Inställningar",
"accessibilityLabel": {
@@ -910,7 +1060,9 @@
"audioOnly": "Slå av eller på ljudet",
"audioRoute": "Välj ljudenhet",
"boo": "Bua",
"breakoutRoom": "Gå med i/lämna grupprum",
"callQuality": "Hantera videokvalitet",
"carmode": "Billäge",
"cc": "Slå av eller på undertexter",
"chat": "Öppna eller stäng chattfönster",
"clap": "Klappa",
@@ -918,16 +1070,20 @@
"document": "Öppna eller stäng delat dokument",
"download": "Ladda ner app",
"embedMeeting": "Bädda in möte",
"endConference": "Avsluta mötet för alla",
"expand": "Expandera",
"feedback": "Lämna återkoppling",
"fullScreen": "Öppna eller stäng fullskärm",
"giphy": "Växla GIPHY meny",
"grantModerator": "Godkänn moderator",
"hangup": "Lämna samtalet",
"help": "Hjälp",
"invite": "Bjud in andra",
"kick": "Sparka ut deltagare",
"laugh": "Skratta",
"leaveConference": "Lämna möte",
"like": "Tummen upp",
"linkToSalesforce": "Länk till Salesforce",
"lobbyButton": "Aktivera/inaktivera väntrumsläge",
"localRecording": "Öppna eller stäng lokala inspelningsverktyg",
"lockRoom": "Slå av eller på möteslösenord",
@@ -937,8 +1093,9 @@
"mute": "Slå av eller på ljud",
"muteEveryone": "Tysta alla",
"muteEveryoneElse": "Inkativerad ljud för alla andra",
"muteEveryoneElsesVideo": "Inaktivera alla andras kameror",
"muteEveryonesVideo": "Inkommande medelande",
"muteEveryoneElsesVideoStream": "Stoppa alla andras video",
"muteEveryonesVideoStream": "Stoppa allas video",
"noiseSuppression": "Brusreducering",
"participants": "Deltagare",
"pip": "Öppna eller stäng bild-i-bild-läge",
"privateMessage": "Skicka privat meddelande",
@@ -950,6 +1107,7 @@
"remoteVideoMute": "Inaktivera kamera för deltagare",
"security": "Säkerhetsalternativ",
"selectBackground": "Välj bakgrund",
"selfView": "Växla självvy",
"shareRoom": "Bjud in någon",
"shareYourScreen": "Slå av eller på skärmdelning",
"shareaudio": "Dela ljud",
@@ -963,7 +1121,8 @@
"toggleCamera": "Växla kamera",
"toggleFilmstrip": "Växla filmremsa",
"videoblur": "Växla videooskärpa",
"videomute": "Sätt på eller stäng av mikrofonen"
"videomute": "Sätt på eller stäng av mikrofonen",
"whiteboard": "Visa/dölj whiteboardtavlan"
},
"addPeople": "Lägg till personer i samtal",
"audioOnlyOff": "Avsluta ljudläget",
@@ -977,22 +1136,30 @@
"clap": "Klappa",
"closeChat": "Stäng chatt",
"closeReactionsMenu": "Stäng meny för reaktioner",
"disableNoiseSuppression": "Inaktivera brusreducering",
"disableReactionSounds": "Du kan inaktivera reaktionsljud för det här mötet",
"documentClose": "Stäng delat dokument",
"documentOpen": "Öppna delat dokument",
"download": "Ladda ner vår app",
"e2ee": "End-to-End kryptering",
"embedMeeting": "Bädda in möte",
"endConference": "Avsluta mötet för alla",
"enterFullScreen": "Visa fullskärm",
"enterTileView": "Öppna panelvy",
"exitFullScreen": "Stäng fullskärm",
"exitTileView": "Stäng panelvy",
"feedback": "Lämna återkoppling",
"giphy": "Växla GIPHY-menyn",
"hangup": "Lämna",
"help": "Hjälp",
"hideWhiteboard": "Dölj whiteboardtavlan",
"invite": "Bjud in andra",
"joinBreakoutRoom": "Gå med i grupprummet",
"laugh": "Skratta",
"leaveBreakoutRoom": "Lämna grupprum",
"leaveConference": "Lämna mötet",
"like": "Tummen upp",
"linkToSalesforce": "Länk till Salesforce",
"lobbyButtonDisable": "Inaktivera väntrumsläge",
"lobbyButtonEnable": "Aktivera väntrumsläge",
"login": "Logga in",
@@ -1008,6 +1175,7 @@
"noAudioSignalDialInDesc": "Du kan också ringa in med:",
"noAudioSignalDialInLinkDesc": "Uppringningsnummer",
"noAudioSignalTitle": "Det kommer inget ljud från din mikrofon!",
"noiseSuppression": "Brusreducering",
"noisyAudioInputDesc": "Din mikrofon skapar brus, tysta din mikrofon eller byt ljudenhet!",
"noisyAudioInputTitle": "Din mikrofon verkar vara bullrig!",
"openChat": "Öppna chatt",
@@ -1030,16 +1198,15 @@
"shareaudio": "Dela ljud",
"sharedvideo": "Dela en video",
"shortcuts": "Visa genvägar",
"showWhiteboard": "Visa whiteboardtavlan",
"silence": "Tystnad",
"speakerStats": "Talarstatistik",
"startScreenSharing": "Starta skärmdelning",
"startSubtitles": "Starta undertextning",
"startvideoblur": "Blurra min bakgrund",
"stopAudioSharing": "Inaktivera ljuddelning",
"stopScreenSharing": "Avsluta skämdelning",
"stopSharedVideo": "Pausa video",
"stopSubtitles": "Avsluta undertextning",
"stopvideoblur": "Inaktivera bakgrundsblurr",
"surprised": "Överaskad",
"talkWhileMutedPopup": "Försöker du tala? Din mikrofon är tystad.",
"tileViewToggle": "Öppna eller stäng panelvyn",
@@ -1055,8 +1222,12 @@
"labelToolTip": "Mötet transkriberas",
"off": "Transkribering avslutades",
"pending": "Förbereder transkribering av mötet ...",
"sourceLanguageDesc": "För närvarande är mötesspråket inställt på <b>{{sourceLanguage}}</b>. <br/> Du kan ändra det från ",
"sourceLanguageHere": "här",
"start": "Börja visa undertexter",
"stop": "Sluta visa undertexter",
"subtitles": "Undertexter",
"subtitlesOff": "Av",
"tr": "TR"
},
"userMedia": {
@@ -1082,19 +1253,21 @@
"pending": "{{displayName}} har bjudits in"
},
"videoStatus": {
"adjustFor": "Justera för:",
"audioOnly": "AUD",
"audioOnlyExpanded": "Du använder ljudläget. Läget sparar bandbredd men du kan inte se andras videor.",
"bestPerformance": "Bäst prestanda",
"callQuality": "Videokvalitet",
"hd": "HD",
"hdTooltip": "Titta på högupplöst video",
"highDefinition": "Hög upplösning",
"highestQuality": "Högsta kvalitet",
"labelTooiltipNoVideo": "Ingen video",
"labelTooltipAudioOnly": "Läge med enbart ljud aktiverat",
"ld": "LD",
"ldTooltip": "Titta på lågupplöst video",
"lowDefinition": "Låg upplösning",
"onlyAudioAvailable": "Enbart ljud tillgängligt",
"onlyAudioSupported": "Vi stöder bara ljud i denna webbläsare.",
"performanceSettings": "Prestandainställningar",
"sd": "SD",
"sdTooltip": "Titta på video med standardupplösning",
"standardDefinition": "Normal upplösning"
@@ -1107,12 +1280,17 @@
"domuteVideoOfOthers": "Inkativera kamera för alla andra",
"flip": "Vänd",
"grantModerator": "Godkänn moderator",
"hideSelfView": "Dölj självvyn",
"kick": "Sparka ut",
"moderator": "Moderator",
"mute": "Deltagaren har avstängd mikrofon",
"muted": "Tystad",
"pinToStage": "Fäst till scenen",
"remoteControl": "Fjärrkontroll",
"screenSharing": "Deltagaren delar sin skärm",
"show": "Visa på scenen",
"showSelfView": "Visa självvy",
"unpinFromStage": "Ta loss",
"videoMuted": "kamera inaktiverad",
"videomute": "Deltagaren har stäng av kameran"
},
@@ -1137,7 +1315,8 @@
"slightBlur": "Lätt oskärpa",
"title": "Virtuella bakgrunder",
"uploadedImage": "Uppladdad bild {{index}}",
"webAssemblyWarning": "WebAssembly stöds inte"
"webAssemblyWarning": "WebAssembly stöds inte",
"webAssemblyWarningDescription": "WebAssembly inaktiverad eller stöds inte av den här webbläsaren"
},
"volumeSlider": "Volymreglage",
"welcomepage": {
@@ -1159,7 +1338,6 @@
"go": "KÖR",
"goSmall": "BÖRJA",
"headerSubtitle": "Säkra möten med hög kvalitet",
"headerTitle": "Jitsi Meet",
"info": "Info",
"jitsiOnMobile": "Jitsi på mobilen - ladda ner våra appar och starta ett möte var som helst",
"join": "Gå med",
@@ -1184,6 +1362,7 @@
"roomname": "Skriv in rumsnamn",
"roomnameHint": "Ange namnet eller URL:en till mötesrummet du vill ansluta till. Du kan hitta på ett nytt namn, berätta då för de andra du tänker möta så de anger samma namn.",
"sendFeedback": "Ge återkoppling",
"settings": "Inställningar",
"startMeeting": "Starta möte",
"terms": "Villkor",
"title": "Säkra, välutrustade och helt kostnadsfria videokonferenser"

View File

@@ -11,22 +11,14 @@
"defaultEmail": "Varsayılan E-postanız",
"disabled": "Kişi davet edemezsiniz.",
"failedToAdd": "Kişi eklenemedi",
"footerText": "Dış arama devre dışı.",
"googleEmail": "Google Email",
"inviteMoreHeader": "Toplantıdaki tek kişisiniz",
"inviteMoreMailSubject": "{{appName}} toplantısına katıl",
"inviteMorePrompt": "Daha fazla kişi davet et",
"linkCopied": "Bağlantı panoya kopyalandı",
"loading": "Kişiler ve telefon numaraları aranıyor...",
"loadingNumber": "Telefon numarası doğrulanıyor",
"loadingPeople": "Davet edilecek kişi aranıyor",
"noResults": "Eşleşen sonuç bulunamadı",
"noValidNumbers": "Lütfen bir telefon numarası girin",
"outlookEmail": "Outlook Email",
"phoneNumbers": "telefon numaraları",
"searchNumbers": "Telefon numarası ekle",
"searchPeople": "Kişi ara",
"searchPeopleAndNumbers": "Kişi arayın veya telefon numarası ekleyin",
"searching": "Aranıyor...",
"shareInvite": "Toplantı davetini paylaş",
"shareLink": "Katılımcıları davet etmek için toplantı bağlantısını paylaşın",
@@ -38,6 +30,7 @@
},
"audioDevices": {
"bluetooth": "Bluetooth",
"car": "",
"headphones": "Kulaklık",
"none": "Geçerli Ses cihazı yok",
"phone": "Telefon",
@@ -46,6 +39,25 @@
"audioOnly": {
"audioOnly": "Düşük bant genişliği"
},
"breakoutRooms": {
"actions": {
"add": "Alt oda ekle",
"autoAssign": "Alt odalara otomatik ekle",
"close": "Kapat",
"join": "Katıl",
"leaveBreakoutRoom": "Alt odadan çık",
"more": "Daha",
"remove": "Sil",
"sendToBreakoutRoom": "Katılımcıya gönder:"
},
"defaultName": "Alt oda #{{index}}",
"mainRoom": "Ana oda",
"notifications": {
"joined": "\"{{name}}\" alt odasına giriliyor",
"joinedMainRoom": "Ana odaya giriliyor",
"joinedTitle": "Alt Odalar"
}
},
"calendarSync": {
"addMeetingURL": "Bir toplantı bağlantısı ekle",
"confirmAddLink": "Bu etkinliğe bir toplantı bağlantısı eklensin mi?",
@@ -64,6 +76,16 @@
"refresh": "Takvimi yenile",
"today": "Bugün"
},
"carmode": {
"actions": {
"selectSoundDevice": "Ses cihazı seç"
},
"labels": {
"buttonLabel": "Araba modu",
"title": "Arama modu",
"videoStopped": "Video durduruldu"
}
},
"chat": {
"enter": "Odaya gir",
"error": "Hata: Mesajınız gönderilmedi. Neden: {{error}}",
@@ -74,6 +96,7 @@
"messageAccessibleTitleMe": "ben diyorum:",
"messageTo": "{{recipient}} adlı kişiye özel mesaj",
"messagebox": "Bir mesaj yazın",
"newMessages": "Yeni mesajlar",
"nickname": {
"popover": "Bir takma ad seçin",
"title": "Sohbette kullanmak için bir takma ad girin",
@@ -93,6 +116,7 @@
},
"chromeExtensionBanner": {
"buttonText": "Chrome Eklentisi'ni indirin",
"buttonTextEdge": "",
"close": "Kapat",
"dontShowAgain": "Bunu bir daha gösterme",
"installExtensionText": "Google Takvim ve Office 365 entegrasyonu için uzantıyı yükleyin"
@@ -113,8 +137,7 @@
"FETCH_SESSION_ID": "Oturum kimliği alınıyor…",
"GET_SESSION_ID_ERROR": "Oturum kimliği alma hatası: {{code}}",
"GOT_SESSION_ID": "Oturum kimliği alınıyor… Tamam",
"LOW_BANDWIDTH": "Bant genişliğinden tasarruf etmek için {{displayName}} kişisinin videosu kapatıldı",
"RECONNECTING": "Bir bağlantı hatası oluştu. Tekrar bağlanıyor..."
"LOW_BANDWIDTH": "Bant genişliğinden tasarruf etmek için {{displayName}} kişisinin videosu kapatıldı"
},
"connectionindicator": {
"address": "Adres:",
@@ -150,7 +173,6 @@
"status": "Bağlantı:",
"transport": "Transport:",
"transport_plural": "Transportlar:",
"turn": " (turn)",
"video_ssrc": "Video SSRC:"
},
"dateUtils": {
@@ -167,9 +189,9 @@
"ifHaveApp": "Uygulamanız zaten varsa: ",
"joinInApp": "Uygulamayı kullanarak bu toplantıya katıl",
"launchWebButton": "Web'de aç",
"openApp": "Uygulamaya devam et",
"title": "Toplantınız {{app}} uygulamasında açılıyor...",
"tryAgainButton": "Masaüstünde tekrar deneyin"
"tryAgainButton": "Masaüstünde tekrar deneyin",
"unsupportedBrowser": "Şu an kullandığınız tarayıcıyı desteklemiyoruz."
},
"defaultLink": "örneğin {{url}}",
"defaultNickname": "örnek Jane Pink",
@@ -185,6 +207,9 @@
"selectADevice": "Bir cihaz seç",
"testAudio": "Bir test sesi çal"
},
"dialIn": {
"screenTitle": "Arama özeti"
},
"dialOut": {
"statusMessage": "şimdi {{status}}"
},
@@ -197,13 +222,14 @@
"Share": "Paylaş",
"Submit": "Gönder",
"WaitForHostMsg": "Toplantısı henüz başlamadı. Toplantı sahibi sizseniz, lütfen kimlik doğrulaması yapın. Değilseniz lütfen toplantı sahibinin gelmesini bekleyin.",
"WaitingForHost": "Toplantı sahibi bekleniyor...",
"WaitingForHostTitle": "Toplantı sahibi bekleniyor ...",
"Yes": "Evet",
"accessibilityLabel": {
"liveStreaming": "Canlı akış"
},
"add": "Ekle",
"addMeetingNote": "",
"addOptionalNote": "",
"allow": "İzin ver",
"alreadySharedVideoMsg": "Başka bir katılımcı zaten bir video paylaşıyor. Bu konferans aynı anda yalnızca bir paylaşılan videoya izin verir.",
"alreadySharedVideoTitle": "Aynı anda yalnızca bir paylaşılan videoya izin verilir.",
@@ -242,17 +268,13 @@
"embedMeeting": "Toplantıyı yerleştir",
"enterDisplayName": "Lütfen adınızı buraya girin...",
"error": "Hata",
"externalInstallationMsg": "Masaüstü paylaşım uzantımızı yüklemeniz gerekmektedir.",
"externalInstallationTitle": "Uzantı gerekli",
"goToStore": "Mağazaya git",
"gracefulShutdown": "Hizmetimiz şu anda bakım için devre dışı. Lütfen daha sonra tekrar deneyiniz.",
"grantModeratorDialog": "{{participantName}} için moderatör hakları vermek istediğinize emin misiniz?",
"grantModeratorTitle": "Moderatör hakları ver",
"hide": "Gizle",
"hideShareAudioHelper": "Bu iletişim kutusunu bir daha gösterme",
"incorrectPassword": "Kullanıcı adı veya parola hatalı",
"incorrectRoomLockPassword": "Yanlış paralo",
"inlineInstallExtension": "Şimdi yükle",
"inlineInstallationMsg": "Masaüstü paylaşım uzantımızı yüklemeniz gerekmektedir.",
"internalError": "Hata! Bir şeyler ters gitti. Şu hata oluştu: {{error}}",
"internalErrorTitle": "İç hata",
"kickMessage": "Daha fazla ayrıntı için {{participantDisplayName}} ile iletişime geçebilirsiniz.",
@@ -260,10 +282,10 @@
"kickParticipantDialog": "Bu katılımcıyı çıkarmak istediğinizden emin misiniz?",
"kickParticipantTitle": "Bu katılımcı çıkarılsın mı?",
"kickTitle": "Ah! {{participantDisplayName}} sizi toplantıdan çıkardı.",
"linkMeeting": "Toplantıyı Linkle",
"linkMeetingTitle": "Salesforce'a toplantıyı linkle",
"liveStreaming": "Canlı akış",
"liveStreamingDisabledBecauseOfActiveRecordingTooltip": "Kayıt etkinken mümkün değil",
"liveStreamingDisabledForGuestTooltip": "Konuklar canlı akışa başlayamaz.",
"liveStreamingDisabledTooltip": "Canlı akışı başlatma devre dışı.",
"localUserControls": "Yerel kullanıcı kontrolleri",
"lockMessage": "Toplantı kilitlenemedi.",
"lockRoom": "Toplantı parolası ekle",
@@ -282,26 +304,26 @@
"micUnknownError": "Bilinmeyen bir nedenden dolayı mikrofon kullanılamıyor.",
"moderationAudioLabel": "Katılımcıların kendi seslerini açmalarına izin ver",
"moderationVideoLabel": "Katılımcıların kendi videolarını başlatmalarına izin ver",
"muteEveryoneDialog": "Herkesi susturmak istediğinizden emin misiniz? Onları sessizden çıkaramayacaksınız ancak onlar kendilerini her zaman sessizden çıkarabilirler.",
"muteEveryoneDialog": "Herkesi sessize almak istediğinizden emin misiniz? Onları sessizden çıkaramayacaksınız ancak onlar kendilerini her zaman sessizden çıkarabilirler.",
"muteEveryoneDialogModerationOn": "Katılımcılar istedikleri zaman konuşma talebi gönderebilirler.",
"muteEveryoneElseDialog": "Susturulduğunda, mikrofonlarını sessizden çıkaramayacaksınız ancak onlar diledikleri zaman kendilerini sessizden çıkarabilirler.",
"muteEveryoneElseTitle": "{{whom}} hariç herkesi sustur?",
"muteEveryoneElseDialog": "Sessize alındığında, mikrofonlarını sessizden çıkaramayacaksınız ancak onlar diledikleri zaman kendilerini sessizden çıkarabilirler.",
"muteEveryoneElseTitle": "{{whom}} hariç herkesi sessize al?",
"muteEveryoneElsesVideoDialog": "Kameraları devre dışı bırakıldığında geri açamayacaksınız, ancak onlar kameralarını her zaman açabilirler.",
"muteEveryoneElsesVideoTitle": "{{whom}} hariç herkesin kamerasını devre dışı bırak?",
"muteEveryoneSelf": "Kendiniz",
"muteEveryoneStartMuted": "Şu andan itibaren herkes sessizde başlayacak",
"muteEveryoneTitle": "Herkesi sustur?",
"muteEveryoneTitle": "Herkesi sessize al?",
"muteEveryonesVideoDialog": "Herkesin kamerasını devre dışı bırakmak istediğinizden emin misiniz? Kameralar devre dışı bırakıldığında geri açamayacaksınız, ancak onlar kameralarını her zaman açabilirler.",
"muteEveryonesVideoDialogModerationOn": "Katılımcılar istedikleri zaman videolarını açmak için istek gönderebilirler.",
"muteEveryonesVideoDialogOk": "Kameraları Kapat",
"muteEveryonesVideoTitle": "Herkesin kamerasını devre dışı bırak?",
"muteParticipantBody": "Sesi açamazsınız, ancak istedikleri zaman kendileri seslerini açabilirler.",
"muteParticipantButton": "Sustur",
"muteParticipantDialog": "Bu katılımcının sesini kapatmak istediğinizden emin misiniz? Sesini açamazsınız, ancak istedikleri zaman kendileri seslerini açabilirler.",
"muteParticipantTitle": "Bu katılımcı susturulsun mu?",
"muteParticipantButton": "Sessize al",
"muteParticipantsVideoBody": "Kamerayı tekrar açamazsınız ancak istedikleri zaman tekrar açabilirler.",
"muteParticipantsVideoBodyModerationOn": "",
"muteParticipantsVideoButton": "Kamerayı durdur",
"muteParticipantsVideoDialog": "Bu katılımcının kamerasını kapatmak istediğinize emin misiniz? Kamerayı tekrar açamazsınız ancak istedikleri zaman tekrar açabilirler.",
"muteParticipantsVideoDialogModerationOn": "",
"muteParticipantsVideoTitle": "Bu katılımcı için kamerayı durdur?",
"noDropboxToken": "Dropbox anahtarı geçerli değil",
"password": "Parola",
@@ -315,10 +337,9 @@
"popupError": "Tarayıcınız bu siteden açılan pencereleri engelliyor. Lütfen tarayıcınızın güvenlik ayarlarından açılır pencereleri etkinleştirin ve tekrar deneyin.",
"popupErrorTitle": "Açılır pencere engellendi",
"readMore": "daha fazla",
"recentlyUsedObjects": "Son zamanlarda kullandığınız objeler",
"recording": "Kaydediliyor",
"recordingDisabledBecauseOfActiveLiveStreamingTooltip": "Canlı akış etkinken mümkün değil...",
"recordingDisabledForGuestTooltip": "Misafirler kayıt etmeye başlayamaz.",
"recordingDisabledTooltip": "Kaydetmeye başlama devre dışı.",
"rejoinNow": "Tekrar katıl",
"remoteControlAllowedMessage": "{{user}} uzaktan kontrol isteğinizi kabul etti!",
"remoteControlDeniedMessage": "{{user}} uzaktan kontrol isteğinizi reddetti!",
@@ -337,11 +358,13 @@
"screenSharingAudio": "Sesi paylaş",
"screenSharingFailed": "Hop! Bir şeyler ters gitti, ekran paylaşımınızı başlatamıyoruz!",
"screenSharingFailedTitle": "Ekran paylaşımı başarısız!",
"screenSharingFailedToInstall": "Hata! Ekran paylaşım uzantınız yüklenemedi.",
"screenSharingFailedToInstallTitle": "Ekran paylaşım uzantısı yüklenemedi",
"screenSharingFirefoxPermissionDeniedError": "Ekranınızı paylaşmaya çalışırken bir şeyler ters gitti. Lütfen bize izin verdiğinizden emin olun.",
"screenSharingFirefoxPermissionDeniedTitle": "Hata! Ekran paylaşımına başlayamadık!",
"screenSharingPermissionDeniedError": "Hata! Ekran paylaşma uzantısı izinlerinizle ilgili bir sorun oluştu. Lütfen yeniden yükleyin ve tekrar deneyin.",
"searchInSalesforce": "Salesforce'ta ara",
"searchResults": "Arama sonuçları({{count}})",
"searchResultsDetailsError": "Veriler getirilirken bir şeyler yanlış gitti.",
"searchResultsError": "Sahip verileri getirilirken bir şeyler yanlış gitti.",
"searchResultsNotFound": "Arama sonucunda bir şey bulunamadı.",
"searchResultsTryAgain": "Alternatif aramaları deneyiniz.",
"sendPrivateMessage": "Kısa süre önce özel bir mesaj aldınız. Buna özel olarak cevap vermek ister misiniz yoksa mesajınızı gruba göndermek mi istiyorsunuz?",
"sendPrivateMessageCancel": "Gruba gönder",
"sendPrivateMessageOk": "Özel olarak gönder",
@@ -364,8 +387,10 @@
"shareVideoTitle": "Bir video paylaş",
"shareYourScreen": "Ekranınızı paylaşın",
"shareYourScreenDisabled": "Ekran paylaşımı devre dışı.",
"shareYourScreenDisabledForGuest": "Konuklar ekran paylaşımı yapamaz.",
"sharedVideoDialogError": "",
"sharedVideoLinkPlaceholder": "YouTube bağlantısı veya doğrudan video bağlantısı",
"show": "Göster",
"start": "Başlat",
"startLiveStreaming": "Canlı akışı başlat",
"startRecording": "Kaydı başlat",
"startRemoteControlErrorMessage": "Uzaktan kontrol oturumunu başlatmaya çalışırken bir hata oluştu!",
@@ -408,8 +433,12 @@
"veryBad": "Çok kötü",
"veryGood": "Çok iyi"
},
"giphy": {
"noResults": "Sonuç yok :(",
"search": "GIPHY ara"
},
"helpView": {
"title": "Yardım Merkezi"
"title": "Yardım merkezi"
},
"incomingCall": {
"answer": "Cevapla",
@@ -451,9 +480,11 @@
"noRoom": "Aranacak oda belirtilmedi.",
"numbers": "Arama Numaraları",
"password": "Parola:",
"reachedLimit": "Plan limitlerine ulaştınız.",
"sip": "SIP adresi",
"title": "Paylaş",
"tooltip": "Bu toplantı için bağlantıyı ve arama bilgilerini paylaşın"
"tooltip": "Bu toplantı için bağlantıyı ve arama bilgilerini paylaşın",
"upgradeOptions": "Lütfen yükseltme seçeneklerini kontrol ediniz."
},
"inlineDialogFailure": {
"msg": "Biraz tökezledik.",
@@ -474,6 +505,7 @@
"focusLocal": "Videoya odaklan",
"focusRemote": "Başka bir kişinin videosuna odaklan",
"fullScreen": "Tam ekran görüntüle veya çık",
"giphyMenu": "GIPHY menü geçişi",
"keyboardShortcuts": "Klavye kısayolları",
"localRecording": "Kayıt denetimlerini göster veya gizle",
"mute": "Mikrofonu aç veya kapat",
@@ -485,8 +517,11 @@
"toggleParticipantsPane": "Katılımcılar bölmesini göster veya gizle",
"toggleScreensharing": "Kamera ve ekran paylaşımı arasında geçiş yap",
"toggleShortcuts": "Klavye kısayollarını göster veya gizle",
"videoMute": "Kamerayı aç veya kapat",
"videoQuality": "Çağrı kalitesini yönetin"
"videoMute": "Kamerayı aç veya kapat"
},
"largeVideo": {
"screenIsShared": "Ekranınızı paylaşıyorsunuz",
"showMeWhatImSharing": "Ne paylaştığımı bana göster"
},
"liveStreaming": {
"busy": "Akış kaynaklarını serbest bırakmaya çalışıyoruz. Lütfen birkaç dakika içinde tekrar deneyin.",
@@ -504,6 +539,7 @@
"failedToStart": "Canlı Akış başlatılamadı",
"getStreamKeyManually": "Canlı akış alınamadı. Canlı akış anahtarınızı Youtube'dan almayı deneyin.",
"googlePrivacyPolicy": "Google Gizlilik Politikası",
"inProgress": "Kaydetme veya canlı akış işlemde",
"invalidStreamKey": "Canlı akış anahtarı yanlış olabilir.",
"limitNotificationDescriptionNative": "Akışınız {{limit}} dk ile sınırlı olacak. Sınırsız akış için {{app}} deneyin.",
"limitNotificationDescriptionWeb": "Yüksek talep nedeniyle akışınız {{limit}} dk ile sınırlı olacaktır. Sınırsız akış için <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a> deneyin.",
@@ -513,6 +549,7 @@
"onBy": "{{name}} canlı akışı başlattı",
"pending": "Canlı Akış başlatılıyor...",
"serviceName": "Canlı Akış hizmeti",
"sessionAlreadyActive": "",
"signIn": "Google ile giriş yap",
"signInCTA": "Oturum açın veya Youtube'dan canlı akış anahtarınızı girin.",
"signOut": ıkış yap",
@@ -541,6 +578,7 @@
"errorMissingPassword": "Lütfen toplantı parolasını girin",
"invalidPassword": "Geçersiz parola",
"joinRejectedMessage": "Katılma isteğiniz bir moderatör tarafından reddedildi.",
"joinRejectedTitle": "Katılma isteğiniz reddedildi",
"joinTitle": "Toplantıya katıl",
"joinWithPasswordMessage": "Parola ile katılmaya çalışıyorsunuz lütfen bekleyin...",
"joiningMessage": "Birisi isteğinizi kabul eder etmez toplantıya katılacaksınız",
@@ -588,6 +626,7 @@
"no": "Hayır",
"participant": "Katılımcı",
"participantStats": "Katılımcı İstatistikleri",
"selectTabTitle": "🎥 Lütfen kayıt için bu sekmeyi seçin",
"sessionToken": "Oturum Tokeni",
"start": "Kaydı başlat",
"stop": "Kaydı durdur",
@@ -604,6 +643,8 @@
"OldElectronAPPTitle": "Güvenlik açığı!",
"allowAction": "İzin ver",
"allowedUnmute": "Mikrofonunuzu sessizden çıkarabilir, kameranızı başlatabilir veya ekranınızı paylaşabilirsiniz.",
"audioUnmuteBlockedDescription": "Sistem sınırları nedeniyle mikrofon sesini açma işlemi geçici olarak engellendi",
"audioUnmuteBlockedTitle": "Mikrofon sesini açma işlemi engellendi!",
"chatMessages": "Sohbet mesajları",
"connectedOneMember": "{{name}} toplantıya katıldı",
"connectedThreePlusMembers": "{{name}} ve {{count}} kişi daha toplantıya katıldı",
@@ -612,18 +653,29 @@
"displayNotifications": "Bildirimleri görüntüle",
"focus": "Toplantı odağı",
"focusFail": "{{component}} uygun değil - {{ms}} saniye içinde tekrar deneyin",
"grantedTo": "{{to}} kişisine yönetici hakları verildi!",
"gifsMenu": "GIPHY",
"groupTitle": "Bildirimler",
"hostAskedUnmute": "Moderatör konuşmanı istiyor",
"invitedOneMember": "{{name}} davet edildi",
"invitedThreePlusMembers": "{{name}} ve {{count}} kişi daha davet edildi",
"invitedTwoMembers": "{{first}} ve {{second}} davet edildi",
"kickParticipant": "{{kicked}} kişisi {{kicker}} tarafından çıkarıldı",
"leftOneMember": "{{name}} toplantıdan ayrıldı",
"leftThreePlusMembers": "{{name}} ve diğerleri toplantıdan ayrıldı",
"leftTwoMembers": "{{first}} ve {{second}} toplantıdan ayrıldı",
"linkToSalesforce": "Salesforce'a linkle",
"linkToSalesforceDescription": "Toplantı özetini bir Salesforce nesnesine bağlayabilirsiniz",
"linkToSalesforceError": "Toplantı Salesforce'a bağlanamadı",
"linkToSalesforceKey": "Bu toplantıyı bağla",
"linkToSalesforceProgress": "Toplantı Salesforce'a bağlanıyor...",
"linkToSalesforceSuccess": "Toplantı Salesforce'a bağlandı",
"localRecordingStarted": "{{name}} lokal kayıt başlattı",
"localRecordingStopped": "{{name}} lokal kaydı durdurdu",
"me": "Ben",
"moderationInEffectCSDescription": "Ekranınızı paylaşmak isterseniz lütfen el kaldırın.",
"moderationInEffectCSTitle": "Ekran paylaşımı moderatör tarafından bloklandı",
"moderationInEffectDescription": "Konuşmak isterseniz lütfen el kaldırın.",
"moderationInEffectTitle": "Mikrofonunuz moderatör tarafından susturuldu",
"moderationInEffectTitle": "Mikrofonunuz moderatör tarafından sessize alındı",
"moderationInEffectVideoDescription": "Kameranızı başlatmak isterseniz lütfen el kaldırın.",
"moderationInEffectVideoTitle": "Kameranız moderatör tarafından bloklandı",
"moderationRequestFromModerator": "Ev sahibi sesi açmanızı istiyor",
@@ -639,16 +691,25 @@
"newDeviceAction": "Kullan",
"newDeviceAudioTitle": "Yeni ses aygıtı algılandı",
"newDeviceCameraTitle": "Yeni kamera algılandı",
"noiseSuppressionDesktopAudioDescription": "Masaüstü sesi paylaşılırken gürültü bastırma etkinleştirilemez, lütfen devre dışı bırakın ve tekrar deneyin.",
"noiseSuppressionFailedTitle": "Gürültü bastırma başlatılamadı",
"noiseSuppressionNoTrackDescription": "Lütfen önce mikrofonunuzun sesini açın.",
"noiseSuppressionStereoDescription": "Stereo ses gürültü bastırma şu anda desteklenmemektedir.",
"oldElectronClientDescription1": "Güvenlik açıkları bilinen Jitsi Meet istemcisinin eski bir sürümünü kullanıyor görünüyorsunuz. Lütfen güncellediğinizden emin olun.",
"oldElectronClientDescription2": "son yapı",
"oldElectronClientDescription3": " şimdi!",
"participantWantsToJoin": "toplantıya katılmak istiyor",
"participantsWantToJoin": "toplantıya katılmak istiyor",
"passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) başka bir katılımcı tarafından kaldırıldı",
"passwordSetRemotely": "$t(lockRoomPasswordUppercase) başka bir katılımcı tarafından ayarlandı",
"raiseHandAction": "El kaldır",
"raisedHand": "{{name}} söz hakkı istiyor.",
"raisedHands": "{{participantName}} ve {{raisedHands}}'ten daha fazla kişi",
"reactionSounds": "Sesleri devre dışı bırak",
"reactionSoundsForAll": "Herkes için sesleri devre dışı bırak",
"screenShareNoAudio": " Pencere seçim ekranında sesi paylaş kutusu işaretlenmedi.",
"screenShareNoAudioTitle": "Sistem sesi paylaşılamadı!",
"selfViewTitle": "Kendi kendine görünümü her zaman ayarlardan gizleyebilirsiniz",
"somebody": "Birisi",
"startSilentDescription": "Ses çıkışını açtıktan sonra tekrar bağlanın",
"startSilentTitle": "Ses çıkışı olmadan bağlandınız",
@@ -656,7 +717,11 @@
"suboptimalExperienceTitle": "Tarayıcı Uyarısı",
"unmute": "Sessizden çıkar",
"videoMutedRemotelyDescription": "Her zaman yeniden açabilirsiniz.",
"videoMutedRemotelyTitle": "{{moderator}} tarafından videonuz kapatıldı"
"videoMutedRemotelyTitle": "{{moderator}} tarafından videonuz kapatıldı",
"videoUnmuteBlockedDescription": "Sistem sınırları nedeniyle kamera sesini açma ve masaüstü paylaşım işlemi geçici olarak engellendi.",
"videoUnmuteBlockedTitle": "Kameranın sesini açma ve masaüstü paylaşımı engellendi!",
"viewLobby": "Lobiyi göster",
"waitingParticipants": "{{waitingParticipants}} kişi"
},
"participantsPane": {
"actions": {
@@ -669,8 +734,8 @@
"moreModerationActions": "Daha fazla denetleme seçeneği",
"moreModerationControls": "Daha fazla denetleme kontrolü",
"moreParticipantOptions": "Daha fazla katılımcı seçeneği",
"mute": "Sustur",
"muteAll": "Herkesi sustur",
"mute": "Sessize al",
"muteAll": "Herkesi sessize al",
"muteEveryoneElse": "Diğer herkesi sessize al",
"stopEveryonesVideo": "Herkesin videosunu durdur",
"stopVideo": "Video'yu durdur",
@@ -688,11 +753,13 @@
},
"passwordDigitsOnly": "{{number}} rakama kadar",
"passwordSetRemotely": "başka katılımcı tarafından ayarlandı",
"pinnedParticipant": "Katılımcı sabitlendi",
"polls": {
"answer": {
"skip": "Geç",
"submit": "Gönder"
},
"by": "{{ name }} tarafından",
"create": {
"addOption": "Seçenek Ekle",
"answerPlaceholder": "Seçenek {{index}}",
@@ -716,7 +783,7 @@
"vote": "Oylar"
}
},
"poweredby": "",
"poweredby": "tarafından",
"prejoin": {
"audioAndVideoError": "Ses ve video hatası:",
"audioDeviceProblem": "Ses cihazınızla ilgili bir sorun var",
@@ -763,6 +830,7 @@
"initiated": "Çağrı başlatıldı",
"joinAudioByPhone": "Join with phone audio",
"joinMeeting": "Toplantıya katıl",
"joinMeetingInLowBandwidthMode": "Düşük bant genişliği modunda katılın",
"joinWithoutAudio": "Ses olmadan katıl",
"keyboardShortcuts": "Klavye kısayollarını etkinleştir",
"linkCopied": "Bağlantı panoya kopyalandı",
@@ -790,6 +858,9 @@
"rejected": "Reddedildi",
"ringing": "Çalıyor..."
},
"privacyView": {
"title": "Gizlilik"
},
"profile": {
"avatar": "avatar",
"setDisplayNameLabel": "Görünür adınızı ayarlayın",
@@ -798,6 +869,19 @@
"title": "Profil"
},
"raisedHand": "Konuşmak ister misiniz?",
"raisedHandsLabel": "Kaldırılan ellerin sayısı",
"record": {
"already": {
"linked": "Toplantı zaten bu Salesforce nesnesine bağlı."
},
"type": {
"account": "Hesap",
"contact": "Kontak",
"lead": "Lider",
"opportunity": "İmkan",
"owner": "Sahip"
}
},
"recording": {
"authDropboxText": "Dropbox'a yükle",
"availableSpace": "Kullanılabilir alan: {{spaceLeft}} MB (yaklaşık {{duration}} dakika kayıt)",
@@ -812,27 +896,47 @@
"expandedPending": "Kayıt başlatılıyor ...",
"failedToStart": "Kayıt başlatılamadı",
"fileSharingdescription": "Toplantı katılımcılarıyla kaydı paylaş",
"highlight": "Önemli Olay",
"highlightMoment": "Vurgu anı",
"highlightMomentDisabled": "Kayıt başladığında önemli anları vurgulayabilirsiniz",
"highlightMomentSuccess": "An vurgulandı",
"highlightMomentSucessDescription": "Vurgulanan anınız toplantı özetine eklenecektir.",
"inProgress": "Kayıt veya canlı akış devam ediyor",
"limitNotificationDescriptionNative": "Yüksek talep nedeniyle kaydınız {{limit}} dakika ile sınırlı olacaktır. Sınırsız kayıt için deneyin <3>{{app}}</3>.",
"limitNotificationDescriptionWeb": "Yüksek talep nedeniyle kaydınız {{limit}} dakika ile sınırlı olacaktır. Sınırsız kayıt için deneyin <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
"linkGenerated": "Kaydınızla ilgili link oluşturduk.",
"live": "CANLI",
"localRecordingNoNotificationWarning": "Kayıt diğer katılımcılara duyurulmayacaktır. Onlara toplantının kaydedildiğini bildirmeniz gerekecek.",
"localRecordingNoVideo": "Video kaydedilmiyor",
"localRecordingStartWarning": "Lütfen kaydetmek için toplantıdan çıkmadan önce kaydı durdurduğunuzdan emin olun.",
"localRecordingStartWarningTitle": "Kaydetmek için kaydı durdurun",
"localRecordingVideoStop": "Videonuzu durdurmak yerel kaydı da durduracaktır. Devam etmek istediğine emin misin?",
"localRecordingVideoWarning": "Videonuzu kaydetmek için kayda başlarken açmış olmanız gerekir",
"localRecordingWarning": "Doğru video ve sesi kullanmak için geçerli sekmeyi seçtiğinizden emin olun. Kayıt şu anda yaklaşık 100 dakika olan 1GB ile sınırlıdır.",
"loggedIn": "{{userName}} olarak giriş yapıldı",
"noStreams": "Ses veya video akışı algılanmadı",
"off": "Kayıt durdu",
"offBy": "{{name}} isimli kayıt durduruldu",
"on": "Kayıt başladı",
"onBy": "{{name}} isimli kayıt başlatıldı",
"onlyRecordSelf": "Yalnızca ses ve video akışlarımı kaydet",
"pending": "Toplantıyı kaydetmeye hazırlanıyor ...",
"rec": "KAYIT",
"saveLocalRecording": "Kayıt dosyasını yerel olarak kaydet (Beta)",
"serviceDescription": "Kaydınız kayıt hizmeti tarafından kaydedilecektir",
"serviceDescriptionCloud": "Bulut kaydı",
"serviceDescriptionCloudInfo": "Kaydedilen toplantılar, kayıt süresinden 24 saat sonra otomatik olarak temizlenir.",
"serviceName": "Kayıt hizmeti",
"sessionAlreadyActive": "Bu oturum zaten kaydediliyor veya canlı yayınlanıyor.",
"signIn": "Giriş yap",
"signOut": ıkış yap",
"surfaceError": "Lütfen geçerli sekmeyi seçin",
"title": "Kaydediliyor",
"unavailable": "Ah! {{serviceName}} şu anda kullanılamıyor. Sorunu çözmek için çalışıyoruz. Lütfen daha sonra tekrar deneyin.",
"unavailableTitle": "Kayıt yapılamıyor",
"uploadToCloud": "Buluta yükle"
},
"screenshareDisplayName": "{{name}}'nin ekranı",
"sectionList": {
"pullToRefresh": "Yenilemek için çekin"
},
@@ -840,9 +944,10 @@
"about": "Toplantınıza bir parola ekleyebilirsiniz. Katılımcıların toplantıya katılmasına izin verilmeden önce parolayı girmeleri gerekecektir.",
"aboutReadOnly": "Moderatörler toplantıya toplantıya bir $t(lockRoomPassword) eklenebilir. Katılımcıların toplantıya katılmalarına izin verilmeden önce $t(lockRoomPassword) bilgilerini sağlamaları gerekir..",
"insecureRoomNameWarning": "Toplantı odası güvenli değil. Konferansınıza istenmeyen katılımcılar katılabilir.",
"securityOptions": "Güvenlik Seçenekleri"
"title": "Güvenlik Seçenekleri"
},
"settings": {
"buttonLabel": "Ayarlar",
"calendar": {
"about": "{{appName}} takvim entegrasyonu, yaklaşan etkinlikleri okuyabilmesi için takviminize güvenli bir şekilde erişmek için kullanılır.",
"disconnect": "Bağlantıyı Kes",
@@ -866,6 +971,7 @@
"name": "Ad",
"noDevice": "Yok",
"participantJoined": "Katılımcı katıldı",
"participantKnocking": "",
"participantLeft": "Katılımcı ayrıldı",
"playSounds": "Sesi çal",
"reactions": "Toplantı reaksiyonları",
@@ -873,9 +979,11 @@
"selectAudioOutput": "Ses çıkışı",
"selectCamera": "Kamera",
"selectMic": "Mikrofon",
"selfView": "Kendi görünümüm",
"sounds": "Sesler",
"speakers": "Hoparlörler",
"startAudioMuted": "Herkes ses kapalı başlasın",
"startReactionsMuted": "Reaksiyon seslerini herkes için kapat",
"startVideoMuted": "Herkes görüntü kapalı başlasın",
"talkWhileMuted": "Sesi kapalıyken konuş",
"title": "Ayarlar"
@@ -893,13 +1001,20 @@
"disableCrashReportingWarning": "Kilitlenme raporlamasını devre dışı bırakmak istediğinizden emin misiniz? Ayar, uygulamayı yeniden başlattıktan sonra uygulanacaktır.",
"disableP2P": "Peer-To-Peer modunu devre dışı bırak",
"displayName": "Görünür ad",
"displayNamePlaceholderText": "Ör: John Doe",
"email": "E-posta",
"goTo": "Git",
"header": "Ayarlar",
"help": "Yardım",
"links": "Linkler",
"privacy": "Gizlilik",
"profileSection": "Profil",
"serverURL": "Sunucu Bağlantısı",
"showAdvanced": "Gelişmiş ayarları göster",
"startCarModeInLowBandwidthMode": "Düşük bağlantı modunda araba modunu başlat",
"startWithAudioMuted": "Ses kapalı başla",
"startWithVideoMuted": "Görüntü kapalı başla",
"terms": "Şartlar",
"version": "Versiyon"
},
"share": {
@@ -908,13 +1023,21 @@
},
"speaker": "Konuşmacı",
"speakerStats": {
"angry": "Kızgın",
"disgusted": "Bıkkın",
"displayEmotions": "Duyguları göster",
"fearful": "Korkunç",
"happy": "Mutlu",
"hours": "{{count}}sa",
"minutes": "{{count}}dk",
"name": "Ad",
"neutral": "Nötr",
"sad": "Üzgün",
"search": "Ara",
"seconds": "{{count}}sn",
"speakerStats": "Konuşmacı İstatistikleri",
"speakerTime": "Konuşmacı Süresi"
"speakerTime": "Konuşmacı Süresi",
"surprised": "Sürpriz"
},
"startupoverlay": {
"genericTitle": "Toplantının mikrofonunuzu ve kameranızı kullanması gerekli.",
@@ -926,6 +1049,10 @@
"text": "Tekrar bağlanmak için <i>Tekrar katıl</i> butonuna basın.",
"title": "Bu bilgisayar uyku moduna geçtiği için görüntülü görüşmeniz kesildi."
},
"termsView": {
"title": "Şartlar"
},
"toggleTopPanelLabel": "",
"toolbar": {
"Settings": "Ayarlar",
"accessibilityLabel": {
@@ -933,25 +1060,30 @@
"audioOnly": "Yalnızca sesi aç/kapat",
"audioRoute": "Ses aygıtını seçin",
"boo": "Boo",
"callQuality": "Arama kalitesini yönetin",
"breakoutRoom": "Alt oda",
"callQuality": "Armama kalitesini yönetin",
"carmode": "Araba odu",
"cc": "Altyazıları aç/kapat",
"chat": "Mesajlaşma penceresini aç/kapat",
"clap": "Alkış",
"collapse": "Daralt",
"document": "Paylaşılan dokümanı aç/kapat",
"download": "Uygulamalarımızı indirin",
"e2ee": "Uçtan uca şifreleme",
"embedMeeting": "Toplantıyı yerleştir",
"endConference": "Herkes için toplantıyı sonlandır",
"expand": "Genişlet",
"feedback": "Geri bildirim bırakın",
"fullScreen": "Tam ekranı aç/kapat",
"giphy": "GIPHY menüsünü aç/kapat",
"grantModerator": "Moderatör Hakları Ver",
"hangup": "Aramadan ayrıl",
"help": "Yardım",
"invite": "İnsanları davet et",
"kick": "Katılımcı çıkar",
"laugh": "Gül",
"leaveConference": "Toplantıdan ayrıl",
"like": "Çok iyi!",
"linkToSalesforce": "Salesforce'a bağla",
"lobbyButton": "Lobi modunu etkinleştir / devre dışı bırak",
"localRecording": "Kayıt denetimlerini aç/kapat",
"lockRoom": "Toplantı parolasını aç/kapat",
@@ -959,10 +1091,11 @@
"moreActionsMenu": "Diğer işlemler menüsü",
"moreOptions": "Daha fazla seçenek göster",
"mute": "Sesi aç/kapat",
"muteEveryone": "Herkesi sustur",
"muteEveryone": "Herkesi sessize al",
"muteEveryoneElse": "Diğer herkesi sessize al",
"muteEveryoneElsesVideo": "Diğer herkesin kamerasını devre dışı bırak",
"muteEveryonesVideo": "Herkesin kamerasını devre dışı bırak",
"muteEveryoneElsesVideoStream": "Diğer herkesin videosunu durdur",
"muteEveryonesVideoStream": "Herkesin videosunu durdur",
"noiseSuppression": "Gürültü azaltma",
"participants": "Katılımcılar",
"pip": "Resim içinde Resim modunu aç/kapat",
"privateMessage": "Özel mesaj gönder",
@@ -974,6 +1107,7 @@
"remoteVideoMute": "Katılımcının kamerasını devre dışı bırak",
"security": "Güvenlik seçenekleri",
"selectBackground": "Arkaplan Seç",
"selfView": "Kendi kendine görünümü aç/kapat",
"shareRoom": "Birini davet et",
"shareYourScreen": "Ekran paylaşımını aç/kapat",
"shareaudio": "Sesi paylaş",
@@ -986,8 +1120,9 @@
"tileView": "Döşeme görünümünü aç/kapat",
"toggleCamera": "Kamerayı değiştir",
"toggleFilmstrip": "Film şeridini aç/kapat",
"videoblur": "",
"videomute": "Sessiz videoyu aç/kapat"
"videoblur": "Video bulanıklaştırma aç/kapat",
"videomute": "Sessiz videoyu aç/kapat",
"whiteboard": "Beyaztahtayı Göster / Gizle"
},
"addPeople": "Aramanıza kişi ekleyin",
"audioOnlyOff": "Yalnızca ses modunu devre dışı bırak",
@@ -1001,22 +1136,30 @@
"clap": "Alkış",
"closeChat": "Mesajlaşmayı kapat",
"closeReactionsMenu": "Reaksiyon menüsünü kapat",
"disableNoiseSuppression": "",
"disableReactionSounds": "Toplantı için reaksiyon seslerini devre dışı bırak",
"documentClose": "Paylaşılan dokümanı kapat",
"documentOpen": "Paylaşılan dokümanı aç",
"download": "Uygulamalarımızı indirin",
"e2ee": "Uçtan uca şifreleme",
"embedMeeting": "Toplantıyı yerleştir",
"endConference": "Herkes için toplantıyı sonlandır",
"enterFullScreen": "Tam ekran görüntüle",
"enterTileView": "Döşeme görünümüne geç",
"exitFullScreen": "Tam ekrandan çık",
"exitTileView": "Döşeme görünümünden çık",
"feedback": "Geri bildirim bırakın",
"giphy": "GIPHY menü aç/kapat",
"hangup": "Ayrıl",
"help": "Yardım",
"hideWhiteboard": "Beyaztahtayı gizle",
"invite": "Kişi davet et",
"joinBreakoutRoom": "Alt odaya katıl",
"laugh": "Gül",
"leaveBreakoutRoom": "Alt odadan ayrıl",
"leaveConference": "Toplantıdan Ayrıl",
"like": "Çok iyi!",
"linkToSalesforce": "Salesforce'a bağla",
"lobbyButtonDisable": "Lobi modunu devre dışı bırak",
"lobbyButtonEnable": "Lobi modunu devre aktifleştir",
"login": "Oturum aç",
@@ -1025,13 +1168,14 @@
"moreActions": "Daha fazla işlem",
"moreOptions": "Daha fazla seçenek",
"mute": "Sessiz / Sesli",
"muteEveryone": "Herkesi sustur",
"muteEveryone": "Herkesi sessize al",
"muteEveryonesVideo": "Herkesin kamerasını devre dışı bırak",
"noAudioSignalDesc": "Sistem ayarlarından veya donanımdan sesi kapatmadıysanız, cihazınızı değiştirin.",
"noAudioSignalDescSuggestion": "Sistem ayarlarından veya donanımdan kasıtlı olarak kapatmadıysanız, önerilen aygıta geçmeyi düşünün.",
"noAudioSignalDialInDesc": "",
"noAudioSignalDialInLinkDesc": "İçeri arama numaraları",
"noAudioSignalTitle": "Mikrofonunuzdan hiçbir giriş gelmiyor!",
"noiseSuppression": "Gürültü azaltma",
"noisyAudioInputDesc": "Mikrofonunuz gürültü yapıyor gibi görünüyor, lütfen cihazı kapatmayı veya değiştirmeyi düşünün.",
"noisyAudioInputTitle": "Mikrofonunuz gürültülü görünüyor!",
"openChat": "Mesajlaşmayı aç",
@@ -1054,16 +1198,15 @@
"shareaudio": "Ses paylaş",
"sharedvideo": "Bir videosu paylaş",
"shortcuts": "Kısayolları göster",
"showWhiteboard": "Beyaztahtayı Göster",
"silence": "Sessiz",
"speakerStats": "Konuşmacı istatistikleri",
"startScreenSharing": "Ekran paylaşımını başlat",
"startSubtitles": "Altyazıları başlat",
"startvideoblur": "",
"stopAudioSharing": "Ses paylaşımını durdur",
"stopScreenSharing": "Ekran paylaşımını durdur",
"stopSharedVideo": "Videosunu durdur",
"stopSubtitles": "Altyazıları durdur",
"stopvideoblur": "",
"surprised": "Sürpriz",
"talkWhileMutedPopup": "Bir şey mi dediniz? Mikrofonunuz kapalı.",
"tileViewToggle": "Döşeme görünümünü aç/kapat",
@@ -1081,6 +1224,8 @@
"pending": "Toplantıyı deşifre etmeye hazırlanıyor...",
"start": "Altyazıları göstermeye başla",
"stop": "Altyazıları göstermeyi durdur",
"subtitles": "Altyazılar",
"subtitlesOff": "Kapat",
"tr": "TR"
},
"userMedia": {
@@ -1106,19 +1251,20 @@
"pending": "{{displayName}} davet edildi"
},
"videoStatus": {
"adjustFor": "Ayala:",
"audioOnly": "SES",
"audioOnlyExpanded": "Yalnızca ses modundasınız. Bu mod bant genişliğinden tasarruf sağlar, ancak başkalarının videolarını göremezsiniz.",
"bestPerformance": "En iyi performans",
"callQuality": "Arama Kalitesi",
"hd": "HD",
"hdTooltip": "Yüksek çözünürlükte video görüntüleniyor",
"highDefinition": "Yüksek çözünürlük",
"highestQuality": "En yüksek kalite",
"labelTooiltipNoVideo": "Görüntü yok",
"labelTooltipAudioOnly": "Yalnızca ses modu etkin",
"ld": "LD",
"ldTooltip": "Düşük çözünürlüklü video görüntüleme",
"lowDefinition": "Düşük çözünürlük",
"onlyAudioAvailable": "Yalnızca ses kullanılabilir",
"onlyAudioSupported": "Bu tarayıcıda yalnızca sesi destekliyoruz.",
"performanceSettings": "Performans ayarları",
"sd": "SD",
"sdTooltip": "Standart çözünürlüklü video görüntüleme",
@@ -1126,18 +1272,23 @@
},
"videothumbnail": {
"connectionInfo": "Bağlantı Bilgisi",
"domute": "Sustur",
"domuteOthers": "Diğer herkesi sustur",
"domute": "Sessize al",
"domuteOthers": "Diğer herkesi sessize al",
"domuteVideo": "Kamerayı devre dışı bırak",
"domuteVideoOfOthers": "Diğer herkesin kamerasını devre dışı bırak",
"flip": "Döndür",
"grantModerator": "Moderatör Hakları Ver",
"hideSelfView": "Kendi görüntümü gizle",
"kick": ıkar",
"moderator": "Yönetici",
"mute": "Katılımcı sessiz",
"muted": "Sessiz",
"pinToStage": "Sahneye sabitle",
"remoteControl": "Uzaktan kontrol",
"screenSharing": "Katılımcı ekranını paylaşıyor",
"show": "Sahnede göster",
"showSelfView": "Kendi görüntümü göster",
"unpinFromStage": "Sabitlemeyi kaldır",
"videoMuted": "Kamerayı devre dışı bırakıldı",
"videomute": "Katılımcı kamerayı durdurdu"
},
@@ -1162,7 +1313,8 @@
"slightBlur": "Hafif Bulanıklık",
"title": "Sanal arkaplanlar",
"uploadedImage": "Yüklenen resim {{index}}",
"webAssemblyWarning": "WebAssembly desteklenmiyor"
"webAssemblyWarning": "WebAssembly desteklenmiyor",
"webAssemblyWarningDescription": "WebAssembly devre dışı bırakıldı veya bu tarayıcı tarafından desteklenmiyor"
},
"volumeSlider": "Ses kaydırıcısı",
"welcomepage": {
@@ -1178,7 +1330,7 @@
},
"calendar": "Takvim",
"connectCalendarButton": "Takviminizi bağlayın",
"connectCalendarText": "",
"connectCalendarText": "{{app}} uygulamasındaki tüm toplantılarınızı görüntülemek için takviminizi bağlayın. Ayrıca, takviminize {{provide}} toplantı ekleyin ve tek tıklamayla başlatın.",
"enterRoomTitle": "Yeni bir toplantı başlat",
"getHelp": "Yardım alın",
"go": "GİT",
@@ -1204,11 +1356,12 @@
"recentList": "En son",
"recentListDelete": "Sil",
"recentListEmpty": "En son görüşülenler listeniz şu anda boş. Sohbet edin ve son toplantılarınızı burada görüntüleyin.",
"reducedUIText": "",
"reducedUIText": "Hoşgeldiniz - {{app}}!",
"roomNameAllowedChars": "Toplantı adı şu karakterlerden hiçbirini içermemelidir: ?, &, :, ', \", %, #.",
"roomname": "Oda adı girin",
"roomnameHint": "Katılmak istediğiniz odanın adını veya bağlantısını girin. İstediğiniz oda adını uydurabilirsiniz. Aynı odada buluşmak için görüşmek istediğiniz kişilere bunu iletmeniz yeterli.",
"sendFeedback": "Geri bildirim gönder",
"settings": "Ayarlar",
"startMeeting": "Toplantı başlat",
"terms": "Kurallar",
"title": "Güvenli, tüm özelliklere erişimli ve tamamen ücretsiz görüntülü arama"

View File

@@ -1067,7 +1067,6 @@
"chat": "Показати/приховати чат",
"clap": "Овації",
"collapse": "Згорнути",
"dock": "Закріпити в головному вікні",
"document": "Відкрити/закрити спільний документ",
"download": "Звантажити мобільний застосунок",
"embedMeeting": "Вставити зустріч",
@@ -1121,7 +1120,6 @@
"tileView": "Увімкнути/вимкнути плитки",
"toggleCamera": "Увімкнути/вимкнути камеру",
"toggleFilmstrip": "Показати/приховати панель видів",
"undock": "Відкріпити в окремому вікні",
"videoblur": "Увімкнути/вимкнути розмиття фону",
"videomute": "Увімкнути/вимкнути камеру",
"whiteboard": "Показати/приховати дошку"
@@ -1140,7 +1138,6 @@
"closeReactionsMenu": "Закрити меню реакцій",
"disableNoiseSuppression": "Вимкнути придушення шуму",
"disableReactionSounds": "Ви можете вимкнути звуки реакції для цієї зустрічі",
"dock": "Закріпити в головному вікні",
"documentClose": "Закрити спільний документ",
"documentOpen": "Відкрити спільний документ",
"download": "Звантажити мобільний застосунок",
@@ -1214,7 +1211,6 @@
"talkWhileMutedPopup": "Намагаєтесь говорити? Ваш мікрофон вимкнено.",
"tileViewToggle": "Плитки",
"toggleCamera": "Увімкнути/вимкнути камеру",
"undock": "Відкріпити в окремому вікні",
"videoSettings": "Налаштування камери",
"videomute": "Камера"
},

View File

@@ -1067,7 +1067,6 @@
"chat": "打开/关闭聊天窗口",
"clap": "鼓掌",
"collapse": "收起",
"dock": "在主窗口停靠",
"document": "开启/关闭文件共享",
"download": "下载应用",
"embedMeeting": "嵌入会议",
@@ -1121,7 +1120,6 @@
"tileView": "开启/关闭画廊视图",
"toggleCamera": "开启/关闭摄像头",
"toggleFilmstrip": "开启/关闭幻灯片",
"undock": "取消停靠到单独的窗口",
"videoblur": "开启/关闭视频模糊",
"videomute": "启动/停止摄像头",
"whiteboard": "显示/隐藏白板"
@@ -1140,7 +1138,6 @@
"closeReactionsMenu": "关闭反应菜单",
"disableNoiseSuppression": "关闭噪音抑制",
"disableReactionSounds": "你可以禁用此会议的反应声音",
"dock": "在主窗口停靠",
"documentClose": "关闭文件共享",
"documentOpen": "开启文件共享",
"download": "下载我们的APP",
@@ -1214,7 +1211,6 @@
"talkWhileMutedPopup": "你在尝试发言吗? 当前你是静音状态。",
"tileViewToggle": "画面模式",
"toggleCamera": "开启/关闭摄像头",
"undock": "取消停靠到单独的窗口",
"videoSettings": "视频设置",
"videomute": "开启/关闭摄像头"
},

View File

@@ -1067,7 +1067,6 @@
"chat": "打開/關閉聊天視窗",
"clap": "鼓掌",
"collapse": "收回",
"dock": "停靠在主視窗中",
"document": "啟用/停用分享文檔",
"download": "下載我們的應用程式",
"embedMeeting": "嵌入會議",
@@ -1121,7 +1120,6 @@
"tileView": "啟用/停用畫廊檢視",
"toggleCamera": "啟用/停用網路攝影機",
"toggleFilmstrip": "啟用/停用簡報",
"undock": "取消停靠到單獨的视窗",
"videoblur": "啟用/停用畫面模糊",
"videomute": "啟用/停用網路攝影機",
"whiteboard": "啟用/停用白板"
@@ -1140,7 +1138,6 @@
"closeReactionsMenu": "關閉反應選單",
"disableNoiseSuppression": "停用雜訊抑制",
"disableReactionSounds": "您可以停用此會議的反應音效",
"dock": "停靠在主視窗中",
"documentClose": "關閉分享檔案欄",
"documentOpen": "開啟分享檔案欄",
"download": "下載我們的應用程式",
@@ -1214,7 +1211,6 @@
"talkWhileMutedPopup": "您要發言嗎?目前您處於靜音。",
"tileViewToggle": "啟動/停用畫廊檢視",
"toggleCamera": "啟動/停用網路攝影機",
"undock": "取消停靠到單獨的视窗",
"videoSettings": "視訊設定",
"videomute": "啟動/停用網路攝影機"
},

View File

@@ -89,7 +89,7 @@
"chat": {
"enter": "Enter room",
"error": "Error: your message was not sent. Reason: {{error}}",
"fieldPlaceHolder": "Type your message here",
"fieldPlaceHolder": "Aa",
"lobbyChatMessageTo": "Lobby chat message to {{recipient}}",
"message": "Message",
"messageAccessibleTitle": "{{user}} says:",
@@ -147,6 +147,7 @@
"bridgeCount": "Server count: ",
"codecs": "Codecs (A/V): ",
"connectedTo": "Connected to:",
"e2eeVerified": "E2EE verified:",
"framerate": "Frame rate:",
"less": "Show less",
"localaddress": "Local address:",
@@ -266,7 +267,7 @@
"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.",
"e2eeWillDisableDueToMaxModeDescription": "WARNING: End-to-End Encryption will be automatically disabled if more participants join the conference.",
"embedMeeting": "Embed meeting",
"enterDisplayName": "Enter your name here",
"enterDisplayName": "Enter your name",
"error": "Error",
"gracefulShutdown": "Our service is currently down for maintenance. Please try again later.",
"grantModeratorDialog": "Are you sure you want to grant moderator rights to {{participantName}}?",
@@ -408,6 +409,10 @@
"user": "User",
"userIdentifier": "User identifier",
"userPassword": "User password",
"verifyParticipantConfirm": "They match",
"verifyParticipantDismiss": "They do not match",
"verifyParticipantQuestion": "EXPERIMENTAL: Ask participant {{participantName}} if they see the same content, in the same order.",
"verifyParticipantTitle": "User verification",
"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.",
@@ -511,7 +516,7 @@
"mute": "Mute or unmute your microphone",
"pushToTalk": "Push to talk",
"raiseHand": "Raise or lower your hand",
"showSpeakerStats": "Show speaker stats",
"showSpeakerStats": "Show participants stats",
"toggleChat": "Open or close the chat",
"toggleFilmstrip": "Show or hide video thumbnails",
"toggleParticipantsPane": "Show or hide the participants pane",
@@ -563,7 +568,6 @@
"lobby": {
"admit": "Admit",
"admitAll": "Admit all",
"allow": "Allow",
"backToKnockModeButton": "Ask to join",
"chat": "Chat",
"dialogTitle": "Lobby mode",
@@ -649,6 +653,8 @@
"connectedOneMember": "{{name}} joined the meeting",
"connectedThreePlusMembers": "{{name}} and many others joined the meeting",
"connectedTwoMembers": "{{first}} and {{second}} joined the meeting",
"dataChannelClosed": "Video quality impaired",
"dataChannelClosedDescription": "The bridge channel has been disconnected and thus video quality is limited to its lowest setting.",
"disconnected": "disconnected",
"displayNotifications": "Display notifications for",
"focus": "Conference focus",
@@ -964,7 +970,7 @@
"incomingMessage": "Incoming message",
"language": "Language",
"loggedIn": "Logged in as {{name}}",
"maxStageParticipants": "Maximum number of participants who can be pinned to the main stage",
"maxStageParticipants": "Maximum number of participants who can be pinned to the main stage (EXPERIMENTAL)",
"microphones": "Microphones",
"moderator": "Moderator",
"more": "More",
@@ -1003,6 +1009,7 @@
"displayName": "Display name",
"displayNamePlaceholderText": "Eg: John Doe",
"email": "Email",
"emailPlaceholderText": "email@example.com",
"goTo": "Go to",
"header": "Settings",
"help": "Help",
@@ -1035,7 +1042,7 @@
"sad": "Sad",
"search": "Search",
"seconds": "{{count}}s",
"speakerStats": "Speaker Stats",
"speakerStats": "Participants Stats",
"speakerTime": "Speaker Time",
"surprised": "Surprised"
},
@@ -1067,7 +1074,6 @@
"chat": "Open / Close chat",
"clap": "Clap",
"collapse": "Collapse",
"dock": "Dock in main window",
"document": "Toggle shared document",
"download": "Download our apps",
"embedMeeting": "Embed meeting",
@@ -1116,12 +1122,11 @@
"shortcuts": "Toggle shortcuts",
"show": "Show on stage",
"silence": "Silence",
"speakerStats": "Toggle speaker statistics",
"speakerStats": "Toggle participants statistics",
"surprised": "Surprised",
"tileView": "Toggle tile view",
"toggleCamera": "Toggle camera",
"toggleFilmstrip": "Toggle filmstrip",
"undock": "Undock into separate window",
"videoblur": "Toggle video blur",
"videomute": "Start / Stop camera",
"whiteboard": "Show / Hide whiteboard"
@@ -1140,7 +1145,6 @@
"closeReactionsMenu": "Close reactions menu",
"disableNoiseSuppression": "Disable noise suppression",
"disableReactionSounds": "You can disable reaction sounds for this meeting",
"dock": "Dock in main window",
"documentClose": "Close shared document",
"documentOpen": "Open shared document",
"download": "Download our apps",
@@ -1203,7 +1207,7 @@
"shortcuts": "View shortcuts",
"showWhiteboard": "Show whiteboard",
"silence": "Silence",
"speakerStats": "Speaker stats",
"speakerStats": "Participants stats",
"startScreenSharing": "Start screen sharing",
"startSubtitles": "Subtitles • {{language}}",
"stopAudioSharing": "Stop audio sharing",
@@ -1214,7 +1218,6 @@
"talkWhileMutedPopup": "Trying to speak? You are muted.",
"tileViewToggle": "Toggle tile view",
"toggleCamera": "Toggle camera",
"undock": "Undock into separate window",
"videoSettings": "Video settings",
"videomute": "Start / Stop camera"
},
@@ -1295,6 +1298,7 @@
"show": "Show on stage",
"showSelfView": "Show self view",
"unpinFromStage": "Unpin",
"verify": "Verify participant",
"videoMuted": "Camera disabled",
"videomute": "Participant has stopped the camera"
},

View File

@@ -18,6 +18,7 @@ import {
} from '../../react/features/av-moderation/actions';
import { isEnabledFromState } from '../../react/features/av-moderation/functions';
import {
endConference,
getCurrentConference,
sendTones,
setFollowMe,
@@ -777,6 +778,19 @@ function initCommands() {
},
'toggle-virtual-background': () => {
APP.store.dispatch(toggleDialog(VirtualBackgroundDialog));
},
'end-conference': () => {
APP.store.dispatch(endConference());
const state = APP.store.getState();
const conference = getCurrentConference(state);
if (!conference) {
logger.error('Conference not yet available');
} else if (conference.isEndConferenceSupported()) {
APP.store.dispatch(endConference());
} else {
logger.error(' End Conference not supported');
}
}
};
transport.on('event', ({ data, name }) => {
@@ -1436,6 +1450,22 @@ class API {
});
}
/**
* Notify external application that the data channel has been closed.
*
* @param {number} code - The close code.
* @param {string} reason - The close reason.
*
* @returns {void}
*/
notifyDataChannelClosed(code: number, reason: string) {
this._sendEvent({
name: 'data-channel-closed',
code,
reason
});
}
/**
* Notify external application that the data channel has been opened.
*
@@ -1641,22 +1671,6 @@ class API {
});
}
/**
* Notify external application (if API is enabled) that the iframe
* docked state has been changed. The responsibility for implementing
* the dock / undock functionality lies with the external application.
*
* @param {boolean} docked - Whether or not the iframe has been set to
* be docked or undocked.
* @returns {void}
*/
notifyIframeDockStateChanged(docked: boolean) {
this._sendEvent({
name: 'iframe-dock-state-changed',
docked
});
}
/**
* Notify external application of a participant, remote or local, being
* removed from the conference by another participant.
@@ -1906,6 +1920,27 @@ class API {
});
}
/**
* Notify the external application that a PeerConnection lost connectivity. This event is fired only if
* a PC `failed` but connectivity to the rtcstats server is still maintained signaling that there is a
* problem establishing a link between the app and the JVB server or the remote peer in case of P2P.
* Will only fire if rtcstats is enabled.
*
* @param {boolean} isP2P - Type of PC.
* @param {boolean} wasConnected - Was this connection previously connected. If it was it could mean
* that connectivity was disrupted, if not it most likely means that the app could not reach
* the JVB server, or the other peer in case of P2P.
*
* @returns {void}
*/
notifyPeerConnectionFailure(isP2P, wasConnected) {
this._sendEvent({
name: 'peer-connection-failure',
isP2P,
wasConnected
});
}
/**
* Disposes the allocated resources.
*

View File

@@ -37,6 +37,7 @@ const commands = {
closeBreakoutRoom: 'close-breakout-room',
displayName: 'display-name',
e2eeKey: 'e2ee-key',
endConference: 'end-conference',
email: 'email',
grantModerator: 'grant-moderator',
hangup: 'video-hangup',
@@ -105,6 +106,7 @@ const events = {
'camera-error': 'cameraError',
'chat-updated': 'chatUpdated',
'content-sharing-participants-changed': 'contentSharingParticipantsChanged',
'data-channel-closed': 'dataChannelClosed',
'data-channel-opened': 'dataChannelOpened',
'device-list-changed': 'deviceListChanged',
'display-name-change': 'displayNameChange',
@@ -115,7 +117,6 @@ const events = {
'feedback-submitted': 'feedbackSubmitted',
'feedback-prompt-displayed': 'feedbackPromptDisplayed',
'filmstrip-display-changed': 'filmstripDisplayChanged',
'iframe-dock-state-changed': 'iframeDockStateChanged',
'incoming-message': 'incomingMessage',
'knocking-participant': 'knockingParticipant',
'log': 'log',
@@ -133,6 +134,7 @@ const events = {
'participant-role-changed': 'participantRoleChanged',
'participants-pane-toggled': 'participantsPaneToggled',
'password-required': 'passwordRequired',
'peer-connection-failure': 'peerConnectionFailure',
'prejoin-screen-loaded': 'prejoinScreenLoaded',
'proxy-connection-event': 'proxyConnectionEvent',
'raise-hand-updated': 'raiseHandUpdated',

View File

@@ -10,10 +10,6 @@ import { Provider } from 'react-redux';
import { createScreenSharingIssueEvent, sendAnalytics } from '../../../react/features/analytics';
import { Avatar } from '../../../react/features/base/avatar';
import theme from '../../../react/features/base/components/themes/participantsPaneTheme.json';
import {
getMultipleVideoSupportFeatureFlag,
getSourceNameSignalingFeatureFlag
} from '../../../react/features/base/config';
import { i18next } from '../../../react/features/base/i18n';
import { JitsiTrackEvents } from '../../../react/features/base/lib-jitsi-meet';
import { VIDEO_TYPE } from '../../../react/features/base/media';
@@ -29,9 +25,6 @@ import {
} from '../../../react/features/base/tracks';
import { CHAT_SIZE } from '../../../react/features/chat';
import {
isParticipantConnectionStatusActive,
isParticipantConnectionStatusInactive,
isParticipantConnectionStatusInterrupted,
isTrackStreamingStatusActive,
isTrackStreamingStatusInactive,
isTrackStreamingStatusInterrupted
@@ -161,19 +154,16 @@ export default class LargeVideoManager {
* @returns {void}
*/
destroy() {
this.videoContainer.removeResizeListener(
this._onVideoResolutionUpdate);
this.videoContainer.removeResizeListener(this._onVideoResolutionUpdate);
if (getSourceNameSignalingFeatureFlag(APP.store.getState())) {
// Remove track streaming status listener.
// TODO: when this class is converted to a function react component,
// use a custom hook to update a local track streaming status.
if (this.videoTrack && !this.videoTrack.local) {
this.videoTrack.jitsiTrack.off(JitsiTrackEvents.TRACK_STREAMING_STATUS_CHANGED,
this.handleTrackStreamingStatusChanged);
APP.store.dispatch(trackStreamingStatusChanged(this.videoTrack.jitsiTrack,
this.videoTrack.jitsiTrack.getTrackStreamingStatus()));
}
// Remove track streaming status listener.
// TODO: when this class is converted to a function react component,
// use a custom hook to update a local track streaming status.
if (this.videoTrack && !this.videoTrack.local) {
this.videoTrack.jitsiTrack.off(JitsiTrackEvents.TRACK_STREAMING_STATUS_CHANGED,
this.handleTrackStreamingStatusChanged);
APP.store.dispatch(trackStreamingStatusChanged(this.videoTrack.jitsiTrack,
this.videoTrack.jitsiTrack.getTrackStreamingStatus()));
}
this.removePresenceLabel();
@@ -263,48 +253,39 @@ export default class LargeVideoManager {
const isVideoMuted = !stream || stream.isMuted();
const state = APP.store.getState();
const participant = getParticipantById(state, id);
const connectionStatus = participant?.connectionStatus;
const videoTrack = getVideoTrackByParticipant(state, participant);
let isVideoRenderable;
if (getSourceNameSignalingFeatureFlag(state)) {
const videoTrack = getVideoTrackByParticipant(state, participant);
// Remove track streaming status listener from the old track and add it to the new track,
// in order to stop updating track streaming status for the old track and start it for the new track.
// TODO: when this class is converted to a function react component,
// use a custom hook to update a local track streaming status.
if (this.videoTrack?.jitsiTrack?.getSourceName() !== videoTrack?.jitsiTrack?.getSourceName()) {
if (this.videoTrack && !this.videoTrack.local) {
this.videoTrack.jitsiTrack.off(JitsiTrackEvents.TRACK_STREAMING_STATUS_CHANGED,
this.handleTrackStreamingStatusChanged);
APP.store.dispatch(trackStreamingStatusChanged(this.videoTrack.jitsiTrack,
this.videoTrack.jitsiTrack.getTrackStreamingStatus()));
}
this.videoTrack = videoTrack;
if (this.videoTrack && !this.videoTrack.local) {
this.videoTrack.jitsiTrack.on(JitsiTrackEvents.TRACK_STREAMING_STATUS_CHANGED,
this.handleTrackStreamingStatusChanged);
APP.store.dispatch(trackStreamingStatusChanged(this.videoTrack.jitsiTrack,
this.videoTrack.jitsiTrack.getTrackStreamingStatus()));
}
// Remove track streaming status listener from the old track and add it to the new track,
// in order to stop updating track streaming status for the old track and start it for the new track.
// TODO: when this class is converted to a function react component,
// use a custom hook to update a local track streaming status.
if (this.videoTrack?.jitsiTrack?.getSourceName() !== videoTrack?.jitsiTrack?.getSourceName()) {
if (this.videoTrack && !this.videoTrack.local) {
this.videoTrack.jitsiTrack.off(JitsiTrackEvents.TRACK_STREAMING_STATUS_CHANGED,
this.handleTrackStreamingStatusChanged);
APP.store.dispatch(trackStreamingStatusChanged(this.videoTrack.jitsiTrack,
this.videoTrack.jitsiTrack.getTrackStreamingStatus()));
}
const streamingStatusActive = isTrackStreamingStatusActive(videoTrack);
isVideoRenderable = !isVideoMuted
&& (APP.conference.isLocalId(id)
|| isLocalScreenshareParticipant(participant)
|| streamingStatusActive
);
this.videoTrack?.jitsiTrack?.getVideoType() === VIDEO_TYPE.DESKTOP
&& logger.debug(`Remote track ${videoTrack?.jitsiTrack}, isVideoMuted=${isVideoMuted},`
+ ` streamingStatusActive=${streamingStatusActive}, isVideoRenderable=${isVideoRenderable}`);
} else {
isVideoRenderable = !isVideoMuted
&& (APP.conference.isLocalId(id) || isParticipantConnectionStatusActive(participant));
this.videoTrack = videoTrack;
if (this.videoTrack && !this.videoTrack.local) {
this.videoTrack.jitsiTrack.on(JitsiTrackEvents.TRACK_STREAMING_STATUS_CHANGED,
this.handleTrackStreamingStatusChanged);
APP.store.dispatch(trackStreamingStatusChanged(this.videoTrack.jitsiTrack,
this.videoTrack.jitsiTrack.getTrackStreamingStatus()));
}
}
const streamingStatusActive = isTrackStreamingStatusActive(videoTrack);
const isVideoRenderable = !isVideoMuted
&& (APP.conference.isLocalId(id)
|| isLocalScreenshareParticipant(participant)
|| streamingStatusActive
);
this.videoTrack?.jitsiTrack?.getVideoType() === VIDEO_TYPE.DESKTOP
&& logger.debug(`Remote track ${videoTrack?.jitsiTrack}, isVideoMuted=${isVideoMuted},`
+ ` streamingStatusActive=${streamingStatusActive}, isVideoRenderable=${isVideoRenderable}`);
const isAudioOnly = APP.conference.isAudioOnly();
@@ -312,9 +293,7 @@ export default class LargeVideoManager {
// screenshare tile is still created when a remote endpoint starts screenshare to keep the behavior
// consistent and an avatar is displayed on the original participant thumbnail as long as screenshare is in
// progress.
const legacyScreenshare = getMultipleVideoSupportFeatureFlag(state)
&& videoType === VIDEO_TYPE.DESKTOP
&& !isScreenShareParticipant(participant);
const legacyScreenshare = videoType === VIDEO_TYPE.DESKTOP && !isScreenShareParticipant(participant);
const showAvatar
= isVideoContainer
@@ -345,7 +324,6 @@ export default class LargeVideoManager {
// send the event
sendAnalytics(createScreenSharingIssueEvent({
source: 'large-video',
connectionStatus,
isVideoMuted,
isAudioOnly,
isVideoContainer,
@@ -366,15 +344,7 @@ export default class LargeVideoManager {
this.updateLargeVideoAudioLevel(0);
}
let messageKey;
if (getSourceNameSignalingFeatureFlag(state)) {
const videoTrack = getVideoTrackByParticipant(state, participant);
messageKey = isTrackStreamingStatusInactive(videoTrack) ? 'connection.LOW_BANDWIDTH' : null;
} else {
messageKey = isParticipantConnectionStatusInactive(participant) ? 'connection.LOW_BANDWIDTH' : null;
}
const messageKey = isTrackStreamingStatusInactive(videoTrack) ? 'connection.LOW_BANDWIDTH' : null;
// Do not show connection status message in the audio only mode,
// because it's based on the video playback status.
@@ -620,20 +590,11 @@ export default class LargeVideoManager {
if (typeof show !== 'boolean') {
const participant = getParticipantById(APP.store.getState(), this.id);
const state = APP.store.getState();
const videoTrack = getVideoTrackByParticipant(state, participant);
if (getSourceNameSignalingFeatureFlag(state)) {
const videoTrack = getVideoTrackByParticipant(state, participant);
// eslint-disable-next-line no-param-reassign
show = !APP.conference.isLocalId(this.id)
&& (isTrackStreamingStatusInterrupted(videoTrack)
|| isTrackStreamingStatusInactive(videoTrack));
} else {
// eslint-disable-next-line no-param-reassign
show = !APP.conference.isLocalId(this.id)
&& (isParticipantConnectionStatusInterrupted(participant)
|| isParticipantConnectionStatusInactive(participant));
}
// eslint-disable-next-line no-param-reassign
show = !APP.conference.isLocalId(this.id)
&& (isTrackStreamingStatusInterrupted(videoTrack) || isTrackStreamingStatusInactive(videoTrack));
}
if (show) {

View File

@@ -2,17 +2,15 @@
import Logger from '@jitsi/logger';
import { getMultipleVideoSupportFeatureFlag } from '../../../react/features/base/config';
import { MEDIA_TYPE, VIDEO_TYPE } from '../../../react/features/base/media';
import {
getParticipantById,
getPinnedParticipant,
isScreenShareParticipant,
isScreenShareParticipantById
} from '../../../react/features/base/participants';
import {
getTrackByMediaTypeAndParticipant,
getVirtualScreenshareParticipantTrack
getVideoTrackByParticipant
} from '../../../react/features/base/tracks';
import LargeVideoManager from './LargeVideoManager';
@@ -98,7 +96,7 @@ const VideoLayout = {
return VIDEO_TYPE.CAMERA;
}
if (getMultipleVideoSupportFeatureFlag(state) && isScreenShare) {
if (isScreenShare) {
return VIDEO_TYPE.DESKTOP;
}
@@ -113,23 +111,6 @@ const VideoLayout = {
return id || null;
},
/**
* Shows/hides warning about a user's connectivity issues.
*
* @param {string} id - The ID of the remote participant(MUC nickname).
* @returns {void}
*/
onParticipantConnectionStatusChanged(id) {
if (APP.conference.isLocalId(id)) {
return;
}
// We have to trigger full large video update to transition from
// avatar to video on connectivity restored.
this._updateLargeVideoIfDisplayed(id, true);
},
/**
* On last N change event.
*
@@ -189,16 +170,7 @@ const VideoLayout = {
const isOnLarge = this.isCurrentlyOnLarge(id);
const state = APP.store.getState();
const participant = getParticipantById(state, id);
const tracks = state['features/base/tracks'];
let videoTrack;
if (getMultipleVideoSupportFeatureFlag(state) && isScreenShareParticipant(participant)) {
videoTrack = getVirtualScreenshareParticipantTrack(tracks, id);
} else {
videoTrack = getTrackByMediaTypeAndParticipant(tracks, MEDIA_TYPE.VIDEO, id);
}
const videoTrack = getVideoTrackByParticipant(state, participant);
const videoStream = videoTrack?.jitsiTrack;
if (videoStream && forceStreamToReattach) {

210
package-lock.json generated
View File

@@ -27,11 +27,11 @@
"@giphy/react-components": "5.6.0",
"@giphy/react-native-sdk": "1.7.0",
"@hapi/bourne": "2.0.0",
"@jitsi/excalidraw": "https://github.com/jitsi/excalidraw/releases/download/v0.0.11/jitsi-excalidraw-0.0.11.tgz",
"@jitsi/js-utils": "2.0.4",
"@jitsi/excalidraw": "https://github.com/jitsi/excalidraw/releases/download/v0.0.12/jitsi-excalidraw-0.0.12.tgz",
"@jitsi/js-utils": "2.0.5",
"@jitsi/logger": "2.0.0",
"@jitsi/rnnoise-wasm": "0.1.0",
"@jitsi/rtcstats": "9.4.0",
"@jitsi/rtcstats": "9.5.1",
"@matrix-org/olm": "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.3.tgz",
"@microsoft/microsoft-graph-client": "3.0.1",
"@mui/material": "5.10.2",
@@ -55,7 +55,7 @@
"@types/w3c-image-capture": "1.0.6",
"@vladmandic/human": "2.6.5",
"@vladmandic/human-models": "2.5.9",
"@xmldom/xmldom": "0.7.6",
"@xmldom/xmldom": "0.7.9",
"amplitude-js": "8.2.1",
"base64-js": "1.3.1",
"bc-css-flags": "3.0.0",
@@ -74,7 +74,7 @@
"js-md5": "0.6.1",
"js-sha512": "0.8.0",
"jwt-decode": "2.2.0",
"lib-jitsi-meet": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1530.0.0+f2af389e/lib-jitsi-meet.tgz",
"lib-jitsi-meet": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1557.0.0+8df33524/lib-jitsi-meet.tgz",
"lodash": "4.17.21",
"moment": "2.29.4",
"moment-duration-format": "2.2.2",
@@ -88,7 +88,7 @@
"react-focus-lock": "2.5.1",
"react-i18next": "10.11.4",
"react-linkify": "1.0.0-alpha",
"react-native": "0.68.4",
"react-native": "0.68.5",
"react-native-background-timer": "2.4.1",
"react-native-calendar-events": "2.2.0",
"react-native-callstats": "3.73.7",
@@ -114,20 +114,20 @@
"react-native-url-polyfill": "1.3.0",
"react-native-video": "https://git@github.com/react-native-video/react-native-video#7c48ae7c8544b2b537fb60194e9620b9fcceae52",
"react-native-watch-connectivity": "1.0.11",
"react-native-webrtc": "1.106.1",
"react-native-webrtc": "106.0.0",
"react-native-webview": "11.15.1",
"react-native-youtube-iframe": "2.2.1",
"react-redux": "7.1.0",
"react-textarea-autosize": "8.3.0",
"react-transition-group": "2.4.0",
"react-window": "1.8.6",
"react-youtube": "7.13.1",
"react-youtube": "10.1.0",
"redux": "4.0.4",
"redux-thunk": "2.4.1",
"resemblejs": "4.0.0",
"seamless-scroll-polyfill": "2.1.8",
"styled-components": "3.4.9",
"tss-react": "4.0.0",
"tss-react": "4.4.4",
"util": "0.12.1",
"uuid": "8.3.2",
"wasm-check": "2.0.1",
@@ -147,7 +147,7 @@
"@types/js-md5": "0.4.3",
"@types/lodash": "4.14.182",
"@types/react": "17.0.14",
"@types/react-native": "0.68.7",
"@types/react-native": "0.68.9",
"@types/react-redux": "7.1.24",
"@types/react-window": "1.8.5",
"@types/unorm": "1.3.28",
@@ -3746,9 +3746,9 @@
}
},
"node_modules/@jitsi/excalidraw": {
"version": "0.0.11",
"resolved": "https://github.com/jitsi/excalidraw/releases/download/v0.0.11/jitsi-excalidraw-0.0.11.tgz",
"integrity": "sha512-R0om5mYmjjozmJ6i5PXPSQy8/kiMTCqk/QVxOVryEUlHps4UeLNx+Gb/tjzNBN/C6db6ea+Vxt/l27nh9frphg==",
"version": "0.0.12",
"resolved": "https://github.com/jitsi/excalidraw/releases/download/v0.0.12/jitsi-excalidraw-0.0.12.tgz",
"integrity": "sha512-WFzaH5GCZLA5DTSZ6ReqAz9g53mSgi+211zTC7AFZUYZme5tzKpPg55AKkJZA3ZIRikkbKaEfP/dC4QOH5NMmA==",
"license": "MIT",
"peerDependencies": {
"react": "^17.0.2",
@@ -3756,9 +3756,9 @@
}
},
"node_modules/@jitsi/js-utils": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@jitsi/js-utils/-/js-utils-2.0.4.tgz",
"integrity": "sha512-voXa8Y8srv/q3gD9wWOGMPVqOWT4s0n4B/ApkPDAIN8EG/6mpzAfHNMi4BIOQeeo2P0srIdcD6Y/1S/ftjuhYQ==",
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/@jitsi/js-utils/-/js-utils-2.0.5.tgz",
"integrity": "sha512-Aa7lt/sGsDymWnKJtM1RePmR2b2J5TwY3QLv5iOmzMDYR+5RE0NyYc/vKW51JeatDVSkj+LT7kpUDvtJua0rmQ==",
"dependencies": {
"bowser": "2.7.0",
"js-md5": "0.7.3"
@@ -3780,9 +3780,9 @@
"integrity": "sha512-JujivPbOUvdRYa2xqByHYKfKGNGa7ZPyNLaNuh8hEp9XsiNfjaJAHdboq6M1VY9TP+765nyxC0LjpAw1VkikOQ=="
},
"node_modules/@jitsi/rtcstats": {
"version": "9.4.0",
"resolved": "https://registry.npmjs.org/@jitsi/rtcstats/-/rtcstats-9.4.0.tgz",
"integrity": "sha512-NZXgJUAX6Mvexes7zAnHOiU+F2O7NIdyRUcir1YUD85mvBV0DMjuwUnIL5XaYkCzDuE3rTcV2FX9B80BTRlnLQ==",
"version": "9.5.1",
"resolved": "https://registry.npmjs.org/@jitsi/rtcstats/-/rtcstats-9.5.1.tgz",
"integrity": "sha512-UDcsNwPvweQ6owV/chwabd6DsQd2aB4qjqrOB+BlJnETZ+zssGYAey3ezaiNK6nxevwBkbHj980/S9v+2y4btg==",
"dependencies": {
"@jitsi/js-utils": "^2.0.0",
"sdp": "^3.0.3",
@@ -6493,9 +6493,9 @@
}
},
"node_modules/@types/react-native": {
"version": "0.68.7",
"resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.68.7.tgz",
"integrity": "sha512-icGr0/iTPLsvIrUoLvu5uluDFBMZEir+DbwgrHnvazO3fJv1C/kpZZLGplQ3noYyDLjuBynwOUgoaZpGyFI4Iw==",
"version": "0.68.9",
"resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.68.9.tgz",
"integrity": "sha512-/1nbdoynVMjNsudurxHiEf9rSdviKAkV+pVgwpNk21v7gKJfzoHyT3nFunPuMoDgvvdZR5ofUrOJuCPbzF2GUw==",
"dev": true,
"dependencies": {
"@types/react": "^17"
@@ -7349,9 +7349,9 @@
}
},
"node_modules/@xmldom/xmldom": {
"version": "0.7.6",
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.6.tgz",
"integrity": "sha512-HHXP9hskkFQHy8QxxUXkS7946FFIhYVfGqsk0WLwllmexN9x/+R4UBLvurHEuyXRfVEObVR8APuQehykLviwSQ==",
"version": "0.7.9",
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.9.tgz",
"integrity": "sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA==",
"engines": {
"node": ">=10.0.0"
}
@@ -13497,8 +13497,8 @@
},
"node_modules/lib-jitsi-meet": {
"version": "0.0.0",
"resolved": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1530.0.0+f2af389e/lib-jitsi-meet.tgz",
"integrity": "sha512-gqsNJblQ5wgYZJzhbkI7iBbg5Ddn9/EyfiCOwYdB9lHe07yDYco7H/vUH/TxTFTurEHtyV8LKb5KMEhJIKVhpw==",
"resolved": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1557.0.0+8df33524/lib-jitsi-meet.tgz",
"integrity": "sha512-LH24V3aCAyNxrXkYsr4Syz9G+hDyfGo7JUu3suEbh1bS5Y4w8mwzTBHyGazLnD7/NDG5F783DY19/yCzR7stSQ==",
"license": "Apache-2.0",
"dependencies": {
"@jitsi/js-utils": "2.0.0",
@@ -13571,9 +13571,9 @@
}
},
"node_modules/loader-utils": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
"integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.1.tgz",
"integrity": "sha512-1Qo97Y2oKaU+Ro2xnDMR26g1BwMT29jNbem1EvcujW2jqt+j5COXyscjM7bLQkM9HaxI7pkWeW7gnI072yMI9Q==",
"dev": true,
"dependencies": {
"big.js": "^5.2.2",
@@ -14711,9 +14711,9 @@
}
},
"node_modules/null-loader/node_modules/loader-utils": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
"integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz",
"integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==",
"dependencies": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
@@ -16128,9 +16128,9 @@
}
},
"node_modules/react-native": {
"version": "0.68.4",
"resolved": "https://registry.npmjs.org/react-native/-/react-native-0.68.4.tgz",
"integrity": "sha512-Hp5qwztQ1XNnV43QTz1kUx33iZHmJqbbe7L19V9psaWtX/h9j6SEtZ3UHBrigIPlppkIP1E5x3CDr9FdD4d6CA==",
"version": "0.68.5",
"resolved": "https://registry.npmjs.org/react-native/-/react-native-0.68.5.tgz",
"integrity": "sha512-t3kiQ/gumFV+0r/NRSIGtYxanjY4da0utFqHgkMcRPJVwXFWC0Fr8YiOeRGYO1dp8EfrSsOjtfWic/inqVYlbQ==",
"dependencies": {
"@jest/create-cache-key-function": "^27.0.1",
"@react-native-community/cli": "^7.0.3",
@@ -16501,13 +16501,14 @@
}
},
"node_modules/react-native-webrtc": {
"version": "1.106.1",
"resolved": "https://registry.npmjs.org/react-native-webrtc/-/react-native-webrtc-1.106.1.tgz",
"integrity": "sha512-955gqWFdISARz9D4hmnPzKQwpaU+AGqUbU+vBjzLCozUseSJ69tTQg2cShyPCBH6A1rwJQE+mrdjcpkeGbx3pQ==",
"version": "106.0.0",
"resolved": "https://registry.npmjs.org/react-native-webrtc/-/react-native-webrtc-106.0.0.tgz",
"integrity": "sha512-nFl8WSNGMNxuIiaNAiJvILRcEC65yRxPOWTexLrM+vo44syt/4chEvzN9eOqXiPsOmsECQmwZupCUGR5XABUNg==",
"hasInstallScript": true,
"dependencies": {
"adm-zip": "0.5.9",
"base64-js": "1.5.1",
"debug": "4.3.4",
"event-target-shim": "6.0.2",
"tar": "6.1.11"
},
@@ -16766,36 +16767,21 @@
}
},
"node_modules/react-youtube": {
"version": "7.13.1",
"resolved": "https://registry.npmjs.org/react-youtube/-/react-youtube-7.13.1.tgz",
"integrity": "sha512-b++TLHmHDpd0ZBS1wcbYabbuchU+W4jtx5A2MUQX0BINNKKsaIQX29sn/aLvZ9v5luwAoceia3VGtyz9blaB9w==",
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/react-youtube/-/react-youtube-10.1.0.tgz",
"integrity": "sha512-ZfGtcVpk0SSZtWCSTYOQKhfx5/1cfyEW1JN/mugGNfAxT3rmVJeMbGpA9+e78yG21ls5nc/5uZJETE3cm3knBg==",
"dependencies": {
"fast-deep-equal": "3.1.3",
"prop-types": "15.7.2",
"prop-types": "15.8.1",
"youtube-player": "5.5.2"
},
"engines": {
"node": ">= 10.x"
"node": ">= 14.x"
},
"peerDependencies": {
"react": ">=0.14.1"
}
},
"node_modules/react-youtube/node_modules/prop-types": {
"version": "15.7.2",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
"integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
"dependencies": {
"loose-envify": "^1.4.0",
"object-assign": "^4.1.1",
"react-is": "^16.8.1"
}
},
"node_modules/react-youtube/node_modules/react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
"node_modules/readable-stream": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
@@ -18191,9 +18177,9 @@
}
},
"node_modules/string-replace-loader/node_modules/loader-utils": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
"integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz",
"integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==",
"dev": true,
"dependencies": {
"big.js": "^5.2.2",
@@ -19019,9 +19005,9 @@
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
},
"node_modules/tss-react": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/tss-react/-/tss-react-4.0.0.tgz",
"integrity": "sha512-pPkOKWiWWPbKdQFnGGeHEgRceUwkjrv0eldVCAdBll3j6Y3Ys/xwqsnlWYwWOU3SMJygVRE/S4CsIYx6KPpOkA==",
"version": "4.4.4",
"resolved": "https://registry.npmjs.org/tss-react/-/tss-react-4.4.4.tgz",
"integrity": "sha512-Bzyg99bIQq3Lk4Rwc5XMOps58c1biw1rghCkApIX5XkAB+/VjGCIFSl63PePhmiRNvKRxJRpawGPPxHytiw1TA==",
"dependencies": {
"@emotion/cache": "*",
"@emotion/serialize": "*",
@@ -23178,13 +23164,13 @@
"dev": true
},
"@jitsi/excalidraw": {
"version": "https://github.com/jitsi/excalidraw/releases/download/v0.0.11/jitsi-excalidraw-0.0.11.tgz",
"integrity": "sha512-R0om5mYmjjozmJ6i5PXPSQy8/kiMTCqk/QVxOVryEUlHps4UeLNx+Gb/tjzNBN/C6db6ea+Vxt/l27nh9frphg=="
"version": "https://github.com/jitsi/excalidraw/releases/download/v0.0.12/jitsi-excalidraw-0.0.12.tgz",
"integrity": "sha512-WFzaH5GCZLA5DTSZ6ReqAz9g53mSgi+211zTC7AFZUYZme5tzKpPg55AKkJZA3ZIRikkbKaEfP/dC4QOH5NMmA=="
},
"@jitsi/js-utils": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@jitsi/js-utils/-/js-utils-2.0.4.tgz",
"integrity": "sha512-voXa8Y8srv/q3gD9wWOGMPVqOWT4s0n4B/ApkPDAIN8EG/6mpzAfHNMi4BIOQeeo2P0srIdcD6Y/1S/ftjuhYQ==",
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/@jitsi/js-utils/-/js-utils-2.0.5.tgz",
"integrity": "sha512-Aa7lt/sGsDymWnKJtM1RePmR2b2J5TwY3QLv5iOmzMDYR+5RE0NyYc/vKW51JeatDVSkj+LT7kpUDvtJua0rmQ==",
"requires": {
"bowser": "2.7.0",
"js-md5": "0.7.3"
@@ -23208,9 +23194,9 @@
"integrity": "sha512-JujivPbOUvdRYa2xqByHYKfKGNGa7ZPyNLaNuh8hEp9XsiNfjaJAHdboq6M1VY9TP+765nyxC0LjpAw1VkikOQ=="
},
"@jitsi/rtcstats": {
"version": "9.4.0",
"resolved": "https://registry.npmjs.org/@jitsi/rtcstats/-/rtcstats-9.4.0.tgz",
"integrity": "sha512-NZXgJUAX6Mvexes7zAnHOiU+F2O7NIdyRUcir1YUD85mvBV0DMjuwUnIL5XaYkCzDuE3rTcV2FX9B80BTRlnLQ==",
"version": "9.5.1",
"resolved": "https://registry.npmjs.org/@jitsi/rtcstats/-/rtcstats-9.5.1.tgz",
"integrity": "sha512-UDcsNwPvweQ6owV/chwabd6DsQd2aB4qjqrOB+BlJnETZ+zssGYAey3ezaiNK6nxevwBkbHj980/S9v+2y4btg==",
"requires": {
"@jitsi/js-utils": "^2.0.0",
"sdp": "^3.0.3",
@@ -25178,9 +25164,9 @@
}
},
"@types/react-native": {
"version": "0.68.7",
"resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.68.7.tgz",
"integrity": "sha512-icGr0/iTPLsvIrUoLvu5uluDFBMZEir+DbwgrHnvazO3fJv1C/kpZZLGplQ3noYyDLjuBynwOUgoaZpGyFI4Iw==",
"version": "0.68.9",
"resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.68.9.tgz",
"integrity": "sha512-/1nbdoynVMjNsudurxHiEf9rSdviKAkV+pVgwpNk21v7gKJfzoHyT3nFunPuMoDgvvdZR5ofUrOJuCPbzF2GUw==",
"dev": true,
"requires": {
"@types/react": "^17"
@@ -25794,9 +25780,9 @@
"dev": true
},
"@xmldom/xmldom": {
"version": "0.7.6",
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.6.tgz",
"integrity": "sha512-HHXP9hskkFQHy8QxxUXkS7946FFIhYVfGqsk0WLwllmexN9x/+R4UBLvurHEuyXRfVEObVR8APuQehykLviwSQ=="
"version": "0.7.9",
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.9.tgz",
"integrity": "sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA=="
},
"@xobotyi/scrollbar-width": {
"version": "1.9.5",
@@ -30510,8 +30496,8 @@
}
},
"lib-jitsi-meet": {
"version": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1530.0.0+f2af389e/lib-jitsi-meet.tgz",
"integrity": "sha512-gqsNJblQ5wgYZJzhbkI7iBbg5Ddn9/EyfiCOwYdB9lHe07yDYco7H/vUH/TxTFTurEHtyV8LKb5KMEhJIKVhpw==",
"version": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1557.0.0+8df33524/lib-jitsi-meet.tgz",
"integrity": "sha512-LH24V3aCAyNxrXkYsr4Syz9G+hDyfGo7JUu3suEbh1bS5Y4w8mwzTBHyGazLnD7/NDG5F783DY19/yCzR7stSQ==",
"requires": {
"@jitsi/js-utils": "2.0.0",
"@jitsi/logger": "2.0.0",
@@ -30579,9 +30565,9 @@
"dev": true
},
"loader-utils": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
"integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.1.tgz",
"integrity": "sha512-1Qo97Y2oKaU+Ro2xnDMR26g1BwMT29jNbem1EvcujW2jqt+j5COXyscjM7bLQkM9HaxI7pkWeW7gnI072yMI9Q==",
"dev": true,
"requires": {
"big.js": "^5.2.2",
@@ -31488,9 +31474,9 @@
},
"dependencies": {
"loader-utils": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
"integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz",
"integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==",
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
@@ -32535,9 +32521,9 @@
}
},
"react-native": {
"version": "0.68.4",
"resolved": "https://registry.npmjs.org/react-native/-/react-native-0.68.4.tgz",
"integrity": "sha512-Hp5qwztQ1XNnV43QTz1kUx33iZHmJqbbe7L19V9psaWtX/h9j6SEtZ3UHBrigIPlppkIP1E5x3CDr9FdD4d6CA==",
"version": "0.68.5",
"resolved": "https://registry.npmjs.org/react-native/-/react-native-0.68.5.tgz",
"integrity": "sha512-t3kiQ/gumFV+0r/NRSIGtYxanjY4da0utFqHgkMcRPJVwXFWC0Fr8YiOeRGYO1dp8EfrSsOjtfWic/inqVYlbQ==",
"requires": {
"@jest/create-cache-key-function": "^27.0.1",
"@react-native-community/cli": "^7.0.3",
@@ -32804,12 +32790,13 @@
}
},
"react-native-webrtc": {
"version": "1.106.1",
"resolved": "https://registry.npmjs.org/react-native-webrtc/-/react-native-webrtc-1.106.1.tgz",
"integrity": "sha512-955gqWFdISARz9D4hmnPzKQwpaU+AGqUbU+vBjzLCozUseSJ69tTQg2cShyPCBH6A1rwJQE+mrdjcpkeGbx3pQ==",
"version": "106.0.0",
"resolved": "https://registry.npmjs.org/react-native-webrtc/-/react-native-webrtc-106.0.0.tgz",
"integrity": "sha512-nFl8WSNGMNxuIiaNAiJvILRcEC65yRxPOWTexLrM+vo44syt/4chEvzN9eOqXiPsOmsECQmwZupCUGR5XABUNg==",
"requires": {
"adm-zip": "0.5.9",
"base64-js": "1.5.1",
"debug": "4.3.4",
"event-target-shim": "6.0.2",
"tar": "6.1.11"
},
@@ -32978,30 +32965,13 @@
}
},
"react-youtube": {
"version": "7.13.1",
"resolved": "https://registry.npmjs.org/react-youtube/-/react-youtube-7.13.1.tgz",
"integrity": "sha512-b++TLHmHDpd0ZBS1wcbYabbuchU+W4jtx5A2MUQX0BINNKKsaIQX29sn/aLvZ9v5luwAoceia3VGtyz9blaB9w==",
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/react-youtube/-/react-youtube-10.1.0.tgz",
"integrity": "sha512-ZfGtcVpk0SSZtWCSTYOQKhfx5/1cfyEW1JN/mugGNfAxT3rmVJeMbGpA9+e78yG21ls5nc/5uZJETE3cm3knBg==",
"requires": {
"fast-deep-equal": "3.1.3",
"prop-types": "15.7.2",
"prop-types": "15.8.1",
"youtube-player": "5.5.2"
},
"dependencies": {
"prop-types": {
"version": "15.7.2",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
"integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
"requires": {
"loose-envify": "^1.4.0",
"object-assign": "^4.1.1",
"react-is": "^16.8.1"
}
},
"react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
}
}
},
"readable-stream": {
@@ -34116,9 +34086,9 @@
},
"dependencies": {
"loader-utils": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
"integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz",
"integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==",
"dev": true,
"requires": {
"big.js": "^5.2.2",
@@ -34738,9 +34708,9 @@
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
},
"tss-react": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/tss-react/-/tss-react-4.0.0.tgz",
"integrity": "sha512-pPkOKWiWWPbKdQFnGGeHEgRceUwkjrv0eldVCAdBll3j6Y3Ys/xwqsnlWYwWOU3SMJygVRE/S4CsIYx6KPpOkA==",
"version": "4.4.4",
"resolved": "https://registry.npmjs.org/tss-react/-/tss-react-4.4.4.tgz",
"integrity": "sha512-Bzyg99bIQq3Lk4Rwc5XMOps58c1biw1rghCkApIX5XkAB+/VjGCIFSl63PePhmiRNvKRxJRpawGPPxHytiw1TA==",
"requires": {
"@emotion/cache": "*",
"@emotion/serialize": "*",

View File

@@ -32,11 +32,11 @@
"@giphy/react-components": "5.6.0",
"@giphy/react-native-sdk": "1.7.0",
"@hapi/bourne": "2.0.0",
"@jitsi/excalidraw": "https://github.com/jitsi/excalidraw/releases/download/v0.0.11/jitsi-excalidraw-0.0.11.tgz",
"@jitsi/js-utils": "2.0.4",
"@jitsi/excalidraw": "https://github.com/jitsi/excalidraw/releases/download/v0.0.12/jitsi-excalidraw-0.0.12.tgz",
"@jitsi/js-utils": "2.0.5",
"@jitsi/logger": "2.0.0",
"@jitsi/rnnoise-wasm": "0.1.0",
"@jitsi/rtcstats": "9.4.0",
"@jitsi/rtcstats": "9.5.1",
"@matrix-org/olm": "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.3.tgz",
"@microsoft/microsoft-graph-client": "3.0.1",
"@mui/material": "5.10.2",
@@ -60,7 +60,7 @@
"@types/w3c-image-capture": "1.0.6",
"@vladmandic/human": "2.6.5",
"@vladmandic/human-models": "2.5.9",
"@xmldom/xmldom": "0.7.6",
"@xmldom/xmldom": "0.7.9",
"amplitude-js": "8.2.1",
"base64-js": "1.3.1",
"bc-css-flags": "3.0.0",
@@ -79,7 +79,7 @@
"js-md5": "0.6.1",
"js-sha512": "0.8.0",
"jwt-decode": "2.2.0",
"lib-jitsi-meet": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1530.0.0+f2af389e/lib-jitsi-meet.tgz",
"lib-jitsi-meet": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1557.0.0+8df33524/lib-jitsi-meet.tgz",
"lodash": "4.17.21",
"moment": "2.29.4",
"moment-duration-format": "2.2.2",
@@ -93,7 +93,7 @@
"react-focus-lock": "2.5.1",
"react-i18next": "10.11.4",
"react-linkify": "1.0.0-alpha",
"react-native": "0.68.4",
"react-native": "0.68.5",
"react-native-background-timer": "2.4.1",
"react-native-calendar-events": "2.2.0",
"react-native-callstats": "3.73.7",
@@ -119,20 +119,20 @@
"react-native-url-polyfill": "1.3.0",
"react-native-video": "https://git@github.com/react-native-video/react-native-video#7c48ae7c8544b2b537fb60194e9620b9fcceae52",
"react-native-watch-connectivity": "1.0.11",
"react-native-webrtc": "1.106.1",
"react-native-webrtc": "106.0.0",
"react-native-webview": "11.15.1",
"react-native-youtube-iframe": "2.2.1",
"react-redux": "7.1.0",
"react-textarea-autosize": "8.3.0",
"react-transition-group": "2.4.0",
"react-window": "1.8.6",
"react-youtube": "7.13.1",
"react-youtube": "10.1.0",
"redux": "4.0.4",
"redux-thunk": "2.4.1",
"resemblejs": "4.0.0",
"seamless-scroll-polyfill": "2.1.8",
"styled-components": "3.4.9",
"tss-react": "4.0.0",
"tss-react": "4.4.4",
"util": "0.12.1",
"uuid": "8.3.2",
"wasm-check": "2.0.1",
@@ -152,7 +152,7 @@
"@types/js-md5": "0.4.3",
"@types/lodash": "4.14.182",
"@types/react": "17.0.14",
"@types/react-native": "0.68.7",
"@types/react-native": "0.68.9",
"@types/react-redux": "7.1.24",
"@types/react-window": "1.8.5",
"@types/unorm": "1.3.28",

View File

@@ -4,7 +4,7 @@ import React, { Component } from 'react';
// We need to reference these files directly to avoid loading things that are not available
// in this environment (e.g. JitsiMeetJS or interfaceConfig)
import { IconMicrophoneEmpty, IconMicrophoneEmptySlash } from '../base/icons';
import { IconMic, IconMicSlash } from '../base/icons';
import type { Props } from '../base/toolbox/components/AbstractButton';
import ToolbarButton from './ToolbarButton';
@@ -31,8 +31,8 @@ type State = {
* Stateless "mute/unmute audio" button for the Always-on-Top windows.
*/
export default class AudioMuteButton extends Component<Props, State> {
icon = IconMicrophoneEmpty;
toggledIcon = IconMicrophoneEmptySlash;
icon = IconMic;
toggledIcon = IconMicSlash;
accessibilityLabel = 'Audio mute';
/**

View File

@@ -3,7 +3,7 @@ import React, { Component } from 'react';
// We need to reference these files directly to avoid loading things that are not available
// in this environment (e.g. JitsiMeetJS or interfaceConfig)
import { IconCameraEmpty, IconCameraEmptyDisabled } from '../base/icons';
import { IconVideo, IconVideoOff } from '../base/icons';
import type { Props } from '../base/toolbox/components/AbstractButton';
import ToolbarButton from './ToolbarButton';
@@ -31,8 +31,8 @@ type State = {
*/
export default class VideoMuteButton extends Component<Props, State> {
icon = IconCameraEmpty;
toggledIcon = IconCameraEmptyDisabled;
icon = IconVideo;
toggledIcon = IconVideoOff;
accessibilityLabel = 'Video mute';
/**

View File

@@ -1,5 +1,3 @@
/* eslint-disable lines-around-comment */
import logger from '../logger';
import AbstractHandler, { IEvent } from './AbstractHandler';
@@ -103,8 +101,10 @@ export default class AmplitudeHandler extends AbstractHandler {
return {
sessionId: amplitude.getInstance().getSessionId(),
// @ts-ignore
deviceId: amplitude.getInstance().options.deviceId,
// @ts-ignore
userId: amplitude.getInstance().options.userId
};

View File

@@ -159,10 +159,9 @@ MiddlewareRegistry.register(store => next => action => {
const state = getState();
const { localTracksDuration } = state['features/analytics'];
if (localTracksDuration.conference.startedTime === -1 || action.mediaType === 'presenter') {
if (localTracksDuration.conference.startedTime === -1) {
// We don't want to track the media duration if the conference is not joined yet because otherwise we won't
// be able to compare them with the conference duration (from conference join to conference will leave).
// Also, do not track media duration for presenter tracks.
break;
}
dispatch({

View File

@@ -21,6 +21,7 @@ import { isVpaasMeeting } from '../jaas/functions';
import { clearNotifications, showNotification } from '../notifications/actions';
import { NOTIFICATION_TIMEOUT_TYPE } from '../notifications/constants';
import { setFatalError } from '../overlay/actions';
import { isWelcomePageEnabled } from '../welcome/functions';
import {
redirectToStaticPage,
@@ -203,7 +204,7 @@ export function maybeRedirectToWelcomePage(options: { feedbackSubmitted?: boolea
// if Welcome page is enabled redirect to welcome page after 3 sec, if
// there is a thank you message to be shown, 0.5s otherwise.
if (getState()['features/base/config'].enableWelcomePage) {
if (isWelcomePageEnabled(getState())) {
setTimeout(
() => {
dispatch(redirectWithStoredParams('/'));

View File

@@ -1,7 +1,7 @@
import { IStateful } from '../base/app/types';
import { MEDIA_TYPE } from '../base/media/constants';
import { toState } from '../base/redux/functions';
import { isLocalCameraTrackMuted, isLocalTrackMuted } from '../base/tracks/functions';
import { isLocalTrackMuted } from '../base/tracks/functions';
import { addHashParamsToURL } from '../base/util/uri';
/**
@@ -14,7 +14,7 @@ import { addHashParamsToURL } from '../base/util/uri';
export function addTrackStateToURL(url: string, stateful: IStateful) {
const state = toState(stateful);
const tracks = state['features/base/tracks'];
const isVideoMuted = isLocalCameraTrackMuted(tracks);
const isVideoMuted = isLocalTrackMuted(tracks, MEDIA_TYPE.VIDEO);
const isAudioMuted = isLocalTrackMuted(tracks, MEDIA_TYPE.AUDIO);
return addHashParamsToURL(new URL(url), { // use new URL object in order to not pollute the passed parameter.

View File

@@ -2,7 +2,7 @@ import { NativeModules } from 'react-native';
import { IStateful } from '../base/app/types';
import { toState } from '../base/redux/functions';
import { getServerURL } from '../base/settings/functions';
import { getServerURL } from '../base/settings/functions.native';
export * from './functions.any';

View File

@@ -8,7 +8,7 @@ import { Conference } from '../conference';
import { getDeepLinkingPage } from '../deep-linking';
import { UnsupportedDesktopBrowser } from '../unsupported-browser';
import { BlankPage, WelcomePage } from '../welcome';
import { isWelcomePageEnabled } from '../welcome/functions';
import { getCustomLandingPageURL, isWelcomePageEnabled } from '../welcome/functions';
/**
* Determines which route is to be rendered in order to depict a specific Redux
@@ -75,7 +75,13 @@ function _getWebWelcomePageRoute(state) {
if (isWelcomePageEnabled(state)) {
if (isSupportedBrowser()) {
route.component = WelcomePage;
const customLandingPage = getCustomLandingPageURL(state);
if (customLandingPage) {
route.href = customLandingPage;
} else {
route.component = WelcomePage;
}
} else {
route.component = UnsupportedDesktopBrowser;
}

View File

@@ -11,6 +11,7 @@ import '../base/media/middleware';
import '../base/net-info/middleware';
import '../base/participants/middleware';
import '../base/responsive-ui/middleware';
import '../base/redux/middleware';
import '../base/settings/middleware';
import '../base/sounds/middleware';
import '../base/testing/middleware';

View File

@@ -2,7 +2,6 @@ import '../authentication/middleware';
import '../base/i18n/middleware';
import '../base/devices/middleware';
import '../base/media/middleware';
import '../base/redux/middleware';
import '../dynamic-branding/middleware';
import '../e2ee/middleware';
import '../external-api/middleware';

View File

@@ -1,11 +1,8 @@
// @flow
import type { Dispatch } from 'redux';
import { appNavigate } from '../app/actions';
import { IStore } from '../app/types';
import { conferenceLeft } from '../base/conference/actions';
import { connectionFailed } from '../base/connection/actions.native';
import { set } from '../base/redux';
import { set } from '../base/redux/functions';
import { CANCEL_LOGIN } from './actionTypes';
import { stopWaitForOwner } from './actions.any';
@@ -20,7 +17,7 @@ export * from './actions.any';
* }}
*/
export function cancelLogin() {
return (dispatch: Dispatch<any>, getState: Function) => {
return (dispatch: IStore['dispatch'], getState: IStore['getState']) => {
dispatch({ type: CANCEL_LOGIN });
// XXX The error associated with CONNECTION_FAILED was marked as
@@ -36,8 +33,8 @@ export function cancelLogin() {
passwordRequired
&& dispatch(
connectionFailed(
passwordRequired,
set(error, 'recoverable', false)));
passwordRequired, // @ts-ignore
set(error, 'recoverable', false) as any));
};
}
@@ -47,7 +44,7 @@ export function cancelLogin() {
* @returns {Function}
*/
export function cancelWaitForOwner() {
return (dispatch: Dispatch<any>, getState: Function) => {
return (dispatch: IStore['dispatch'], getState: IStore['getState']) => {
dispatch(stopWaitForOwner());
// XXX The error associated with CONFERENCE_FAILED was marked as

View File

@@ -1,6 +1,5 @@
// @flow
import JitsiMeetJS from '../../../react/features/base/lib-jitsi-meet';
import { IConfig } from '../base/config/configType';
import JitsiMeetJS from '../base/lib-jitsi-meet';
/**
@@ -9,7 +8,7 @@ import JitsiMeetJS from '../../../react/features/base/lib-jitsi-meet';
* @param {Object} config - Configuration state object from store.
* @returns {boolean}
*/
export const isTokenAuthEnabled = (config: Object) =>
export const isTokenAuthEnabled = (config: IConfig) =>
typeof config.tokenAuthUrl === 'string'
&& config.tokenAuthUrl.length;
@@ -20,6 +19,6 @@ export const isTokenAuthEnabled = (config: Object) =>
* @param {Object} config - Configuration state object from store.
* @returns {string}
*/
export const getTokenAuthUrl = (config: Object) =>
export const getTokenAuthUrl = (config: IConfig) =>
JitsiMeetJS.util.AuthUtil.getTokenAuthUrl.bind(null,
config.tokenAuthUrl);
config.tokenAuthUrl);

View File

@@ -1,20 +1,18 @@
// @flow
import type { Dispatch } from 'redux';
import { appNavigate } from '../app/actions';
import { appNavigate } from '../app/actions.native';
import { IStore } from '../app/types';
import {
CONFERENCE_FAILED,
CONFERENCE_JOINED,
CONFERENCE_LEFT
} from '../base/conference';
import { CONNECTION_ESTABLISHED, CONNECTION_FAILED } from '../base/connection';
import { hideDialog, isDialogOpen } from '../base/dialog';
} from '../base/conference/actionTypes';
import { CONNECTION_ESTABLISHED, CONNECTION_FAILED } from '../base/connection/actionTypes';
import { hideDialog } from '../base/dialog/actions';
import { isDialogOpen } from '../base/dialog/functions';
import {
JitsiConferenceErrors,
JitsiConnectionErrors
} from '../base/lib-jitsi-meet';
import { MiddlewareRegistry } from '../base/redux';
import MiddlewareRegistry from '../base/redux/MiddlewareRegistry';
import {
CANCEL_LOGIN,
@@ -26,7 +24,7 @@ import {
openLoginDialog,
openWaitForOwnerDialog,
stopWaitForOwner,
waitForOwner } from './actions.native';
waitForOwner } from './actions.native'; // @ts-ignore
import { LoginDialog, WaitForOwnerDialog } from './components';
/**
@@ -44,7 +42,7 @@ MiddlewareRegistry.register(store => next => action => {
const { dispatch, getState } = store;
const { thenableWithCancel } = getState()['features/authentication'];
thenableWithCancel && thenableWithCancel.cancel();
thenableWithCancel?.cancel();
// The LoginDialog can be opened on top of "wait for owner". The app
// should navigate only if LoginDialog was open without the
@@ -142,7 +140,7 @@ MiddlewareRegistry.register(store => next => action => {
case WAIT_FOR_OWNER: {
_clearExistingWaitForOwnerTimeout(store);
const { handler, timeoutMs } = action;
const { handler, timeoutMs }: { handler: () => void; timeoutMs: number; } = action;
action.waitForOwnerTimeoutID = setTimeout(handler, timeoutMs);
@@ -165,7 +163,7 @@ MiddlewareRegistry.register(store => next => action => {
* @returns {void}
*/
function _clearExistingWaitForOwnerTimeout(
{ getState }: { getState: Function }) {
{ getState }: IStore) {
const { waitForOwnerTimeoutID } = getState()['features/authentication'];
waitForOwnerTimeoutID && clearTimeout(waitForOwnerTimeoutID);
@@ -177,7 +175,7 @@ function _clearExistingWaitForOwnerTimeout(
* @param {Object} store - The redux store.
* @returns {void}
*/
function _hideLoginDialog({ dispatch }: { dispatch: Dispatch<any> }) {
function _hideLoginDialog({ dispatch }: IStore) {
dispatch(hideDialog(LoginDialog));
}
@@ -187,6 +185,6 @@ function _hideLoginDialog({ dispatch }: { dispatch: Dispatch<any> }) {
* @param {Object} store - The redux store.
* @returns {boolean}
*/
function _isWaitingForOwner({ getState }: { getState: Function }) {
function _isWaitingForOwner({ getState }: IStore) {
return Boolean(getState()['features/authentication'].waitForOwnerTimeoutID);
}

View File

@@ -1,17 +1,17 @@
// @flow
import { maybeRedirectToWelcomePage } from '../app/actions';
import { maybeRedirectToWelcomePage } from '../app/actions.web';
import { IStore } from '../app/types';
import {
CONFERENCE_FAILED,
CONFERENCE_JOINED,
CONFERENCE_LEFT
} from '../base/conference';
import { CONNECTION_ESTABLISHED } from '../base/connection';
import { hideDialog, isDialogOpen } from '../base/dialog';
} from '../base/conference/actionTypes';
import { CONNECTION_ESTABLISHED } from '../base/connection/actionTypes';
import { hideDialog } from '../base/dialog/actions';
import { isDialogOpen } from '../base/dialog/functions';
import {
JitsiConferenceErrors
} from '../base/lib-jitsi-meet';
import { MiddlewareRegistry } from '../base/redux';
import MiddlewareRegistry from '../base/redux/MiddlewareRegistry';
import {
CANCEL_LOGIN,
@@ -24,6 +24,8 @@ import {
openWaitForOwnerDialog,
stopWaitForOwner
} from './actions.web';
// eslint-disable-next-line lines-around-comment
// @ts-ignore
import { LoginDialog, WaitForOwnerDialog } from './components';
/**
@@ -113,7 +115,7 @@ MiddlewareRegistry.register(store => next => action => {
case WAIT_FOR_OWNER: {
_clearExistingWaitForOwnerTimeout(store);
const { handler, timeoutMs } = action;
const { handler, timeoutMs }: { handler: () => void; timeoutMs: number; } = action;
action.waitForOwnerTimeoutID = setTimeout(handler, timeoutMs);
@@ -134,7 +136,7 @@ MiddlewareRegistry.register(store => next => action => {
* @returns {void}
*/
function _clearExistingWaitForOwnerTimeout(
{ getState }: { getState: Function }) {
{ getState }: IStore) {
const { waitForOwnerTimeoutID } = getState()['features/authentication'];
waitForOwnerTimeoutID && clearTimeout(waitForOwnerTimeoutID);
@@ -146,6 +148,6 @@ function _clearExistingWaitForOwnerTimeout(
* @param {Object} store - The redux store.
* @returns {void}
*/
function _isWaitingForOwner({ getState }: { getState: Function }) {
function _isWaitingForOwner({ getState }: IStore) {
return getState()['features/authentication'].waitForOwnerTimeoutID;
}

View File

@@ -12,7 +12,9 @@ import {
export interface IAuthenticationState {
error?: Object | undefined;
progress?: number | undefined;
thenableWithCancel?: Object | undefined;
thenableWithCancel?: {
cancel: Function;
};
waitForOwnerTimeoutID?: number;
}

View File

@@ -26,6 +26,5 @@ export const CS_MODERATION_NOTIFICATION_ID = 'screensharing-moderation';
export const MODERATION_NOTIFICATIONS = {
[MEDIA_TYPE.AUDIO]: AUDIO_MODERATION_NOTIFICATION_ID,
[MEDIA_TYPE.SCREENSHARE]: CS_MODERATION_NOTIFICATION_ID,
[MEDIA_TYPE.VIDEO]: VIDEO_MODERATION_NOTIFICATION_ID,
[MEDIA_TYPE.PRESENTER]: CS_MODERATION_NOTIFICATION_ID
[MEDIA_TYPE.VIDEO]: VIDEO_MODERATION_NOTIFICATION_ID
};

View File

@@ -48,7 +48,6 @@ import {
ASKED_TO_UNMUTE_NOTIFICATION_ID,
ASKED_TO_UNMUTE_SOUND_ID,
AUDIO_MODERATION_NOTIFICATION_ID,
CS_MODERATION_NOTIFICATION_ID,
VIDEO_MODERATION_NOTIFICATION_ID
} from './constants';
import {
@@ -89,11 +88,6 @@ MiddlewareRegistry.register(({ dispatch, getState }) => next => action => {
uid = VIDEO_MODERATION_NOTIFICATION_ID;
break;
}
case MEDIA_TYPE.PRESENTER: {
titleKey = 'notify.moderationInEffectCSTitle';
uid = CS_MODERATION_NOTIFICATION_ID;
break;
}
}
dispatch(showNotification({

View File

@@ -1,5 +1,4 @@
/* eslint-disable react/jsx-no-bind */
import { Theme } from '@mui/material';
import React, { useEffect, useState } from 'react';
import { makeStyles } from 'tss-react/mui';
@@ -8,7 +7,7 @@ import { IconCheck, IconCopy } from '../icons/svg';
import { withPixelLineHeight } from '../styles/functions.web';
import { copyText } from '../util/copyText.web';
const useStyles = makeStyles()((theme: Theme) => {
const useStyles = makeStyles()(theme => {
return {
copyButton: {
...withPixelLineHeight(theme.typography.bodyShortBold),
@@ -31,7 +30,7 @@ const useStyles = makeStyles()((theme: Theme) => {
background: theme.palette.success02
},
'& > div > svg > path': {
'& > div > svg': {
fill: theme.palette.icon01
}
},

View File

@@ -1,5 +1,3 @@
// @flow
import { ColorPalette, getRGBAFormat } from '../styles';
/**
@@ -14,21 +12,6 @@ export default {
icon: 'rgb(28, 32, 37)',
text: 'rgb(28, 32, 37)'
},
'Chat': {
displayName: 'rgb(94, 109, 121)',
localMsgBackground: 'rgb(215, 230, 249)',
lobbyMsgBackground: 'rgb(106, 80, 211)',
lobbyMsgNotice: 'rgb(16, 10, 41)',
privateMsgBackground: 'rgb(250, 219, 219)',
privateMsgNotice: 'rgb(186, 39, 58)',
remoteMsgBackground: 'rgb(241, 242, 246)',
replyBorder: 'rgb(219, 197, 200)',
replyIcon: 'rgb(94, 109, 121)'
},
'Conference': {
inviteButtonBackground: 'rgb(0, 119, 225)',
onVideoText: 'white'
},
'Dialog': {},
'Header': {
background: ColorPalette.blue,

View File

@@ -1,4 +1,3 @@
import { Theme } from '@mui/material';
import React, { ReactNode } from 'react';
import { makeStyles } from 'tss-react/mui';
@@ -76,7 +75,7 @@ interface IProps {
}
const useStyles = makeStyles()((theme: Theme) => {
const useStyles = makeStyles()(theme => {
return {
container: {
alignItems: 'center',

View File

@@ -138,6 +138,18 @@ export const CONFERENCE_WILL_LEAVE = 'CONFERENCE_WILL_LEAVE';
*/
export const DATA_CHANNEL_OPENED = 'DATA_CHANNEL_OPENED';
/**
* The type of (redux) action which signals that the data channel with the
* bridge has been closed.
*
* {
* type: DATA_CHANNEL_CLOSED,
* code: number,
* reason: string
* }
*/
export const DATA_CHANNEL_CLOSED = 'DATA_CHANNEL_CLOSED';
/**
* The type of action which signals that the user has been kicked out from
* the conference.

View File

@@ -1,4 +1,3 @@
/* eslint-disable lines-around-comment */
import { createStartMutedConfigurationEvent } from '../../analytics/AnalyticsEvents';
import { sendAnalytics } from '../../analytics/functions';
import { appNavigate } from '../../app/actions';
@@ -12,7 +11,6 @@ import { setAudioMuted, setAudioUnmutePermissions, setVideoMuted, setVideoUnmute
import { MEDIA_TYPE } from '../media/constants';
import {
dominantSpeakerChanged,
participantConnectionStatusChanged,
participantKicked,
participantMutedUs,
participantPresenceChanged,
@@ -42,6 +40,7 @@ import {
CONFERENCE_UNIQUE_ID_SET,
CONFERENCE_WILL_JOIN,
CONFERENCE_WILL_LEAVE,
DATA_CHANNEL_CLOSED,
DATA_CHANNEL_OPENED,
E2E_RTT_CHANGED,
KICKED_OUT,
@@ -111,6 +110,7 @@ function _addConferenceListeners(conference: IJitsiConference, dispatch: IStore[
JitsiConferenceEvents.CONFERENCE_LEFT,
(...args: any[]) => {
dispatch(conferenceTimestampChanged(0));
// @ts-ignore
dispatch(conferenceLeft(conference, ...args));
});
@@ -220,10 +220,6 @@ function _addConferenceListeners(conference: IJitsiConference, dispatch: IStore[
JitsiConferenceEvents.NON_PARTICIPANT_MESSAGE_RECEIVED, // @ts-ignore
(...args: any[]) => dispatch(nonParticipantMessageReceived(...args)));
conference.on(
JitsiConferenceEvents.PARTICIPANT_CONN_STATUS_CHANGED, // @ts-ignore
(...args: any[]) => dispatch(participantConnectionStatusChanged(...args)));
conference.on(
JitsiConferenceEvents.USER_JOINED,
(_id: string, user: any) => commonUserJoinedHandling({ dispatch }, conference, user));
@@ -382,7 +378,7 @@ export function conferenceJoinInProgress(conference: IJitsiConference) {
* conference: JitsiConference
* }}
*/
export function conferenceLeft(conference: IJitsiConference) {
export function conferenceLeft(conference: Partial<IJitsiConference>) {
return {
type: CONFERENCE_LEFT,
conference
@@ -586,6 +582,26 @@ export function dataChannelOpened() {
};
}
/**
* Signals the data channel with the bridge was abruptly closed.
*
* @param {number} code - Close code.
* @param {string} reason - Close reason.
*
* @returns {{
* type: DATA_CHANNEL_CLOSED,
* code: number,
* reason: string
* }}
*/
export function dataChannelClosed(code: number, reason: string) {
return {
type: DATA_CHANNEL_CLOSED,
code,
reason
};
}
/**
* Action to end a conference for all participants.
*

View File

@@ -97,7 +97,6 @@ export function commonUserJoinedHandling(
dispatch(participantJoined({
botType: user.getBotType(),
connectionStatus: user.getConnectionStatus(),
conference,
id,
name: displayName,
@@ -253,6 +252,34 @@ export function getConferenceOptions(stateful: IStateful) {
return options;
}
/**
* Returns an object aggregating the conference options.
*
* @param {IStateful} stateful - The redux store state.
* @param {Array<string>} params - The received parameters.
* @returns {void}
*/
export function generateVisitorConfig(stateful: IStateful, params: Array<string>) {
const [ vnode, focusJid ] = params;
const config = toState(stateful)['features/base/config'];
if (!config || !config.hosts) {
logger.warn('Wrong configuration, missing hosts.');
return;
}
const oldDomain = config.hosts.domain;
config.hosts.domain = `${vnode}.meet.jitsi`;
config.hosts.muc = config.hosts.muc.replace(oldDomain, config.hosts.domain);
config.hosts.visitorFocus = focusJid;
config.bosh += `?vnode=${vnode}`;
config.websocket += `?vnode=${vnode}`;
}
/**
* Returns the UTC timestamp when the first participant joined the conference.
*
@@ -455,18 +482,18 @@ export function sendLocalParticipant(
name
} = getLocalParticipant(stateful) ?? {};
avatarURL && conference.sendCommand(AVATAR_URL_COMMAND, {
avatarURL && conference?.sendCommand(AVATAR_URL_COMMAND, {
value: avatarURL
});
email && conference.sendCommand(EMAIL_COMMAND, {
email && conference?.sendCommand(EMAIL_COMMAND, {
value: email
});
if (features && features['screen-sharing'] === 'true') {
conference.setLocalParticipantProperty('features_screen-sharing', true);
conference?.setLocalParticipantProperty('features_screen-sharing', true);
}
conference.setDisplayName(name);
conference?.setDisplayName(name);
}
/**

View File

@@ -15,7 +15,6 @@ import { NOTIFICATION_TIMEOUT_TYPE, showErrorNotification, showWarningNotificati
import { CONNECTION_ESTABLISHED, CONNECTION_FAILED, connectionDisconnected } from '../connection';
import { validateJwt } from '../jwt';
import { JitsiConferenceErrors } from '../lib-jitsi-meet';
import { MEDIA_TYPE } from '../media';
import {
PARTICIPANT_ROLE,
PARTICIPANT_UPDATED,
@@ -547,9 +546,7 @@ function _trackAddedOrRemoved(store, next, action) {
const track = action.track;
// TODO All track swapping should happen here instead of conference.js.
// Since we swap the tracks for the web client in conference.js, ignore
// presenter tracks here and do not add/remove them to/from the conference.
if (track && track.local && track.mediaType !== MEDIA_TYPE.PRESENTER) {
if (track?.local) {
return (
_syncConferenceLocalTracksWithState(store, action)
.then(() => next(action)));

View File

@@ -1,4 +1,6 @@
import { FaceLandmarks } from '../../face-landmarks/types';
import { LOCKED_LOCALLY, LOCKED_REMOTELY } from '../../room-lock/constants';
import { ISpeakerStats } from '../../speaker-stats/reducer';
import { CONNECTION_WILL_CONNECT, SET_LOCATION_URL } from '../connection/actionTypes';
import { JitsiConferenceErrors } from '../lib-jitsi-meet';
import ReducerRegistry from '../redux/ReducerRegistry';
@@ -44,6 +46,7 @@ export interface IJitsiConference {
avModerationApprove: Function;
avModerationReject: Function;
createVideoSIPGWSession: Function;
dial: Function;
disableAVModeration: Function;
enableAVModeration: Function;
end: Function;
@@ -53,26 +56,33 @@ export interface IJitsiConference {
getMeetingUniqueId: Function;
getParticipantById: Function;
getParticipants: Function;
getSpeakerStats: () => ISpeakerStats;
grantOwner: Function;
isAVModerationSupported: Function;
isCallstatsEnabled: Function;
isE2EEEnabled: Function;
isEndConferenceSupported: Function;
isLobbySupported: Function;
isSIPCallingSupported: Function;
isStartAudioMuted: Function;
isStartVideoMuted: Function;
join: Function;
joinLobby: Function;
kickParticipant: Function;
lock: Function;
muteParticipant: Function;
myLobbyUserId: Function;
myUserId: Function;
off: Function;
on: Function;
options: any;
removeTrack: Function;
replaceTrack: Function;
room: IJitsiConferenceRoom;
sendCommand: Function;
sendCommandOnce: Function;
sendEndpointMessage: Function;
sendFaceLandmarks: (faceLandmarks: FaceLandmarks) => void;
sendFeedback: Function;
sendLobbyMessage: Function;
sessionId: string;
@@ -82,6 +92,7 @@ export interface IJitsiConference {
setReceiverConstraints: Function;
setSenderVideoConstraint: Function;
setSubject: Function;
startVerification: Function;
}
export interface IConferenceState {
@@ -99,7 +110,7 @@ export interface IConferenceState {
leaving?: Object;
localSubject?: string;
locked?: string;
membersOnly?: Object;
membersOnly?: IJitsiConference;
obfuscatedRoom?: string;
obfuscatedRoomSource?: string;
p2p?: Object;
@@ -222,7 +233,8 @@ function _authStatusChanged(state: IConferenceState,
* @returns {Object} The new state of the feature base/conference after the
* reduction of the specified action.
*/
function _conferenceFailed(state: IConferenceState, { conference, error }: { conference: Object; error: Error; }) {
function _conferenceFailed(state: IConferenceState, { conference, error }: {
conference: IJitsiConference; error: Error; }) {
// The current (similar to getCurrentConference in
// base/conference/functions.any.js) conference which is joining or joined:
const conference_ = state.conference || state.joining;

View File

@@ -2,7 +2,6 @@ type ToolbarButtons = 'camera' |
'chat' |
'closedcaptions' |
'desktop' |
'dock-iframe' |
'download' |
'embedmeeting' |
'etherpad' |
@@ -29,7 +28,6 @@ type ToolbarButtons = 'camera' |
'stats' |
'tileview' |
'toggle-camera' |
'undock-iframe' |
'videoquality' |
'__end';
@@ -39,11 +37,13 @@ type ButtonsWithNotifyClick = 'camera' |
'desktop' |
'download' |
'embedmeeting' |
'end-meeting' |
'etherpad' |
'feedback' |
'filmstrip' |
'fullscreen' |
'hangup' |
'hangup-menu' |
'help' |
'invite' |
'livestreaming' |
@@ -127,6 +127,7 @@ export interface IConfig {
preventExecution: boolean;
}>;
callDisplayName?: string;
callFlowsEnabled?: boolean;
callStatsConfigParams?: {
additionalIDs?: {
customerID?: string;
@@ -304,8 +305,6 @@ export interface IConfig {
};
firefox_fake_device?: string;
flags?: {
sendMultipleVideoStreams?: boolean;
sourceNameSignaling?: boolean;
};
focusUserJid?: string;
gatherStats?: boolean;
@@ -316,6 +315,7 @@ export interface IConfig {
sdkKey?: string;
tileTime?: number;
};
googleApiApplicationClientID?: string;
gravatar?: {
baseUrl?: string;
disabled?: boolean;
@@ -340,10 +340,14 @@ export interface IConfig {
domain: string;
focus?: string;
muc: string;
visitorFocus: string;
};
iAmRecorder?: boolean;
iAmSipGateway?: boolean;
inviteAppName?: string | null;
inviteServiceCallFlowsUrl?: string;
inviteServiceUrl?: string;
jaasActuatorUrl?: string;
jaasFeedbackMetadataURL?: string;
jaasTokenUrl?: string;
lastNLimits?: {
@@ -365,6 +369,7 @@ export interface IConfig {
localSubject?: string;
locationURL?: URL;
maxFullResolutionParticipants?: number;
microsoftApiApplicationClientID?: string;
moderatedRoomServiceUrl?: string;
mouseMoveCallbackInterval?: number;
noticeMessage?: string;
@@ -393,6 +398,7 @@ export interface IConfig {
hideMuteAllButton?: boolean;
};
pcStatsInterval?: number;
peopleSearchUrl?: string;
preferH264?: boolean;
preferredTranscribeLanguage?: string;
prejoinConfig?: {
@@ -429,6 +435,7 @@ export interface IConfig {
mode?: 'always' | 'recording';
};
serviceUrl?: string;
sipInviteUrl?: string;
speakerStats?: {
disableSearch?: boolean;
disabled?: boolean;
@@ -458,6 +465,7 @@ export interface IConfig {
tileView?: {
numberOfVisibleTiles?: number;
};
tokenAuthUrl?: string;
toolbarButtons?: Array<ToolbarButtons>;
toolbarConfig?: {
alwaysVisible?: boolean;
@@ -494,13 +502,16 @@ export interface IConfig {
};
persist?: boolean;
preferredCodec?: string;
resizeDesktopForPresenter?: boolean;
};
webhookProxyUrl?: string;
webrtcIceTcpDisable?: boolean;
webrtcIceUdpDisable?: boolean;
websocket?: string;
websocketKeepAliveUrl?: string;
welcomePage?: {
customUrl?: string;
disabled?: boolean;
};
whiteboard?: {
collabServerBaseUrl?: string;
enabled?: boolean;

View File

@@ -60,15 +60,3 @@ export const PREMEETING_BUTTONS = [ 'microphone', 'camera', 'select-background',
* The toolbar buttons to show on 3rdParty prejoin screen.
*/
export const THIRD_PARTY_PREJOIN_BUTTONS = [ 'microphone', 'camera', 'select-background' ];
/**
* The set of feature flags.
*
* @enum {string}
*/
export const FEATURE_FLAGS = {
MULTIPLE_VIDEO_STREAMS_SUPPORT: 'sendMultipleVideoStreams',
SOURCE_NAME_SIGNALING: 'sourceNameSignaling'
};

View File

@@ -1,6 +1,6 @@
/* eslint-disable lines-around-comment */
// @ts-ignore
import Bourne from '@hapi/bourne';
// eslint-disable-next-line lines-around-comment
// @ts-ignore
import { jitsiLocalStorage } from '@jitsi/js-utils';
import _ from 'lodash';
@@ -11,7 +11,7 @@ import { parseURLParams } from '../util/parseURLParams';
import { IConfig } from './configType';
import CONFIG_WHITELIST from './configWhitelist';
import { FEATURE_FLAGS, _CONFIG_STORE_PREFIX } from './constants';
import { _CONFIG_STORE_PREFIX } from './constants';
import INTERFACE_CONFIG_WHITELIST from './interfaceConfigWhitelist';
import logger from './logger';
@@ -53,17 +53,6 @@ export function getMeetingRegion(state: IReduxState) {
return state['features/base/config']?.deploymentInfo?.region || '';
}
/**
* Selector for determining if receiving multiple stream support is enabled.
*
* @param {Object} state - The global state.
* @returns {boolean}
*/
export function getMultipleVideoSupportFeatureFlag(state: IReduxState) {
return (getFeatureFlag(state, FEATURE_FLAGS.MULTIPLE_VIDEO_STREAMS_SUPPORT)
&& getSourceNameSignalingFeatureFlag(state)) ?? true;
}
/**
* Selector for determining if sending multiple stream support is enabled.
*
@@ -71,18 +60,7 @@ export function getMultipleVideoSupportFeatureFlag(state: IReduxState) {
* @returns {boolean}
*/
export function getMultipleVideoSendingSupportFeatureFlag(state: IReduxState) {
return navigator.product !== 'ReactNative'
&& ((getMultipleVideoSupportFeatureFlag(state) ?? true) && isUnifiedPlanEnabled(state));
}
/**
* Selector used to get the sourceNameSignaling feature flag.
*
* @param {Object} state - The global state.
* @returns {boolean}
*/
export function getSourceNameSignalingFeatureFlag(state: IReduxState) {
return getFeatureFlag(state, FEATURE_FLAGS.SOURCE_NAME_SIGNALING) ?? true;
return isUnifiedPlanEnabled(state);
}
/**
@@ -308,3 +286,23 @@ export function setConfigFromURLParams(
}
/* eslint-enable max-params */
/**
* Returns the dial out url.
*
* @param {Object} state - The state of the app.
* @returns {string}
*/
export function getDialOutStatusUrl(state: IReduxState) {
return state['features/base/config'].guestDialOutStatusUrl;
}
/**
* Returns the dial out status url.
*
* @param {Object} state - The state of the app.
* @returns {string}
*/
export function getDialOutUrl(state: IReduxState) {
return state['features/base/config'].guestDialOutUrl;
}

Some files were not shown because too many files have changed in this diff Show More