Compare commits

..

655 Commits
811 ... 1237

Author SHA1 Message Date
Дамян Минков
c18b80c43f Merge pull request #862 from jitsi/make-settings-sections-configurable
Make settings sections configurable
2016-09-13 20:46:03 -05:00
yanas
9ce83250da Fixes console logs 2016-09-13 20:43:44 -05:00
yanas
a9e31a2843 Fixes settings menu for non moderators 2016-09-13 20:43:44 -05:00
yanas
45496b7592 Make settings sections configurable 2016-09-13 20:43:44 -05:00
yanas
4075a5f4f7 Merge pull request #864 from jitsi/origin/ui-redesign-guests-profile
fix(profile_icon): Cursor and background styles
2016-09-13 19:17:45 -05:00
hristoterezov
2d4819257b fix(profile_icon): Cursor and background styles 2016-09-13 18:19:38 -05:00
yanas
406618677b Merge pull request #861 from jitsi/ui-redesign-guests-profile
feat(profile): Don't allow non-guest users to edit their profile
2016-09-13 17:38:51 -05:00
hristoterezov
f10b13328f feat(profile): Don't allow non-guest users to edit their profile 2016-09-13 16:56:05 -05:00
Дамян Минков
c609cd0ace Merge pull request #859 from jitsi/change-ringing-background
Ringing background changed to gradient
2016-09-13 16:53:32 -05:00
yanas
0396a05b38 Merge pull request #860 from jitsi/css-watermark-link-variable
Moves watermark link to be css variable.
2016-09-13 16:46:53 -05:00
damencho
4a460e09b9 Moves watermark link to be css variable. 2016-09-13 16:46:15 -05:00
yanas
d5d81c1bed Merge pull request #858 from jitsi/ui-redesign-feedback
Ui redesign feedback
2016-09-13 16:44:11 -05:00
yanas
dc6e8f99d8 Ringing background change to gradient 2016-09-13 16:32:00 -05:00
hristoterezov
e02a8c9103 fix(feedback): Styles of Feedback dialog 2016-09-13 16:06:53 -05:00
Maxim Voloshin
7b4941bde9 Redesigned feedback window 2016-09-13 16:06:53 -05:00
hristoterezov
c602839e06 Merge pull request #851 from jitsi/ui-redesign-in-progress
Ui redesign in progress
2016-09-13 14:50:59 -05:00
yanas
2aea6c4120 Remove unused dialog 2016-09-13 13:07:08 -05:00
hristoterezov
a937e025b5 fix(index.html): Remove preload attribute on local video tag 2016-09-13 12:59:59 -05:00
yanas
b9fb510006 Adds ringing.scss, which was missing 2016-09-13 10:47:22 -05:00
Дамян Минков
b3f66aea3b Merge pull request #618 from photoninger/add_firefox_supportedBrowsers
Add Firefox in list of supportedBrowsers for invite emails
2016-09-13 08:29:59 -05:00
yanas
8491fbbd95 Reverts change in makefile 2016-09-12 23:29:26 -05:00
yanas
c6ec96aca5 Adds avatar on stage specific background 2016-09-12 23:24:23 -05:00
yanas
d250623fde Ring overlay improvements and enable buttons fix 2016-09-12 23:24:10 -05:00
hristoterezov
c3b4ecbbd8 fix(ext_toolbar): position of authentication popup 2016-09-12 16:22:51 -05:00
hristoterezov
2b84a149fe fix(toolbar): Button popups 2016-09-12 14:43:34 -05:00
hristoterezov
99ca38d13f Merge pull request #852 from jitsi/make-node-sass
Installs node-sass on every update, fixes a problem in some operating…
2016-09-12 12:54:52 -05:00
damencho
bfc174ffdc Installs node-sass on every update, fixes a problem in some operating systems. 2016-09-12 12:02:43 -05:00
yanas
09f7615a35 Changes icon set. 2016-09-11 23:36:15 -05:00
yanas
fdf0e39516 Fix lock room 2016-09-11 20:49:59 -05:00
yanas
775f389e5c Fix watermark and help position related to toolbar 2016-09-11 17:06:08 -05:00
yanas
f811410b45 Settings re-design 2016-09-11 16:55:06 -05:00
yanas
50e803f1a0 Fixes side toolbar container behavior 2016-09-09 21:26:29 -05:00
Paweł Domas
9a0d8616ed Merge pull request #847 from jitsi/cs-custom-scriptUrl
Skips some url parameters that can inject scripts.
2016-09-08 18:09:04 -05:00
yanas
b4c9816d9f Rename side panels and implement toggle/untoggle policy 2016-09-08 17:38:41 -05:00
yanas
17e28069ab Re-designs toolbars, side panels like setting, contact list 2016-09-08 13:22:50 -05:00
yanas
8562d3d55d Remove bottom toolbar and change side panel position and behavior 2016-09-08 13:16:23 -05:00
damencho
d65479abc9 Skips some url parameters that can inject scripts. 2016-09-08 13:12:56 -05:00
yanas
ed29db290e Add mixins for animations and separate toolbar css 2016-09-08 12:19:45 -05:00
yanas
978c0f2f31 Remove unused import 2016-09-08 12:19:45 -05:00
damencho
62c4ff719e Fixes build. 2016-09-08 11:26:57 -05:00
Ilya Daynatovich
e28f646cef Fixed styles for unsupported browser page 2016-09-08 11:15:17 -05:00
yanas
fb63ed92a8 Resets the main font after remove 2016-09-07 22:07:13 -05:00
yanas
c0097d1e2b Merge pull request #833 from BeatC/configurable-text
Set up SASS and change base font
2016-09-07 22:05:58 -05:00
yanas
fe710d8de9 Merge pull request #842 from jitsi/revert-kicks
Revert "Temprorary disable kicks hack."
2016-09-07 10:59:23 -05:00
damencho
83546a899f Revert "Temprorary disable kicks hack."
This reverts commit 76a7c7b426.
2016-09-07 10:48:13 -05:00
hristoterezov
2eca459ff6 Merge pull request #840 from jitsi/moves-analytics-feedback
Moves analytics event for feedback to the library.
2016-09-07 09:42:30 -05:00
hristoterezov
6b23ad54db Merge pull request #839 from jitsi/removes-ds-error-onjoin
Skips selecting local participant when alone in the room.
2016-09-07 09:41:01 -05:00
damencho
5ef7f38bed Moves analytics event for feedback to the library. 2016-09-06 13:16:54 -05:00
damencho
f86056c4f8 Skips selecting local participant when alone in the room. 2016-09-06 12:00:13 -05:00
Emil Ivov
f19b364871 Merge pull request #838 from jitsi/fix_audio_not_working_msg
fix(lang): Change the message in the mic not working error dialog
2016-09-06 11:33:54 -05:00
hristoterezov
29f1d96d87 fix(lang): Change the message in the mic not working error dialog 2016-09-06 11:30:51 -05:00
yanas
2f966b7da4 Merge pull request #829 from BeatC/fix-sharing-resize-after-hiding-filmstrip
Fix problem with resizing
2016-09-04 20:16:08 -05:00
bgrozev
e3f599fbc0 Merge pull request #834 from jitsi/disable-kick-until-fixed-hack
Temprorary disable kicks hack.
2016-09-02 11:44:15 -05:00
yanas
76a7c7b426 Temprorary disable kicks hack. 2016-09-02 11:19:17 -05:00
Ilya Daynatovich
4044e11da2 Set up SASS and change base font 2016-09-02 12:55:33 +03:00
Дамян Минков
a07c21b2a3 Merge pull request #832 from jitsi/remove-avatar-url
Remove avatar url - not used anymore
2016-09-01 16:55:11 -05:00
yanas
109bedba75 Update index.html 2016-09-01 16:37:07 -05:00
Дамян Минков
aced860ba4 Merge pull request #830 from jitsi/detect_local_media_not_working
Shows dialog when lib-jitsi-meet report microphone issues
2016-09-01 14:16:50 -05:00
hristoterezov
d33324c198 Merge pull request #831 from jitsi/analytics-remove-browser-suffix
Adds browser name as parameter.
2016-09-01 14:16:41 -05:00
damencho
adb1b33441 Adds browser name as parameter. 2016-09-01 14:13:17 -05:00
yanas
238e1f1bea Merge pull request #814 from BeatC/fix-video-preview-when-resize
Fix problem with last video preview
2016-09-01 13:45:56 -05:00
hristoterezov
4c9b6ce193 Shows dialog when lib-jitsi-meet report microphone issues 2016-09-01 12:57:21 -05:00
Paweł Domas
5ef547d285 Merge pull request #828 from SamWhited/mod_token_use_proper_path
Use valid path for HTTP token fetches
2016-09-01 10:02:47 -05:00
Ilya Daynatovich
aea99b8ffb Fix problem with resizing 2016-09-01 08:53:51 +03:00
Sam Whited
9ec120d7cb Use valid path for HTTP token fetches 2016-08-31 16:25:49 -05:00
Дамян Минков
e2c5439112 Merge pull request #821 from SamWhited/hql1748_update_lock_icon_on_config_change
Update lock icon when moderator changes state
2016-08-31 15:53:17 -05:00
hristoterezov
19362d1904 Merge pull request #826 from jitsi/fix-random-avatar
Fixes random avatar
2016-08-31 15:46:53 -05:00
hristoterezov
1a69fd8a49 Merge pull request #822 from jitsi/removes-atarURL
Removes avatar url from UI.
2016-08-31 15:39:00 -05:00
yanas
224670ed03 Merge pull request #827 from jitsi/fix-missing-indications-on-no-video-device
Moves local video thumb initializations where they belong.
2016-08-31 14:55:12 -05:00
damencho
bb705e32d9 Moves local video thumb initializations where they belong.
Moves local video thumb initializations where they belong in the local video constructor. Fixes a problem when there is no video device, then audio levels and gsm bars are missing. We were doing this initializations every time a video device is changed.
2016-08-31 14:18:09 -05:00
Sam Whited
3e269978d9 Update lock icon when moderator changes state 2016-08-31 13:59:08 -05:00
Paweł Domas
9ba62c320b Merge pull request #825 from SamWhited/mod_token_improvements
Mod token improvements
2016-08-31 12:48:04 -05:00
damencho
8e6d7d3960 Sends and dispatches avatarId command. 2016-08-31 11:41:17 -05:00
damencho
3138748f57 Uses avatarId from settings.
Removes unused variable bottomToolbarEnabled.
2016-08-31 11:40:06 -05:00
damencho
6f10156bf3 Adds avatarId and respect it with lowest priority. 2016-08-31 11:37:11 -05:00
damencho
3852b34397 Adds avatarId to Settings. 2016-08-31 11:24:51 -05:00
Sam Whited
3128628d09 Populate the token cache 2016-08-31 09:30:07 -05:00
Sam Whited
d8c4c0627a SHA256 hash the kid claim before fetching tokens 2016-08-31 09:24:15 -05:00
hristoterezov
d9559ecf63 Merge pull request #817 from jitsi/fix-shortcut-tooltips
Fix shortcut appearing in tooltip of wrong buttons
2016-08-30 15:30:09 -05:00
yanas
2b492883ca Some code optimisations. 2016-08-30 14:14:52 -05:00
damencho
5ab6c551df Disables storing display name and email when using overlay ring. 2016-08-30 14:10:20 -05:00
damencho
0e27f471f1 Removes avatarURL from settings UI.
Removes storing avatarURL in localstorage and retrieving it.
2016-08-30 14:09:07 -05:00
hristoterezov
ba477ad720 Merge pull request #816 from jitsi/improve-device-errors
Updates string for not found devices.
2016-08-30 13:04:44 -05:00
yanas
7858c157c1 Fix shortcut appearing in tooltip of wrong buttons 2016-08-29 23:56:20 -05:00
damencho
a5d3cc63c3 Updates string for not found devices.
The user can be in case where there is no audio or no video device at all, so removing the requested word from the message.
2016-08-29 16:46:44 -05:00
hristoterezov
cac7ccf176 Merge pull request #812 from jitsi/attach-shortcuts-to-features
Attach keyboard shortcuts to features
2016-08-29 16:05:12 -05:00
yanas
9693cba17a Registers filmstrip shortcut from bottom toolbar 2016-08-29 15:47:24 -05:00
yanas
45e38ae4c9 Fix wrong import 2016-08-29 13:04:55 -05:00
Paweł Domas
ad68d535b4 Merge pull request #815 from SamWhited/mod_auth_token_tweaks
mod_auth_token: Misc minor fixes
2016-08-29 10:23:44 -05:00
Sam Whited
bb56ea4b33 mod_auth_token: Add semicolons
Remove unnecessary cjson config
2016-08-29 09:39:47 -05:00
Ilya Daynatovich
ba822eaeed Fix problem with last video preview 2016-08-29 16:39:57 +03:00
yanas
7076ada6f4 Attach keyboard shortcuts to features 2016-08-28 22:59:23 -05:00
Paweł Domas
84834dc4e6 Merge pull request #808 from SamWhited/auth_token_asap
Add support for fetching public keys from a server to mod_auth_token
2016-08-26 16:51:17 -05:00
hristoterezov
f9b3f34593 Merge pull request #810 from jitsi/fix-hangup-multiple-feedback-windows
Fix hangup triggering multiple feedback windows
2016-08-26 16:30:31 -05:00
Sam Whited
c17576a931 mod_auth_token: Don't timeout finished requests 2016-08-26 16:19:01 -05:00
yanas
570124058c Addresses comment about Feedback dependency 2016-08-26 16:07:20 -05:00
Sam Whited
3793119209 mod_auth_token: Fix cache hit log line 2016-08-26 16:03:08 -05:00
Sam Whited
7fb18d1cb3 Fix broken claims comparison 2016-08-26 14:47:34 -05:00
Sam Whited
4fc86175e1 mod_auth_token: Set room name on session 2016-08-26 14:41:06 -05:00
Sam Whited
c951f7f3e9 Add missing semicolons 2016-08-26 14:11:50 -05:00
yanas
777217bd75 Fixes hangup triggering multiple feedbacks. 2016-08-26 11:42:45 -05:00
yanas
2bb637e140 Fixes hangup triggering several times 2016-08-26 11:42:45 -05:00
Дамян Минков
b5c1c95a15 Merge pull request #807 from jitsi/fix_ss_external_install
Fixes the issue with SS external installation dialog is not closed after the plugin has been installed
2016-08-26 11:40:35 -05:00
Sam Whited
f2e369cfc0 mod_auth_token: Remove broken path.join 2016-08-26 09:48:02 -05:00
yanas
6329271731 Merge pull request #806 from BeatC/fix-help-dialog-behind-filmstrip
Change z-index of keyboard-shortcuts
2016-08-25 14:15:57 -05:00
yanas
1428559546 Merge pull request #805 from jitsi/fix-moderator-mute
Fixes muting particular remote participant.
2016-08-25 14:15:01 -05:00
hristoterezov
5c9a85e928 Fixes the issue with SS external installation dialog is not closed after the plugin has been installed 2016-08-25 13:27:58 -05:00
Illia Daynatovich
00355caf8d HQL-1829 Change z-index of keyboard-shortcuts 2016-08-25 12:12:29 +03:00
Sam Whited
feb1d9d8e1 Add an LRU cache to mod_auth_token 2016-08-24 15:28:13 -05:00
Sam Whited
7f2fa9597c Add basic ASAP support to mod_auth_token
See: http://s2sauth.bitbucket.org/
2016-08-24 14:08:21 -05:00
damencho
246ab88a3e Fixes muting particular remote participant.
There was a bug that the handlers for menuItem for mute and kick are added for all remote participants. When clicked multiple handlers are executed and the action will be executed for all remote participants.
2016-08-23 18:37:41 -05:00
Дамян Минков
49cc4ae087 Merge pull request #802 from jitsi/fix-video-linux-qt
Fix video thumbnails for Qt on Linux.
2016-08-23 15:36:52 -05:00
hristoterezov
8d466ad77f Merge pull request #801 from jitsi/reloads-update
Updates statistics implementation.
2016-08-23 10:20:44 -05:00
yanas
f824f78db9 Fix video thumbnails for Qt on Linux. 2016-08-22 16:31:20 -05:00
damencho
35f592bb2c Adds optional label to statistics implementation. 2016-08-22 15:18:13 -05:00
bgrozev
25a6728acc Merge pull request #663 from cmrd-senya/patch-1
Update manual-install.md
2016-08-21 14:36:06 -05:00
jitsi-pootle
169da33411 New files added from translate.jitsi.org based on templates 2016-08-21 19:30:40 +00:00
George Politis
db70cf4aa9 Merge pull request #795 from jitsi/hide-download-log
Hide download log by default
2016-08-17 16:00:09 -05:00
yanas
dcfab4401f Update main.css 2016-08-17 15:50:26 -05:00
hristoterezov
d85a91ae49 Merge pull request #792 from jitsi/remove-bottom-toolbar-button-separators-1
Remove unused css class
2016-08-16 16:53:49 -04:00
hristoterezov
a3b1a80658 Merge pull request #791 from jitsi/remove-bottom-toolbar-button-separators
Remove bottom toolbar button separators
2016-08-16 16:53:03 -04:00
yanas
db20f145fb Remove unused css class 2016-08-16 15:20:32 -05:00
yanas
986bfd02b3 Remove bottom toolbar button separators 2016-08-16 15:14:30 -05:00
Paweł Domas
57506934f2 Merge pull request #790 from jitsi/show-toolbar-in-ring-overlay
Show the toolbar even if in a ring overlay
2016-08-16 15:07:51 -05:00
yanas
372a5e2a49 Update UI.js
Show the toolbar even if in a ring overlay.
2016-08-16 13:44:34 -05:00
Дамян Минков
726b972223 Merge pull request #789 from bgrozev/cleanup
refactor: removes unused code.
2016-08-15 22:59:35 -05:00
Boris Grozev
65300b34df refactor: removes unused code. 2016-08-15 22:57:36 -05:00
Paweł Domas
d7a7733d30 Merge pull request #787 from bgrozev/resolution-change
Brings back resolution changes logging to callstats.
2016-08-15 15:16:05 -05:00
Boris Grozev
7154fd4d39 Brings back resolution changes logging to callstats. 2016-08-15 14:40:55 -05:00
Дамян Минков
45830c1086 Merge pull request #785 from bgrozev/stream-switch-logs
Logs stream switch delays using analytics instead of callstats.
2016-08-12 16:51:39 -05:00
Дамян Минков
202ad0542f Merge pull request #784 from bgrozev/round-analytics-values
Rounds floats passed to analytics (instead of truncating them).
2016-08-12 16:51:29 -05:00
Boris Grozev
c59d9e7c8b Rounds floats passed to analytics (instead of truncating them). 2016-08-12 15:22:38 -05:00
Boris Grozev
f4f0a7d90e Logs stream switch delays using analytics instead of callstats. 2016-08-12 15:13:27 -05:00
damencho
ec98e6fdff Revert "Skips the analytics file from main folder when creating deb." Excluding file, excludes it and from subfolders.
This reverts commit 157bb1931d.
2016-08-11 12:53:37 -05:00
Дамян Минков
c68bcb8fbc Merge pull request #782 from jitsi/fix-unsupported-browser-images
Fix unsupported browser images
2016-08-11 11:08:59 -05:00
yanas
c37876a8b7 Fix unsupported browser images
Fixes the path of the unsupported browser images
2016-08-11 10:14:06 -05:00
bgrozev
23a805b79c Merge pull request #780 from jitsi/fix-duplicate-analytics-files
Skips the analytics file from main folder when creating deb.
2016-08-10 16:09:01 -05:00
damencho
157bb1931d Skips the analytics file from main folder when creating deb. 2016-08-10 15:47:54 -05:00
bgrozev
e59ad67055 Merge pull request #779 from jitsi/fix_ss_from_popup
Implements extension external installation for popup windows
2016-08-10 15:25:35 -05:00
hristoterezov
97b9b67768 Merge pull request #777 from jitsi/analytics-move2
Moves loading of analytics in the library.
2016-08-10 15:19:36 -05:00
hristoterezov
f899d16a79 Implements extension external installation for popup windows 2016-08-10 14:13:32 -05:00
damencho
53288fc997 Moves analytics js next to libraries so it can be dynamically loaded. 2016-08-10 13:28:15 -05:00
yanas
7c89f2b7d1 Merge pull request #778 from jitsi/fix-toolbar-hide
Fixes the check whether we are hovering over the toolbar.
2016-08-09 18:04:04 -05:00
damencho
2c39514359 Fixes the check whether we are hovering over the toolbar. 2016-08-09 17:39:24 -05:00
damencho
536ffb31e0 Moves loading of analytics in the library. 2016-08-09 15:04:40 -05:00
Дамян Минков
a50a980de4 Merge pull request #776 from jitsi/isolate-object-fix-browser-specific
Isolate object-fit fix for Windows Qt browser only
2016-08-08 17:19:56 -05:00
yanas
da0898a066 Isolate object-fit fix for Windows Qt browser only 2016-08-08 17:03:13 -05:00
George Politis
541f83cf71 Merge pull request #774 from jitsi/analytics-move
Analytics move
2016-08-05 13:49:05 -05:00
Paweł Domas
fe6588516f Merge pull request #773 from jitsi/object-fit-fix-and-refactoring-around-it
Object fit fix and refactoring around it
2016-08-05 10:25:36 -05:00
damencho
6651168dd3 Moves render and ttfm connection times to the library. 2016-08-05 09:52:09 -05:00
yanas
ced7da405d Merge pull request #772 from jitsi/crash_no_mediastreamtrack
Fix a crash on IE/Safari when plugin is not installed
2016-08-04 16:24:03 -05:00
yanas
fd836560aa Fix object-fit on some browsers 2016-08-04 15:56:04 -05:00
yanas
5654d34ee8 Fix remote participant menu for moderator 2016-08-04 15:24:36 -05:00
damencho
6302e42229 Uses analytics from lib-jitsi-meet and adds new events.
Adds more analytics events for shortcuts, recording and shared video. Changes the way we calculate ttfm.
2016-08-04 14:19:09 -05:00
paweldomas
34a24ce290 Fix a crash on IE/Safari when plugin is not installed 2016-08-04 09:37:04 -05:00
bgrozev
71a778b65c Merge pull request #771 from jitsi/IE10-URL-fix
Fix broken invite URL on IE10
2016-08-03 15:12:25 -05:00
paweldomas
62fa4dffa8 Fix broken invite URL on IE10
IE 10 does not support "window.location.origin"
2016-08-03 14:45:50 -05:00
yanas
d3dd643a88 Revert "Fix object-fit: cover not supported for video"
This reverts commit db0c4e95f7.
2016-08-03 13:03:42 -05:00
yanas
6116df9411 Revert "Change the default font to Helvetica Neue"
This reverts commit b309ef25fd.
2016-08-03 13:01:46 -05:00
yanas
db0c4e95f7 Fix object-fit: cover not supported for video 2016-08-03 13:01:46 -05:00
Дамян Минков
9a25db34aa Merge pull request #763 from jitsi/hide_toolbar_when_ringing
Hide the toolbar when the the ring overlay is displayed
2016-08-03 13:00:52 -05:00
Paweł Domas
c7710bfe1c Merge pull request #769 from jitsi/ttfm
Adds analytics event and console log for TTFM (time to first media).
2016-08-03 12:52:20 -05:00
Дамян Минков
dd7502f8de Merge pull request #754 from bgrozev/log-json
Formats the resolution change log as JSON.
2016-08-03 12:50:22 -05:00
damencho
df01358fb8 Adds comment. 2016-08-03 12:49:19 -05:00
Paweł Domas
d3cd634bff Merge pull request #770 from jitsi/update-config-inclusion
Update config inclusion
2016-08-03 12:39:26 -05:00
damencho
1454a28a69 Fixes serving interface_config when using jetty. 2016-08-03 11:53:21 -05:00
damencho
7251c7a641 Fixes a problem when using base for the page.
The problem is when not using / before virtual files and having a base for the page nginx can search for the file in wrong location.
2016-08-03 11:52:56 -05:00
damencho
06c636311d Adds analytics event and console log for TTFM (time to first media). 2016-08-03 11:19:09 -05:00
hristoterezov
b457166726 Merge pull request #765 from jitsi/analytics-update2
Adds analytics event for rendering audio and video.
2016-08-02 14:53:19 -05:00
damencho
562c2e38db Adds analytics event for rendering audio and video. 2016-08-02 13:19:03 -05:00
hristoterezov
e2c16c9c11 Merge pull request #764 from jitsi/switch_to_luajwt
Switch back to 'luajwt' in order to fix broken JWT
2016-08-02 13:13:37 -05:00
hristoterezov
db91040443 Merge pull request #761 from jitsi/updates-index-title
Moves favicon into the title html.
2016-08-02 12:38:02 -05:00
paweldomas
9f3c209096 Switch back to 'luajwt' in order to fix broken JWT
Temporarily reference 'luajwtjitsi' luarock for immediate
deployment until our changes with RS256 support
eventually get merged with the master
2016-08-02 12:35:48 -05:00
paweldomas
123b5abb08 Hide the toolbar when the the ring overlay is displayed 2016-08-02 09:04:31 -05:00
damencho
6cb89891ce Moves favicon into the title html.
Moves favicon into the title html with all metadata for easy overriding. Moves the title html inclusion after all the connection optimisations to avoid downloading the icon to interfere those optimisations.
2016-08-01 17:11:16 -05:00
damencho
ff68caaa16 Adds a comment and disables jshint error.
Merge pull request #760 from aaronkvanmeerten/master
2016-08-01 17:00:47 -05:00
Aaron van Meerten
a58190a935 Interface Config loaded via SSI into index.html to allow deployment-specific overrides even when using CDN
update whitespace in toolbar buttons array to allow value to be more easily overridden
2016-08-01 16:42:15 -05:00
Дамян Минков
372278d163 Merge pull request #755 from jitsi/change-default-font
Change the default font to Helvetica Neue
2016-08-01 16:10:56 -05:00
Paweł Domas
a5a7b63abf Merge pull request #759 from jitsi/analytics-update
Adds more analytics events.
2016-08-01 15:43:31 -05:00
damencho
e9b7aaea84 Adds more analytics events. 2016-08-01 15:03:38 -05:00
George Politis
132d823f54 Merge pull request #758 from jitsi/updates-title-meta
Moves meta html headers inside title.html file.
2016-08-01 14:42:11 -05:00
George Politis
75eb30b09d Merge pull request #757 from jitsi/remove_query_string
Removes query arguments from the invite URL/address bar URL.
2016-08-01 14:22:43 -05:00
damencho
baa60347fb Moves meta html headers inside title.html file. 2016-08-01 14:18:54 -05:00
paweldomas
8de3e0ff0b Remove query parameters from the URL visible to the user 2016-08-01 13:44:42 -05:00
paweldomas
443c29f505 No longer use full href for the invite URL 2016-08-01 13:44:35 -05:00
yanas
b309ef25fd Change the default font to Helvetica Neue 2016-08-01 10:58:12 -05:00
Paweł Domas
0ea5175354 Merge pull request #737 from SamWhited/jwt_signing_none_check
Check for "none" alg in JWT signing
2016-08-01 08:33:08 -05:00
bgrozev
10517115c3 Merge pull request #752 from jitsi/fix_gsm_bars_resolution
Preventing the client for using/sending resolution data from/to remote participants
2016-07-28 15:37:38 -05:00
Boris Grozev
ddb356482f Formats the resolution change log as JSON. 2016-07-28 11:11:34 -05:00
hristoterezov
6ae35fb21d Preventing the client for using/sending resolution data from/to remote participants 2016-07-27 12:46:07 -05:00
bgrozev
330597182c Merge pull request #751 from jitsi/dc_send_throw
Handles the errors thrown by the data channel methods
2016-07-26 09:34:06 -05:00
Boris Grozev
adefa40dcc Simplifies code, reduces the scope of "try". 2016-07-26 08:32:25 -05:00
hristoterezov
8d162609e0 Handles the errors thrown by the data channel methods 2016-07-25 17:04:39 -05:00
Paweł Domas
0a51ddd7ef Merge pull request #750 from jitsi/fix_con_interrupted
Fixes issue with not removing connection interrupt label after reload
2016-07-25 14:09:30 -05:00
hristoterezov
c3ae8669e8 Fixes issue with not removing connection interrupt label after reload 2016-07-25 13:57:01 -05:00
Paweł Domas
974ba47e3c Merge pull request #748 from jitsi/gsm_bars_interrupted
Fixes the gsm bars during ice disconnected
2016-07-22 14:02:19 -05:00
hristoterezov
9d170e4c59 Fixes the gsm bars during ice disconnected 2016-07-22 13:42:41 -05:00
bgrozev
ae0e950c16 Merge pull request #746 from jitsi/dc_stats2
Changes the connection quality stats to be sent by the data channels
2016-07-22 07:34:01 +02:00
Дамян Минков
79412f20ab Updates quick-install doc with the new repo. 2016-07-21 22:53:58 -05:00
hristoterezov
7ea047cf1b Merge pull request #743 from jitsi/handle-initial-videotype
Uses videoType from the video track for the initial value.
2016-07-21 17:16:17 -05:00
hristoterezov
4bf5d69002 Changes the connection quality stats to be sent by the data channels 2016-07-21 17:00:57 -05:00
bgrozev
0e2d8a323a Merge pull request #732 from champtar/shortcut-help
Improve keyboard shortcut handling
2016-07-21 19:53:49 +02:00
Etienne CHAMPETIER
9a4cee1818 Improve keyboard shortcut handling
Use KeyboardEvent.key if available,
match both lower and upper case letters to keep previous behaviour

KeyboardEvent is a mess.

KeyboardEvent.which gives you, in theory, a decimal representation of the key pressed.
"r" or "R" gives you 82, which is "R", you can look at KeyboardEvent.shiftKey,
but you don't have access to capslock...

Maybe you want to use numbers, but of course NumPad will not give you the same than
"normal" numbers ...

Now if you use something else than letter, for exemple "?",
on a QWERTY keyboard "/" and "?" gives you 191,
on a AZERTY keyboard "," and "?" gives you 188, so we have to stick to letters.

This was for keydown and keyup events, keypressed event return the real char
(lower "a", "/", "?", ...) but it fails in some cases

The only non broken property is KeyboardEvent.key,
but it's only supported since Chrome 51, Opera 38, and not supported by Safari
https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key

A good reference & test:
http://unixpapa.com/js/testkey.html
http://unixpapa.com/js/key.html

Signed-off-by: Etienne CHAMPETIER <champetier.etienne@gmail.com>
2016-07-21 16:58:52 +02:00
bgrozev
b0957f387e Merge pull request #744 from jitsi/revert-741-dc_stats
Revert "Changes the connection quality stats to be sent by the data channels"
2016-07-21 08:36:12 +02:00
bgrozev
1f8dc54368 Revert "Changes the connection quality stats to be sent by the data channels" 2016-07-21 08:33:04 +02:00
damencho
74ece3a775 Uses videoType from the video track for the initial value.
Handles the case where the remote track is with initial value of camera and no further events are received for video type changed.
2016-07-20 22:13:26 -05:00
Дамян Минков
60f7b9ab93 Merge pull request #741 from jitsi/dc_stats
Changes the connection quality stats to be sent by the data channels
2016-07-20 16:13:51 -05:00
Paweł Domas
f8d555790b Merge pull request #742 from jitsi/add_languages
Adds Armenian and Occitan languages
2016-07-20 15:41:44 -05:00
hristoterezov
4ff297730c Adds Armenian and Occitan languages 2016-07-20 15:38:50 -05:00
ibauersachs
29050ea917 Commit from translate.jitsi.org by user ibauersachs.: 118 of 250 strings translated (10 fuzzy). 2016-07-20 20:19:10 +00:00
ibauersachs
c4c0bc1c37 Commit from translate.jitsi.org by user ibauersachs.: 150 of 250 strings translated (7 fuzzy). 2016-07-20 20:19:00 +00:00
ibauersachs
0f52f4e5a1 Commit from translate.jitsi.org by user ibauersachs.: 160 of 250 strings translated (6 fuzzy). 2016-07-20 20:18:47 +00:00
ibauersachs
cff7a5c2f5 Commit from translate.jitsi.org by user ibauersachs.: 151 of 250 strings translated (7 fuzzy). 2016-07-20 20:18:36 +00:00
ibauersachs
626d9a40ed Commit from translate.jitsi.org by user ibauersachs.: 163 of 250 strings translated (8 fuzzy). 2016-07-20 20:18:28 +00:00
ibauersachs
b8f26c58e3 Commit from translate.jitsi.org by user ibauersachs.: 238 of 250 strings translated (0 fuzzy). 2016-07-20 20:18:13 +00:00
ibauersachs
9dbd9b8405 Commit from translate.jitsi.org by user ibauersachs.: 237 of 250 strings translated (1 fuzzy). 2016-07-20 20:18:03 +00:00
ibauersachs
08f200f0eb Commit from translate.jitsi.org by user ibauersachs.: 203 of 250 strings translated (1 fuzzy). 2016-07-20 20:17:33 +00:00
ibauersachs
9fa65ccda6 Commit from translate.jitsi.org by user ibauersachs.: 203 of 250 strings translated (1 fuzzy). 2016-07-20 20:17:24 +00:00
hristoterezov
d0fa9e7ef1 Changes the connection quality stats to be sent by the data channels 2016-07-20 15:16:21 -05:00
Paweł Domas
d7c1976a52 Merge pull request #740 from jitsi/add_languages
Adds new languages to the language select box
2016-07-20 15:11:42 -05:00
hristoterezov
39e71efb2f Adds new languages to the language select box 2016-07-20 15:04:14 -05:00
Ingo Bauersachs
855bcf8fe3 Remove pt_BR language files 2016-07-20 21:25:37 +02:00
ibauersachs
97069f1dc6 Commit from translate.jitsi.org by user ibauersachs.: 250 of 250 strings translated (0 fuzzy). 2016-07-20 19:28:38 +00:00
ibauersachs
bc3c6412f6 Commit from translate.jitsi.org by user ibauersachs.: 250 of 250 strings translated (0 fuzzy). 2016-07-19 21:08:44 +00:00
ibauersachs
51dcb2befb Commit from translate.jitsi.org by user ibauersachs.: 250 of 250 strings translated (0 fuzzy). 2016-07-19 21:08:32 +00:00
ibauersachs
805c9e4eda Commit from translate.jitsi.org by user ibauersachs.: 250 of 250 strings translated (0 fuzzy). 2016-07-19 21:08:23 +00:00
Ingo Bauersachs
a38e85b39c Update languages.json 2016-07-19 22:51:38 +02:00
Ingo Bauersachs
96bd3a54cb Update languages.json 2016-07-19 22:37:24 +02:00
ibauersachs
4fd5fba768 Commit from translate.jitsi.org by user ibauersachs.: 250 of 250 strings translated (0 fuzzy). 2016-07-19 20:38:09 +00:00
ibauersachs
06027ea8e5 Commit from translate.jitsi.org by user ibauersachs.: 250 of 250 strings translated (0 fuzzy). 2016-07-19 20:37:30 +00:00
ibauersachs
6f38d58954 Commit from translate.jitsi.org by user ibauersachs.: 250 of 250 strings translated (0 fuzzy). 2016-07-19 20:37:10 +00:00
Ingo Bauersachs
30c964f1e3 Add Portuguese (Brazil) 2016-07-19 22:29:07 +02:00
ibauersachs
2a8e0bd866 Commit from translate.jitsi.org by user ibauersachs.: 249 of 249 strings translated (0 fuzzy). 2016-07-19 20:33:10 +00:00
Дамян Минков
644e12929c Merge pull request #733 from mbell8903/patch-1
Change reference to lib-jitsi-meet to use full github url
2016-07-19 10:50:06 -05:00
Sam Whited
d625b8e3f3 Check for "none" alg in JWT signing 2016-07-18 13:31:30 -05:00
hristoterezov
5b884806d2 Merge pull request #736 from jitsi/lock-error-dialog
Avoids multiple dialog when showing lock attempt errors.
2016-07-15 16:02:26 -05:00
damencho
7aa47647f0 Avoids multiple dialog when showing lock attempt errors. 2016-07-15 15:40:18 -05:00
Дамян Минков
c779dbe8ad Merge pull request #735 from jitsi/fix_typo
Fixes typo
2016-07-15 13:18:57 -05:00
Дамян Минков
64ee01d831 Merge pull request #734 from jitsi/no_audio_element_fix
Fixes the issue with missing audio element for remote participants
2016-07-15 13:18:47 -05:00
hristoterezov
52c6bbe731 Fixes typo 2016-07-15 13:14:10 -05:00
hristoterezov
1963972f75 Fixes the issue with missing audio element for remote participants 2016-07-15 13:12:14 -05:00
Michael Bell
85d0c62c1d Change reference to lib-jitsi-meet to use full github url
This resolves issue #694
2016-07-14 11:23:47 -04:00
Дамян Минков
dfa9bab9e1 Merge pull request #724 from jitsi/reloads
Implements support for conference reloads
2016-07-13 13:19:06 -05:00
champtar
3ed1532f25 Commit from translate.jitsi.org by user champtar.: 249 of 249 strings translated (0 fuzzy). 2016-07-13 11:01:42 +00:00
ibauersachs
115420db82 Commit from translate.jitsi.org by user ibauersachs.: 249 of 249 strings translated (0 fuzzy). 2016-07-12 16:39:53 +00:00
bgrozev
d2a6c4a97f Merge pull request #719 from jitsi/jibri-retries
Jibri retries
2016-07-11 15:53:25 -05:00
hristoterezov
c04874b087 Merge pull request #728 from jitsi/jwt-login-service-2
Jwt login service 2
2016-07-11 15:12:40 -05:00
Дамян Минков
a0b3018ea0 Merge pull request #729 from jitsi/issue_716
Fixes issue #716
2016-07-11 12:46:36 -05:00
hristoterezov
e46d45adea Fixes issue #716 2016-07-11 11:57:24 -05:00
paweldomas
f977030bd6 Add support for JWT login service 2016-07-11 13:47:10 +02:00
paweldomas
38fc1c01d4 Move XMPP login prompt handling to AuthHandler 2016-07-11 13:47:02 +02:00
hristoterezov
2f202deedf Merge branch 'master' into reloads 2016-07-08 16:03:10 -05:00
Дамян Минков
08bd40bb26 Merge pull request #722 from bgrozev/logging
Logs resolution changes to callstats.
2016-07-08 15:50:14 -05:00
Дамян Минков
28700173a0 Merge pull request #723 from bgrozev/doc
Adds documentation.
2016-07-08 15:49:48 -05:00
Boris Grozev
66a46fc580 Adds documentation. 2016-07-08 15:17:28 -05:00
Boris Grozev
de41977c77 Logs resolution changes to callstats. 2016-07-08 15:16:27 -05:00
hristoterezov
45c420561a Merge pull request #721 from jitsi/match-jquery-ui-version
Match the exact version of jquery-ui.
2016-07-08 14:43:22 -05:00
damencho
e240b15d61 Match the exact version of jquery-ui.
Using "compatible version" as ^... matches latest version 1.12.0 and not 1.10.5 (matches >=1.10.5 < 2.0.0) and this prevents it building from source with latest nodejs on clean environment.
2016-07-08 14:41:25 -05:00
bgrozev
486058834e Merge pull request #720 from jitsi/make-update
Executes npm update before making.
2016-07-08 10:54:45 -05:00
damencho
3e473ea9d7 Executes npm update before making.
Executes npm update before making, in order to update latest version of packages like lib-jitsi-meet which are updated from git. The npm install method is supposed to only resolve dependencies and not update to latest versions.
2016-07-08 10:52:04 -05:00
paweldomas
62dd54ab31 Display spinner for RETRYING recording status 2016-07-08 14:53:00 +02:00
paweldomas
b3e02add3d Fix moveToCorner method
If the class was contained the old code was removing it
2016-07-08 14:51:15 +02:00
hristoterezov
7bf9a82f0b Implements conference reload support 2016-07-07 20:44:04 -05:00
bgrozev
ce5ff20d5b Merge pull request #718 from jitsi/dialogs-update
Dialogs update
2016-07-06 14:52:45 -05:00
damencho
615daa8c9f Updates close function parameters. 2016-07-06 13:52:59 -05:00
damencho
5dffddceec Make sure we have only one dialog instance. 2016-07-06 13:26:27 -05:00
damencho
d5de49b5cf Returns the dialog instances that were created and adds an optional close callback. 2016-07-06 13:10:45 -05:00
damencho
62f7553ba4 Updates two button dialogs to be only single instance. 2016-07-06 11:00:04 -05:00
hristoterezov
b7ad6b606a Merge pull request #717 from tsareg/error_types
Expose JitsiTrackError through JitsiMeetJS.errorTypes.JitsiTrackError
2016-07-06 09:17:40 -05:00
tsareg
60c2ee41e3 Expose JitsiTrackError through JitsiMeetJS.errorTypes.JitsiTrackError 2016-07-06 16:21:26 +03:00
damencho
64475143cf Removes keyring dependency to switch to new build machine. 2016-06-30 15:31:35 -05:00
damencho
c1122eae3a Adds dependency to new keyring and new repo update. 2016-06-30 15:22:22 -05:00
Дамян Минков
1792b1ed85 Merge pull request #711 from jitsi/room_name_undefined
Fixes issue with room name parameter = undefined
2016-06-28 11:52:45 -05:00
hristoterezov
d624f2584d Fixes issue with room name parameter = undefined 2016-06-28 11:21:37 -05:00
Дамян Минков
f39f8d14fd Merge pull request #706 from jitsi/ui-improvements-and-styles
UI improvements and styles
2016-06-24 14:43:51 -05:00
yanas
770b003163 Change global font, unify fonts, colors and more 2016-06-24 14:09:34 -05:00
Дамян Минков
702b177e06 Merge pull request #708 from jitsi/gsm_bars_fix
Fixes issue with gsm bars for remote participants are always full
2016-06-24 12:26:48 -05:00
hristoterezov
3c0295e294 Removes console.debug 2016-06-24 12:25:21 -05:00
hristoterezov
970e8c764c Fixes issue with gsm bars for remote participants are always full 2016-06-24 12:22:51 -05:00
yanas
1d393f5786 Merge pull request #701 from tsareg/gum_permission_dialog_guidance
Show overlay with guidance for gUM permission prompts
2016-06-24 11:17:38 -05:00
tsareg
f03b228eea Merge remote-tracking branch 'remotes/upstream/master' into gum_permission_dialog_guidance 2016-06-24 13:02:58 +03:00
tsareg
d149ba6fc5 Fire an optional JitsiMediaDevices.PERMISSION_PROMPT_IS_SHOWN event when browser shows user media permission prompt when calling createLocalTracks 2016-06-24 12:47:13 +03:00
Дамян Минков
f3dc6f15e4 Merge pull request #705 from bgrozev/esc-shortcut
Hide the shortcuts panel when the Escape key is pressed.
2016-06-23 16:24:10 -05:00
tsareg
8ca282079a Changes after code review 2016-06-23 11:03:26 +03:00
yanas
769644a63f Merge pull request #700 from bgrozev/raise-hand2
Raise hand2
2016-06-22 21:59:22 -05:00
Boris Grozev
2cefea3677 Hide the shortcuts panel when the Escape key is pressed. 2016-06-22 13:30:00 -05:00
bgrozev
2e802c0f6d Merge pull request #698 from jitsi/external_api
Changes the implementation of the iframe API to use postis
2016-06-22 13:12:49 -05:00
hristoterezov
d29e39c1d2 Adds libs directory to .gitignore 2016-06-22 13:11:48 -05:00
hristoterezov
09fb5e5667 Merge pull request #703 from jitsi/fix-avatar-url-string
Fixes avatar URL setting string
2016-06-21 15:03:02 -05:00
yanas
70e5ce7aec Fixes avatar URL setting string 2016-06-21 15:01:43 -05:00
Любомир Маринов
1f942aa13d Merge pull request #697 from tsareg/fix_two_gum_error_dialogs
Fixing various edge-cases when two gUM error dialogs might be shown and other possible bugs
2016-06-21 12:49:10 -05:00
hristoterezov
b60095df28 Merge pull request #702 from jitsi/deb-update-deps
Removes unused dependency.
2016-06-21 10:52:20 -05:00
damencho
6715d41f92 Removes unused dependency.
Used to minimize strophe-plugins which were inside the source tree and now npm handles them.
2016-06-21 10:38:31 -05:00
tsareg
375b145030 Prevent possible memory leak 2016-06-21 17:39:00 +03:00
tsareg
9d3b2aee02 Show overlay with guidance for gUM permission prompts 2016-06-21 12:08:32 +03:00
Boris Grozev
2d2e27b8d0 Implements "raised hand". 2016-06-20 16:58:54 -05:00
Boris Grozev
4b6ac38058 Fixes a failure to show the dominant speaker indicator for the local participant. 2016-06-20 15:58:08 -05:00
hristoterezov
21c2469dd6 Removes unnecessary whitespaces from Makefile 2016-06-20 13:23:00 -05:00
hristoterezov
02f176c75a Changes the implementation of the iframe API to use postis 2016-06-17 15:35:40 -05:00
tsareg
8b528b582f Fixing various edge-cases when two gUM error dialogs might be shown and other possible bugs 2016-06-17 15:31:25 +03:00
Дамян Минков
72d38ad202 Merge pull request #696 from jitsi/add-pootle-langs
Add missing languages from Pootle
2016-06-15 12:53:59 -05:00
Ingo Bauersachs
7a5461e1cb Add missing languages from Pootle 2016-06-15 11:50:04 +02:00
Ingo Bauersachs
1714ede6d4 Rename Translation.md to readme.md 2016-06-15 11:45:03 +02:00
ibauersachs
f8ee97a71c Commit from translate.jitsi.org by user ibauersachs.: 240 of 240 strings translated (0 fuzzy). 2016-06-15 09:47:54 +00:00
tsareg
897a6bfbe6 Refactored conference.js code. Moved almost all code that relates to handling change of media devices to separate module. Fixed couple of bugs. 2016-06-14 20:40:15 -05:00
yanas
97237470af Visual improvements of keyboard shortcut popup 2016-06-14 20:21:32 -05:00
Boris Grozev
d79971a737 An initial version of a "keyboard shortcuts" help panel. 2016-06-14 20:16:38 -05:00
Дамян Минков
334f7bf95a Merge pull request #693 from jitsi/jwt_support
JWT client support
2016-06-14 14:38:36 -05:00
hristoterezov
661795fd51 Fixes accidentally changed value of strophejs-plugins property in package.json 2016-06-14 13:36:46 -05:00
hristoterezov
47fe71c1f1 Fixes issue with ToolbarToggle.setAlwaysVisibleToolbar 2016-06-14 11:34:56 -05:00
hristoterezov
c5eebcda98 Adds exception for preventing to send the JWT token 2016-06-13 16:43:15 -05:00
hristoterezov
8deb003ef6 JWT client support 2016-06-13 16:11:44 -05:00
George Politis
10b2746a3e Merge pull request #689 from bgrozev/makefile-improvements
Makefile improvements
2016-06-10 15:22:18 -05:00
Boris Grozev
62fd07e98e Copy the map files for the non-minified version to the deploy dir. 2016-06-10 19:44:27 +00:00
Boris Grozev
ee8a270a36 Don't run npm update, because it sometimes causes the lib-jitsi-meet npm link to be removed. 2016-06-10 19:43:29 +00:00
hristoterezov
870a4e705b Merge pull request #683 from jitsi/fixes-ff-warnings-2
Defines^2 the document encoding.
2016-06-09 10:41:43 -05:00
Любомир Маринов
9dcb717a51 Merge pull request #685 from tsareg/fix_type_error_when_enabling_permissions_for_devices
Fix TypeError when one of audioTracks or videoTracks was undefined
2016-06-09 09:37:02 -05:00
tsareg
f72e3bf552 Fix TypeError when one of audioTracks or videoTracks was undefined 2016-06-09 12:38:30 +03:00
George Politis
ef70ff7da0 Defines^2 the document encoding. 2016-06-08 23:51:45 -05:00
hristoterezov
61fa2d8ed1 Merge pull request #682 from jitsi/fixes-ff-warnings
Defines the document encoding.
2016-06-08 23:49:02 -05:00
George Politis
1bda4ca61c Defines the document encoding.
Make FF stop complaining about the character encoding of the HTML document
not being declared.
2016-06-08 18:35:28 -05:00
hristoterezov
ba00080462 Merge pull request #681 from jitsi/add-enable-disable-popup
Unifrms messageHandler access and adds enable disable
2016-06-08 15:05:03 -05:00
yanas
57815cb2fe Unifrms messageHandler access and adds enable disable 2016-06-08 14:48:45 -05:00
yanas
346ff889ea Merge pull request #679 from damencho/follow-me
Fixes follow-me to work without etherpad
2016-06-07 17:01:45 -05:00
damencho
165507b83a Removes printing audio levels by default in debug mode and makes it optional. 2016-06-07 16:40:43 -05:00
damencho
955e01a750 Adds comments for processing nextOnStage. 2016-06-07 16:39:08 -05:00
damencho
ca62f9bec2 Adds a check to make follow me work without etherpad enabled. 2016-06-07 15:13:28 -05:00
Emil Ivov
c82bf2a19c Merge pull request #678 from geekgonecrazy/master
Switch to https on iframe creation
2016-06-07 14:50:21 -05:00
Aaron Ogle
98919e0996 Changed variable from ssl to noSsl
Defaults to SSL, only if the noSsl flag is true will it use http
2016-06-07 14:08:02 -05:00
Aaron Ogle
81437263b4 Allow ssl variable to force https:// on the iframe 2016-06-06 23:06:37 -05:00
Aaron Ogle
f883199f4f Switch to https on iframe creation 2016-06-06 21:56:07 -05:00
damencho
207e6e1b7d Merge pull request #666 from champtar/source-package
Fix missing base.html in source-package
2016-06-06 17:19:45 -05:00
lyubomir
06911c4c75 Merge pull request #676 from jitsi/tsareg-handle_create_local_tracks_errors_better
Tsareg handle create local tracks errors better
2016-06-03 16:17:34 -05:00
Lyubomir Marinov
fa1ea94c5c Merge branch 'handle_create_local_tracks_errors_better' of https://github.com/tsareg/jitsi-meet into tsareg-handle_create_local_tracks_errors_better 2016-06-03 14:28:09 -05:00
hristoterezov
6b704f184b Merge pull request #675 from aaronkvanmeerten/master
Only push to history with present page URL plus room name
2016-06-03 14:13:49 -05:00
Aaron van Meerten
c2eede2bb5 Only push to history with present page URL plus room name
Use location.href instead of location.pathname to make the URL absolute
2016-06-03 13:00:09 -05:00
lyubomir
0fec9565e5 Merge pull request #668 from jitsi/jetty-ssi-impl
Adds property for initial jetty ssi configuration.
2016-06-03 09:56:43 -05:00
Emil Ivov
8114152369 Merge pull request #673 from jitsi/revert-history-pushState
Revert "Removes unnecessary history.pushState if the welcome page is …
2016-06-03 07:47:53 -05:00
yanas
968521ef7c Revert "Removes unnecessary history.pushState if the welcome page is disabled and the user enter the base URL"
This reverts commit 3d5af92c7a.
2016-06-03 07:45:57 -05:00
Paweł Domas
bdb4d019f8 Merge pull request #672 from tsareg/audio_output_change_warning
Log warning instead of error for audio output device change errors
2016-06-03 11:11:20 +02:00
tsareg
c1a93afeaf Log warning instead of error for audio output device change errors 2016-06-03 11:15:07 +03:00
hristoterezov
b8d8ef5cfd Merge pull request #670 from jitsi/handle-recording-errors
Handle recording errors
2016-06-02 18:18:42 -05:00
yanas
07c2e91ae2 Do not handle the actual error message yet 2016-06-02 17:12:40 -05:00
yanas
7e4b13fb44 Remove recorder errors import 2016-06-02 15:41:28 -05:00
yanas
69798848c0 Handle recording errors 2016-06-02 13:34:51 -05:00
Emil Ivov
9e52e65faa Merge pull request #669 from jitsi/remove_history_push
Removes unnecessary history.pushState if the welcome page is disabled and the user enter the base URL
2016-06-02 13:25:00 -05:00
hristoterezov
3d5af92c7a Removes unnecessary history.pushState if the welcome page is disabled and the user enter the base URL 2016-06-02 13:02:42 -05:00
damencho
ed9fd6c8fd Adds property for initial jetty ssi configuration. 2016-06-02 12:27:47 -05:00
Emil Ivov
6c1349c501 Merge pull request #667 from jitsi/history_fix
Fixes unhandled error from history.pushState
2016-06-01 17:53:41 -05:00
hristoterezov
6e34e33b0d Fixes unhandled error from history.pushState 2016-06-01 17:47:24 -05:00
Etienne CHAMPETIER
5d9d6b4642 Fix missing base.html in source-package
Signed-off-by: Etienne CHAMPETIER <champetier.etienne@gmail.com>
2016-06-01 15:58:55 +02:00
Senya
8196233ed2 Update manual-install.md
There is no YOURSECRET4 mentions in the document
2016-05-29 15:04:33 +03:00
yanas
c29f9921a1 Merge pull request #662 from aaronkvanmeerten/master
make the chatArrow image reference relative
2016-05-27 11:03:20 -05:00
tsareg
f574dbe056 Changes after code review 2016-05-27 18:49:26 +03:00
Aaron van Meerten
e6385bb95d make the chatArrow image reference relative, allows for better base href support 2016-05-27 10:45:38 -05:00
tsareg
ccdba03888 Minor fixes for error dialogs 2016-05-27 14:01:43 +03:00
tsareg
e257a3dfc9 Merge branch 'master' into handle_create_local_tracks_errors_better
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
2016-05-27 11:29:23 +03:00
tsareg
448fcf36b6 Show dialog for GUM errors 2016-05-26 11:53:02 +03:00
tsareg
48b219111d Use special JitsiTrackError object instead just strings for various types of errors that may happen to JitsiTrack 2016-05-25 15:04:48 +03:00
yanas
7f9c4d6480 Merge pull request #659 from aaronkvanmeerten/master
SSI inclusion of config.js
2016-05-24 12:48:07 -05:00
hristoterezov
064917886e Merge pull request #660 from jitsi/fix-user-cancel-reject-handling
Handle Promise.reject for user cancel case
2016-05-23 17:22:51 -05:00
yanas
0cf291d796 Handle Promise.reject for user cancel case 2016-05-23 16:46:41 -05:00
champtar
8418fc97f1 Commit from translate.jitsi.org by user champtar.: 203 of 203 strings translated (0 fuzzy). 2016-05-23 09:13:54 +00:00
Aaron van Meerten
6170f6c268 add support for possible ssi of <base> attribute
left blank in default meet installations, to be overridden by adding <base href="CDN_URL"> to /base.html
2016-05-20 16:51:37 -05:00
Aaron van Meerten
4dd82b3376 switch config.js values to be present directly in index.html, loaded server-side during page render instead of as a separate request 2016-05-20 16:45:40 -05:00
bgrozev
9ce5e232bb Merge pull request #658 from jitsi/nuke-preconfigured-bridge
Nukes the pre-configured bridge from the config file.
2016-05-19 14:56:37 -05:00
George Politis
318ab2c9dc Nukes the pre-configured bridge from the config file. 2016-05-19 14:51:45 -05:00
yanas
29f06bbb77 Merge pull request #657 from tsareg/switch_tracks_on_device_list_change
Switch local audio and video track when list of available devices changes
2016-05-18 15:18:31 -05:00
Kostiantyn Tsaregradskyi
c1807c3649 Handle cases when new media devices are added/removed more precisely and more predictable 2016-05-18 14:23:12 +03:00
Kostiantyn Tsaregradskyi
b270256a7a Switch local audio and video track when list of available devices changes 2016-05-17 18:58:25 +03:00
damencho
27586643c3 Merge pull request #654 from jitsi/gsm_bars
Changes the way of calculating connection quality.
2016-05-17 10:53:38 +03:00
hristoterezov
99e6453e09 Changes the way of calculating connection quality. 2016-05-12 17:48:19 -05:00
yanas
eda11f4657 Merge pull request #653 from tsareg/device_list_change_basic_support
Update devices in settings panel when list of available devices changes
2016-05-12 15:02:19 -05:00
Kostiantyn Tsaregradskyi
474155ce9d Added ability to notify about available media device list changes 2016-05-11 16:59:27 +03:00
hristoterezov
49e60a8b4f Merge pull request #645 from tsareg/master
Added ability to change output audio device through settings
2016-05-10 13:28:40 -05:00
Kostiantyn Tsaregradskyi
5e027e0a91 Added ability to switch audio output device - changes after review 2016-05-10 13:11:41 +03:00
hristoterezov
e2a7a66772 Merge pull request #624 from jitsi/updates-callstats-error-reporting
Updates callstats error reporting
2016-05-09 13:23:01 -05:00
yanas
76017bcbe3 Merge pull request #649 from jitsi/flip_flag
Adds config option for enabling the flip menu for the local video
2016-05-09 13:21:33 -05:00
hristoterezov
1eb915d312 Adds config option for enabling the flip menu for the local video 2016-05-09 12:39:42 -05:00
bgrozev
3df47f0d72 Merge pull request #647 from jitsi/updates-deployment-non-min
Updates deployment with non-minified versions of libs.
2016-05-09 08:34:33 -05:00
champtar
cc5d563599 Commit from translate.jitsi.org by user champtar.: 203 of 203 strings translated (0 fuzzy). 2016-05-09 13:26:57 +00:00
damencho
c5e7ca8a26 Adds non-minified versions of app.bundle and lib-jitsi-meet to the libs folder which is included in the deb package. 2016-05-09 11:49:04 +03:00
yanas
626b37b4fe Merge pull request #646 from jitsi/flip
Implements custom context menu to flip the local video
2016-05-08 10:50:35 -05:00
hristoterezov
c3338d3bf2 Implements custom context menu to flip the local video 2016-05-06 20:50:37 -05:00
Kostiantyn Tsaregradskyi
d34adb67dd Added ability to switch audio output device 2016-05-06 17:31:23 +03:00
George Politis
ae543e68d6 Merge pull request #642 from jitsi/fix_ff_hangup
Fixes issue with not working hangup button on FF
2016-05-05 17:03:46 -05:00
Paweł Domas
50f261effc Merge pull request #643 from jitsi/fix-recorder-error-states
Fix recorder error and state handling
2016-05-05 14:50:51 -05:00
yanas
0736206722 Fix recorder error and state handling 2016-05-05 11:46:06 -05:00
hristoterezov
9dc9dc3685 Fixes issue with not working hangup button on FF 2016-05-05 11:11:05 -05:00
Kostiantyn Tsaregradskyi
2bd600aeaf Very raw version of ability to switch audio output device 2016-05-05 17:34:15 +03:00
jitsi-pootle
2c0d60a1f4 New files added from translate.jitsi.org based on templates 2016-05-05 10:45:10 +00:00
ibauersachs
25a62f330f Commit from translate.jitsi.org by user ibauersachs.: 203 of 203 strings translated (0 fuzzy). 2016-05-04 08:40:00 +00:00
Paweł Domas
b191c58462 Merge pull request #640 from jitsi/fix-recorder-states
Fix recorder state and moderator restart
2016-05-03 15:42:50 -05:00
yanas
c07060c9cd Fix recorder state and moderator restart 2016-05-03 15:26:35 -05:00
yanas
0957ee7547 Merge pull request #639 from jitsi/external_connect_and_auth
Fixes issues when external connect and authentication are enabled
2016-05-02 15:00:06 -05:00
hristoterezov
d6ef36b4b4 Passes the room name to connect when using authentication 2016-05-02 14:47:40 -05:00
hristoterezov
6b5f6ec704 Fixes issue with multiple room query parameters added to bosh url 2016-05-02 14:22:02 -05:00
hristoterezov
0970fdd7e7 Clears external connect data after using it 2016-05-02 14:09:57 -05:00
George Politis
1ff3efa7d2 Merge pull request #638 from jitsi/hide-recorder-thumbnail
Hide recorder local thumbnail
2016-05-01 13:59:41 -05:00
yanas
ab67b42eb9 Hide recorder local thumbnail 2016-05-01 13:47:43 -05:00
hristoterezov
cdefca9fbd Merge pull request #633 from jitsi/fix-and-refactor-shared-video
Fix and refactor shared video
2016-04-29 15:39:30 -05:00
hristoterezov
9b334777b3 Merge pull request #634 from jitsi/fix-remote-video-check
Make sure remote video exist before we use it
2016-04-29 12:55:01 -05:00
George Politis
4f2a57c3a5 Merge pull request #636 from jitsi/fix_externalConnectUrl_param
Fixes issue with externalConnectUrl hash param when the value is null
2016-04-29 11:47:44 -05:00
hristoterezov
d535765648 Fixes issue with externalConnectUrl hash param when the value is null 2016-04-29 11:46:24 -05:00
yanas
edf2f8114b Make sure remote video exist before we use it 2016-04-28 21:18:48 -05:00
yanas
d95b2b034b Fix initial state of user interaction mute 2016-04-28 17:47:40 -05:00
yanas
c2f46a5cfe Refactor shared video manager 2016-04-28 17:44:12 -05:00
hristoterezov
bd7740cba1 Merge pull request #632 from jitsi/add-url-param-conn-opt
Add support for connection optimisation URL param
2016-04-28 15:17:01 -05:00
yanas
4a4e25de28 Add support for connection optimisation URL param 2016-04-28 14:56:11 -05:00
damencho
65c49b6b4c Merge pull request #622 from jitsi/add-smart-mutes-unmutes-shared-video
Add shared video smart mike mutes unmutes
2016-04-28 19:59:00 +03:00
bgrozev
202c506a8d Merge pull request #630 from jitsi/fix-missing-remote-video
Fix missing remote video exception
2016-04-27 16:51:10 -05:00
yanas
aeabad4891 Fix missing remote video exception 2016-04-27 16:28:00 -05:00
bgrozev
5cb2b15b54 Merge pull request #629 from jitsi/lipsync
Lipsync
2016-04-27 15:16:15 -05:00
damencho
81a487b856 Merge pull request #628 from jitsi/add-hidden-participant-support
Add hidden participant support
2016-04-27 18:49:37 +03:00
yanas
c881e7b640 Add hidden participant support 2016-04-27 10:16:30 -05:00
paweldomas
f2c9b8b7a5 Fix issue updating large video 'src' while on stage 2016-04-26 15:42:18 -05:00
paweldomas
0116f547ed Log an error when not an audio nor a video track is added 2016-04-26 15:40:57 -05:00
ibauersachs
13a55089a5 Commit from translate.jitsi.org by user ibauersachs.: 203 of 203 strings translated (0 fuzzy). 2016-04-26 17:13:55 +00:00
George Politis
7bb20bb967 Merge pull request #617 from bgrozev/refactor-util
Exposes the number of participants with tracks.
2016-04-26 10:23:34 -05:00
damencho
08b60bf750 Merge pull request #625 from champtar/source-package
Fix "make source-package"
2016-04-26 17:14:09 +03:00
Etienne CHAMPETIER
ca31bb935b Fix "make source-package"
Signed-off-by: Etienne CHAMPETIER <champetier.etienne@gmail.com>
2016-04-26 13:51:09 +02:00
damencho
1f98fbb99f Adds unhandledrejection, that catches all unhandled promise rejection and logs them in callstats. 2016-04-26 11:00:42 +03:00
damencho
2442f0dfd3 Removes playerPaused variable and just use player to get its state. 2016-04-26 10:22:12 +03:00
yanas
3a9d743d47 Add shared video smart mike mutes unmutes 2016-04-25 15:39:31 -05:00
emcho
6a74296d3e Commit from translate.jitsi.org by user emcho.: 180 of 180 strings translated (0 fuzzy). 2016-04-25 19:29:18 +00:00
jitsi-pootle
af46e28fcc New files added from translate.jitsi.org based on templates 2016-04-25 17:14:01 +00:00
Bernhard Lichtinger
c9ebecbf10 Add Firefox in list of supportedBrowsers for invite emails 2016-04-22 12:32:46 +02:00
Boris Grozev
fb7c2082e6 Exposes the number of participants with tracks. 2016-04-21 17:48:30 -05:00
emcho
1feb5d00fe Commit from translate.jitsi.org by user emcho.: 180 of 180 strings translated (0 fuzzy). 2016-04-20 23:06:12 +00:00
jitsi-pootle
faa519cbeb New files added from translate.jitsi.org based on templates 2016-04-20 22:35:07 +00:00
Emil Ivov
40c7a7e1b8 Merge pull request #615 from jitsi/prosody_jwt_errors
Improve token error reporting in Prosody JWT plugin
2016-04-20 17:16:19 -05:00
paweldomas
5a95edbdcd Improve token error reporting in Prosody JWT plugin 2016-04-20 16:38:16 -05:00
hristoterezov
846ec1c9c8 Merge pull request #614 from jitsi/add-initial-id-pass-login
Adds id and password initial login
2016-04-20 15:06:23 -05:00
yanas
1c9903642b Do not remove the login params after read 2016-04-20 14:41:29 -05:00
yanas
6bfb28f63f Merge pull request #610 from jitsi/callstats_fix
Leaves the call when the hangup button is pressed
2016-04-20 14:06:16 -05:00
yanas
3408737693 Adds id and password initial login 2016-04-20 14:02:16 -05:00
damencho
bbc91f6e0c Merge pull request #613 from jitsi/fix-display-name-dialog
Fix require display name dialog
2016-04-19 16:26:22 -05:00
yanas
0bf4660309 Fix require display name dialog 2016-04-19 16:06:16 -05:00
damencho
58d5823d12 Merge pull request #612 from jitsi/add-smart-shared-video-unmute
Adds smart un-mute to the shared video
2016-04-19 13:27:08 -05:00
yanas
326dedaf40 Fix string 2016-04-19 13:24:27 -05:00
yanas
d08e37b42b Adds smart un-mute to the shared video logic 2016-04-19 13:07:04 -05:00
hristoterezov
7c7ce66ae4 Prettifying the code related to showing the feedback dialog 2016-04-19 12:15:04 -05:00
hristoterezov
73b4ad5a63 Added JitsiConference.leave() when the hangup button is pressed 2016-04-18 17:02:34 -05:00
hristoterezov
2b7ae5c167 Merge pull request #609 from jitsi/fix-feedback-enabling
Fix enable feedback button check
2016-04-15 16:11:04 -05:00
yanas
7ba8b0a24e Fix enable feedback button check 2016-04-15 15:41:51 -05:00
damencho
47a64190a6 Merge pull request #602 from jitsi/performanceTime_format
Renames performanceTimes to ConnectionTimes
2016-04-11 13:41:40 -05:00
hristoterezov
b00fb2ec7e Merge pull request #599 from damencho/updates-onDisplayNameChanged
Updates onDisplayNameChanged
2016-04-11 13:12:42 -05:00
damencho
13e3e99994 Updates websockets example. 2016-04-11 10:16:08 -05:00
hristoterezov
655b7019d1 Renames performanceTimes to ConnectionTimes 2016-04-11 10:01:23 -05:00
damencho
702eb8cbbe Merge pull request #600 from jitsi/performanceTime_format
Fixes time console.log text
2016-04-10 12:55:58 -05:00
hristoterezov
ddf39a20b8 Fixes time console.log text 2016-04-10 12:25:37 -05:00
damencho
0e4f4cbd74 Initializes display name with initial value and does not depend on initial on display name changed event. 2016-04-09 22:08:06 -05:00
bgrozev
26443b6d72 Merge pull request #598 from damencho/minimize-document-modifications
Minimize document modifications on every presence
2016-04-09 21:57:16 -05:00
damencho
0974e31da1 Updates connection quality popover only if its visible or about to be visible. 2016-04-09 12:35:54 -05:00
damencho
613569ff09 Checks whether we need to modify document, before change - on display name change. 2016-04-09 12:04:01 -05:00
hristoterezov
4d63ea2021 Merge pull request #597 from jitsi/fix-isvisible-early-call
Fix early call of SidePanel isVisible
2016-04-08 14:49:15 -05:00
yanas
b597f44605 Fix early call of SidePanel isVisible 2016-04-08 14:46:13 -05:00
lyubomir
28bac7b329 Merge pull request #596 from jitsi/fix-black-stripe
Fix the black stripe (another try)
2016-04-08 11:13:12 -05:00
yanas
d9c3eec9a8 Fix the black stripe (another try) 2016-04-08 10:55:19 -05:00
hristoterezov
a8aa62b075 Merge pull request #593 from jitsi/custom-role-recorder-view
Add custom-role to presence and special view for Recorders
2016-04-07 14:58:54 -05:00
yanas
9ef43d1fe7 Remove self and use this instead in conference.js 2016-04-07 14:11:59 -05:00
yanas
562eba8d78 Removed unused variable 2016-04-07 13:58:15 -05:00
yanas
351775a1c0 Add jsdocs to the recording view manager 2016-04-07 13:09:19 -05:00
yanas
99d9b16c13 Add Recorder controller. 2016-04-07 13:06:28 -05:00
yanas
e43c5ab54c Add custom-role to presence and special view for Recorders 2016-04-07 12:08:00 -05:00
damencho
a112b10a36 Merge pull request #591 from jitsi/fix-black-stripe
Fix black stripe and side panel animations
2016-04-06 16:15:22 -05:00
yanas
4990406010 Fix black stripe on the right of the screen 2016-04-06 15:36:41 -05:00
hristoterezov
8842823607 Merge pull request #587 from damencho/global-error-handler
Enables global error handler.
2016-04-06 13:11:22 -05:00
damencho
ccc9f4e033 Adds a check and reuses any previous onerror handlers if they exist. 2016-04-06 11:52:31 -05:00
damencho
e56c936798 Enables global error handler. 2016-04-05 17:18:38 -05:00
damencho
b46480dc16 Merge pull request #586 from jitsi/shared-video-auto-mute-popup
Shared video auto mute popup
2016-04-05 14:40:30 -05:00
yanas
a1cef0f181 Add notification popup for shared video auto mute 2016-04-05 14:17:50 -05:00
yanas
ba871d269f Fix toolbar slide up effect. 2016-04-05 14:14:30 -05:00
Paweł Domas
b60e074710 Merge pull request #584 from bgrozev/enable-as
Enable adaptive simulcast by default
2016-04-04 16:23:58 -05:00
Boris Grozev
8466aa2f78 Renames adaptiveSimulcast to disableAdaptiveSimulcast.
In conjunction with corresponding commits in lib-jitsi-meet and jicofo
this enables adaptive simulcast whenever simulcast is enabled.
2016-04-04 14:15:59 -05:00
yanas
e28975dcb5 Merge pull request #581 from damencho/shared-video-volumes
Changes mute/unmute behavior when playing a shared video.
2016-04-01 17:38:52 -05:00
damencho
e579a41284 Merge pull request #582 from jitsi/set-follow-me-initial
Init follow me attributes after enable
2016-04-01 17:29:26 -05:00
damencho
b949ffdda1 Prevents users that are not sharing the video of pausing the video and leaves the control to the user sharing the video. 2016-04-01 17:23:30 -05:00
damencho
7dad981112 Follow seeking while player is paused. 2016-04-01 17:08:35 -05:00
damencho
6efbf058fa Merge pull request #579 from jitsi/fix-black-stripe-on-load
Fix large black stripe on load.
2016-04-01 16:28:32 -05:00
yanas
a3bfce4c40 Set follow-me initial state after enable 2016-04-01 16:26:30 -05:00
damencho
bede8feccc Mutes local video when shared video is playing and mutes shared video if user wants to talk. 2016-04-01 16:24:35 -05:00
damencho
2d1e7c9baf Merge pull request #580 from jitsi/performance_torture
Stores measured times and exposes them
2016-04-01 15:43:33 -05:00
damencho
9a984b7f84 Instantly update volume changes. 2016-04-01 14:46:42 -05:00
hristoterezov
8d77088f6d Stores measured times and exposes them 2016-04-01 14:44:25 -05:00
yanas
56690037d0 Fix large black stripe on load. 2016-04-01 11:30:05 -05:00
damencho
bd09fa2601 Merge pull request #578 from jitsi/fix-settings-dialog-strings
Unifies all strings in Settings.
2016-04-01 11:21:29 -05:00
damencho
7c7f8960fa Merge pull request #576 from jitsi/hide-feedback-with-filmstrip
Hide feedback with filmstrip
2016-04-01 10:58:01 -05:00
damencho
af2809258c Merge pull request #575 from jitsi/fix-follow-me-exception
Fixes exception in follow-me when we receive an update for a video th…
2016-04-01 08:38:06 -05:00
damencho
2353c6f7e3 Merge pull request #577 from jitsi/update_gitignore
Adds libs/external_connect.js to .gitignore
2016-03-31 22:21:02 -05:00
hristoterezov
b031fdc398 Adds libs/external_connect.js to .gitignore 2016-03-31 18:03:27 -05:00
yanas
144dd85e98 Unifies all strings in Settings. 2016-03-31 17:58:02 -05:00
yanas
67e8118d74 Shows/hides feedback button when the filmstrip is shown/hidden. 2016-03-31 17:35:10 -05:00
yanas
ea9b909775 Fixes exception in follow-me when we receive an update for a video thumbnail that's not there yet. 2016-03-31 15:13:00 -05:00
yanas
b7cc03df26 Merge pull request #573 from damencho/shared-video-updates
Shared video updates
2016-03-31 14:31:57 -05:00
damencho
ebe37ff98a Handle on player error so we can remove the player. 2016-03-31 14:11:33 -05:00
damencho
fcf5c16945 Merge pull request #574 from jitsi/fix-welcome-page-field
Fixes enter room name field in the welcome page.
2016-03-31 13:45:54 -05:00
yanas
5cbe710075 Fixes enter room name field in the welcome page. 2016-03-31 13:31:05 -05:00
damencho
104503ee13 Make sure we store initial attributes in order, so it will hold the last state we want to be in. Respects quick initial stop received. 2016-03-31 12:14:45 -05:00
damencho
2e3dcb142d Updates translation. 2016-03-31 11:43:37 -05:00
damencho
6951089130 Force seek when transition from and to pause state. 2016-03-31 00:07:12 -05:00
damencho
952eaf5a0c Avoids double loading of the player. 2016-03-30 21:36:05 -05:00
hristoterezov
d9e08032ce Changes translation module to load async 2016-03-30 21:01:21 -05:00
damencho
8a80df2828 Merge pull request #561 from jitsi/connection_optimization
Implements server side connection establishment
2016-03-30 14:30:36 -05:00
hristoterezov
166a609b94 Removes console.warn message from do_external_connect.js if there is no error passed. 2016-03-30 13:32:17 -05:00
bgrozev
ff256f15a5 Merge pull request #567 from jitsi/recording-recorder-parameter
Adds an I am a recorder parameter that allows for the UI to be cleane…
2016-03-29 17:29:54 -05:00
damencho
06f3ddc822 Hides the toolbar if the user is a recorder. 2016-03-29 17:28:20 -05:00
yanas
7f7d9d5594 Adds an I am a recorder parameter that allows for the UI to be cleaner and simpler for the recorders. 2016-03-29 17:26:39 -05:00
damencho
3c33542874 Merge pull request #566 from jitsi/recording-related-work-in-progress
Fixes streaming tooltip. Checks if the stream id is not provided and …
2016-03-29 16:31:22 -05:00
yanas
76820bed8d Fixes recording state handling. 2016-03-29 16:30:08 -05:00
yanas
39c350cdba Fixes streaming tooltip. Checks if the stream id is not provided and requests the user before starting the recorder. 2016-03-29 16:07:01 -05:00
yanas
2ef9412a01 Merge pull request #565 from damencho/dock-toolbar-on-shared-video
Docks toolbar when shared video is shown.
2016-03-29 15:58:28 -05:00
damencho
a38b628d76 Docks toolbar when shared video is shown. 2016-03-29 14:36:20 -05:00
damencho
24896634f6 Merge pull request #564 from jitsi/recording-related-work-in-progress
Recording related UI modifications.
2016-03-29 13:52:24 -05:00
yanas
8b060e9cc0 Fixes mistakenly removed button. 2016-03-29 13:51:21 -05:00
yanas
6d51cb5f40 Fixes mistakenly removed button. 2016-03-29 13:49:05 -05:00
yanas
51037c2dca Fixes status change from pending to unavailable. 2016-03-29 13:46:10 -05:00
yanas
7df5e92bc9 Adds new recording module. 2016-03-29 13:10:31 -05:00
yanas
68994fbe74 Recording related UI modifications. 2016-03-29 12:13:54 -05:00
hristoterezov
4a1175d44f Fixes comments after review 2016-03-28 17:42:20 -05:00
hristoterezov
bf9c4ea444 Implements server side connection establishment 2016-03-28 16:19:32 -05:00
yanas
0bde7de37b Merge pull request #560 from damencho/seek-on-start-paused
Seeks in video when we start in paused state.
2016-03-28 13:56:09 -05:00
damencho
9632bd531c Does not accumulate multiple pause events in commands. 2016-03-28 13:38:48 -05:00
yanas
740c920cbb Merge pull request #557 from damencho/enables-sharedvideo-for-all-participants
Enables shared video for all participants, the first to share is the …
2016-03-28 13:13:46 -05:00
damencho
885210452c Updates button states on non moderator participants before showing the toolbar. 2016-03-28 11:46:45 -05:00
damencho
7c02803ef9 Seeks in video when we start in paused state. 2016-03-27 15:32:45 -05:00
damencho
7d0cd00a50 Enables shared video for all participants, the first to share is the video all will see, later attempts will result just a dialog informing that video is already shared. 2016-03-25 19:38:56 -05:00
damencho
055f96bb03 Merge pull request #556 from jitsi/fix-follow-me-exception
Fixes exception on follow me command.
2016-03-25 17:22:05 -05:00
yanas
76548f1cd0 Fixes exception on follow me command. 2016-03-25 17:15:50 -05:00
yanas
1897de75b1 Merge pull request #555 from damencho/fix-shared-video-undefined
Uses player functions only after the player has reported playing event.
2016-03-25 15:58:20 -05:00
damencho
508fd4a8df Uses player functions only after the player has reported playing event. 2016-03-25 15:36:41 -05:00
bgrozev
30cf17d99d Merge pull request #554 from jitsi/fix-background-css
Reverts back to black background. We need to fix some other things be…
2016-03-25 14:50:31 -05:00
yanas
568a5ba816 Reverts back to black background. We need to fix some other things before moving to grey background. 2016-03-25 14:48:31 -05:00
yanas
9b09e61877 Merge pull request #553 from damencho/fix-replacing-pinned
Fixes and issue where: if we receive dominant speaker event just befo…
2016-03-24 17:43:18 -05:00
yanas
1e7cd06555 Merge pull request #552 from damencho/shared-video-fixes
Shared video fixes
2016-03-24 17:42:13 -05:00
damencho
d48ef06ddb Fixes and issue where: if we receive dominant speaker event just before the video start playing, this can override already pinned video. 2016-03-24 17:10:29 -05:00
damencho
af9f651702 Check whether commands are coming from moderator. 2016-03-24 16:20:27 -05:00
damencho
9abc78ef24 Do not send SELECTED_ENDPOINT events for custom containers. 2016-03-24 16:20:27 -05:00
damencho
5112041e15 Merge pull request #551 from jitsi/fix-shared-video-ui-glitches
Fixes shared video thumbnail size and shared video on large background.
2016-03-24 14:51:42 -05:00
yanas
6edbcb9311 Fixes shared video thumbnail size and shared video on large background. 2016-03-24 14:49:26 -05:00
yanas
4ffafbe9a8 Merge pull request #545 from damencho/fix-video-switching-on-hide-container
Fix video switching on hide container
2016-03-24 13:27:41 -05:00
yanas
d0ad928d39 Merge pull request #549 from damencho/fixes-early-pause-shared-video
Fixes early initial pause event, may lead to player keep buffering wi…
2016-03-24 13:27:22 -05:00
yanas
c4f4dcdb4f Merge pull request #546 from damencho/shared-video-display-name
Removes hoverIn/Out detection for shared video that shows/hides displ…
2016-03-24 13:25:51 -05:00
damencho
27607e8754 Update variable name to pinnedId. 2016-03-24 13:16:42 -05:00
damencho
94d98ec0ab Fixes returning to dominant speaker after closing shared video. Renames a method and fix its behaviour was handling both case when removing just video element in small videos (local or remote) and when we are removingParticipantContainer, now just handles the second one and uses focusedID if any or dominantSpeakerID if any, otherwise elects new video. 2016-03-24 13:11:03 -05:00
damencho
e330dbf5d1 Fixes switching to pinned video when hiding a container. 2016-03-24 13:06:52 -05:00
damencho
f788a45bac Merge pull request #548 from jitsi/follow-me
Follow me
2016-03-24 13:02:42 -05:00
bgrozev
3f62b479da Merge pull request #550 from jitsi/polish-ui
Polish ui
2016-03-24 12:26:13 -05:00
yanas
d49dff4ae1 Fixes a config parameter name. Removes a console.log, which got there by mistake. Fixes some css properties of the chat unread messages. 2016-03-24 12:17:58 -05:00
yanas
1526d4e239 Toolbar style changes. 2016-03-24 10:03:48 -05:00
yanas
0a2a6e5677 Changing random avatars to robohash. 2016-03-24 10:03:48 -05:00
yanas
72454ff279 HD label added when the large video is in HD. 2016-03-24 10:03:48 -05:00
yanas
64d8cb2db2 Turning video thumbnails into squares. Changes the size of the dominant speaker avatar and fixes some minor thing around those two. 2016-03-24 10:01:08 -05:00
yanas
5c0088d2ef Main UI polishing. Removes rounded corners, fixes gaps. Adding custom avatars. 2016-03-24 09:59:03 -05:00
damencho
9efebc3702 Fixes early initial pause event, may lead to player keep buffering without starting. 2016-03-23 22:42:17 -05:00
yanas
cc761700fe Extends the follow-me feature by adding the possibility to follow the pinned participant, the shared video and the shared document. Adds the possibility to enable disable follow-me from the settings panel. Some other small fixes throughout the UI. 2016-03-23 20:43:29 -05:00
damencho
8df6a29741 Removes hoverIn/Out detection for shared video that shows/hides displayname, as we always display the name of the video when there is no thumb shown. And we do not want the name over the thumb. 2016-03-22 17:15:35 -05:00
yanas
b1469186d1 Merge branch 'master' of https://github.com/jitsi/jitsi-meet into follow-me 2016-03-22 15:24:02 -05:00
yanas
32c2d912be Merge pull request #543 from damencho/shared-video
Shared video, synchronized play/pause/seek/muting/volume, initial commit.
2016-03-22 15:15:36 -05:00
damencho
586b8401ae Renames event name. 2016-03-22 15:04:52 -05:00
damencho
f0fd7d7435 Renames method. 2016-03-22 14:59:03 -05:00
damencho
9a39898eea Renames event name. 2016-03-22 14:57:36 -05:00
damencho
fe7d05a951 Reverse the check to use only VIDEO_CONTAINER_TYPE. 2016-03-22 14:56:50 -05:00
damencho
1bdeda4ec3 Fixes updateLarge video to change to different container types which do not have stream. 2016-03-22 14:49:37 -05:00
damencho
2c1a9d20fd Fixes setting local video, default videoType. Fixes showing local video when there is no video device shown. 2016-03-22 13:27:11 -05:00
damencho
d82d4cbed9 Creates first the container before setting avatar, cause the avatar set will check the large video container type and type may be missing. Fixes error 'container of type undefined doesn't exist':
>    at LargeVideoManager.getContainer
>    at LargeVideoManager.get
>    at Object.isCurrentlyOnLarge
>    at Object.changeUserAvatar
>    at Object.UI.setUserAvatar
>    at Object.UI.addUser
2016-03-18 17:44:32 -05:00
damencho
9e7275acfb Updates large video when user left and we are removing the shared video. 2016-03-18 17:21:41 -05:00
damencho
ba01733c4f Adds confirmation dialog when closing shared video. 2016-03-18 17:04:13 -05:00
damencho
a1ac18a632 Fixes pausing. 2016-03-18 16:47:47 -05:00
damencho
38275ce045 Shared video, synchronized playing/seek/muting/volume initial commit. 2016-03-18 15:00:55 -05:00
damencho
83f07a7e67 Merge pull request #542 from champtar/unsupported_browser
Add unsupported_browser.css to source-package
2016-03-18 09:58:32 -05:00
Etienne CHAMPETIER
a61ce8ee3b Add unsupported_browser.css to source-package
Signed-off-by: Etienne CHAMPETIER <champetier.etienne@gmail.com>
2016-03-18 15:23:15 +01:00
yanas
eec8129026 Merge pull request #540 from damencho/fix-etherpad
Fix etherpad
2016-03-17 22:37:00 -05:00
damencho
2b26580a7c Disables switching to dominant speaker when Etherpad is shown on large video. 2016-03-17 22:19:09 -05:00
damencho
eefdbd4fe5 Renames EtherpadContainerType to ETHERPAD_CONTAINER_TYPE. 2016-03-17 21:58:40 -05:00
Paweł Domas
7b55d8b526 Merge pull request #537 from jitsi/max_users_error
Implements dialog for max users error
2016-03-17 14:52:48 -05:00
yanas
20af89abfa Merge pull request #539 from damencho/ui-container-management-and-fixes
Ui container management and fixes
2016-03-17 14:13:18 -05:00
damencho
5963f85ad6 Fixes avatar that is shown, when we switch from container with muted video to container from other type, like etherpad. 2016-03-17 13:29:07 -05:00
hristoterezov
438cae101f Fixes error with max users limit after review 2016-03-17 13:23:03 -05:00
yanas
6a7919a904 Merge pull request #532 from damencho/resize-ds-onfilm-toggle
Resizes large video on filmstrip toggle.
2016-03-16 14:46:32 -05:00
damencho
3577f338cc Does not do force-update when resizing. 2016-03-16 14:35:30 -05:00
damencho
9e0b1beed5 Always uses current video type to search for container that will handle it. Renames video container type to camera, to match the type ot the tracks. Add the same container to be used and for tracks with type of desktop. 2016-03-16 13:28:35 -05:00
damencho
ca56734d9c Moves VideoLayout reference in SmallVideo as it is used there in updateView. 2016-03-16 13:28:28 -05:00
damencho
6955bb71f3 Adds methods to abstraction LargeContainer which are used by LargeVideo when updating video. 2016-03-16 13:28:20 -05:00
damencho
5837ef506c Removes remoteVideoTypes and uses the set/get in the small video instances. 2016-03-16 13:28:09 -05:00
damencho
3fc839cb37 Adds optional parameter to addParticipantContainer, make possible to create the SmallVideo outside VideoLayout and pass it to be displayed. 2016-03-16 13:28:00 -05:00
yanas
15865c3d42 Merge pull request #531 from damencho/remove-prezi
Merges damencho's PR for removing prezi. We still need to remove all prezi related strings from translations through translate.jitsi.org.
2016-03-16 13:18:08 -05:00
Emil Ivov
897e7a1925 Update main.json 2016-03-15 16:16:50 -05:00
hristoterezov
02ff54b659 Implements dialog for max users error 2016-03-15 14:08:01 -05:00
damencho
95f36cfd9a Merge pull request #530 from isymchych/nwjs
Example NW.js app.
2016-03-14 15:19:33 -05:00
damencho
97733cd17a Resizes large video on filmstrip toggle. 2016-03-11 12:57:49 -06:00
damencho
4ff6d276ce Removes prezi. 2016-03-11 12:00:10 -06:00
isymchych
72a761e80a integrate with nwjs 2016-03-11 15:18:37 +02:00
Lyubomir Marinov
605a892f78 Implements an initial (demo) version of "Follow Me" for film strip visibility. 2016-03-11 04:55:29 -06:00
Lyubomir Marinov
c35590dbda Allows UI.toggleFilmStrip() and UIEvents.TOGGLE_FILM_STRIP to act as setters in addition to toggles. 2016-03-11 04:54:06 -06:00
Lyubomir Marinov
972fc402e4 Exposes a Command(s) API from conference.js. 2016-03-11 04:49:13 -06:00
yanas
ed85658ce5 Merge pull request #520 from isymchych/improve-settings
Apply new settings without clickint "Update" button
2016-03-10 13:08:23 -06:00
yanas
3759676770 Merge pull request #525 from damencho/sync-mute
Syncs mute/unmute calls.
2016-03-09 16:17:00 -06:00
damencho
1c3aafd5c4 Uses the Promise returned on mute/unmute, just prints when calls were canceled due to operation in progress. 2016-03-08 17:33:09 -06:00
yanas
729ca2fbe6 Merge pull request #524 from damencho/ds-error-handle
Improves desktop sharing error handling.
2016-03-07 13:41:17 -06:00
damencho
45d997e9f1 Adds a comment to default error handling for desktop sharing. 2016-03-07 12:57:12 -06:00
damencho
6b5a52926a Merge pull request #522 from jitsi/fix_lib_rename
Fixes the compatability with lib-jitsi-meet for TRACK_REMOVED events for remote track to use peerconnection event instead of relying on TRACK_STOPPED event.
2016-03-07 11:22:22 -06:00
damencho
3a933cfb84 Avoids showing two warning dialogs when firefox extension is required and missing. 2016-03-04 15:55:44 -06:00
damencho
d78666a49d Removes listener to missing event and duplicate dialog code. 2016-03-04 15:36:53 -06:00
damencho
413e5098c8 Handles the error when user cancels desktop sharing window. 2016-03-04 15:21:07 -06:00
damencho
0470106524 Shows and error dialog when we fail to install desktop sharing plugin for some reason. 2016-03-04 15:20:05 -06:00
hristoterezov
30e1e3b23a Fixes jitsi meet to work with the renamed events and methods from the latest version of lib-jitsi-meet. 2016-03-03 14:53:36 +02:00
damencho
25a9928758 Merge pull request #521 from jitsi/fix-resizing
Fixes resizing problems introduced in last resizing commit and some previous problems with side panel open/close.
2016-03-02 14:59:23 -06:00
yanas
67a73b163e Removes empty space from the available width calculation. 2016-03-02 14:46:57 -06:00
yanas
ad44cc518a Fixes resizing problems introduced with previous resizing commit. Fixes side panel open/close code and resizing. 2016-03-02 13:50:55 -06:00
isymchych
be0abf908e auto-save setiings 2016-03-02 17:39:39 +02:00
yanas
c201de86cc Merge pull request #519 from isymchych/lastn
Use overriden config.channelLastN property in VideoLayout
2016-02-29 13:49:28 -06:00
yanas
48b225f382 Merge pull request #516 from isymchych/fix-auth
Code cleanup
2016-02-29 13:35:53 -06:00
yanas
1339b306e6 Merge pull request #517 from jitsi/fix-resizing
An additional fix should be added, which allow for more smooth resizing (we still see thumbnails going on a second row and then coming back up again), but this will be added in a separate commit.
2016-02-29 13:20:19 -06:00
isymchych
cd71b0a603 use latest version of the config.channelLastN 2016-02-26 15:22:04 +02:00
isymchych
f242c8cfdc handle missing remoteVideo when removing video element 2016-02-26 15:20:36 +02:00
Paweł Domas
259fae331f Merge pull request #518 from isymchych/really-fix-auth
Fix login/logout
2016-02-25 11:06:21 -06:00
isymchych
3cf478826e implement user logout 2016-02-25 15:52:15 +02:00
isymchych
b73bddf1c4 handle AUTH_STATUS_CHANGED event 2016-02-25 14:32:52 +02:00
isymchych
e478a73988 fix on-the-fly auth 2016-02-25 14:32:34 +02:00
isymchych
c294f592c8 code cleanup: remove redundant span.nick elements 2016-02-25 12:40:24 +02:00
isymchych
5ec28ff3c1 code cleanup: remove unused settings 2016-02-25 12:40:24 +02:00
yanas
30f3da98e5 Fixes thumbnail resize and thumbnails going on a second row. Refactors code around the film strip and resize in general. 2016-02-24 15:05:24 -06:00
yanas
194b991fb1 Merge pull request #515 from damencho/handle-track-removed
Handles track removed and removes video elements. Tested by starting/stopping desktop sharing several times and we only have one video and one audio element after the PR is applied.
2016-02-24 11:09:07 -06:00
damencho
3c61bac3c8 Handles track removed and removes video elements. When switching on and off desktop sharing video elements number grow under remote video span. 2016-02-23 16:47:55 -06:00
Paweł Domas
1a656c2c89 Merge pull request #494 from isymchych/escape-nicknames
Escape nicknames before displaying them
2016-02-23 10:50:03 -06:00
isymchych
ebf57923ae hide chat if local display name is empty 2016-02-23 17:20:33 +02:00
isymchych
0bcbd105e3 escape nicknames before displaying them 2016-02-23 17:20:33 +02:00
Paweł Domas
47f2320e94 Merge pull request #511 from isymchych/improve-focus-left
leave the room if focus left
2016-02-22 12:55:10 -06:00
isymchych
c027050e11 leave the room if focus left 2016-02-22 16:57:36 +02:00
Paweł Domas
93d5497c76 Merge pull request #508 from isymchych/fix-unmute
LargeVideo: detach previous stream when attaching new one
2016-02-19 10:11:25 -06:00
isymchych
6476503240 LargeVideo: detach previous stream when attaching new one 2016-02-18 15:38:57 +02:00
Paweł Domas
8b2244b47a Merge pull request #503 from isymchych/fix-logo-blink
Fix watermark logo blinking during video switching
2016-02-17 09:27:41 -06:00
isymchych
255f374894 fix watermark logo blinking during video switching 2016-02-17 14:37:06 +02:00
Paweł Domas
61b28fccf2 Merge pull request #499 from isymchych/fix-auth-dialog
fix authentication dialog
2016-02-16 10:48:37 -06:00
Paweł Domas
8d65fcc4c2 Merge pull request #498 from isymchych/reorder-streams-operations
Remove old track from the conference before adding new one
2016-02-16 10:32:38 -06:00
isymchych
5a1d200098 fix authentication dialog 2016-02-16 17:42:28 +02:00
isymchych
9581afb612 remove old track from the conference before adding new one 2016-02-16 15:34:32 +02:00
Paweł Domas
de8f75ddee Merge pull request #493 from isymchych/fix-screensharing-mute-on-safari
Fix screensharing mute on safari
2016-02-12 11:43:08 -06:00
isymchych
24ffc816f4 LargeVideo: show watermark even if video is muted 2016-02-12 16:47:42 +02:00
isymchych
401e5e7ae0 fix jshint issues 2016-02-12 16:28:43 +02:00
isymchych
fdfa9de150 hide large video if stream is muted 2016-02-12 16:28:43 +02:00
Paweł Domas
61f4bb63ab Merge pull request #492 from isymchych/device-selection
Allow user to select camera and microphone
2016-02-10 15:51:36 -06:00
isymchych
f65d630ad8 allow user to select camera and microphone 2016-02-10 15:37:50 +02:00
damencho
b4b9160fcb Adds room name to the bosh connection. 2016-02-09 17:44:41 -06:00
damencho
bd16b9e346 Prints audio levels in debug mode. 2016-02-09 16:49:58 -06:00
Paweł Domas
e688a5cb9f Merge pull request #487 from isymchych/video-mute-screensharing
Handle video mute/unmute during screensharing
2016-02-09 11:31:42 -06:00
damencho
dbed8c2976 Fixes push to talk. 2016-02-09 10:29:50 -06:00
isymchych
79d5bf6cfa move screensharing into single function, properly handle mute/unmute 2016-02-09 12:52:54 +02:00
isymchych
44bae94701 code cleanup 2016-02-09 12:30:34 +02:00
damencho
e81d3c02ad Shows dominant speaker icon for the local user, when he is the dominant speaker. 2016-02-08 15:42:03 -06:00
Paweł Domas
ff4de4cb5b Merge pull request #489 from isymchych/handle-focus-left
handle FOCUS_LEFT conference error
2016-02-08 09:37:57 -06:00
yanas
e09a2f5bee Fixes all shortcuts. 2016-02-05 12:53:31 -06:00
yanas
e7e8dc3457 Fixes shifted audio level glow on thumbnails. Fixes missing audio level indicator on large video avatar. 2016-02-05 11:32:09 -06:00
isymchych
379f786225 handle FOCUS_LEFT conference error 2016-02-05 17:04:48 +02:00
163 changed files with 15976 additions and 6843 deletions

5
.gitignore vendored
View File

@@ -4,7 +4,8 @@ node_modules
*.iml
.*.tmp
deploy-local.sh
libs/app.bundle.*
libs/lib-jitsi-meet*
libs/
all.css
*css.map
unsupported_browser.css
.remote-sync.json

View File

@@ -2,10 +2,3 @@ node_modules
libs
debian
analytics.js
lib-jitsi-meet.js
modules/xmpp/strophe.emuc.js
modules/UI/prezi/Prezi.js
modules/RTC/adapter.screenshare.js
modules/statistics/*
modules/UI/videolayout/*

View File

@@ -1,24 +1,35 @@
NPM = npm
BROWSERIFY = ./node_modules/.bin/browserify
NODE_SASS = ./node_modules/.bin/node-sass
UGLIFYJS = ./node_modules/.bin/uglifyjs
EXORCIST = ./node_modules/.bin/exorcist
CLEANCSS = ./node_modules/.bin/cleancss
CSS_FILES = font.css toastr.css main.css videolayout_default.css font-awesome.css jquery-impromptu.css modaldialog.css notice.css popup_menu.css login_menu.css popover.css jitsi_popover.css contact_list.css chat.css welcome_page.css settingsmenu.css feedback.css
STYLES_MAIN = css/main.scss
STYLES_UNSUPPORTED_BROWSER = css/unsupported_browser.scss
STYLES_BUNDLE = css/all.bundle.css
STYLES_DESTINATION = css/all.css
DEPLOY_DIR = libs
BROWSERIFY_FLAGS = -d
OUTPUT_DIR = .
LIBJITSIMEET_DIR = node_modules/lib-jitsi-meet/
IFRAME_API_DIR = ./modules/API/external
all: update-deps compile uglify deploy clean
all: update-deps compile compile-iframe-api uglify uglify-iframe-api deploy clean
# FIXME: there is a problem with node-sass not correctly installed (compiled)
# a quick fix to make sure it is installed on every update
# the problem appears on linux and not on macosx
update-deps:
$(NPM) update
$(NPM) update && $(NPM) install node-sass
compile:
$(BROWSERIFY) $(BROWSERIFY_FLAGS) -e app.js -s APP | $(EXORCIST) $(OUTPUT_DIR)/app.bundle.js.map > $(OUTPUT_DIR)/app.bundle.js
compile-iframe-api:
$(BROWSERIFY) $(BROWSERIFY_FLAGS) -e $(IFRAME_API_DIR)/external_api.js -s JitsiMeetExternalAPI | $(EXORCIST) $(OUTPUT_DIR)/external_api.js.map > $(OUTPUT_DIR)/external_api.js
clean:
rm -f $(OUTPUT_DIR)/app.bundle.*
rm -f $(OUTPUT_DIR)/app.bundle.* $(OUTPUT_DIR)/external_api.*
deploy: deploy-init deploy-appbundle deploy-lib-jitsi-meet deploy-css deploy-local
@@ -27,14 +38,25 @@ deploy-init:
deploy-appbundle:
cp $(OUTPUT_DIR)/app.bundle.min.js $(OUTPUT_DIR)/app.bundle.min.map \
$(OUTPUT_DIR)/app.bundle.js $(OUTPUT_DIR)/app.bundle.js.map \
$(OUTPUT_DIR)/external_api.js.map $(OUTPUT_DIR)/external_api.js \
$(OUTPUT_DIR)/external_api.min.map $(OUTPUT_DIR)/external_api.min.js \
$(OUTPUT_DIR)/analytics.js \
$(DEPLOY_DIR)
deploy-lib-jitsi-meet:
cp $(LIBJITSIMEET_DIR)/lib-jitsi-meet.min.js \
$(LIBJITSIMEET_DIR)/lib-jitsi-meet.min.map $(DEPLOY_DIR)
$(LIBJITSIMEET_DIR)/lib-jitsi-meet.min.map \
$(LIBJITSIMEET_DIR)/lib-jitsi-meet.js \
$(LIBJITSIMEET_DIR)/lib-jitsi-meet.js.map \
$(LIBJITSIMEET_DIR)/connection_optimization/external_connect.js \
$(DEPLOY_DIR)
deploy-css:
(cd css; cat $(CSS_FILES)) | $(CLEANCSS) > css/all.css
$(NODE_SASS) css/unsupported_browser.scss css/unsupported_browser.css ; \
$(NODE_SASS) $(STYLES_MAIN) $(STYLES_BUNDLE) && \
$(CLEANCSS) $(STYLES_BUNDLE) > $(STYLES_DESTINATION) ; \
rm $(STYLES_BUNDLE)
deploy-local:
([ ! -x deploy-local.sh ] || ./deploy-local.sh)
@@ -42,10 +64,14 @@ deploy-local:
uglify:
$(UGLIFYJS) -p relative $(OUTPUT_DIR)/app.bundle.js -o $(OUTPUT_DIR)/app.bundle.min.js --source-map $(OUTPUT_DIR)/app.bundle.min.map --in-source-map $(OUTPUT_DIR)/app.bundle.js.map
uglify-iframe-api:
$(UGLIFYJS) -p relative $(OUTPUT_DIR)/external_api.js -o $(OUTPUT_DIR)/external_api.min.js --source-map $(OUTPUT_DIR)/external_api.min.map --in-source-map $(OUTPUT_DIR)/external_api.js.map
source-package:
mkdir -p source_package/jitsi-meet/css && \
cp -r analytics.js external_api.js favicon.ico fonts images index.html interface_config.js libs plugin.*html sounds title.html unsupported_browser.html LICENSE config.js lang source_package/jitsi-meet && \
cp -r *.js *.html connection_optimization favicon.ico fonts images libs sounds LICENSE lang source_package/jitsi-meet && \
cp css/all.css source_package/jitsi-meet/css && \
cp css/unsupported_browser.css source_package/jitsi-meet/css && \
(cd source_package ; tar cjf ../jitsi-meet.tar.bz2 jitsi-meet) && \
rm -rf source_package

View File

@@ -4,7 +4,7 @@ Jitsi Meet is an open-source (Apache) WebRTC JavaScript application that uses [J
You can also try it out yourself at https://meet.jit.si .
Jitsi Meet allows for very efficient collaboration. It allows users to stream their desktop or only some windows. It also supports shared document editing with Etherpad and remote presentations with Prezi.
Jitsi Meet allows for very efficient collaboration. It allows users to stream their desktop or only some windows. It also supports shared document editing with Etherpad.
## Installation
@@ -66,6 +66,7 @@ npm link lib-jitsi-meet
```
So now after changes in local `lib-jitsi-meet` repository you can rebuild it with `npm run install` and your `jitsi-meet` repository will use that modified library.
Note: when using node version 4.x, the make file of jitsi-meet do npm update which will delete the link, no longer the case with version 6.x.
If you do not want to use local repository anymore you should run
```bash

View File

@@ -10,8 +10,13 @@
ga('send', 'pageview');
}
Analytics.prototype.sendEvent = function (action, data) {
ga('send', 'event', 'jit.si', action);
Analytics.prototype.sendEvent = function (action, data, label, browserName) {
// empty label if missing value for it and add the value,
// the value should be integer or null
var value = Math.round(parseFloat(data));
ga('send', 'event', 'jit.si',
action + '.' + browserName, label ? label : "", value ? value : null);
};
ctx.Analytics = Analytics;

103
app.js
View File

@@ -1,8 +1,9 @@
/* global $, JitsiMeetJS, config */
/* global $, JitsiMeetJS, config, getRoomName */
/* application specific logic */
import "babel-polyfill";
import "jquery";
import "jquery-contextmenu";
import "jquery-ui";
import "strophe";
import "strophe-disco";
@@ -22,63 +23,89 @@ import conference from './conference';
import API from './modules/API/API';
import UIEvents from './service/UI/UIEvents';
import getTokenData from "./modules/TokenData/TokenData";
/**
* Tries to push history state with the following parameters:
* 'VideoChat', `Room: ${roomName}`, URL. If fail, prints the error and returns
* it.
*/
function pushHistoryState(roomName, URL) {
try {
window.history.pushState(
'VideoChat', `Room: ${roomName}`, URL
);
} catch (e) {
console.warn("Push history state failed with parameters:",
'VideoChat', `Room: ${roomName}`, URL, e);
return e;
}
return null;
}
/**
* Builds and returns the room name.
*/
function buildRoomName () {
let path = window.location.pathname;
let roomName;
let roomName = getRoomName();
// determinde the room node from the url
// TODO: just the roomnode or the whole bare jid?
if (config.getroomnode && typeof config.getroomnode === 'function') {
// custom function might be responsible for doing the pushstate
roomName = config.getroomnode(path);
} else {
/* fall back to default strategy
* this is making assumptions about how the URL->room mapping happens.
* It currently assumes deployment at root, with a rewrite like the
* following one (for nginx):
location ~ ^/([a-zA-Z0-9]+)$ {
rewrite ^/(.*)$ / break;
}
*/
if (path.length > 1) {
roomName = path.substr(1).toLowerCase();
} else {
let word = RoomnameGenerator.generateRoomWithoutSeparator();
roomName = word.toLowerCase();
window.history.pushState(
'VideoChat', `Room: ${word}`, window.location.pathname + word
);
}
if(!roomName) {
let word = RoomnameGenerator.generateRoomWithoutSeparator();
roomName = word.toLowerCase();
let historyURL = window.location.href + word;
//Trying to push state with current URL + roomName
pushHistoryState(word, historyURL);
}
return roomName;
}
const APP = {
// Used by do_external_connect.js if we receive the attach data after
// connect was already executed. status property can be "initialized",
// "ready" or "connecting". We are interested in "ready" status only which
// means that connect was executed but we have to wait for the attach data.
// In status "ready" handler property will be set to a function that will
// finish the connect process when the attach data or error is received.
connect: {
status: "initialized",
handler: null
},
// Used for automated performance tests
connectionTimes: {
"index.loaded": window.indexLoadedTime
},
UI,
settings,
conference,
connection: null,
API,
init () {
this.desktopsharing =
require("./modules/desktopsharing/desktopsharing");
this.keyboardshortcut =
require("./modules/keyboardshortcut/keyboardshortcut");
this.translation = require("./modules/translation/translation");
this.configFetch = require("./modules/config/HttpConfigFetch");
this.tokenData = getTokenData();
}
};
/**
* If JWT token data it will be used for local user settings
*/
function setTokenData() {
let localUser = APP.tokenData.caller;
if(localUser) {
APP.settings.setEmail((localUser.getEmail() || "").trim(), true);
APP.settings.setAvatarUrl((localUser.getAvatarUrl() || "").trim());
APP.settings.setDisplayName((localUser.getName() || "").trim(), true);
}
}
function init() {
setTokenData();
var isUIReady = APP.UI.start();
if (isUIReady) {
APP.conference.init({roomName: buildRoomName()}).then(function () {
// init desktop before UI, in order to make sure
// autoEnableDesktopSharing works
APP.desktopsharing.init(JitsiMeetJS.isDesktopSharingEnabled());
APP.UI.initConference();
APP.UI.addListener(UIEvents.LANG_CHANGED, function (language) {
@@ -88,6 +115,8 @@ function init() {
APP.keyboardshortcut.init();
}).catch(function (err) {
APP.UI.hideRingOverLay();
APP.API.notifyConferenceLeft(APP.conference.roomName);
console.error(err);
});
}
@@ -110,8 +139,9 @@ function obtainConfigAndInit() {
// Get config result callback
function(success, error) {
if (success) {
console.log("(TIME) configuration fetched:\t",
window.performance.now());
var now = APP.connectionTimes["configuration.fetched"] =
window.performance.now();
console.log("(TIME) configuration fetched:\t", now);
init();
} else {
// Show obtain config error,
@@ -130,14 +160,15 @@ function obtainConfigAndInit() {
$(document).ready(function () {
console.log("(TIME) document ready:\t", window.performance.now());
var now = APP.connectionTimes["document.ready"] = window.performance.now();
console.log("(TIME) document ready:\t", now);
URLProcessor.setConfigParametersFromUrl();
APP.init();
APP.translation.init(settings.getLanguage());
APP.API.init();
APP.API.init(APP.tokenData.externalAPISettings);
obtainConfigAndInit();
});

0
base.html Normal file
View File

File diff suppressed because it is too large Load Diff

View File

@@ -6,7 +6,6 @@ var config = {
//anonymousdomain: 'guest.example.com',
//authdomain: 'jitsi-meet.example.com', // defaults to <domain>
muc: 'conference.jitsi-meet.example.com', // FIXME: use XEP-0030
bridge: 'jitsi-videobridge.jitsi-meet.example.com', // FIXME: use XEP-0030
//jirecon: 'jirecon.jitsi-meet.example.com',
//call_control: 'callcontrol.jitsi-meet.example.com',
//focus: 'focus.jitsi-meet.example.com', // defaults to 'focus.jitsi-meet.example.com'
@@ -54,7 +53,7 @@ var config = {
disableAudioLevels: false,
channelLastN: -1, // The default value of the channel attribute last-n.
adaptiveLastN: false,
adaptiveSimulcast: false,
//disableAdaptiveSimulcast: false,
enableRecording: false,
enableWelcomePage: true,
disableSimulcast: false,
@@ -70,4 +69,9 @@ var config = {
'During that time service will not be available. ' +
'Apologise for inconvenience.',*/
disableThirdPartyRequests: false,
minHDHeight: 540,
// If true - all users without token will be considered guests and all users
// with token will be considered non-guests. Only guests will be allowed to
// edit their profile.
enableUserRolesBasedOnToken: false
};

View File

@@ -1,19 +1,61 @@
/* global APP, JitsiMeetJS, config */
//FIXME:
import LoginDialog from './modules/UI/authentication/LoginDialog';
import AuthHandler from './modules/UI/authentication/AuthHandler';
const ConnectionEvents = JitsiMeetJS.events.connection;
const ConnectionErrors = JitsiMeetJS.errors.connection;
/**
* Checks if we have data to use attach instead of connect. If we have the data
* executes attach otherwise check if we have to wait for the data. If we have
* to wait for the attach data we are setting handler to APP.connect.handler
* which is going to be called when the attach data is received otherwise
* executes connect.
*
* @param {string} [id] user id
* @param {string} [password] password
* @param {string} [roomName] the name of the conference.
*/
function checkForAttachParametersAndConnect(id, password, connection) {
if(window.XMPPAttachInfo){
APP.connect.status = "connecting";
// When connection optimization is not deployed or enabled the default
// value will be window.XMPPAttachInfo.status = "error"
// If the connection optimization is deployed and enabled and there is
// a failure the value will be window.XMPPAttachInfo.status = "error"
if(window.XMPPAttachInfo.status === "error") {
connection.connect({id, password});
return;
}
var attachOptions = window.XMPPAttachInfo.data;
if(attachOptions) {
connection.attach(attachOptions);
delete window.XMPPAttachInfo.data;
} else {
connection.connect({id, password});
}
} else {
APP.connect.status = "ready";
APP.connect.handler = checkForAttachParametersAndConnect.bind(null,
id, password, connection);
}
}
/**
* Try to open connection using provided credentials.
* @param {string} [id]
* @param {string} [password]
* @param {string} [roomName]
* @returns {Promise<JitsiConnection>} connection if
* everything is ok, else error.
*/
function connect(id, password) {
let connection = new JitsiMeetJS.JitsiConnection(null, null, config);
function connect(id, password, roomName) {
let connectionConfig = Object.assign({}, config);
connectionConfig.bosh += '?room=' + roomName;
let connection
= new JitsiMeetJS.JitsiConnection(null, config.token, connectionConfig);
return new Promise(function (resolve, reject) {
connection.addEventListener(
@@ -45,33 +87,7 @@ function connect(id, password) {
reject(err);
}
connection.connect({id, password});
});
}
/**
* Show Authentication Dialog and try to connect with new credentials.
* If failed to connect because of PASSWORD_REQUIRED error
* then ask for password again.
* @returns {Promise<JitsiConnection>}
*/
function requestAuth() {
return new Promise(function (resolve, reject) {
let authDialog = LoginDialog.showAuthDialog(
function (id, password) {
connect(id, password).then(function (connection) {
authDialog.close();
resolve(connection);
}, function (err) {
if (err === ConnectionErrors.PASSWORD_REQUIRED) {
authDialog.displayError(err);
} else {
authDialog.close();
reject(err);
}
});
}
);
checkForAttachParametersAndConnect(id, password, connection);
});
}
@@ -82,13 +98,28 @@ function requestAuth() {
* @param {object} options
* @param {string} [options.id]
* @param {string} [options.password]
* @param {string} [options.roomName]
* @param {boolean} [retry] if we should show auth dialog
* on PASSWORD_REQUIRED error.
*
* @returns {Promise<JitsiConnection>}
*/
export function openConnection({id, password, retry}) {
return connect(id, password).catch(function (err) {
export function openConnection({id, password, retry, roomName}) {
let usernameOverride
= window.localStorage.getItem("xmpp_username_override");
let passwordOverride
= window.localStorage.getItem("xmpp_password_override");
if (usernameOverride && usernameOverride.length > 0) {
id = usernameOverride;
}
if (passwordOverride && passwordOverride.length > 0) {
password = passwordOverride;
}
return connect(id, password, roomName).catch(function (err) {
if (!retry) {
throw err;
}
@@ -98,7 +129,7 @@ export function openConnection({id, password, retry}) {
if (config.token) {
throw err;
} else {
return requestAuth();
return AuthHandler.requestAuth(roomName, connect);
}
} else {
throw err;

View File

@@ -0,0 +1,75 @@
/* global config, getRoomName, getConfigParamsFromUrl */
/* global createConnectionExternally */
/**
* Implements extrnal connect using createConnectionExtenally function defined
* in external_connect.js for Jitsi Meet. Parses the room name and token from
* the url and executes createConnectionExtenally.
*
* NOTE: If you are using lib-jitsi-meet without Jitsi Meet you should use this
* file as reference only because the implementation is Jitsi Meet specific.
*
* NOTE: For optimal results this file should be included right after
* exrnal_connect.js.
*/
/**
* Executes createConnectionExternally function.
*/
(function () {
var hashParams = getConfigParamsFromUrl("hash", true);
var searchParams = getConfigParamsFromUrl("search", true);
//Url params have higher proirity than config params
var url = config.externalConnectUrl;
if(hashParams.hasOwnProperty('config.externalConnectUrl'))
url = hashParams["config.externalConnectUrl"];
/**
* Check if connect from connection.js was executed and executes the handler
* that is going to finish the connect work.
*/
function checkForConnectHandlerAndConnect() {
if(window.APP && window.APP.connect.status === "ready") {
window.APP.connect.handler();
}
}
function error_callback(error){
if(error) //error=undefined if external connect is disabled.
console.warn(error);
// Sets that global variable to be used later by connect method in
// connection.js
window.XMPPAttachInfo = {
status: "error"
};
checkForConnectHandlerAndConnect();
}
if(!url || !window.createConnectionExternally) {
error_callback();
return;
}
var room_name = getRoomName();
if(!room_name) {
error_callback();
return;
}
url += "?room=" + room_name;
var token = hashParams["config.token"] || config.token ||
searchParams.jwt;
if(token)
url += "&token=" + token;
createConnectionExternally(url, function(connectionInfo) {
// Sets that global variable to be used later by connect method in
// connection.js
window.XMPPAttachInfo = {
status: "success",
data: connectionInfo
};
checkForConnectHandlerAndConnect();
}, error_callback);
})();

BIN
css/.DS_Store vendored Normal file

Binary file not shown.

178
css/_base.scss Normal file
View File

@@ -0,0 +1,178 @@
* {
-webkit-user-select: none;
user-select: none;
}
html, body{
margin:0px;
height:100%;
color: $defaultColor;
font-size: 12px;
font-weight: 400;
background: #000000;
overflow: hidden;
}
html, body, input, textarea, keygen, select, button {
font-family: $baseFontFamily !important;
}
#nowebrtc {
display:none;
}
.no-fa-video-camera, .fa-microphone-slash {
color: #636363;
}
input[type='text'], input[type='password'], textarea {
-webkit-user-select: text;
user-select: text;
display: inline-block;
padding: 5px;
color: $defaultDarkColor;
border-radius: $borderRadius;
line-height: 32px;
height: 32px;
text-align: left;
border:1px solid $inputBorderColor;
outline: none; /* removes the default outline */
resize: none; /* prevents the user-resizing, adjust to taste */
}
textarea {
overflow: hidden;
word-wrap: break-word;
resize: horizontal;
}
button.no-icon {
padding: 0 1em;
}
button, input, select, textarea {
margin: 0;
vertical-align: baseline;
color: $defaultDarkColor;
background: $inputLightBackground;
font-size: 12px;
border: none;
box-shadow: none;
outline: none;
}
button, select, input[type="button"],
input[type="reset"], input[type="submit"] {
height: 32px;
line-height: 32px;
padding-left: 4px;
padding-right: 4px;
cursor: pointer;
}
button {
color: #FFF;
background-color: $buttonBackground !important;
border-radius: $borderRadius;
}
button,
form {
display: block;
}
#downloadlog {
display: none;
position: absolute;
bottom: 5;
left: 5;
overflow: visible;
color: rgba(255,255,255,.50);
}
.active {
background-color: #00ccff;
}
.glow
{
text-shadow: 0px 0px 30px #06a5df, 0px 0px 10px #06a5df, 0px 0px 5px #06a5df,0px 0px 3px #06a5df;
}
.watermark {
display: block;
position: absolute;
top: 15;
width: 186px;
height: 74px;
background-size: contain;
background-repeat: no-repeat;
z-index: 2;
}
.leftwatermark {
display: none;
left: $defaultToolbarSize;
margin-left: 10px;
background-image: url($defaultWatermarkLink);
background-position: center left;
}
.rightwatermark {
display: none;
right: 15;
background-position: center right;
}
.poweredby {
display: none;
position: absolute;
left: 25;
bottom: 7;
font-size: 11pt;
color: rgba(255,255,255,.50);
text-decoration: none;
z-index: 100;
}
.connected {
color: #21B9FC;
font-size: 12px;
}
.lastN, .disconnected {
color: #a3a3a3;
font-size: 12px;
}
/**
* Hides an element.
*/
.hide {
display: none !important;
}
/**
* Shows an element.
*/
.show {
display: block !important;
}
/**
* Shows an inline element.
*/
.show-inline {
display: inline-block !important;
}
/**
* Shows a flex element.
*/
.show-flex {
display: -webkit-box !important;
display: -moz-box !important;
display: -ms-flexbox !important;
display: -webkit-flex !important;
display: flex !important;
}

View File

@@ -1,9 +1,4 @@
#chatspace {
background-color: black;
border-left: 1px solid #424242;
}
#chatspace * {
#chat_container * {
-webkit-user-select: text;
user-select: text;
}
@@ -21,6 +16,26 @@
overflow-y: scroll;
overflow-x: hidden;
word-wrap: break-word;
a:link {
color: rgb(184, 184, 184);
}
a:visited {
color: white;
}
a:hover {
color: rgb(213, 213, 213);
}
a:active {
color: black;
}
}
#chat_container.is-conversation-mode #chatconversation {
visibility: visible;
}
.localuser {
@@ -61,6 +76,10 @@
box-shadow: none;
}
#chat_container.is-conversation-mode #usermsg {
visibility: visible;
}
#nickname {
position: absolute;
text-align: center;
@@ -72,6 +91,10 @@
width: 95%;
}
#chat_container.is-conversation-mode #nickname {
visibility: hidden;
}
#nickinput {
margin-top: 20px;
font-size: 14px;
@@ -84,30 +107,21 @@
#unreadMessages {
font-size: 8px;
position: absolute;
left: 46%;
top: 27%
}
#bottomUnreadMessages {
top: 5px;
left: 10px;
position: absolute;
font-size: 8px;
}
#chatspace .username {
#chat_container .username {
float: left;
padding-left: 5px;
font-weight: bold;
}
#chatspace .timestamp {
#chat_container .timestamp {
float: right;
padding-right: 5px;
font-size: 11px;
}
#chatspace .usermessage {
#chat_container .usermessage {
padding-top: 20px;
padding-left: 5px;
}
@@ -168,6 +182,10 @@
visibility: hidden;
}
#chat_container.is-conversation-mode #smileysarea {
visibility: visible;
}
#smileysContainer {
display: none;
position: absolute;
@@ -220,20 +238,4 @@
#usermsg::-webkit-scrollbar-track-piece {
background: #3a3a3a;
}
a:link {
color: rgb(184, 184, 184);
}
a:visited {
color: white;
}
a:hover {
color: rgb(213, 213, 213);
}
a:active {
color: black;
}

53
css/_contact_list.scss Normal file
View File

@@ -0,0 +1,53 @@
#contacts_container {
cursor: default;
> ul#contacts {
position: absolute;
top: 31px;
bottom: 0px;
width: 100%;
margin: 0px;
padding: 0px;
overflow-y: scroll;
overflow-x: hidden;
}
.clickable {
cursor: pointer;
}
}
#contacts {
>li {
list-style-type: none;
text-align: left;
white-space: nowrap;
color: #FFF;
font-size: 10pt;
padding: 7px 10px;
margin: 2px;
&:hover,
&:active {
background: $toolbarSelectBackground;
}
> p {
display: inline-block;
vertical-align: middle;
margin: 0px;
}
}
}
.avatar {
padding: 0px;
margin-right: 10px;
vertical-align: middle;
font-size: 22pt;
border-radius: 20px;
max-height: 30px;
max-width: 30px;
}

View File

@@ -0,0 +1,31 @@
.settingsContent {
display: flex;
display: -webkit-flex;
#localVideoPreview {
width: 50%;
align-self: baseline;
}
.deviceSelection {
display: flex;
display: -webkit-flex;
-webkit-flex: 1;
flex: 1;
flex-direction: column;
flex-wrap: nowrap;
justify-content: flex-start;
align-items: left;
margin-left: 10px;
.device {
display: flex;
margin-bottom: 5px;
select {
flex: 1;
margin_right: 5px;
}
}
}
}

107
css/_feedback.scss Normal file
View File

@@ -0,0 +1,107 @@
@-webkit-keyframes shake-rotate {
0% {
-webkit-transform:scale(1) rotate(0deg);
transform:scale(1) rotate(0deg)
}
50% {
-webkit-transform:scale(.8) rotate(-5deg);
transform:scale(.8) rotate(-5deg)
}
to {
-webkit-transform:scale(1) rotate(3deg);
transform:scale(1) rotate(3deg)
}
}
@keyframes shake-rotate {
0% {
-webkit-transform:scale(1) rotate(0deg);
transform:scale(1) rotate(0deg)
}
50% {
-webkit-transform:scale(.8) rotate(-5deg);
transform:scale(.8) rotate(-5deg)
}
to {
-webkit-transform:scale(1) rotate(3deg);
transform:scale(1) rotate(3deg)
}
}
.shake-rotate {
-webkit-animation-duration: .4s;
animation-duration: .4s;
-webkit-animation-iteration-count: infinite;
animation-iteration-count: infinite;
-webkit-animation-name: shake-rotate;
animation-name: shake-rotate;
-webkit-animation-timing-function: ease-in-out;
animation-timing-function: ease-in-out
}
.text-center {
text-align: center;
}
.feedbackDetails textarea {
resize: vertical;
min-height: 100px;
}
.feedback-rating {
line-height: 1.2;
padding: 20px 0;
h2 {
font-weight: 400;
font-size: 24px;
line-height: 1.2;
padding: auto;
margin: auto;
border: none;
}
p {
margin-top: 10px;
margin-left: 0px;
margin-bottom: 0px;
margin-right: 0px;
}
.star-label {
font-size: 16px;
color: $rateStarLabelColor;
}
.star-btn {
color: $rateStarDefault;
font-size: 36px;
position: relative;
cursor: pointer;
outline: none;
text-decoration: none;
@include transition(all .2s ease);
&.starHover,
&.active,
&:hover {
color: $rateStarActivity;
.fa {
top: -6px;
}
};
&.rated:hover .fa {
top: 0;
}
.fa {
position: relative;
}
}
}

View File

@@ -24,103 +24,105 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-contactList:before {
content: "\e615";
.icon-feedback:before {
content: "\e91d";
}
.icon-toggle-filmstrip:before {
content: "\e91c";
}
.icon-avatar:before {
content: "\e616";
content: "\e901";
}
.icon-callRetro:before {
content: "\e611";
.icon-autorenew:before {
content: "\e903";
}
.icon-callModern:before {
content: "\e612";
}
.icon-recDisable:before {
content: "\e613";
}
.icon-recEnable:before {
content: "\e614";
}
.icon-authenticate:before {
content: "\e1ae";
}
.icon-kick1:before {
content: "\e60f";
}
.icon-kick:before {
content: "\e610";
}
.icon-share-desktop:before {
content: "\e602";
}
.icon-chat-simple:before {
content: "\e606";
}
.icon-full-screen:before {
content: "\e60d";
}
.icon-exit-full-screen:before {
content: "\e60e";
}
.icon-prezi:before {
content: "\e60c";
}
.icon-link:before {
content: "\e600";
.icon-hangup:before {
content: "\e905";
}
.icon-chat:before {
content: "\e601";
content: "\e906";
}
.icon-presentation:before {
content: "\e603";
.icon-download:before {
content: "\e902";
}
.icon-security:before {
content: "\e604";
.icon-edit:before {
content: "\e907";
}
.icon-share-doc:before {
content: "\e605";
content: "\e908";
}
.icon-telephone:before {
content: "\e611";
content: "\e909";
}
.icon-kick:before {
content: "\e904";
}
.icon-full-screen:before {
content: "\e90b";
}
.icon-exit-full-screen:before {
content: "\e90c";
}
.icon-star-full:before {
content: "\e90a";
}
.icon-security:before {
content: "\e90d";
}
.icon-security-locked:before {
content: "\e607";
content: "\e90e";
}
.icon-camera:before {
content: "\e608";
}
.icon-camera-disabled:before {
content: "\e609";
}
.icon-mic-disabled:before {
content: "\e60a";
.icon-reload:before {
content: "\e90f";
}
.icon-microphone:before {
content: "\e60b";
content: "\e910";
}
.icon-hangup:before {
content: "\e617";
.icon-mic-empty:before {
content: "\e911";
}
.icon-reload:before {
content: "\e618";
.icon-mic-disabled:before {
content: "\e912";
}
.icon-filmstrip:before {
content: "\e619";
.icon-contactList:before {
content: "\e91b";
}
.icon-connection:before {
line-height: normal;
content: "\e61a";
.icon-link:before {
content: "\e913";
}
.icon-shared-video:before {
content: "\e914";
}
.icon-settings:before {
content: "\e61b";
content: "\e915";
}
.icon-dialPad:before {
content: "\e61c";
.icon-star:before {
content: "\e916";
}
.icon-share-desktop:before {
content: "\e917";
}
.icon-camera:before {
content: "\e918";
}
.icon-camera-disabled:before {
content: "\e919";
}
.icon-volume:before {
content: "\e91a";
}
.icon-connection-lost:before {
content: "\e900";
}
.icon-connection:before {
content: "\e61a";
}
.icon-recDisable:before {
content: "\e613";
}
.icon-recEnable:before {
content: "\e614";
}
.icon-presentation:before {
content: "\e603";
}

View File

@@ -71,7 +71,7 @@
height: 35px;
width: 100px;
position: absolute;
bottom: -35;
bottom: -35px;
}
.jitsipopover_green
@@ -86,12 +86,12 @@
.jitsipopover_blue
{
color: #06a5df;
color: #21B9FC;
}
.jitsipopover_showmore
{
background-color: #06a5df;
background-color: #21B9FC;
color: #ffffff;
cursor: pointer;
border-radius: 3px;

View File

@@ -55,7 +55,7 @@ div.jqi .jqibuttons{
div.jqi .jqibuttons button{
margin: 0;
padding: 5px 20px;
background-color: transparent;
background-color: transparent !important;
font-weight: normal;
border: none;
border-left: solid 1px #e4e4e4;

View File

@@ -0,0 +1,206 @@
@charset "UTF-8";
/*!
* jQuery contextMenu - Plugin for simple contextMenu handling
*
* Version: v2.1.1
*
* Authors: Björn Brala (SWIS.nl), Rodney Rehm, Addy Osmani (patches for FF)
* Web: http://swisnl.github.io/jQuery-contextMenu/
*
* Copyright (c) 2011-2016 SWIS BV and contributors
*
* Licensed under
* MIT License http://www.opensource.org/licenses/mit-license
*
* Date: 2016-02-28T09:53:18.890Z
*/
@font-face {
font-family: "context-menu-icons";
font-style: normal;
font-weight: normal;
src: url("font/context-menu-icons.eot?2qmzf");
src: url("font/context-menu-icons.eot?2qmzf#iefix") format("embedded-opentype"), url("font/context-menu-icons.woff2?2qmzf") format("woff2"), url("font/context-menu-icons.woff?2qmzf") format("woff"), url("font/context-menu-icons.ttf?2qmzf") format("truetype");
}
.context-menu-icon:before {
position: absolute;
top: 50%;
left: 0;
width: 28px;
font-family: "context-menu-icons";
font-size: 16px;
font-style: normal;
font-weight: normal;
line-height: 1;
color: #2980b9;
text-align: center;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
-o-transform: translateY(-50%);
transform: translateY(-50%);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.context-menu-icon-add:before {
content: "";
}
.context-menu-icon-copy:before {
content: "";
}
.context-menu-icon-cut:before {
content: "";
}
.context-menu-icon-delete:before {
content: "";
}
.context-menu-icon-edit:before {
content: "";
}
.context-menu-icon-paste:before {
content: "";
}
.context-menu-icon-quit:before {
content: "";
}
.context-menu-icon.context-menu-hover:before {
color: #fff;
}
.context-menu-list {
position: absolute;
display: inline-block;
min-width: 180px;
max-width: 360px;
padding: 4px 0;
margin: 5px;
font-family: inherit;
font-size: inherit;
list-style-type: none;
background: #fff;
border: 1px solid #bebebe;
border-radius: 3px;
-webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, .5);
box-shadow: 0 2px 5px rgba(0, 0, 0, .5);
}
.context-menu-item {
position: relative;
padding: 3px 28px;
color: #2f2f2f;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-color: #fff;
}
.context-menu-separator {
padding: 0;
margin: 5px 0;
border-bottom: 1px solid #e6e6e6;
}
.context-menu-item > label > input,
.context-menu-item > label > textarea {
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
}
.context-menu-item.context-menu-hover {
color: #fff;
cursor: pointer;
background-color: #2980b9;
}
.context-menu-item.context-menu-disabled {
color: #626262;
background-color: #fff;
}
.context-menu-item.context-menu-disabled {
color: #626262;
}
.context-menu-input.context-menu-hover,
.context-menu-item.context-menu-disabled.context-menu-hover {
cursor: default;
background-color: #eee;
}
.context-menu-submenu:after {
position: absolute;
top: 50%;
right: 8px;
z-index: 1;
width: 0;
height: 0;
content: '';
border-color: transparent transparent transparent #2f2f2f;
border-style: solid;
border-width: 4px 0 4px 4px;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
-o-transform: translateY(-50%);
transform: translateY(-50%);
}
/**
* Inputs
*/
.context-menu-item.context-menu-input {
padding: 5px 10px;
}
/* vertically align inside labels */
.context-menu-input > label > * {
vertical-align: top;
}
/* position checkboxes and radios as icons */
.context-menu-input > label > input[type="checkbox"],
.context-menu-input > label > input[type="radio"] {
position: relative;
top: 3px;
}
.context-menu-input > label,
.context-menu-input > label > input[type="text"],
.context-menu-input > label > textarea,
.context-menu-input > label > select {
display: block;
width: 100%;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.context-menu-input > label > textarea {
height: 100px;
}
.context-menu-item > .context-menu-list {
top: 5px;
/* re-positioned by js */
right: -5px;
display: none;
}
.context-menu-item.context-menu-visible > .context-menu-list {
display: block;
}
.context-menu-accesskey {
text-decoration: underline;
}

View File

@@ -0,0 +1,25 @@
#keyboard-shortcuts {
display: none;
position: absolute;
bottom: 20px;
left: $defaultToolbarSize;
overflow: hidden;
padding: 20px;
margin-left: 10px;
z-index: 10;
border-radius: $borderRadius;
background-attachment: scroll;
background-size: auto auto;
color: rgba(255, 255, 255, .8);
background-color: rgba(0, 0, 0, .8);
}
#keyboard-shortcuts .item-action {
color: #209EFF;
font-size: 14pt;
padding-right: 5px;
}
#keyboard-shortcuts-list {
list-style-type: none;
}

View File

@@ -1,5 +1,7 @@
/*Initialize*/
ul.loginmenu {
font-family: $baseFontFamily;
line-height: normal;
display:none;
position: absolute;
margin: 0;
@@ -15,12 +17,10 @@ ul.loginmenu {
ul.loginmenu li {
list-style-type: none;
padding: 7px;
}
ul.loginmenu li.identity {
color: #fff;
font-size: 11pt;
cursor: default;
white-space: pre;
}
ul.loginmenu:after {
@@ -38,8 +38,6 @@ li a.authButton{
padding-left: 29px;
padding-right: 29px;
border-radius: 4px;
color: #fff;
font-size: 11pt;
cursor: pointer;
}
@@ -47,6 +45,10 @@ span.authentication:hover ul.loginmenu, ul.loginmenu:hover {
display:block !important;
}
span.authentication {
position: relative;
}
a.disabled {
color: gray !important;
pointer-events: none;
@@ -58,4 +60,17 @@ a.disabled {
position: absolute;
top: -30px;
left: 0px;
}
}
.loginmenu.extendedToolbarPopup {
left: 55px;
top: 0px;
}
ul.loginmenu.extendedToolbarPopup:after {
content: url('../images/leftDropdownPointer.png');
display: block;
position: absolute;
top: 18px;
left: -7px;
}

52
css/_mixins.scss Normal file
View File

@@ -0,0 +1,52 @@
/**
* Animation mixin.
*/
@mixin animation($animate...) {
$max: length($animate);
$animations: '';
@for $i from 1 through $max {
$animations: #{$animations + nth($animate, $i)};
@if $i < $max {
$animations: #{$animations + ", "};
}
}
-webkit-animation: $animations;
-moz-animation: $animations;
-o-animation: $animations;
animation: $animations;
}
/**
* Keyframes mixin.
*/
@mixin keyframes($animationName) {
@-webkit-keyframes #{$animationName} {
@content;
}
@-moz-keyframes #{$animationName} {
@content;
}
@-o-keyframes #{$animationName} {
@content;
}
@keyframes #{$animationName} {
@content;
}
}
@mixin transform($func) {
-moz-transform: $func;
-ms-transform: $func;
-webkit-transform: $func;
-o-transform: $func;
transform: $func;
}
@mixin transition($transition...) {
-moz-transition: $transition;
-o-transition: $transition;
-webkit-transition: $transition;
transition: $transition;
}

View File

@@ -2,7 +2,7 @@
position: absolute;
top: 0;
left: 0;
z-index: 1010;
z-index: 1015;
display: none;
max-width: 300px;
min-width: 100px;
@@ -121,4 +121,4 @@
border-right-width: 0;
border-left-color: #ffffff;
bottom: -10px;
}
}

View File

@@ -1,27 +1,10 @@
/*Initialize*/
ul.popupmenu {
display:none;
position: absolute;
padding:10px;
padding: 0px 10px 0px 10px;
margin: 0;
bottom: 0;
margin-bottom: 35px;
padding-bottom: 10px;
padding-top: 10px;
right: 10px;
left: -5px;
width: 100px;
background-color: rgba(0,0,0,0.9);
border: 1px solid rgba(256, 256, 256, 0.2);
border-radius:8px;
}
ul.popupmenu:after {
content: url('../images/popupPointer.png');
display: block;
position: absolute;
bottom: -8px;
left: 11px;
height: auto;
}
ul.popupmenu li {
@@ -31,16 +14,18 @@ ul.popupmenu li {
ul.popupmenu li:hover {
background-color: rgba(256, 256, 256, .2);
border-radius:6px;
border-radius:3px;
}
/*Link Appearance*/
ul.popupmenu li a {
display: block;
text-decoration: none;
color: #fff;
padding: 5px;
display: inline-block;
font-size: 9pt;
width: 100%;
cursor: hand;
}
ul.popupmenu li a i.icon-kick {
@@ -54,6 +39,15 @@ ul.popupmenu li a span {
text-align: center;
}
ul.popupmenu li a div {
display: inline-block;
line-height: 25px;
}
ul.popupmenu li a i {
line-height: 25px;
}
span.remotevideomenu:hover ul.popupmenu, ul.popupmenu:hover {
display:block !important;
}
@@ -61,12 +55,4 @@ span.remotevideomenu:hover ul.popupmenu, ul.popupmenu:hover {
a.disabled {
color: gray !important;
pointer-events: none;
}
.popupmenuPadding {
height: 35px;
width: 100px;
position: absolute;
bottom: -35;
left: 0px;
}

4
css/_recording.scss Normal file
View File

@@ -0,0 +1,4 @@
.recordingSpinner {
display: none;
vertical-align: text-bottom;
}

View File

@@ -0,0 +1,114 @@
/**
* Toolbar side panel main container element.
*/
#sideToolbarContainer {
display: inline-block;
position:absolute;
top: 0px;
left: $defaultToolbarSize;
width: 0%;
height: 100%;
max-width: 200px;
background-color: rgba(0,0,0,0.8);
z-index: 800;
overflow: hidden;
/**
* Labels inside the side panel.
*/
label {
color: $defaultSemiDarkColor;
}
/**
* Form elements and blocks.
*/
input, label, select, button, a, .sideToolbarBlock {
display: inline-block;
margin-top: 15px;
margin-left: 10%;
width: 80%;
}
/**
* Specify colors for edit elements.
*/
select, input[type="button"], input[type="text"],
input[type="reset"], input[type="submit"] {
color: $defaultColor;
background: $inputBackground;
border: none;
}
/**
* Specify styling of elements inside a block.
*/
.sideToolbarBlock {
input, label, button, a, select {
margin-top: 5px;
margin-left: 0;
width: 100%;
}
.startMutedLabel,
.followMeLabel {
display: inline;
margin-top: 0;
}
}
/**
* Inner container, for example contact list, settings or profile.
*/
.sideToolbarContainer__inner {
display: none;
width: 200px;
color: #FFF;
/**
* Titles and subtitles of inner containers.
*/
> div.title,
div.subTitle {
color: $defaultColor !important;
text-align: left;
margin: 10px 0px 10px 0px;
padding: 5px 10px 5px 10px;
}
/**
* Main title size.
*/
> div.title {
font-size: 16px;
}
/**
* Subtitle specific properties.
*/
> div.subTitle {
font-size: 12px;
background: $inputSemiBackground !important;
margin-top: 20px !important;
margin-bottom: 8px !important;
}
/**
* First element after a title.
*/
.first {
margin-top: 0px !important;
}
}
}
#device_settings {
width : auto !important;
text-align: center;
}
#startAudioMuted,
#startVideoMuted,
#followMeCheckBox {
width: 13px !important;
}

View File

@@ -19,32 +19,42 @@
.toast-message label {
color: #ffffff;
}
.toast-message .nickname {
font-weight: bold;
}
.toast-message a:hover {
color: #cccccc;
text-decoration: none;
}
.toast-close-button {
position: relative;
right: -0.3em;
top: -0.3em;
float: right;
font-size: 20px;
font-size: 15px;
height: 15px;
width: 15px;
font-weight: bold;
color: #ffffff;
background: transparent !important;
-webkit-text-shadow: 0 1px 0 #ffffff;
text-shadow: 0 1px 0 #ffffff;
opacity: 0.8;
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
filter: alpha(opacity=80);
}
.toast-close-button:hover,
.toast-close-button:focus {
color: #000000;
color: #ffffff;
text-decoration: none;
cursor: pointer;
opacity: 0.4;
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
filter: alpha(opacity=40);
opacity: 1;
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
filter: alpha(opacity=100);
}
/*Additional properties for button version
iOS requires the button element instead of an anchor tag.
@@ -84,7 +94,7 @@ button.toast-close-button {
}
#toast-container {
position: fixed;
z-index: 999999;
z-index: 1012;
/*overrides*/
}
@@ -95,7 +105,7 @@ button.toast-close-button {
}
#toast-container > div {
margin: 0 0 6px;
padding: 15px 15px 15px 50px;
padding: 15px 15px 15px 15px;
width: 300px;
-moz-border-radius: 3px 3px 3px 3px;
-webkit-border-radius: 3px 3px 3px 3px;
@@ -119,21 +129,17 @@ button.toast-close-button {
filter: alpha(opacity=100);
cursor: pointer;
}
#toast-container > .toast-info {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important;
}
#toast-container > .toast-error {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important;
}
#toast-container > .toast-success {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important;
}
#toast-container > .toast-warning {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important;
#toast-container .toast-info,
#toast-container .toast-success,
#toast-container .toast-error,
#toast-container .toast-warning
{
padding: 10px 10px 10px 10px !important;
}
#toast-container.toast-top-full-width > div,
#toast-container.toast-bottom-full-width > div {
width: 96%;
width: 100%;
margin: auto;
}
.toast {
@@ -154,7 +160,7 @@ button.toast-close-button {
/*Responsive Design*/
@media all and (max-width: 240px) {
#toast-container > div {
padding: 8px 8px 8px 50px;
padding: 8px 8px 8px 8px;
width: 11em;
}
#toast-container .toast-close-button {
@@ -164,7 +170,7 @@ button.toast-close-button {
}
@media all and (min-width: 241px) and (max-width: 480px) {
#toast-container > div {
padding: 8px 8px 8px 50px;
padding: 8px 8px 8px 8px;
width: 18em;
}
#toast-container .toast-close-button {
@@ -174,7 +180,33 @@ button.toast-close-button {
}
@media all and (min-width: 481px) and (max-width: 768px) {
#toast-container > div {
padding: 15px 15px 15px 50px;
padding: 15px 15px 15px 15px;
width: 25em;
}
}
#toast-container.notification-bottom-right {
bottom: 140px;
right: 5px;
}
#toast-container.notification-bottom-right-center {
right: 205px;
}
#toast-container .toast-info {
-webkit-box-shadow: none;
box-shadow: none;
}
.toast-close-button {
right: -7px;
top: -19px;
}
#toast-container .toast-info {
background-color: black;
border: 1px solid #3a3a3a;
width: 220px;
padding: 10px 10px 10px 50px;
}

236
css/_toolbars.scss Normal file
View File

@@ -0,0 +1,236 @@
.toolbar {
background-color: rgba(0,0,0,0.5);
position: relative;
z-index: $toolbarZ;
height: 100%;
pointer-events: auto;
}
#mainToolbarContainer{
display: block;
position: absolute;
text-align: center;
top:0;
left:0;
right:0;
z-index: $toolbarZ;
pointer-events: none;
min-height: 100px;
transform: translateY(-100%);
-webkit-transform: translateY(-100%);
}
#subject {
position: relative;
z-index: 3;
width: auto;
padding: 5px;
margin-left: 40%;
margin-right: 40%;
text-align: center;
background: linear-gradient(to bottom, rgba(255,255,255,.85) , rgba(255,255,255,.35));
box-shadow: 0 0 2px #000000, 0 0 10px #000000;
border-bottom-left-radius: 12px;
border-bottom-right-radius: 12px;
}
#mainToolbar {
height: $defaultToolbarSize;
display: inline-block;
position: relative;
top: 30px;
margin-left: auto;
margin-right: auto;
width: auto;
border-radius: 4px;
.first {
border-bottom-left-radius: 4px;
border-top-left-radius: 4px;
}
.last {
border-bottom-right-radius: 4px;
border-top-right-radius: 4px;
}
}
#extendedToolbar {
display: flex;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
width: $defaultToolbarSize;
height: 100%;
top: 0px;
left: 0px;
padding-top: 10px;
flex-direction: column;
flex-wrap: nowrap;
justify-content: flex-start;
align-items: center;
transform: translateX(-100%);
-webkit-transform: translateX(-100%);
}
#toolbar_button_hangup {
color: #BF2117;
font-size: $hangupFontSize !important;
}
#toolbar_button_etherpad {
display: none;
}
#numberOfParticipants {
position: absolute;
top: 5px;
line-height: 13px;
font-weight: bold;
font-size: 11px;
}
#mainToolbar a.button:last-child::after {
content: none;
}
.button {
display: inline-block;
position: relative;
color: #FFFFFF;
top:0px;
width: 50px;
height: 50px;
cursor: pointer;
text-align: center;
z-index: 1;
font-size: $toolbarFontSize !important;
line-height: 50px !important;
vertical-align: middle;
}
.button[disabled] {
opacity: 0.5;
}
.button.unclickable {
cursor: default;
}
a.button.unclickable:hover,
a.button.unclickable:active,
a.button.unclickable.selected{
cursor: default;
background: none;
}
a.button:hover,
a.button:active,
a.button.selected {
cursor: pointer;
// sum opacity with background layer should give us 0.8
background: $toolbarSelectBackground;
}
a.button>#avatar {
width: 30px;
border-radius: 50%;
padding-top: 10px;
padding-bottom: 10px;
}
#feedbackButton {
margin-top: auto;
}
/**
* START of slide in animation for extended toolbar.
*/
@include keyframes(slideInX) {
0% { transform: translateX(-100%); }
100% { transform: translateX(0%); }
}
.slideInX {
@include animation('slideInX .5s forwards');
}
@include keyframes(slideOutX) {
0% { transform: translateX(0%); }
100% { transform: translateX(-100%); }
}
.slideOutX {
@include animation('slideOutX .5s forwards');
}
@include keyframes(slideInExtX) {
0% { transform: translateX(-500%); }
100% { transform: translateX(0%); }
}
.slideInExtX {
@include animation('slideInExtX .5s forwards');
}
@include keyframes(slideOutExtX) {
0% { transform: translateX(0%); }
100% { transform: translateX(-500%); }
}
.slideOutExtX {
@include animation('slideOutExtX .5s forwards');
}
/**
* END of slide out animation for extended toolbar.
*/
/**
* START of slide in / out animation for main toolbar.
*/
@include keyframes(slideInY) {
100% { transform: translateY(0%); }
}
.slideInY {
@include animation('slideInY .5s forwards');
}
@include keyframes(slideOutY) {
0% { transform: translateY(0%); }
100% { transform: translateY(-100%); }
}
.slideOutY {
@include animation('slideOutY .5s forwards');
}
/**
* END of slide in / out animation for main toolbar.
*/
/**
* START of slide in animation for extended toolbar panel.
*/
@include keyframes(slideInExt) {
from { width: 0px; }
to { width: 200px; } // TO FIX: Make this value a percentage.
}
.slideInExt {
@include animation("slideInExt .5s forwards");
}
@include keyframes(slideOutExt) {
from { width: 200px; } // TO FIX: Make this value a percentage.
to { width: 0px; }
}
.slideOutExt {
@include animation("slideOutExt .5s forwards");
}
/**
* END of slide in animation for extended toolbar panel.
*/

42
css/_variables.scss Normal file
View File

@@ -0,0 +1,42 @@
/**
<<<<<<< HEAD
* Style variables
*/
$baseFontFamily: 'open_sanslight', 'Helvetica Neue', Helvetica, Arial, sans-serif;
$toolbarFontSize: 1.9em;
$hangupFontSize: 2em;
/**
* Size variables.
*/
$defaultToolbarSize: 50px;
/**
* Color variables.
*/
$defaultColor: #F1F1F1;
$defaultSemiDarkColor: #ACACAC;
$defaultDarkColor: #4F4F4F;
$defaultBackground: #474747;
$toolbarSelectBackground: rgba(0, 0, 0, .6);
$inputBackground: rgba(132, 132, 132, .5);
$inputSemiBackground: rgba(132, 132, 132, .8);
$inputLightBackground: #EBEBEB;
$inputBorderColor: #EBEBEB;
$buttonBackground: #44A5FF;
/**
* Misc.
*/
$borderRadius: 4px;
$defaultWatermarkLink: '../images/watermark.png';
/**
* Z-indexes. TODO: Replace this by a function.
*/
$toolbarZ: 900;
$overlayZ: 800;
$rateStarDefault: #ccc;
$rateStarActivity: #f6c342;
$rateStarLabelColor: #333;

View File

@@ -8,7 +8,15 @@
}
#remoteVideos {
display:block;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: flex-end;
position:absolute;
text-align:right;
height:196px;
@@ -21,6 +29,7 @@
z-index: 5;
transition: bottom 2s;
overflow: visible !important;
font-size: 0pt; /*!!!Removes the gap between the local video container and the remote videos.*/
}
#remotevideos.hidden {
@@ -29,52 +38,42 @@
.videocontainer {
position: relative;
margin-left: auto;
margin-right: auto;
text-align: center;
}
#remoteVideos .videocontainer {
display: none;
background-color: black;
background-size: contain;
border-radius:8px;
border: 2px solid #212425;
margin-right: 3px;
border-radius:1px;
border: 1px solid #212425;
}
#remoteVideos .videocontainer:hover,
#remoteVideos .videocontainer.videoContainerFocused {
cursor: hand;
/* transform:scale(1.08, 1.08);
-webkit-transform:scale(1.08, 1.08); */
transition-duration: 0.5s;
-webkit-transition-duration: 0.5s;
-webkit-animation-name: greyPulse;
-webkit-animation-duration: 2s;
-webkit-animation-iteration-count: 1;
overflow: visible !important;
}
#remoteVideos .videocontainer:hover {
box-shadow: inset 0 0 10px #FFFFFF, 0 0 10px #FFFFFF;
border: 2px solid #FFFFFF;
border: 1px solid #c1c1c1;
}
#remoteVideos .videocontainer.videoContainerFocused {
box-shadow: inset 0 0 28px #006d91;
border: 2px solid #006d91;
border: 1px solid #006d91;
}
#remoteVideos .videocontainer.videoContainerFocused:hover {
box-shadow: inset 0 0 5px #FFFFFF, 0 0 10px #FFFFFF, inset 0 0 60px #006d91;
border: 2px solid #FFFFFF;
box-shadow: inset 0 0 5px #c1c1c1, 0 0 10px #c1c1c1, inset 0 0 60px #006d91;
border: 1px solid #c1c1c1;
}
#localVideoWrapper {
display:inline-block;
-webkit-mask-box-image: url(../images/videomask.svg);
border-radius:4px !important;
border: 0px !important;
}
/* With TemasysWebRTC plugin <object/> element is used
@@ -82,7 +81,9 @@
#remoteVideos .videocontainer>video,
#remoteVideos .videocontainer>object {
cursor: hand;
border-radius:4px;
border-radius:1px;
object-fit: cover;
overflow: hidden;
}
.flipVideoX {
@@ -95,7 +96,8 @@
#localVideoWrapper>video,
#localVideoWrapper>object {
cursor: hand;
border-radius:4px !important;
border-radius:1px !important;
object-fit: cover;
}
#largeVideo,
@@ -112,6 +114,7 @@
}
#presentation,
#sharedVideo,
#etherpad,
#localVideoWrapper>video,
#localVideoWrapper>object,
@@ -138,13 +141,8 @@
z-index: 0;
}
#toolbar_button_etherpad {
display: none;
}
#remoteVideos .videocontainer>span.focusindicator,
#remoteVideos .videocontainer>span.remotevideomenu {
display: inline-block;
#remoteVideos .videocontainer>div.remotevideomenu {
position: absolute;
color: #FFFFFF;
top: 0;
@@ -158,14 +156,12 @@
text-align: center;
}
#remoteVideos .nick {
display: none; /* enable when you want nicks to be shown */
position: absolute;
left: 0px;
bottom: -20px;
z-index: 0;
width: 100%;
font-size: 10pt;
#remoteVideos .videocontainer>span.focusindicator {
display: inline-block;
}
#remoteVideos .videocontainer>div.remotevideomenu {
display: block;
}
.videocontainer>span.displayname,
@@ -185,7 +181,7 @@
overflow: hidden;
white-space: nowrap;
z-index: 2;
border-radius:20px;
border-radius:3px;
}
.videocontainer>span.status {
@@ -204,7 +200,7 @@
overflow: hidden;
white-space: nowrap;
z-index: 2;
border-radius:20px;
border-radius:3px;
}
.connectionindicator
@@ -319,7 +315,7 @@
z-index: 3;
}
.videocontainer>span.dominantspeakerindicator {
.videocontainer>span.indicator {
bottom: 0px;
left: 0px;
width: 25px;
@@ -327,7 +323,7 @@
z-index: 3;
text-align: center;
border-radius: 50%;
background: #0cf;
background: #21B9FC;
margin: 5px;
display: inline-block;
position: absolute;
@@ -336,7 +332,7 @@
border: 0px;
}
#speakerindicatoricon {
#indicatoricon {
padding-top: 5px;
}
@@ -357,60 +353,18 @@
z-index: 20; /*The reload button should appear on top of the header!*/
}
#header{
display:none;
position:absolute;
text-align:center;
top:0;
left:0;
right:0;
z-index:10;
pointer-events: none;
}
#toolbar {
display:inline-block;
position:relative;
margin-top:5px;
margin-left:auto;
margin-right:auto;
padding-left:2px;
padding-right:2px;
height:38px;
width:auto;
background-color: rgba(0,0,0,0.8);
border: 1px solid rgba(256, 256, 256, 0.2);
border-radius: 6px;
pointer-events: auto;
}
#subject {
position: relative;
z-index: 3;
width: auto;
padding: 5px;
margin-left: 40%;
margin-right: 40%;
text-align: center;
background: linear-gradient(to bottom, rgba(255,255,255,.85) , rgba(255,255,255,.35));
box-shadow: 0 0 2px #000000, 0 0 10px #000000;
border-bottom-left-radius: 12px;
border-bottom-right-radius: 12px;
display: none;
}
.audiolevel {
display: inline-block;
position: absolute;
z-index: 0;
border-radius:10px;
border-radius:1px;
pointer-events: none;
}
#dominantSpeaker {
visibility: hidden;
width: 150px;
height: 150px;
width: 300px;
height: 300px;
margin: auto;
overflow: hidden;
position: relative;
@@ -420,7 +374,7 @@
position: absolute;
top: 0px;
left: 0px;
z-index: 1;
z-index: 2;
visibility: inherit;
}
@@ -429,21 +383,28 @@
}
#dominantSpeakerAvatar {
width: 100px;
height: 100px;
top: 25px;
width: 200px;
height: 200px;
top: 50px;
margin: auto;
position: relative;
border-radius: 50px;
z-index: 2;
border-radius: 100px;
z-index: 3;
visibility: inherit;
background-color: #000000;
}
.userAvatar {
height: 100%;
position: absolute;
left: 35px;
border-radius: 200px;
left: 0;
border-radius: 2px;
}
.sharedVideoAvatar {
height: 100%;
width: 100%;
object-fit: cover;
}
.noMic {
@@ -485,7 +446,7 @@
position: absolute;
width: 100%;
top:50%;
z-index: 10000;
z-index: 1011;
font-weight: 600;
font-size: 14px;
text-align: center;
@@ -495,4 +456,48 @@
0px 1px 1px rgba(0,0,0,0.3),
1px 0px 1px rgba(0,0,0,0.3),
0px 0px 1px rgba(0,0,0,0.3);
}
}
#videoResolutionLabel {
display: none;
position: absolute;
top: 5px;
right: 5px;
background: rgba(0,0,0,.5);
padding: 10px;
color: rgba(255,255,255,.5);
z-index: 1011;
}
.centeredVideoLabel {
display: none;
position: absolute;
bottom: 45%;
top: auto;
right: auto;
left: auto;
line-height: 28px;
height: 28px;
width: auto;
padding: 5px;
margin-right: auto;
margin-left: auto;
background: rgba(0,0,0,.5);
color: #FFF;
z-index: 1011;
border-radius: 2px;
-webkit-transition: all 2s 2s linear;
transition: all 2s 2s linear;
}
.moveToCorner {
top: 5px;
right: 50px; /*leave free space for the HD label*/
margin-right: 0px;
margin-left: auto;
background: rgba(0,0,0,.3);
color: rgba(255,255,255,.5);
}
.hidden {
}

View File

@@ -1,4 +1,3 @@
#disable_welcome {
display:none;
}
@@ -21,7 +20,6 @@
-moz-user-select: none;
background-repeat: no-repeat;
font-weight: 500;
font-family: Helvetica;
font-size: 16px;
color: #acacac;
z-index: 2;
@@ -35,18 +33,17 @@
-moz-user-select: none;
background-repeat: no-repeat;
font-weight: 500;
font-family: Helvetica;
font-size: 16px;
color: #acacac;
z-index: 2;
}
#enter_room_form {
border-radius: 10px;
border-radius: 1px;
background-color: #FFFFFF;
border: none;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
-moz-border-radius: 1px;
-webkit-border-radius: 1px;
-webkit-appearance: none;
height: 55px;
box-shadow: none;
@@ -56,21 +53,22 @@
#domain_name
{
float: left;
padding: 20px 0px 10px 20px;
height: 55px;
line-height: 55px;
font-size: 18px;
font-weight: 500;
font-family: Helvetica;
padding-left: 20px;
color: $defaultDarkColor;
}
#enter_room_field {
font-size: 15px;
padding: 15px 0px 10px 10px;
border: none;
-webkit-appearance: none;
width: 228px;
height: 55px;
line-height: 55px;
font-weight: 500;
font-family: Helvetica;
box-shadow: none;
float: left;
background-color: #FFFFFF;
@@ -81,15 +79,14 @@
#enter_room_button {
width: 73px;
height: 45px;
background-color: #16a8fe;
moz-border-radius: 10px;
-webkit-border-radius: 10px;
background-color: #21B9FC;
moz-border-radius: 1px;
-webkit-border-radius: 1px;
color: #ffffff;
font-weight: 600;
border: none;
margin-top: 5px;
font-size: 19px;
font-family: Helvetica;
padding-top: 6px;
outline: none;
float:left;
@@ -136,7 +133,6 @@
width: 885px;
height: 100px;
color: #ffffff;
font-family: Helvetica;
font-size: 24px;
text-align: center;
margin: 0px auto 0px auto;
@@ -171,7 +167,6 @@
background-repeat: no-repeat;
width: 169px;
height: 169px;
font-family: Helvetica;
color: #ffffff;
font-size: 22px;
/*font-weight: bold;*/
@@ -183,7 +178,6 @@
.feature_description
{
width: 190px;
font-family: Helvetica;
color: #ffffff;
font-size: 16px;
padding-top: 30px;
@@ -194,9 +188,9 @@
#reload_roomname
{
width: 30px;
height: 19px;
color: #acacac;
margin-top: 22px;
font-size: 1.9em;
line-height: 55px;
z-index: 3;
float: left;
cursor: pointer;

View File

@@ -1,53 +0,0 @@
#contactlist {
background-color: black;
cursor: default;
}
#contactlist>div.title {
text-align: left;
padding: 7px 10px;
margin: 2px;
color: #00ccff;
font-size: 11pt;
border-bottom: 1px solid #676767;
}
#contactlist>ul#contacts {
position: absolute;
top: 31px;
bottom: 0px;
width: 100%;
margin: 0px;
padding: 0px;
overflow-y: scroll;
overflow-x: hidden;
}
#contacts>li {
list-style-type: none;
text-align: left;
color: #FFF;
font-size: 10pt;
padding: 7px 10px;
margin: 2px;
}
#contacts>li>p {
display: inline-block;
vertical-align: middle;
margin: 0px;
}
.avatar {
padding: 0px;
margin-right: 10px;
vertical-align: middle;
font-size: 22pt;
border-radius: 20px;
max-height: 30px;
max-width: 30px;
}
#contactlist .clickable {
cursor: pointer;
}

View File

@@ -1,48 +0,0 @@
/**
* The feedback window inner div css.
*/
.feedback {
width: 450px;
display: block;
margin-left: auto;
margin-right: auto;
text-align: center;
font-size: 22px;
}
/**
* Style of the thank you text inside the feedback window.
*/
.feedbackTitle {
font-size: 22px;
color: #087dba;
}
/**
* Stars div css.
*/
#stars {
font-size: 30px;
}
/**
* Star css.
*/
#stars>a {
padding-right: 4px;
}
/**
* Mouse over a star.
*/
.starHover {
color: #087dba;
}
/**
* Detailed feedback section text area style.
*/
.feedbackDetails textarea {
resize: vertical;
min-height: 100px;
}

View File

@@ -1,402 +0,0 @@
* {
-webkit-user-select: none;
user-select: none;
}
html, body{
margin:0px;
height:100%;
color: #424242;
font-family:'Helvetica Neue', Helvetica, sans-serif;
font-weight: 400;
background: #000000;
overflow: hidden;
}
.right-panel {
display:none;
position:absolute;
float: right;
top: 0px;
bottom: 0px;
right: 0px;
width: 20%;
max-width: 200px;
overflow: hidden;
/* background-color:#dfebf1;*/
background-color:#FFFFFF;
border-left:1px solid #424242;
z-index: 5;
}
#nowebrtc {
display:none;
}
.toolbar_span {
display: inline-block;
position: relative;
}
#toolbar a.button::after {
content: '';
display: inline-block;
position: absolute;
left: 40px;
width: 1px;
height: 20px;
background: #373737;
}
#toolbar a.button:last-child::after {
content: none;
}
.button {
display: inline-block;
position: relative;
color: #FFFFFF;
top: 0;
padding: 10px 0;
width: 38px;
cursor: pointer;
text-align: center;
text-shadow: 0 1px 0 rgba(255,255,255,.3), 0 -1px 0 rgba(0,0,0,.6);
z-index: 1;
}
.toolbar_span>span {
display: inline-block;
position: absolute;
font-size: 7pt;
color: #ffffff;
text-align:center;
cursor: pointer;
}
#toolbar_button_chat, #chatBottomButton, #contactListButton, #numberOfParticipants {
-webkit-transition: all .5s ease-in-out;
-moz-transition: all .5s ease-in-out;
transition: all .5s ease-in-out;
}
/*#ffde00*/
#toolbar_button_chat.active, #contactListButton.glowing, #chatBottomButton.glowing {
-webkit-text-shadow: -1px 0 10px #00ccff,
0 1px 10px #00ccff,
1px 0 10px #00ccff,
0 -1px 10px #00ccff;
-moz-text-shadow: 1px 0 10px #00ccff,
0 1px 10px #00ccff,
1px 0 10px #00ccff,
0 -1px 10px #00ccff;
text-shadow: -1px 0 10px #00ccff,
0 1px 10px #00ccff,
1px 0 10px #00ccff,
0 -1px 10px #00ccff;
}
#toolbar_button_hangup {
color: #ff0000;
font-size: 1.4em;
}
#numberOfParticipants {
position: absolute;
top: 0px;
right: -1;
color: white;
width: 13px;
height: 13px;
line-height: 13px;
font-weight: bold;
border-radius: 2px;
font-size: 11px;
text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black;
}
#contactListButton.active #numberOfParticipants {
color: #00ccff;
}
#toolbar_button_record {
-webkit-transition: all .5s ease-in-out;
-moz-transition: all .5s ease-in-out;
transition: all .5s ease-in-out;
}
/*#ffde00*/
#toolbar_button_record.active {
-webkit-text-shadow: -1px 0 10px #00ccff,
0 1px 10px #00ccff,
1px 0 10px #00ccff,
0 -1px 10px #00ccff;
-moz-text-shadow: 1px 0 10px #00ccff,
0 1px 10px #00ccff,
1px 0 10px #00ccff,
0 -1px 10px #00ccff;
text-shadow: -1px 0 10px #00ccff,
0 1px 10px #00ccff,
1px 0 10px #00ccff,
0 -1px 10px #00ccff;
}
a.button:hover,
a.bottomToolbarButton:hover {
top: 0px;
cursor: pointer;
background: rgba(255, 255, 255, 0.1);
border-radius: 6px;
background-clip: padding-box;
-webkit-border-radius: 6px;
-webkit-background-clip: padding-box;
}
.no-fa-video-camera, .fa-microphone-slash {
color: #636363;
}
.header_button_separator {
display: inline-block;
position:relative;
top: 5;
width: 1px;
height: 20px;
background: #373737;
}
.bottom_button_separator {
display: inline-block;
position: relative;
left: 5;
width: 20px;
height: 1px;
background: #373737;
}
input[type='text'], input[type='password'], textarea {
-webkit-user-select: text;
user-select: text;
display: inline-block;
font-size: 14px;
padding: 5px;
background: #f3f3f3;
border-radius: 3px;
font-weight: 100;
line-height: 20px;
height: 40px;
color: #333;
text-align: left;
border:1px solid #ACD8F0;
outline: none; /* removes the default outline */
resize: none; /* prevents the user-resizing, adjust to taste */
}
input[type='text'], input[type='password'], textarea:focus {
box-shadow: inset 0 0 3px 2px #ACD8F0; /* provides a more style-able
replacement to the outline */
}
textarea {
overflow: hidden;
word-wrap: break-word;
resize: horizontal;
}
button.no-icon {
padding: 0 1em;
}
button {
border: none;
height: 35px;
padding: 0 1em 0 2em;
position: relative;
border-radius: 3px;
font-weight: bold;
color: #fff;
line-height: 35px;
background: #2c8ad2;
}
button, input, select, textarea {
margin: 0;
vertical-align: baseline;
}
button, input[type="button"], input[type="reset"], input[type="submit"] {
cursor: pointer;
-webkit-appearance: button;
}
form {
display: block;
}
#downloadlog {
position: absolute;
bottom: 5;
left: 5;
overflow: visible;
color: rgba(255,255,255,.50);
}
#feedbackButton {
position: absolute;
bottom: 60;
left: 60;
overflow: visible;
color: rgba(255,255,255,.50);
}
div.feedbackButton {
display: none;
position: absolute;
background-color: rgba(0,0,0,.50);
border-radius: 50%;
width: 100px;
height: 100px;
bottom: -50px;
left: -50px;
z-index: 100;
overflow: hidden;
transition: all .2s ease-in-out;
}
div.feedbackButton:hover {
transform: scale(1.3);
}
#bottomToolbar {
display:block;
position: absolute;
right: 0;
margin-right: 5px;
bottom: 40px;
width: 29px;
border-radius: 6px;
color: #FFF;
border: 1px solid rgba(256, 256, 256, 0.2);
background: rgba(0,0,0,0.8);
z-index: 6; /*+1 from #remoteVideos*/
}
.bottomToolbarButton {
display: inline-block;
position: relative;
color: #FFFFFF;
top: 0;
padding-top: 6px;
margin: 2px;
width: 25px;
height: 20px;
cursor: pointer;
font-size: 10pt;
text-align: center;
text-shadow: 0px 1px 0px rgba(255,255,255,.3), 0px -1px 0px rgba(0,0,0,.7);
z-index: 1;
}
.active {
color: #00ccff;
}
.bottomToolbar_span>span {
display: inline-block;
position: absolute;
font-size: 7pt;
color: #ffffff;
text-align: center;
cursor: pointer;
}
.glow
{
text-shadow: 0px 0px 30px #06a5df, 0px 0px 10px #06a5df, 0px 0px 5px #06a5df,0px 0px 3px #06a5df;
}
.watermark {
display: block;
position: absolute;
top: 15;
width: 186px;
height: 74px;
background-size: contain;
background-repeat: no-repeat;
z-index: 2;
}
.leftwatermark {
display: none;
left: 15;
background-image:url(../images/watermark.png);
background-position: center left;
}
.rightwatermark {
display: none;
right: 15;
background-position: center right;
}
.poweredby {
display: none;
position: absolute;
left: 25;
bottom: 7;
font-size: 11pt;
color: rgba(255,255,255,.50);
text-decoration: none;
z-index: 100;
}
#toast-container.notification-bottom-right {
bottom: 120px;
right: 5px;
}
#toast-container.notification-bottom-right-center {
right: 205px;
}
#toast-container .toast-info {
-webkit-box-shadow: none;
box-shadow: none;
}
.toast-close-button {
right: -7px;
top: -19px;
}
#toast-container .toast-info {
background-color: black;
border: 1px solid #3a3a3a;
width: 220px;
padding: 10px 10px 10px 50px;
}
.connected {
color: forestgreen;
font-size: 12px;
}
.disconnected {
color: darkred;
font-size: 12px;
}
.lastN {
color: #a3a3a3;
font-size: 12px;
}
.toast-close-button:hover,
.toast-close-button:focus {
color: #ffffff;
opacity: 1;
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
filter: alpha(opacity=100);
}
.toast-message .nickname {
font-weight: bold;
}

45
css/main.scss Normal file
View File

@@ -0,0 +1,45 @@
/* Variables BEGIN */
@import 'variables';
/* Variables END */
/* Mixins BEGIN */
@import "mixins";
/* Mixins END */
/* Fonts BEGIN */
@import 'font';
@import 'font-awesome';
/* Fonts END */
/* Modules BEGIN */
@import 'toastr';
@import 'base';
@import 'overlay/overlay';
@import 'videolayout_default';
@import 'jquery-impromptu';
@import 'modaldialog';
@import 'notice';
@import 'popup_menu';
@import 'recording';
@import 'login_menu';
@import 'popover';
@import 'jitsi_popover';
@import 'contact_list';
@import 'chat';
@import 'ringing/ringing';
@import 'welcome_page';
@import 'toolbars';
@import 'side_toolbar_container';
@import 'device_settings_dialog';
@import 'feedback';
@import 'jquery.contextMenu';
@import 'keyboard-shortcuts';
/* Modules END */

48
css/overlay/_overlay.scss Normal file
View File

@@ -0,0 +1,48 @@
.overlay {
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
z-index: $overlayZ;
background: #21B9FC; /* Old browsers */
opacity: 0.75;
display: block;
}
.overlay_transparent {
background: rgba(22, 185, 252, .9);
}
.overlay_container {
width: 100%;
height: 100%;
position: fixed;
z-index: $overlayZ;
}
.overlay_content {
color: #fff;
font-weight: normal;
font-size: 20px;
text-align: center;
width: 400px;
height: 250px;
top: 50%;
left: 50%;
position:absolute;
margin-top: -125px;
margin-left: -200px;
}
.overlay_text_small {
font-size: 18px;
}
.overlay_icon {
position: relative;
z-index: 1013;
float: none;
font-size: 100px;
}

36
css/ringing/_ringing.scss Normal file
View File

@@ -0,0 +1,36 @@
.ringing {
display: block;
left: 0;
top: 0;
width: 100%;
height: 100%;
position: fixed;
z-index: $overlayZ;
background: linear-gradient(transparent, #000);
opacity: 0.8;
&__content {
position: absolute;
width: 400px;
height: 250px;
left: 50%;
top: 50%;
margin-left: -200px;
margin-top: -125px;
font-weight: 400;
font-size: 14px;
text-align: center;
}
&__avatar {
width: 100px;
height: 100px;
border-radius: 50%;
}
&__caller-info {
.mention {
color: #333;
}
}
}

View File

@@ -1,68 +0,0 @@
#settingsmenu {
background: black;
color: #00ccff;
}
#settingsmenu input, select {
margin-top: 10px;
margin-left: 10%;
width: 80%;
font-size: 14px;
background: #3a3a3a;
border: none;
box-shadow: none;
color: #a7a7a7;
}
#settingsmenu .arrow-up {
width: 0;
height: 0;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
border-bottom: 5px solid #3a3a3a;
position: relative;
top: 10px;
margin-left: auto;
margin-right: auto;
}
#settingsmenu button {
width: 45%;
left: 26%;
padding: 0;
margin-top: 10px;
}
#settingsmenu #avatar {
width: 24%;
left: 38%;
border-radius: 25px;
position: relative;
}
#settingsmenu .icon-settings {
padding: 34px;
}
#languages_selectbox{
height: 40px;
}
#startMutedOptions {
padding-left: 10%;
text-indent: -10%;
}
#startAudioMuted {
width: 13px !important;
}
#startVideoMuted {
width: 13px !important;
}
.startMutedLabel {
width: 94%;
float: left;
}

View File

@@ -1,9 +1,11 @@
@import 'variables';
body {
width:100%;
height:100%;
background-color: white;
color: #424242;
font-family:Helvetica,'YanoneKaffeesatzLight',Verdana,Tahoma,Arial;
font-family: $baseFontFamily;
font-size: 28px;
margin:0;
padding:0;
@@ -98,39 +100,39 @@ a {
{
width: 78px;
height: 78px;
background-image: url('/images/chrome.png');
background-image: url('../images/chrome.png');
}
#chromium_logo
{
width: 77px;
height: 78px;
background-image: url('/images/chromium.png');
background-image: url('../images/chromium.png');
}
#firefox_logo
{
width: 86px;
height: 80px;
background-image: url('/images/firefox.png');
background-image: url('../images/firefox.png');
}
#opera_logo
{
width: 73px;
height: 78px;
background-image: url('/images/opera.png');
background-image: url('../images/opera.png');
}
#safari_logo
{
width: 78px;
height: 79px;
background-image: url('/images/safari.png');
background-image: url('../images/safari.png');
}
#ie_logo
{
width: 80px;
height: 78px;
background-image: url('/images/ie.png');
background-image: url('../images/ie.png');
}

2
debian/control vendored
View File

@@ -3,7 +3,7 @@ Section: net
Priority: extra
Maintainer: Jitsi Team <dev@jitsi.org>
Uploaders: Emil Ivov <emcho@jitsi.org>, Damian Minkov <damencho@jitsi.org>
Build-Depends: debhelper (>= 8.0.0), yui-compressor
Build-Depends: debhelper (>= 8.0.0)
Standards-Version: 3.9.6
Homepage: https://jitsi.org/meet

View File

@@ -67,8 +67,8 @@ case "$1" in
sed -i 's/ --modules_enabled = { "token_verification" }/ modules_enabled = { "token_verification" }/g' $PROSODY_HOST_CONFIG
# Install luajwt
if ! luarocks install luajwt; then
echo "Failed to install luajwt - try installing it manually"
if ! luarocks install luajwtjitsi; then
echo "Failed to install luajwtjitsi - try installing it manually"
fi
if [ -x "/etc/init.d/prosody" ]; then
@@ -85,7 +85,7 @@ case "$1" in
else
echo "Prosody config not found at $PROSODY_HOST_CONFIG - unable to auto-configure token authentication"
fi
;;
abort-upgrade|abort-remove|abort-deconfigure)

View File

@@ -9,3 +9,4 @@ sounds /usr/share/jitsi-meet/
fonts /usr/share/jitsi-meet/
images /usr/share/jitsi-meet/
lang /usr/share/jitsi-meet/
connection_optimization /usr/share/jitsi-meet/

View File

@@ -88,8 +88,10 @@ case "$1" in
echo "org.jitsi.videobridge.rest.jetty.ProxyServlet.proxyTo=http://localhost:5280/http-bind" >> $JVB_CONFIG
echo "org.jitsi.videobridge.rest.jetty.ResourceHandler.resourceBase=/usr/share/jitsi-meet" >> $JVB_CONFIG
echo "org.jitsi.videobridge.rest.jetty.ResourceHandler.alias./config.js=/etc/jitsi/meet/$JVB_HOSTNAME-config.js" >> $JVB_CONFIG
echo "org.jitsi.videobridge.rest.jetty.ResourceHandler.alias./interface_config.js=/usr/share/jitsi-meet/interface_config.js" >> $JVB_CONFIG
echo "org.jitsi.videobridge.rest.jetty.RewriteHandler.regex=^/([a-zA-Z0-9]+)$" >> $JVB_CONFIG
echo "org.jitsi.videobridge.rest.jetty.RewriteHandler.replacement=/" >> $JVB_CONFIG
echo "org.jitsi.videobridge.rest.jetty.SSIResourceHandler.paths=/" >> $JVB_CONFIG
echo "org.jitsi.videobridge.rest.jetty.tls.port=443" >> $JVB_CONFIG
echo "org.jitsi.videobridge.TCP_HARVESTER_PORT=443" >> $JVB_CONFIG
echo "org.jitsi.videobridge.rest.jetty.sslContextFactory.keyStorePath=/etc/jitsi/videobridge/$JVB_HOSTNAME.jks" >> $JVB_CONFIG

View File

@@ -1,202 +0,0 @@
/*
* A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
* in FIPS PUB 180-1
* Version 2.1a Copyright Paul Johnston 2000 - 2002.
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
* Distributed under the BSD License
* See http://pajhome.org.uk/crypt/md5 for details.
*/
/*
* Configurable variables. You may need to tweak these to be compatible with
* the server-side, but the defaults work in most cases.
*/
var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
/*
* These are the functions you'll usually want to call
* They take string arguments and return either hex or base-64 encoded strings
*/
function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));}
function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));}
function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));}
function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));}
function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));}
function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));}
/*
* Perform a simple self-test to see if the VM is working
*/
function sha1_vm_test()
{
return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d";
}
/*
* Calculate the SHA-1 of an array of big-endian words, and a bit length
*/
function core_sha1(x, len)
{
/* append padding */
x[len >> 5] |= 0x80 << (24 - len % 32);
x[((len + 64 >> 9) << 4) + 15] = len;
var w = Array(80);
var a = 1732584193;
var b = -271733879;
var c = -1732584194;
var d = 271733878;
var e = -1009589776;
for(var i = 0; i < x.length; i += 16)
{
var olda = a;
var oldb = b;
var oldc = c;
var oldd = d;
var olde = e;
for(var j = 0; j < 80; j++)
{
if(j < 16) w[j] = x[i + j];
else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);
var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)),
safe_add(safe_add(e, w[j]), sha1_kt(j)));
e = d;
d = c;
c = rol(b, 30);
b = a;
a = t;
}
a = safe_add(a, olda);
b = safe_add(b, oldb);
c = safe_add(c, oldc);
d = safe_add(d, oldd);
e = safe_add(e, olde);
}
return Array(a, b, c, d, e);
}
/*
* Perform the appropriate triplet combination function for the current
* iteration
*/
function sha1_ft(t, b, c, d)
{
if(t < 20) return (b & c) | ((~b) & d);
if(t < 40) return b ^ c ^ d;
if(t < 60) return (b & c) | (b & d) | (c & d);
return b ^ c ^ d;
}
/*
* Determine the appropriate additive constant for the current iteration
*/
function sha1_kt(t)
{
return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :
(t < 60) ? -1894007588 : -899497514;
}
/*
* Calculate the HMAC-SHA1 of a key and some data
*/
function core_hmac_sha1(key, data)
{
var bkey = str2binb(key);
if(bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz);
var ipad = Array(16), opad = Array(16);
for(var i = 0; i < 16; i++)
{
ipad[i] = bkey[i] ^ 0x36363636;
opad[i] = bkey[i] ^ 0x5C5C5C5C;
}
var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz);
return core_sha1(opad.concat(hash), 512 + 160);
}
/*
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
* to work around bugs in some JS interpreters.
*/
function safe_add(x, y)
{
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}
/*
* Bitwise rotate a 32-bit number to the left.
*/
function rol(num, cnt)
{
return (num << cnt) | (num >>> (32 - cnt));
}
/*
* Convert an 8-bit or 16-bit string to an array of big-endian words
* In 8-bit function, characters >255 have their hi-byte silently ignored.
*/
function str2binb(str)
{
var bin = Array();
var mask = (1 << chrsz) - 1;
for(var i = 0; i < str.length * chrsz; i += chrsz)
bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32);
return bin;
}
/*
* Convert an array of big-endian words to a string
*/
function binb2str(bin)
{
var str = "";
var mask = (1 << chrsz) - 1;
for(var i = 0; i < bin.length * 32; i += chrsz)
str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask);
return str;
}
/*
* Convert an array of big-endian words to a hex string.
*/
function binb2hex(binarray)
{
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
var str = "";
for(var i = 0; i < binarray.length * 4; i++)
{
str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF);
}
return str;
}
/*
* Convert an array of big-endian words to a base-64 string
*/
function binb2b64(binarray)
{
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var str = "";
for(var i = 0; i < binarray.length * 4; i += 3)
{
var triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16)
| (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 )
| ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF);
for(var j = 0; j < 4; j++)
{
if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
}
}
return str;
}

View File

@@ -1,240 +0,0 @@
/**
* Entity Capabilities (XEP-0115)
*
* Depends on disco plugin.
*
* See: http://xmpp.org/extensions/xep-0115.html
*
* Authors:
* - Michael Weibel <michael.weibel@gmail.com>
*
* Copyright:
* - Michael Weibel <michael.weibel@gmail.com>
*/
Strophe.addConnectionPlugin('caps', {
/** Constant: HASH
* Hash used
*
* Currently only sha-1 is supported.
*/
HASH: 'sha-1',
/** Variable: node
* Client which is being used.
*
* Can be overwritten as soon as Strophe has been initialized.
*/
node: 'http://strophe.im/strophejs/',
/** PrivateVariable: _ver
* Own generated version string
*/
_ver: '',
/** PrivateVariable: _connection
* Strophe connection
*/
_connection: null,
/** PrivateVariable: _knownCapabilities
* A hashtable containing version-strings and their capabilities, serialized
* as string.
*
* TODO: Maybe those caps shouldn't be serialized.
*/
_knownCapabilities: {},
/** PrivateVariable: _jidVerIndex
* A hashtable containing jids and their versions for better lookup of capabilities.
*/
_jidVerIndex: {},
/** Function: init
* Initialize plugin:
* - Add caps namespace
* - Add caps feature to disco plugin
* - Add handler for caps stanzas
*
* Parameters:
* (Strophe.Connection) conn - Strophe connection
*/
init: function(conn) {
this._connection = conn;
Strophe.addNamespace('CAPS', 'http://jabber.org/protocol/caps');
if (!this._connection.disco) {
throw "Caps plugin requires the disco plugin to be installed.";
}
this._connection.disco.addFeature(Strophe.NS.CAPS);
this._connection.addHandler(this._delegateCapabilities.bind(this), Strophe.NS.CAPS);
},
/** Function: generateCapsAttrs
* Returns the attributes for generating the "c"-stanza containing the own version
*
* Returns:
* (Object) - attributes
*/
generateCapsAttrs: function() {
return {
'xmlns': Strophe.NS.CAPS,
'hash': this.HASH,
'node': this.node,
'ver': this.generateVer()
};
},
/** Function: generateVer
* Returns the base64 encoded version string (encoded itself with sha1)
*
* Returns:
* (String) - version
*/
generateVer: function() {
if (this._ver !== "") {
return this._ver;
}
var ver = "",
identities = this._connection.disco._identities.sort(this._sortIdentities),
identitiesLen = identities.length,
features = this._connection.disco._features.sort(),
featuresLen = features.length;
for(var i = 0; i < identitiesLen; i++) {
var curIdent = identities[i];
ver += curIdent.category + "/" + curIdent.type + "/" + curIdent.lang + "/" + curIdent.name + "<";
}
for(var i = 0; i < featuresLen; i++) {
ver += features[i] + '<';
}
this._ver = b64_sha1(ver);
return this._ver;
},
/** Function: getCapabilitiesByJid
* Returns serialized capabilities of a jid (if available).
* Otherwise null.
*
* Parameters:
* (String) jid - Jabber id
*
* Returns:
* (String|null) - capabilities, serialized; or null when not available.
*/
getCapabilitiesByJid: function(jid) {
if (this._jidVerIndex[jid]) {
return this._knownCapabilities[this._jidVerIndex[jid]];
}
return null;
},
/** PrivateFunction: _delegateCapabilities
* Checks if the version has already been saved.
* If yes: do nothing.
* If no: Request capabilities
*
* Parameters:
* (Strophe.Builder) stanza - Stanza
*
* Returns:
* (Boolean)
*/
_delegateCapabilities: function(stanza) {
var from = stanza.getAttribute('from'),
c = stanza.querySelector('c'),
ver = c.getAttribute('ver'),
node = c.getAttribute('node');
if (!this._knownCapabilities[ver]) {
return this._requestCapabilities(from, node, ver);
} else {
this._jidVerIndex[from] = ver;
}
if (!this._jidVerIndex[from] || !this._jidVerIndex[from] !== ver) {
this._jidVerIndex[from] = ver;
}
return true;
},
/** PrivateFunction: _requestCapabilities
* Requests capabilities from the one which sent the caps-info stanza.
* This is done using disco info.
*
* Additionally, it registers a handler for handling the reply.
*
* Parameters:
* (String) to - Destination jid
* (String) node - Node attribute of the caps-stanza
* (String) ver - Version of the caps-stanza
*
* Returns:
* (Boolean) - true
*/
_requestCapabilities: function(to, node, ver) {
if (to !== this._connection.jid) {
var id = this._connection.disco.info(to, node + '#' + ver);
this._connection.addHandler(this._handleDiscoInfoReply.bind(this), Strophe.NS.DISCO_INFO, 'iq', 'result', id, to);
}
return true;
},
/** PrivateFunction: _handleDiscoInfoReply
* Parses the disco info reply and adds the version & it's capabilities to the _knownCapabilities variable.
* Additionally, it adds the jid & the version to the _jidVerIndex variable for a better lookup.
*
* Parameters:
* (Strophe.Builder) stanza - Disco info stanza
*
* Returns:
* (Boolean) - false, to automatically remove the handler.
*/
_handleDiscoInfoReply: function(stanza) {
var query = stanza.querySelector('query'),
node = query.getAttribute('node').split('#'),
ver = node[1],
from = stanza.getAttribute('from');
if (!this._knownCapabilities[ver]) {
var childNodes = query.childNodes,
childNodesLen = childNodes.length;
this._knownCapabilities[ver] = [];
for(var i = 0; i < childNodesLen; i++) {
var node = childNodes[i];
this._knownCapabilities[ver].push({name: node.nodeName, attributes: node.attributes});
}
this._jidVerIndex[from] = ver;
} else if (!this._jidVerIndex[from] || !this._jidVerIndex[from] !== ver) {
this._jidVerIndex[from] = ver;
}
return false;
},
/** PrivateFunction: _sortIdentities
* Sorts two identities according the sorting requirements in XEP-0115.
*
* Parameters:
* (Object) a - Identity a
* (Object) b - Identity b
*
* Returns:
* (Integer) - 1, 0 or -1; according to which one's greater.
*/
_sortIdentities: function(a, b) {
if (a.category > b.category) {
return 1;
}
if (a.category < b.category) {
return -1;
}
if (a.type > b.type) {
return 1;
}
if (a.type < b.type) {
return -1;
}
if (a.lang > b.lang) {
return 1;
}
if (a.lang < b.lang) {
return -1;
}
return 0;
}
});

View File

@@ -1,232 +0,0 @@
/*
Copyright 2010, François de Metz <francois@2metz.fr>
*/
/**
* Disco Strophe Plugin
* Implement http://xmpp.org/extensions/xep-0030.html
* TODO: manage node hierarchies, and node on info request
*/
Strophe.addConnectionPlugin('disco',
{
_connection: null,
_identities : [],
_features : [],
_items : [],
/** Function: init
* Plugin init
*
* Parameters:
* (Strophe.Connection) conn - Strophe connection
*/
init: function(conn)
{
this._connection = conn;
this._identities = [];
this._features = [];
this._items = [];
// disco info
conn.addHandler(this._onDiscoInfo.bind(this), Strophe.NS.DISCO_INFO, 'iq', 'get', null, null);
// disco items
conn.addHandler(this._onDiscoItems.bind(this), Strophe.NS.DISCO_ITEMS, 'iq', 'get', null, null);
},
/** Function: addIdentity
* See http://xmpp.org/registrar/disco-categories.html
* Parameters:
* (String) category - category of identity (like client, automation, etc ...)
* (String) type - type of identity (like pc, web, bot , etc ...)
* (String) name - name of identity in natural language
* (String) lang - lang of name parameter
*
* Returns:
* Boolean
*/
addIdentity: function(category, type, name, lang)
{
for (var i=0; i<this._identities.length; i++)
{
if (this._identities[i].category == category &&
this._identities[i].type == type &&
this._identities[i].name == name &&
this._identities[i].lang == lang)
{
return false;
}
}
this._identities.push({category: category, type: type, name: name, lang: lang});
return true;
},
/** Function: addFeature
*
* Parameters:
* (String) var_name - feature name (like jabber:iq:version)
*
* Returns:
* boolean
*/
addFeature: function(var_name)
{
for (var i=0; i<this._features.length; i++)
{
if (this._features[i] == var_name)
return false;
}
this._features.push(var_name);
return true;
},
/** Function: removeFeature
*
* Parameters:
* (String) var_name - feature name (like jabber:iq:version)
*
* Returns:
* boolean
*/
removeFeature: function(var_name)
{
for (var i=0; i<this._features.length; i++)
{
if (this._features[i] === var_name){
this._features.splice(i,1)
return true;
}
}
return false;
},
/** Function: addItem
*
* Parameters:
* (String) jid
* (String) name
* (String) node
* (Function) call_back
*
* Returns:
* boolean
*/
addItem: function(jid, name, node, call_back)
{
if (node && !call_back)
return false;
this._items.push({jid: jid, name: name, node: node, call_back: call_back});
return true;
},
/** Function: info
* Info query
*
* Parameters:
* (Function) call_back
* (String) jid
* (String) node
*/
info: function(jid, node, success, error, timeout)
{
var attrs = {xmlns: Strophe.NS.DISCO_INFO};
if (node)
attrs.node = node;
var info = $iq({from:this._connection.jid,
to:jid, type:'get'}).c('query', attrs);
this._connection.sendIQ(info, success, error, timeout);
},
/** Function: items
* Items query
*
* Parameters:
* (Function) call_back
* (String) jid
* (String) node
*/
items: function(jid, node, success, error, timeout)
{
var attrs = {xmlns: Strophe.NS.DISCO_ITEMS};
if (node)
attrs.node = node;
var items = $iq({from:this._connection.jid,
to:jid, type:'get'}).c('query', attrs);
this._connection.sendIQ(items, success, error, timeout);
},
/** PrivateFunction: _buildIQResult
*/
_buildIQResult: function(stanza, query_attrs)
{
var id = stanza.getAttribute('id');
var from = stanza.getAttribute('from');
var iqresult = $iq({type: 'result', id: id});
if (from !== null) {
iqresult.attrs({to: from});
}
return iqresult.c('query', query_attrs);
},
/** PrivateFunction: _onDiscoInfo
* Called when receive info request
*/
_onDiscoInfo: function(stanza)
{
var node = stanza.getElementsByTagName('query')[0].getAttribute('node');
var attrs = {xmlns: Strophe.NS.DISCO_INFO};
if (node)
{
attrs.node = node;
}
var iqresult = this._buildIQResult(stanza, attrs);
for (var i=0; i<this._identities.length; i++)
{
var attrs = {category: this._identities[i].category,
type : this._identities[i].type};
if (this._identities[i].name)
attrs.name = this._identities[i].name;
if (this._identities[i].lang)
attrs['xml:lang'] = this._identities[i].lang;
iqresult.c('identity', attrs).up();
}
for (var i=0; i<this._features.length; i++)
{
iqresult.c('feature', {'var':this._features[i]}).up();
}
this._connection.send(iqresult.tree());
return true;
},
/** PrivateFunction: _onDiscoItems
* Called when receive items request
*/
_onDiscoItems: function(stanza)
{
var query_attrs = {xmlns: Strophe.NS.DISCO_ITEMS};
var node = stanza.getElementsByTagName('query')[0].getAttribute('node');
if (node)
{
query_attrs.node = node;
var items = [];
for (var i = 0; i < this._items.length; i++)
{
if (this._items[i].node == node)
{
items = this._items[i].call_back(stanza);
break;
}
}
}
else
{
var items = this._items;
}
var iqresult = this._buildIQResult(stanza, query_attrs);
for (var i = 0; i < items.length; i++)
{
var attrs = {jid: items[i].jid};
if (items[i].name)
attrs.name = items[i].name;
if (items[i].node)
attrs.node = items[i].node;
iqresult.c('item', attrs).up();
}
this._connection.send(iqresult.tree());
return true;
}
});

View File

@@ -20,13 +20,13 @@ The next step for embedding Jitsi Meet is to create the Jitsi Meet API object
var height = 700;
var api = new JitsiMeetExternalAPI(domain, room, width, height);
</script>
```
```
You can paste that lines in your html code where you want to be placed the Jitsi Meet conference
or you can specify the parent HTML element for the Jitsi Meet conference in the JitsiMeetExternalAPI
constructor.
```javascript
var api = new JitsiMeetExternalAPI(domain, room, width, height, htmlElement);
```
```
If you don't specify room the user will enter in new conference with random room name.
You can overwrite options set in config.js and interface_config.js. For example, to enable the film-strip-only interface mode and disable simulcast, you can use:
@@ -34,24 +34,24 @@ You can overwrite options set in config.js and interface_config.js. For example,
var configOverwrite = {enableSimulcast: false};
var interfaceConfigOverwrite = {filmStripOnly: true};
var api = new JitsiMeetExternalAPI(domain, room, width, height, htmlElement, true, configOverwrite, interfaceConfigOverwrite);
```
```
Controlling embedded Jitsi Meet Conference
=========
You can control the embedded Jitsi Meet conference using the JitsiMeetExternalAPI object.
You can send command to Jitsi Meet conference using ```executeCommand```.
You can send command to Jitsi Meet conference using ```executeCommand```.
```
api.executeCommand(command, arguments)
```
The ```command``` parameter is String object with the name of the command.
The ```arguments``` parameter is array with the arguments required by the command.
The ```arguments``` parameter is array with the arguments required by the command.
If no arguments are required by the command this parameter can be omitted or you can pass empty array.
Currently we support the following commands:
* **displayName** - sets the display name of the local participant. This command requires one argument -
* **displayName** - sets the display name of the local participant. This command requires one argument -
the new display name to be set
```
api.executeCommand('displayName', ['New Nickname']);
@@ -77,7 +77,12 @@ api.executeCommand('toggleChat', [])
api.executeCommand('toggleContactList', [])
```
You can also execute multiple commands using the method ```executeCommands```.
* **toggleShareScreen** - starts / stops the screen sharing. No arguments are required.
```
api.executeCommand('toggleShareScreen', [])
```
You can also execute multiple commands using the method ```executeCommands```.
```
api.executeCommands(commands)
```
@@ -136,9 +141,23 @@ The listener will receive object with the following structure:
jid: jid //the jid of the participant
}
```
* **video-conference-joined** - event notifications fired when the local user has joined the video conference.
The listener will receive object with the following structure:
```
{
roomName: room //the room name of the conference
}
```
* **video-conference-left** - event notifications fired when the local user has left the video conference.
The listener will receive object with the following structure:
```
{
roomName: room //the room name of the conference
}
```
You can also add multiple event listeners by using ```addEventListeners```.
This method requires one argument of type Object. The object argument must
This method requires one argument of type Object. The object argument must
have keys with the names of the events and values the listeners of the events.
```
@@ -173,4 +192,4 @@ You can remove the embedded Jitsi Meet Conference with the following code:
api.dispose()
```
It is a good practice to remove the conference before the page is unloaded.
It is a good practice to remove the conference before the page is unloaded.

View File

@@ -33,6 +33,11 @@ server {
ssi on;
}
# Backward compatibility
location ~ /external_api.* {
root /usr/share/jitsi-meet/libs;
}
# BOSH
location /http-bind {
proxy_pass http://localhost:5280/http-bind;

View File

@@ -23,7 +23,7 @@ server {
# xmpp websockets
location /xmpp-websocket {
proxy_pass http://localhost:5280;
proxy_pass http://localhost:5280/xmpp-websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

View File

@@ -2,7 +2,7 @@
This describes configuring a server `jitsi.example.com` running Debian or a Debian Derivative. You will need to
change references to that to match your host, and generate some passwords for
`YOURSECRET1`, `YOURSECRET2`, `YOURSECRET3` and `YOURSECRET4`.
`YOURSECRET1`, `YOURSECRET2` and `YOURSECRET3`.
There are also some complete [example config files](https://github.com/jitsi/jitsi-meet/tree/master/doc/example-config-files/) available, mentioned in each section.

View File

@@ -10,8 +10,8 @@ N.B.: All commands are supposed to be run by root. If you are logged in as a reg
### Add the repository
```sh
echo 'deb http://download.jitsi.org/nightly/deb unstable/' >> /etc/apt/sources.list
wget -qO - https://download.jitsi.org/nightly/deb/unstable/archive.key | apt-key add -
echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -
```
### Update the package lists
@@ -48,8 +48,8 @@ apt-get -y install jigasi
or
```sh
wget https://download.jitsi.org/jigasi_1.0-1_amd64.deb
dpkg -i jigasi_1.0-1_amd64.deb
wget https://download.jitsi.org/unstable/jigasi_1.0-107_amd64.deb
dpkg -i jigasi_1.0-107_amd64.deb
```
During the installation, you will be asked to enter your SIP account and password. This account will be used to invite the other SIP participants.

View File

@@ -1,377 +0,0 @@
/**
* Implements API class that embeds Jitsi Meet in external applications.
*/
var JitsiMeetExternalAPI = (function()
{
/**
* The minimum width for the Jitsi Meet frame
* @type {number}
*/
var MIN_WIDTH = 790;
/**
* The minimum height for the Jitsi Meet frame
* @type {number}
*/
var MIN_HEIGHT = 300;
/**
* Constructs new API instance. Creates iframe element that loads
* Jitsi Meet.
* @param domain the domain name of the server that hosts the conference
* @param room_name the name of the room to join
* @param width width of the iframe
* @param height height of the iframe
* @param parent_node the node that will contain the iframe
* @param filmStripOnly if the value is true only the small videos will be
* visible.
* @constructor
*/
function JitsiMeetExternalAPI(domain, room_name, width, height, parentNode,
configOverwrite, interfaceConfigOverwrite) {
if (!width || width < MIN_WIDTH)
width = MIN_WIDTH;
if (!height || height < MIN_HEIGHT)
height = MIN_HEIGHT;
this.parentNode = null;
if (parentNode) {
this.parentNode = parentNode;
} else {
var scriptTag = document.scripts[document.scripts.length - 1];
this.parentNode = scriptTag.parentNode;
}
this.iframeHolder =
this.parentNode.appendChild(document.createElement("div"));
this.iframeHolder.id = "jitsiConference" + JitsiMeetExternalAPI.id;
if(width)
this.iframeHolder.style.width = width + "px";
if(height)
this.iframeHolder.style.height = height + "px";
this.frameName = "jitsiConferenceFrame" + JitsiMeetExternalAPI.id;
this.url = "//" + domain + "/";
if(room_name)
this.url += room_name;
this.url += "#external=true";
var key;
if (configOverwrite) {
for (key in configOverwrite) {
if (!configOverwrite.hasOwnProperty(key) ||
typeof key !== 'string')
continue;
this.url += "&config." + key + "=" + configOverwrite[key];
}
}
if (interfaceConfigOverwrite) {
for (key in interfaceConfigOverwrite) {
if (!interfaceConfigOverwrite.hasOwnProperty(key) ||
typeof key !== 'string')
continue;
this.url += "&interfaceConfig." + key + "=" +
interfaceConfigOverwrite[key];
}
}
JitsiMeetExternalAPI.id++;
this.frame = document.createElement("iframe");
this.frame.src = this.url;
this.frame.name = this.frameName;
this.frame.id = this.frameName;
this.frame.width = "100%";
this.frame.height = "100%";
this.frame.setAttribute("allowFullScreen","true");
this.frame = this.iframeHolder.appendChild(this.frame);
this.frameLoaded = false;
this.initialCommands = [];
this.eventHandlers = {};
this.initListeners();
}
/**
* Last id of api object
* @type {number}
*/
JitsiMeetExternalAPI.id = 0;
/**
* Sends the passed object to Jitsi Meet
* @param object the object to be sent
*/
JitsiMeetExternalAPI.prototype.sendMessage = function(object) {
if (this.frameLoaded) {
this.frame.contentWindow.postMessage(
JSON.stringify(object), this.frame.src);
}
else {
this.initialCommands.push(object);
}
};
/**
* Executes command. The available commands are:
* displayName - sets the display name of the local participant to the value
* passed in the arguments array.
* toggleAudio - mutes / unmutes audio with no arguments
* toggleVideo - mutes / unmutes video with no arguments
* filmStrip - hides / shows the film strip with no arguments
* If the command doesn't require any arguments the parameter should be set
* to empty array or it may be omitted.
* @param name the name of the command
* @param arguments array of arguments
*/
JitsiMeetExternalAPI.prototype.executeCommand = function(name,
argumentsList) {
var argumentsArray = argumentsList;
if (!argumentsArray)
argumentsArray = [];
var object = {type: "command", action: "execute"};
object[name] = argumentsArray;
this.sendMessage(object);
};
/**
* Executes commands. The available commands are:
* displayName - sets the display name of the local participant to the value
* passed in the arguments array.
* toggleAudio - mutes / unmutes audio with no arguments
* toggleVideo - mutes / unmutes video with no arguments
* filmStrip - hides / shows the film strip with no arguments
* @param object the object with commands to be executed. The keys of the
* object are the commands that will be executed and the values are the
* arguments for the command.
*/
JitsiMeetExternalAPI.prototype.executeCommands = function (object) {
object.type = "command";
object.action = "execute";
this.sendMessage(object);
};
/**
* Adds event listeners to Meet Jitsi. The object key should be the name of
* the event and value - the listener.
* Currently we support the following
* events:
* incomingMessage - receives event notifications about incoming
* messages. The listener will receive object with the following structure:
* {{
* "from": from,//JID of the user that sent the message
* "nick": nick,//the nickname of the user that sent the message
* "message": txt//the text of the message
* }}
* outgoingMessage - receives event notifications about outgoing
* messages. The listener will receive object with the following structure:
* {{
* "message": txt//the text of the message
* }}
* displayNameChanged - receives event notifications about display name
* change. The listener will receive object with the following structure:
* {{
* jid: jid,//the JID of the participant that changed his display name
* displayname: displayName //the new display name
* }}
* participantJoined - receives event notifications about new participant.
* The listener will receive object with the following structure:
* {{
* jid: jid //the jid of the participant
* }}
* participantLeft - receives event notifications about the participant that
* left the room.
* The listener will receive object with the following structure:
* {{
* jid: jid //the jid of the participant
* }}
* @param object
*/
JitsiMeetExternalAPI.prototype.addEventListeners
= function (object) {
var message = {type: "event", action: "add", events: []};
for(var i in object)
{
message.events.push(i);
this.eventHandlers[i] = object[i];
}
this.sendMessage(message);
};
/**
* Adds event listeners to Meet Jitsi. Currently we support the following
* events:
* incomingMessage - receives event notifications about incoming
* messages. The listener will receive object with the following structure:
* {{
* "from": from,//JID of the user that sent the message
* "nick": nick,//the nickname of the user that sent the message
* "message": txt//the text of the message
* }}
* outgoingMessage - receives event notifications about outgoing
* messages. The listener will receive object with the following structure:
* {{
* "message": txt//the text of the message
* }}
* displayNameChanged - receives event notifications about display name
* change. The listener will receive object with the following structure:
* {{
* jid: jid,//the JID of the participant that changed his display name
* displayname: displayName //the new display name
* }}
* participantJoined - receives event notifications about new participant.
* The listener will receive object with the following structure:
* {{
* jid: jid //the jid of the participant
* }}
* participantLeft - receives event notifications about participant the that
* left the room.
* The listener will receive object with the following structure:
* {{
* jid: jid //the jid of the participant
* }}
* @param event the name of the event
* @param listener the listener
*/
JitsiMeetExternalAPI.prototype.addEventListener
= function (event, listener) {
var message = {type: "event", action: "add", events: [event]};
this.eventHandlers[event] = listener;
this.sendMessage(message);
};
/**
* Removes event listener.
* @param event the name of the event.
*/
JitsiMeetExternalAPI.prototype.removeEventListener
= function (event) {
if(!this.eventHandlers[event])
{
console.error("The event " + event + " is not registered.");
return;
}
var message = {type: "event", action: "remove", events: [event]};
delete this.eventHandlers[event];
this.sendMessage(message);
};
/**
* Removes event listeners.
* @param events array with the names of the events.
*/
JitsiMeetExternalAPI.prototype.removeEventListeners
= function (events) {
var eventsArray = [];
for(var i = 0; i < events.length; i++)
{
var event = events[i];
if(!this.eventHandlers[event])
{
console.error("The event " + event + " is not registered.");
continue;
}
delete this.eventHandlers[event];
eventsArray.push(event);
}
if(eventsArray.length > 0)
{
this.sendMessage(
{type: "event", action: "remove", events: eventsArray});
}
};
/**
* Processes message events sent from Jitsi Meet
* @param event the event
*/
JitsiMeetExternalAPI.prototype.processMessage = function(event) {
var message;
try {
message = JSON.parse(event.data);
} catch (e) {}
if(!message.type) {
console.error("Message without type is received.");
return;
}
switch (message.type) {
case "system":
if(message.loaded) {
this.onFrameLoaded();
}
break;
case "event":
if(message.action != "result" ||
!message.event || !this.eventHandlers[message.event]) {
console.warn("The received event cannot be parsed.");
return;
}
this.eventHandlers[message.event](message.result);
break;
default :
console.error("Unknown message type.");
return;
}
};
/**
* That method is called when the Jitsi Meet is loaded. Executes saved
* commands that are send before the frame was loaded.
*/
JitsiMeetExternalAPI.prototype.onFrameLoaded = function () {
this.frameLoaded = true;
for (var i = 0; i < this.initialCommands.length; i++) {
this.sendMessage(this.initialCommands[i]);
}
this.initialCommands = null;
};
/**
* Setups the listener for message events from Jitsi Meet.
*/
JitsiMeetExternalAPI.prototype.initListeners = function () {
var self = this;
this.eventListener = function (event) {
self.processMessage(event);
};
if (window.addEventListener) {
window.addEventListener('message',
this.eventListener, false);
}
else {
window.attachEvent('onmessage', this.eventListener);
}
};
/**
* Removes the listeners and removes the Jitsi Meet frame.
*/
JitsiMeetExternalAPI.prototype.dispose = function () {
if (window.removeEventListener) {
window.removeEventListener('message',
this.eventListener, false);
}
else {
window.detachEvent('onmessage',
this.eventListener);
}
var frame = document.getElementById(this.frameName);
if(frame)
frame.src = 'about:blank';
var self = this;
window.setTimeout(function () {
self.iframeHolder.removeChild(self.frame);
self.iframeHolder.parentNode.removeChild(self.iframeHolder);
}, 10);
};
return JitsiMeetExternalAPI;
})();

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -4,36 +4,41 @@
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="jitsi" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<font-face units-per-em="1024" ascent="1024" descent="0" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" d="" horiz-adv-x="512" />
<glyph unicode="&#xe600;" d="M831.678 16.386h-144.885v258.653c-45.729 29.159-41.794 84.953-24.574 109.307 11.939 16.905 22.43 34.662 23.663 57.004 0.423 8.241 8.303 19.031 15.847 23.364 26.122 15.037 38.223 39.632 50.12 65.116 3.143 6.714 7.392 13.187 12.3 18.753 8.471 9.686 12.295 19.264 6.115 31.922-1.466 2.972 1.318 8.326 2.779 12.362 4.335 12.106 10.326 23.745 13.169 36.148 3.522 15.399 5.398 31.305 6.244 47.086 0.379 6.543-6.074 13.574-5.351 19.986 3.486 32.030-14.612 56.346-24.785 84.189-12.509 34.28-37.036 55.732-58.681 81.26-4.074 4.843-5.225 13.125-5.563 19.942-0.722 14.63-6.752 21.875-22.048 19.898-6.161-0.805-12.808-2.526-18.474-1.019-4.969 1.316-12.408 6.288-12.702 10.13-1.553 19.393-8.285 22.577-28.098 19.305-12.406-2.062-28.527 9.134-40.677 17.587-10.15 7.049-18.941 10.065-30.751 7.175-4.928-1.187-11.598-0.973-15.716 1.466-4.461 2.634-8.837 4.226-13.169 5.119v0.722c-0.975 0-1.976-0.17-2.934-0.276-0.975 0.106-1.951 0.276-2.908 0.276v-0.722c-4.355-0.893-8.726-2.485-13.169-5.119-4.167-2.441-10.811-2.652-15.718-1.466-11.851 2.89-20.598-0.126-30.751-7.175-12.212-8.453-28.287-19.648-40.671-17.587-19.816 3.272-26.591 0.085-28.119-19.305-0.299-3.844-7.73-8.816-12.7-10.13-5.692-1.509-12.32 0.212-18.497 1.019-15.27 1.976-21.302-5.269-22.024-19.898-0.338-6.819-1.486-15.102-5.565-19.942-21.622-25.528-46.154-46.98-58.684-81.26-10.171-27.843-28.271-52.161-24.765-84.189 0.699-6.412-5.736-13.443-5.395-19.986 0.87-15.78 2.74-31.687 6.267-47.086 2.843-12.403 8.835-24.042 13.187-36.148 1.466-4.033 4.229-9.387 2.784-12.362-6.203-12.658-2.379-22.236 6.115-31.922 4.887-5.565 9.134-12.039 12.277-18.753 11.874-25.484 24.001-50.079 50.125-65.116 7.516-4.332 15.417-15.122 15.863-23.364 1.21-22.342 11.701-40.099 23.64-57.004 18.33-25.954 21.194-86.95-34.216-114.687-76.673-38.336-154.083-75.357-232.624-109.632-49.189-21.498-73.891-57.6-82.238-108.192-2.549-15.331-5.862-30.539-7.88-45.961-3.014-22.956-7.839-69.874-7.839-69.874h831.678v80.386zM1188.556 80.89h-144.89v-144.89h-147.481v144.89h-144.885v147.481h144.885v144.888h147.481v-144.888h144.89v-147.481z" horiz-adv-x="1189" />
<glyph unicode="&#xe601;" d="M956.063 962.932h-819.824c-73.036 0-132.489-60.717-132.489-135.316v-540.205c0-74.537 59.453-135.246 132.489-135.246h35.826v-212.941l344.987 212.941h439.011c72.964 0 132.42 60.711 132.42 135.246v540.202c0 74.602-59.456 135.318-132.42 135.318zM496.5 293.887l-195.714-123.997v123.997h-158.261v527.257h807.189l0.064-527.255h-453.278zM239.062 715.554h605.126v-110.62h-605.126v110.62zM239.062 522.476h605.126v-110.615h-605.126v110.615z" horiz-adv-x="1088" />
<glyph unicode="&#xe602;" d="M955.816 960.317h-822.841c-73.303 0-132.975-60.931-132.975-135.844v-542.186c0-74.851 59.672-135.785 132.975-135.785h822.841c73.239 0 132.916 60.934 132.916 135.785v542.186c0 74.913-59.677 135.844-132.916 135.844zM949.51 288.784h-810.226v529.223h810.164l0.062-529.223zM945.219 0.34c0-35.738-28.261-64.66-63.207-64.66h-675.228c-34.949 0-63.209 28.921-63.209 64.66v29.618c0 35.7 28.261 64.657 63.209 64.657h675.228c34.946 0 63.207-28.957 63.207-64.657v-29.618zM776.792 342.434l-302.669 302.605 112.411 112.316 302.545-302.602v-112.318z" horiz-adv-x="1089" />
<glyph unicode="&#xe603;" d="M952.495 955.065h-818.689c-72.81 0-132.183-60.63-132.183-135.162v-750.719c0-74.473 59.372-135.101 132.183-135.101h818.686c72.936 0 132.314 60.625 132.314 135.101v750.722c0.003 74.532-59.378 135.159-132.311 135.159zM946.346 75.651h-806.14v737.822h806.015l0.126-737.822zM685.753 674.544h216.911v-566.758h-216.911v566.758zM428.672 546.002h216.911v-438.216h-216.911v438.216zM172.339 417.46h216.161v-309.677h-216.161v309.677z" horiz-adv-x="1088" />
<glyph unicode="&#xe604;" d="M878.259 965.513c-163.545 0-296.573-133.036-296.573-296.612v-43.752h-448.909c-73.14 0-132.777-60.909-132.777-135.751v-412.768c0-74.777 59.637-135.678 132.777-135.678h564.152c73.265 0 132.919 60.901 132.919 135.678v412.768c0 70.054-52.267 127.895-119.040 135.009v44.494c0 92.367 75.154 167.49 167.451 167.49 92.305 0 167.462-75.12 167.462-167.49v-77.422c0-35.681 28.883-64.564 64.556-64.564 35.69 0 64.569 28.883 64.569 64.564v77.422c-0.003 163.576-133.028 296.612-296.587 296.612z" horiz-adv-x="1179" />
<glyph unicode="&#xe605;" d="M1.518 641.614h277.533v319.798c0 0-78.033-8.102-176.18-111.633-98.139-103.529-101.353-208.165-101.353-208.165zM683.281 961.412h-339.684v-384.596l-342.080 0.251-1.515 3.468v-510.502c0-73.845 61.4-133.979 136.847-133.979h546.434c75.514 0 136.911 60.137 136.911 133.979v757.403c-0.003 73.843-61.397 133.976-136.914 133.976zM691.854 145.164h-572.848v92.788h572.845v-92.788zM691.854 338.802h-572.848v92.783h572.845v-92.783z" horiz-adv-x="820" />
<glyph unicode="&#xe606;" d="M953.901 962.387h-819.775c-72.965 0-132.418-60.712-132.418-135.344v-540.168c0-74.567 59.453-135.279 132.418-135.279h35.823v-212.891l344.966 212.891h438.986c72.963 0 132.415 60.709 132.415 135.279v540.168c0.003 74.632-59.45 135.344-132.415 135.344zM494.429 293.354l-195.769-124.001v124.001h-158.184v527.252h807.078l0.124-527.252h-453.249z" horiz-adv-x="1089" />
<glyph unicode="&#xe607;" d="M709.515 620.094v44.455c0 163.090-132.662 295.749-295.749 295.749-163.093 0-295.752-132.659-295.752-295.749v-44.455c-66.226-7.393-118.013-64.915-118.013-134.607v-411.623c0-74.629 59.481-135.365 132.472-135.365h562.583c73.059 0 132.534 60.736 132.534 135.365v411.623c0 69.697-51.792 127.219-118.074 134.607zM413.765 831.537c92.043 0 166.987-74.944 166.987-166.987v-43.632h-333.978v43.632c0 92.043 74.883 166.987 166.99 166.987z" horiz-adv-x="828" />
<glyph unicode="&#xe608;" d="M1223.129 717.217l-180.128-175.796v217.716c0 74.673-59.512 135.496-132.599 135.496h-634.716c-73.084 0-132.596-60.823-132.596-135.496v-609.237c0-74.673 59.512-135.496 132.596-135.496h634.716c73.084 0 132.599 60.82 132.599 135.496v172.679l193.45-153.712c48.784-35.558 96.695 5.178 96.695 40.424v483.533c-0.003 35.248-55.897 71.306-110.017 24.393zM601.169 199.935c-141.111 0-255.524 114.411-255.524 255.521s114.411 255.521 255.524 255.521c141.108 0 255.519-114.411 255.519-255.521 0-141.113-114.408-255.521-255.519-255.521zM599.045 600.249c-80.474 0-145.727-65.253-145.727-145.729 0-80.471 65.25-145.727 145.727-145.727s145.729 65.256 145.729 145.727c0 80.474-65.253 145.729-145.729 145.729z" horiz-adv-x="1334" />
<glyph unicode="&#xe609;" d="M1223.934 717.147l-180.299-175.956v217.848c0 7.661-0.666 15.148-1.902 22.432l73.695 65.346c26.349 23.41 28.841 63.8 5.369 90.24-23.475 26.406-63.803 28.872-90.273 5.4l-1009.019-894.712c-26.408-23.41-28.841-63.806-5.398-90.209 12.607-14.237 30.183-21.539 47.85-21.539 15.076 0 30.214 5.305 42.39 16.1l95.841 84.979c20.995-14.627 46.26-23.232 73.592-23.232h635.191c73.099 0 132.66 60.807 132.66 135.537v172.868l193.659-153.955c48.815-35.46 96.765 5.248 96.765 40.584v483.829c0.003 35.305-55.933 71.386-110.123 24.44zM601.515 199.448c-58.81 0-112.566 20.216-155.526 53.797l82.93 73.533c20.863-11.665 44.849-18.386 70.47-18.386 80.533 0 145.832 65.299 145.832 145.835 0 19.421-3.896 37.857-10.857 54.713l86.847 77.001c22.848-38.259 36.012-82.969 36.012-130.782 0-141.214-114.493-255.71-255.707-255.71zM345.797 455.16c0 141.216 114.496 255.715 255.717 255.715 21.501 0 42.075-3.434 61.986-8.429l216.757 192.191h-604.474c-73.138 0-132.697-60.838-132.697-135.597v-518.074l205.894 182.543c-1.308 10.486-3.184 20.853-3.184 31.651z" horiz-adv-x="1334" />
<glyph unicode="&#xe60a;" d="M1121.124 938.866c-23.48 26.413-63.883 28.849-90.296 5.372l-1009.306-894.905c-26.413-23.418-28.852-63.816-5.434-90.232 12.612-14.243 30.224-21.547 47.893-21.547 15.050 0 30.224 5.307 42.403 16.108l257.072 227.934c33.225-22.863 69.988-39.678 108.611-49.713-70.191-35.653-118.771-107.715-118.771-191.894h431.872c0 85.737-50.329 159.115-122.765 194.079 54.95 14.49 105.842 39.965 147.497 77.496 51.888 46.712 113.712 131.515 113.712 270.329v130.323c0 18.812-7.924 35.767-20.585 47.798l212.664 188.558c26.419 23.477 28.849 63.816 5.434 90.294zM791.535 481.891c0-157.985-117.649-229.923-226.99-229.923-35.214 0-68.659 7.217-98.285 20.786l55.735 49.416c14.733-4.59 30.356-7.132 46.609-7.132 89.357 0 161.984 72.687 161.984 161.979v30.1l60.947 54.042v-79.269zM730.589 793.867c0 89.298-72.625 161.984-161.984 161.984-89.298 0-161.984-72.687-161.984-161.984v-316.85c0-0.25 0-0.498 0-0.748l323.969 287.25v30.348zM350.795 426.69c-3.246 17.483-5.119 35.782-5.119 55.201v130.323c0 36.406-29.6 66.004-66.006 66.004-36.466 0-66.004-29.597-66.004-66.004v-130.323c0-57.198 11.115-107.026 29.099-150.931l108.030 95.73z" horiz-adv-x="1137" />
<glyph unicode="&#xe60b;" d="M858.414 679.944c-36.595 0-66.246-29.652-66.246-66.182v-130.725c0-158.421-117.982-230.597-227.635-230.597-58.674 0-112.618 19.87-151.86 55.959-44.23 40.819-67.696 101.203-67.696 174.64v130.725c0 36.53-29.654 66.182-66.182 66.182-36.53 0-66.182-29.652-66.182-66.182v-130.725c0-195.834 119.494-314.763 259.177-351.040-70.408-35.71-119.176-108.014-119.176-192.431h433.118c0 85.993-50.409 159.621-123.029 194.572 55.079 14.64 106.121 40.127 147.886 77.79 52.050 46.877 114.008 131.925 114.008 271.106v130.725c0 36.53-29.59 66.182-66.184 66.182zM568.571 315.719c-89.589 0-162.459 72.932-162.459 162.521v317.665c0 89.589 72.87 162.459 162.459 162.459 89.592 0 162.524-72.87 162.524-162.459v-317.665c0.003-89.592-72.929-162.521-162.524-162.521z" horiz-adv-x="1137" />
<glyph unicode="&#xe60c;" d="M512.356 960c-282.456 0-512.356-229.838-512.356-512.478 0-282.389 229.9-512.227 512.356-512.227 282.515 0 512.414 229.838 512.414 512.227 0 282.64-229.9 512.478-512.414 512.478zM512.356 14.856c-238.545 0-432.671 194.126-432.671 432.666 0 238.796 194.126 432.858 432.671 432.858 238.601 0 432.856-194.062 432.856-432.858 0-238.54-194.255-432.666-432.856-432.666zM512.545 854.962c-224.755 0-407.508-182.75-407.508-407.315 0-224.563 182.75-407.315 407.508-407.315 224.437 0 407.187 182.755 407.187 407.315-0.003 224.566-182.75 407.315-407.187 407.315zM512.545 127.323c-176.715 0-320.453 143.804-320.453 320.324 0 176.523 143.737 320.324 320.453 320.324 176.523 0 320.196-143.802 320.196-320.324 0-176.52-143.673-320.324-320.196-320.324zM283.851 562.789l-0.954-1.398v-234.413l0.954-1.398c15.757-23.060 36.473-44.542 61.699-63.797l8.961-6.801v378.341l-8.961-6.735c-25.1-19.191-45.814-40.544-61.699-63.799zM415.637 665.729l-3.621-1.334v-440.36l3.621-1.398c18.683-7.055 38.887-11.94 61.766-14.931l6.224-0.762v474.415l-6.163-0.762c-22.237-2.795-43.016-7.753-61.827-14.869zM547.367 680.599l-6.165 0.762v-474.415l6.165 0.762c22.301 2.793 43.077 7.811 61.763 14.864l3.685 1.4v440.488l-3.685 1.334c-18.811 7.053-39.525 12.010-61.763 14.805zM740.98 562.789c-15.692 23.002-36.473 44.48-61.699 63.797l-8.894 6.86v-378.469l8.894 6.801c25.351 19.381 46.132 40.862 61.699 63.861l0.89 1.398v234.352l-0.89 1.4z" horiz-adv-x="1025" />
<glyph unicode="&#xe60d;" d="M952.366 960.134h-820.477c-73.027 0-132.531-60.761-132.531-135.455v-752.358c0-74.66 59.504-135.424 132.531-135.424h820.48c73.089 0 132.596 60.766 132.596 135.424v752.358c-0.003 74.694-59.507 135.455-132.599 135.455zM946.135 78.801h-807.894v739.462h807.834l0.059-739.462zM569.742 511.875l91.772 96.865-77.305 77.308 316.393 85.040-84.981-316.391-75.357 75.293-91.834-96.865zM514.763 384.563l-91.767-96.865 77.3-77.305-316.388-85.043 84.979 316.388 75.357-75.29 91.834 96.871z" horiz-adv-x="1089" />
<glyph unicode="&#xe60e;" d="M953.225 959.18h-820.663c-73.045 0-132.562-60.776-132.562-135.488v-752.525c0-74.647 59.517-135.421 132.562-135.421h820.66c73.107 0 132.624 60.776 132.624 135.421v752.525c0.003 74.712-59.515 135.488-132.622 135.488zM946.994 77.647h-808.079v739.596h808.017l0.062-739.596zM915.539 706.7l-91.795-96.889 77.326-77.323-316.463-85.030 84.999 316.463 75.373-75.339 91.852 96.889zM170.625 188.221l91.793 96.884-77.323 77.326 316.463 85.028-84.997-316.46-75.373 75.342-91.857-96.891z" horiz-adv-x="1089" />
<glyph unicode="&#xe60f;" d="M513.036 960c283.57-0.188 512.414-229.474 512.037-512.664-0.377-283.756-228.965-512.228-512.541-512.288-283.191-0.067-512.912 229.474-512.533 512.099 0.374 284.638 228.965 513.103 513.036 512.853zM512.285 810.729c-200.79-0.126-362.957-162.291-362.831-363.014 0-201.105 161.788-363.081 362.831-363.334 201.164-0.312 363.581 162.294 363.455 363.772-0.25 200.852-162.417 362.702-363.455 362.575zM597.392 447.588h-0.503l-0.126 0.126h0.63l115.615 115.866c0 0-78.247 78.505-82.153 82.153l-117.754-116.183-119.014 118.196-82.024-82.279 88.815-88.818 26.674-29.061h0.503l0.253-0.253h-0.756l-115.489-115.806c0 0 78.249-78.564 82.024-82.212l117.76 116.245 119.008-118.26 82.153 82.406-88.815 88.82-26.8 29.061z" horiz-adv-x="1025" />
<glyph unicode="&#xe610;" d="M66.491-63.997h1027.94zM1198.596 487.986c-135.702 135.893-271.415 271.66-407.367 407.241-6.244 6.089-13.868 11.714-21.867 14.653-31.236 11.399-63.48-12.808-63.728-47.674-0.253-67.663-0.126-135.331-0.126-202.965 0-4.281 0-8.62 0-13.964-6.123 0-10.87 0-15.62 0-106.247 0-212.334 0.062-318.485 0-35.178-0.031-54.86-19.71-54.86-54.922-0.059-92.778-0.059-185.5 0-278.345 0-35.8 19.682-55.479 55.611-55.479 105.775-0.062 211.423 0 317.11 0 4.877 0 9.622 0 16.245 0 0-5.375 0-9.374 0-13.309 0-66.793 0.25-133.703 0-200.496 0-23.057 9.247-40.241 30.242-49.547 21.116-9.371 39.361-2.81 55.231 12.937 135.955 136.079 272.031 272.034 407.989 408.175 23.49 23.431 23.24 50.112-0.374 73.695zM532.596 44.729c-2.627 19.62-22.055 32.116-27.928 35.426-8.811 5.186-18.371 5.811-25.683 5.811l-6.37-0.126-227.926 0.188c-56.042 0.124-98.468 42.173-98.591 97.717-0.188 177.127-0.188 354.321 0.065 531.51 0.059 53.983 42.671 96.53 96.968 96.811l235.922 0.062c33.426 0.031 51.294 16.121 54.481 49.235 1.001 12.965 0.81 26.052 0.439 39.172-1.128 39.737-19.369 57.481-59.107 57.512l-217.866-0.121c-15.494 0-30.926-0.562-46.361-2.343-115.52-13.154-207.555-113.649-209.681-228.798-1.313-63.888-0.996-127.804-0.684-191.718l0.186-60.201h-0.377c0 0-0.121-227.954 0.065-289.811 0.248-135.702 101.528-240.796 235.545-244.48 33.176-0.875 66.419-1.189 99.654-1.189h0.065l148.012 0.753c29.368 0 47.483 17.37 49.73 47.545 1.755 22.058 1.628 40.173-0.557 57.045z" horiz-adv-x="1216" />
<glyph unicode="&#xe611;" d="M839.334 386.487c0-79.199-64.257-143.461-143.486-143.461-79.174 0-143.431 64.262-143.431 143.461 0 79.227 64.257 143.431 143.431 143.431 79.23-0.003 143.486-64.204 143.486-143.431zM1372.769 706.485c-6.595 39.459-29.496 64.168-70.606 69.276-23.788 2.918-38.256 15.637-44.726 39.040-9.706 35.519-33.678 58.993-67.811 70.76-24.807 8.595-50.3 16.462-76.186 20.491-69.655 10.911-140.51 15.924-209.526 29.943-69.53 14.178-139.053 23.342-208.893 24.073-69.845-0.731-139.371-9.895-208.893-24.073-69.022-14.016-139.876-19.029-209.526-29.94-25.884-4.028-51.385-11.896-76.189-20.491-34.13-11.767-58.105-35.24-67.814-70.76-6.469-23.403-20.934-36.122-44.723-39.040-41.105-5.108-64.006-29.82-70.601-69.278-6.788-40.41-11.737-81.202-16.811-121.885-2.728-22.109 6.405-32.576 30.386-32.448 120.839 0.697 241.692 0.697 362.595 0.095 24.045-0.128 33.115 9.388 33.433 33.338 0.762 57.369-4.631 111.895-47.136 156.618-7.041 7.39-10.849 25.281-6.726 33.846 4.062 8.5 40.856 16.716 45.992 16.716 43.328-0.19 43.138-0.223 49.418-43.423 1.205-8.28 2.539-18.46 7.803-23.853 30.319-30.863 21.252-66.706 7.234-97.634-30.389-67.139-61.537-134.827-100.867-196.869-73.458-115.831-104.41-160.744-198.679-260.844-58.675-62.293-68.573-101.687-68.573-137.466 0-70.989 41.038-96.744 137.148-96.744 181.614 0 260.908 0.315 442.528 0.315 181.614 0 260.905-0.315 442.528-0.315 96.102 0 137.142 25.752 137.142 96.744 0 35.779-9.898 75.173-68.573 137.466-94.264 100.1-125.222 145.012-198.679 260.844-39.333 62.042-70.475 129.73-100.861 196.869-14.019 30.927-23.091 66.77 7.234 97.634 5.264 5.393 6.595 15.575 7.803 23.853 6.28 43.202 6.090 43.233 49.412 43.423 5.139 0 41.933-8.216 45.992-16.716 4.126-8.565 0.318-26.453-6.723-33.846-42.502-44.723-47.898-99.249-47.136-156.618 0.315-23.947 9.388-33.466 33.43-33.338 120.909 0.603 241.753 0.603 362.601-0.095 23.975-0.126 33.109 10.342 30.383 32.448-5.075 40.686-10.018 81.475-16.806 121.885zM959.991 383.505c0-146.315-118.624-264.936-264.97-264.936s-264.973 118.621-264.973 264.936c0 146.318 118.624 264.936 264.973 264.936 146.343 0 264.97-118.621 264.97-264.936z" horiz-adv-x="1390" />
<glyph unicode="&#xe612;" d="M310.262 30.43c0-52.13-42.207-94.43-94.399-94.43h-121.405c-52.195 0-94.458 42.3-94.458 94.43v835.67c0 52.158 42.266 94.458 94.458 94.458h121.403c52.195 0 94.399-42.3 94.399-94.458v-835.67zM1077.118 960.56h-561.987c-72.919 0-132.33-60.673-132.33-135.253v-754.115c0-74.518 59.411-135.191 132.33-135.191h561.987c72.98 0 132.394 60.673 132.394 135.191v754.115c0 74.58-59.414 135.253-132.394 135.253zM529.83 826.906h532.653l0.062-143.298h-532.715v143.298zM643.255 51.628h-113.551v113.551h113.551v-113.551zM643.255 256.748h-113.551v113.554h113.551v-113.554zM643.382 463.756h-113.551v113.554h113.551v-113.554zM852.9 51.628h-113.551v113.551h113.551v-113.551zM852.9 256.748h-113.551v113.554h113.551v-113.554zM853.027 463.756h-113.556v113.554h113.556v-113.554zM1062.548 51.628h-113.556v113.551h113.556v-113.551zM1062.548 256.748h-113.556v113.554h113.556v-113.554zM1062.669 463.756h-113.554v113.554h113.554v-113.554z" horiz-adv-x="1210" />
<glyph unicode="&#xe613;" d="M1123.444 939.015c-23.593 26.481-64.131 28.989-90.74 5.395l-1008.269-893.436c-26.609-23.468-28.991-64.131-5.46-90.676 12.674-14.306 30.308-21.649 48.126-21.649 15.123 0 30.372 5.401 42.544 16.195l130.045 115.22c90.743-81.844 210.569-132.165 342.473-132.101 282.816 0.061 510.913 227.969 511.287 510.972 0.126 109.934-34.682 211.367-93.499 294.72l118.088 104.625c26.483 23.526 28.997 64.129 5.404 90.735zM944.422 449.818c0.128-200.922-161.896-363.201-362.509-362.952-87.56 0.123-167.573 31.151-230.061 82.569l331.277 293.509v-73.176c1.071-60.993 32.696-92.18 94.944-93.692 61.997 1.512 93.686 32.763 95.131 93.756v41.096h-72.227v-47.499c0.251-4.642-0.564-10.607-2.511-17.949-1.25-3.261-3.448-6.020-6.525-8.093-3.197-2.572-7.845-3.828-13.868-3.828-10.543 0.31-17.132 4.268-19.827 11.921-1.068 3.512-1.947 6.905-2.508 10.163-0.254 2.887-0.377 5.532-0.377 7.786v143.511l42.477 37.634c0.215-0.432 0.452-0.851 0.63-1.303 1.947-6.467 2.762-12.799 2.511-19.076v-36.772h72.227v30.121c-0.246 31.245-9.086 54.699-26.363 70.447l40.711 36.069c35.787-56.055 56.803-122.585 56.867-194.244zM239.795 331.47c-12.613 37.023-19.827 76.557-19.827 117.913-0.19 200.236 161.584 362.009 361.945 362.135 56.853 0 110.313-13.302 158.133-36.398l117.846 104.421c-79.444 50.952-173.758 80.817-275.292 80.948-283.377 0.181-511.354-227.729-511.789-511.675-0.126-79.567 18.636-154.679 51.137-221.882l117.848 104.538zM388.576 626.020h-97.514v-249.057l72.23 64.070v0.689h0.815l117.72 104.418c0 0.564 0.123 0.94 0.123 1.509 0.753 53.898-30.369 80.069-93.374 78.37zM405.959 561.517c1.942-2.767 3.074-6.469 3.323-11.112 0.312-4.452 0.438-9.6 0.438-15.246 0.251-10.916-0.689-19.83-2.949-26.985-2.952-7.594-10.983-11.357-24.159-11.357h-19.325v74.043h15.31c7.842 0 13.865-0.683 18.072-2.19 4.397-1.573 7.468-3.953 9.29-7.153z" horiz-adv-x="1140" />
<glyph unicode="&#xe614;" d="M581.278 961.708c284.857-0.19 514.807-230.517 514.427-514.997-0.378-285.047-230.073-514.553-514.869-514.615-284.541-0.062-515.311 230.517-514.933 514.422 0.439 285.936 230.009 515.439 515.375 515.19zM580.579 811.756c-201.764-0.123-364.666-163.032-364.478-364.663 0-202.018 162.524-364.735 364.478-364.984 202.018-0.316 365.174 163.030 365.048 365.423-0.252 201.767-163.156 364.35-365.048 364.224zM287.698 624.907h98.196c63.442 1.767 94.785-24.518 94.027-78.863 0.254-19.081-2.211-34.882-7.456-47.521-6.005-12.508-18.706-21.988-38.167-28.181v-0.819c28.373-6.259 43.031-23.573 43.981-51.946v-57.689c0-11.247 0.254-22.813 0.758-34.756 0.819-12.005 3.033-20.979 6.696-27.043h-71.846c-3.727 6.064-6.128 15.038-7.14 27.043-1.012 11.943-1.454 23.509-1.138 34.756v52.321c0 9.603-2.214 16.553-6.573 20.979-4.675 4.107-12.701 6.19-24.012 6.19h-14.599v-141.291h-72.73v326.82zM360.428 494.861h19.463c13.271 0 21.359 3.794 24.331 11.375 2.276 7.204 3.221 16.304 2.969 27.171 0 5.815-0.126 10.867-0.442 15.418-0.252 4.675-1.392 8.404-3.352 11.247-1.831 3.157-4.926 5.561-9.352 7.14-4.233 1.454-10.299 2.211-18.2 2.211h-15.418v-74.564zM498.372 624.907h162.082v-62.687h-89.35v-65.587h78.103v-62.685h-78.103v-73.11h92.822v-62.749h-165.557v326.818zM682.507 535.999c0.316 31.782 9.416 55.542 27.425 71.407 17.44 15.29 40.185 22.936 68.181 22.936 28.247 0 51.119-7.646 68.623-23 17.82-15.798 26.92-39.623 27.171-71.407v-30.333h-72.73v37.031c0.254 6.192-0.57 12.639-2.527 19.209-1.264 3.157-3.475 5.938-6.573 8.214-3.221 1.515-7.898 2.404-13.964 2.404-10.615-0.316-17.249-3.855-19.967-10.618-2.211-6.573-3.223-13.017-2.907-19.209v-161.956c0-2.273 0.126-4.865 0.38-7.772 0.568-3.411 1.454-6.824 2.527-10.233 2.717-7.775 9.352-11.756 19.967-12.007 6.067 0 10.744 1.261 13.964 3.791 3.098 2.15 5.309 4.867 6.573 8.216 1.96 7.33 2.782 13.33 2.527 18.007v47.837h72.73v-41.328c-1.451-61.547-33.364-93.015-95.794-94.469-62.685 1.454-94.53 32.922-95.607 94.343v148.937z" horiz-adv-x="1142" />
<glyph unicode="&#xe615;" d="M1016.824 5.766c-2.051 15.373-5.331 30.537-7.859 45.847-8.334 50.458-33.006 86.503-82.063 107.922-78.373 34.198-155.103 72.121-232.111 109.395-55.686 27.025-52.409 88.519-34.097 114.413 11.89 16.88 22.344 34.572 23.575 56.852 0.444 8.226 8.303 18.99 15.817 23.294 26.070 15.035 38.161 39.565 50.020 64.982 3.109 6.696 7.379 13.187 12.266 18.722 8.471 9.668 12.264 19.235 6.079 31.842-1.435 2.97 1.331 8.334 2.8 12.367 4.304 12.026 10.285 23.676 13.12 36.043 3.556 15.339 5.398 31.225 6.252 46.975 0.374 6.523-6.045 13.528-5.362 19.95 3.483 31.912-14.557 56.202-24.739 83.977-12.465 34.198-36.928 55.619-58.519 81.106-4.066 4.784-5.227 13.051-5.571 19.886-0.72 14.588-6.732 21.797-22.004 19.813-6.11-0.787-12.772-2.495-18.41-0.991-4.957 1.334-12.406 6.288-12.676 10.112-1.538 19.336-8.264 22.517-28.016 19.235-12.364-2.049-28.457 9.155-40.584 17.561-10.145 7.041-18.89 10.045-30.681 7.176-4.915-1.195-11.544-0.991-15.716 1.435-4.441 2.663-8.775 4.237-13.118 5.124v0.748c-0.957-0.031-1.982-0.204-2.939-0.307-0.955 0.103-1.912 0.274-2.867 0.307v-0.751c-4.371-0.888-8.749-2.462-13.156-5.124-4.133-2.425-10.762-2.632-15.68-1.435-11.822 2.867-20.569-0.137-30.684-7.176-12.158-8.404-28.217-19.609-40.584-17.561-19.746 3.282-26.509 0.103-28.047-19.235-0.307-3.824-7.686-8.778-12.676-10.112-5.669-1.504-12.297 0.204-18.446 0.991-15.236 1.984-21.25-5.225-21.97-19.813-0.338-6.832-1.502-15.102-5.568-19.886-21.588-25.485-46.051-46.908-58.555-81.106-10.117-27.773-28.189-52.063-24.669-83.975 0.686-6.422-5.744-13.427-5.4-19.95 0.89-15.749 2.735-31.636 6.254-46.975 2.836-12.367 8.814-24.019 13.151-36.043 1.437-4.033 4.242-9.397 2.769-12.367-6.182-12.607-2.358-22.174 6.115-31.842 4.853-5.535 9.121-12.026 12.23-18.722 11.859-25.417 23.947-49.947 50.014-64.982 7.519-4.304 15.378-15.068 15.858-23.294 1.192-22.28 11.65-39.972 23.57-56.852 18.281-25.895 21.147-86.738-34.162-114.413-76.456-38.264-153.741-75.2-232.042-109.395-49.129-21.418-73.726-57.463-82.063-107.922-2.526-15.311-5.878-30.475-7.859-45.847-3.009-22.928-7.823-69.766-7.823-69.766h1024.611c-0.003 0-4.781 46.838-7.787 69.766z" horiz-adv-x="1025" />
<glyph unicode="&#xe616;" d="M1026.175 449.067c0-283.345-229.709-513.051-513.108-513.051-283.348 0-513.069 229.703-513.069 513.051 0 283.384 229.721 513.106 513.069 513.106 283.4 0 513.108-229.721 513.108-513.106zM513.069-63.985c135.725 0 259.112 52.711 350.874 138.739-9.717 11.65-22.551 21.114-39.113 28.343-58.934 25.745-116.627 54.256-174.534 82.256-41.871 20.322-39.405 66.587-25.639 86.057 8.943 12.692 16.805 25.998 17.728 42.746 0.333 6.169 6.241 14.284 11.889 17.522 19.604 11.304 28.697 29.747 37.604 48.861 2.34 5.031 5.555 9.89 9.229 14.077 6.37 7.243 9.224 14.436 4.572 23.942-1.086 2.209 1.004 6.241 2.105 9.273 3.238 9.067 7.733 17.801 9.861 27.115 2.67 11.549 4.059 23.48 4.701 35.323 0.281 4.902-4.544 10.184-4.033 14.986 2.621 24.022-10.943 42.271-18.598 63.158-9.376 25.714-27.771 41.82-44.005 60.97-3.058 3.623-3.927 9.838-4.188 14.952-0.539 10.981-5.060 16.415-16.544 14.924-4.598-0.601-9.611-1.886-13.843-0.756-3.728 0.988-9.327 4.724-9.534 7.604-1.153 14.539-6.213 16.929-21.065 14.475-9.296-1.543-21.395 6.858-30.513 13.203-7.632 5.292-14.209 7.555-23.069 5.38-3.697-0.9-8.682-0.746-11.815 1.094-3.341 1.976-6.605 3.184-9.867 3.839v0.552c-0.72-0.013-1.489-0.129-2.209-0.217-0.722 0.088-1.44 0.206-2.157 0.217v-0.552c-3.29-0.653-6.574-1.863-9.89-3.839-3.112-1.837-8.091-1.992-11.797-1.094-8.886 2.173-15.448-0.088-23.064-5.38-9.157-6.345-21.222-14.746-30.518-13.203-14.862 2.451-19.94 0.062-21.093-14.475-0.219-2.879-5.793-6.616-9.516-7.604-4.278-1.13-9.247 0.155-13.887 0.756-11.456 1.491-15.987-3.943-16.516-14.924-0.261-5.111-1.13-11.33-4.19-14.952-16.222-19.15-34.616-35.258-44.018-60.97-7.627-20.887-21.204-39.136-18.57-63.158 0.511-4.802-4.304-10.083-4.046-14.986 0.655-11.846 2.041-23.776 4.701-35.323 2.131-9.312 6.626-18.048 9.89-27.115 1.094-3.032 3.174-7.062 2.082-9.273-4.649-9.508-1.788-16.702 4.582-23.942 3.674-4.188 6.874-9.046 9.224-14.077 8.899-19.111 17.992-37.557 37.596-48.861 5.653-3.238 11.559-11.353 11.905-17.522 0.913-16.748 8.773-30.054 17.739-42.746 13.745-19.47 15.902-65.245-25.673-86.057-57.52-28.772-115.6-56.511-174.503-82.256-16.57-7.23-29.409-16.694-39.123-28.338 91.759-86.031 215.138-138.744 350.843-138.744z" horiz-adv-x="1026" />
<glyph unicode="&#xe617;" d="M65.774 516.748c10.052 9.358 25.988 21.772 43.285 32.699 51.335 32.619 108.115 50.897 166.829 64.133 48.763 10.95 98.246 16.887 148.066 20.203 55.755 3.754 111.559 3.78 167.392 0.797 39.944-2.185 79.686-6.502 119.119-13.211 43.956-7.506 87.037-17.994 128.785-33.751 24.419-9.175 48.172-20.105 70.534-33.573 29.716-17.891 56.552-39.224 77.22-67.348 20.819-28.302 31.721-60.407 33.829-95.392 1.747-27.402 0.717-54.697-5.656-81.588-2.877-12.083-8.226-23.134-16.554-32.386-11.417-12.648-26.424-17.021-42.772-17.636-20.463-0.668-40.411 4.113-60.361 8.226-38.912 7.97-77.836 16.245-116.699 24.728-14.137 3.034-28.689 5.093-41.649 12.596-22.308 12.955-34.445 31.775-34.033 57.783 0.258 16.869 2.216 33.782 2.469 50.695 0.312 25.010-9.923 45.161-30.898 59.042-14.395 9.539-30.694 14.911-47.452 18.665-40.411 9.046-81.387 10.179-122.561 10.050-28.821-0.126-57.582-1.669-86.093-6.143-19.947-3.161-39.562-7.813-57.732-17.014-24.318-12.364-39.353-31.465-40.073-59.352-0.441-16.351 0.973-32.802 1.927-49.15 0.642-11.822-0.080-23.446-5.295-34.288-9.26-19.385-24.935-31.672-45.37-36.964-22.646-5.865-45.605-10.54-68.504-15.223-38.102-7.764-76.216-15.368-114.416-22.517-14.526-2.774-29.254-1.951-43.133 3.602-18.742 7.457-28.924 22.775-34.138 41.337-7.096 25.397-7.841 51.513-6.966 77.731 0.9 27.040 5.883 53.237 18.404 77.607 9.794 19.065 22.491 35.955 42.493 55.642z" horiz-adv-x="1026" />
<glyph unicode="&#xe618;" d="M797.086 112.301c-0.059 0.163-0.119 0.328-0.16 0.485-71.399-45.638-151.782-69.931-234.023-69.931-0.013 0-0.021 0-0.028 0-122.52 0-237.501 52.772-315.469 144.741-99.778 117.698-134.252 329.954-73.022 427.789 4.004-1.662 7.875-3.233 11.68-4.773 13.585-5.511 26.413-10.716 42.305-19.096 6.063-3.202 12.338-4.812 18.673-4.812 11.714 0 22.6 5.648 29.848 15.486 7.815 10.617 10.313 24.778 6.538 36.951l-3.525 11.41c-10.687 34.59-21.723 70.354-34.211 105.078-9.983 27.765-22.399 62.327-59.226 62.327-12.057 0-26.037-3.656-46.73-12.204-44.294-18.319-71.058-29.961-114.534-49.81-15.102-6.887-25.234-22.698-25.203-39.343 0.028-15.842 8.992-29.337 23.975-36.115 18.208-8.257 30.536-13.716 43.468-19.447l10.687-4.753c-101.938-259.102 24.803-526.458 211.314-639.212 83.497-50.474 178.5-77.14 274.769-77.14h0.041c102.72 0 205.561 31.099 284.501 85.198-31.729 28.803-45.566 69.167-51.671 87.171zM1098.203 210.090c-18.113 8.577-30.356 14.258-43.221 20.244l-10.496 4.892c106.448 257.268-15.569 526.801-200.067 642.788-85.36 53.663-183.123 82.032-282.716 82.032-104.848 0-206.41-30.593-285.967-86.165l-5.385-3.764c31.597-27.564 45.86-66.788 52.917-86.41 72.926 47.94 155.675 73.409 239.895 73.409 125.407 0 242.142-54.785 320.294-150.316 97.683-119.447 128.439-332.255 65.498-429.015-3.989 1.736-7.815 3.385-11.624 4.998-13.471 5.759-26.204 11.18-41.954 19.821-6.203 3.424-12.645 5.155-19.212 5.155-11.585 0-22.399-5.558-29.69-15.267-7.813-10.434-10.478-24.432-6.966-36.515l3.279-11.301c10.096-34.845 20.531-70.857 32.412-105.842 9.588-28.238 21.514-63.382 59.179-63.382 11.843 0 25.577 3.424 45.881 11.399 44.351 17.439 71.319 28.601 115.409 47.777 15.19 6.623 25.601 22.252 25.859 38.894 0.281 15.822-8.445 29.499-23.325 36.569z" horiz-adv-x="1122" />
<glyph unicode="&#xe619;" d="M46.993 961.7c461.234 0 553.793 0 1015.024 0 35.919 0 53.356-25.959 53.356-57.959-0.581-303.259-0.325-606.488-0.449-909.809 0-43.984-13.203-57.058-57.703-57.058-443.072-0.126-556.453-0.126-999.553 0-44.534 0-57.799 13.009-57.799 57.058-0.098 303.257 0.485 608.072-0.093 911.329-0.034 26.21 11.301 53.761 47.217 56.439zM311.405 450.298c0-119.045-0.072-172.168 0.057-291.249 0.036-50.043 11.208-61.050 62.12-61.050 233.352 0 137.075 0 370.522 0 47.075 0 59.249 11.982 59.249 58.095 0.126 239.111 0.126 346.338 0 585.389 0 48.138-10.687 58.991-57.768 58.991-235.323 0.101-140.844 0.101-376.157 0-47.044 0-57.93-11.043-57.966-58.89-0.129-119.109-0.057-172.209-0.057-291.287zM153.944 838.566c-74.929-0.062-66.687 5.958-66.845-66.685-0.201-63.95-7.054-63.534 62.528-63.372 72.999 0.194 67.201-3.764 67.302 67.554 0 67.722 4.087 62.595-62.985 62.502zM963.644 838.566c-71.159-0.034-65.56 6.185-65.751-65.364-0.129-67.302-4.508-64.693 64.528-64.693 73.089 0 65.299-2.031 65.299 66.238-0.003 68.646 6.956 63.911-64.076 63.818zM216.828 122.408c0.359 73.094 4.639 66.914-67.358 67.17-68.104 0.191-62.569 2.763-62.407-63.31 0.129-73.476-6.954-66.52 67.074-66.649 66.042-0.065 63.142-6.056 62.691 62.789zM1027.718 124.4c0.134 68.334 6.443 65.304-63.297 65.178-70.132-0.132-66.656 5.793-66.527-65.304 0.129-70.645-4.384-64.721 63.756-64.657 71.995 0.132 66.202-6.698 66.068 64.783zM1027.718 342.077c0 70.55 7.219 66.842-67.485 66.522-0.898 0-1.873 0-2.838 0-59.375 0-59.375 0-59.375-58.023 0-77.922-6.443-69.936 69.293-70.196 66.076-0.387 60.539-3.091 60.405 61.697zM151.307 489.873c68.295-0.163 65.815-5.568 65.624 62.982-0.194 71.128 4.895 64.917-66.014 65.010-69.905 0.101-63.813 4.704-63.885-63.978-0.062-67.431-5.7-64.463 64.275-64.014zM961.263 489.873c72.511-0.258 66.589-4.603 66.455 64.494 0 68.558 6.185 63.537-64.267 63.498-70.196-0.028-65.686 6.053-65.498-65.493 0.132-62.5 0.067-62.5 63.31-62.5zM150.399 280.38c71.004 0 66.659-6.567 66.466 64.528-0.163 63.694-0.036 63.501-65.013 63.756-70.805 0.258-64.822 2.673-64.822-63.756 0.036-69.167-5.919-64.788 63.369-64.528z" horiz-adv-x="1115" />
<glyph unicode="&#xe61a;" d="M3.881 146.835h220.26v-210.835h-220.26v210.835zM308.817 350.143h220.27v-414.143h-220.27v414.143zM613.764 553.412h220.268v-617.412h-220.268v617.412zM918.685 756.715h220.265v-820.715h-220.265v820.715zM1223.629 960h220.263v-1024h-220.263v1024z" horiz-adv-x="1444" />
<glyph unicode="&#xe61b;" d="M526.071 234.749c-28.637-30.869-56.465-60.861-84.282-90.859-51.578-55.636-103.047-111.376-154.842-166.832-7.606-8.135-15.958-16.1-25.317-22.012-28.075-17.708-58.31-18.090-88.472-6.492-59.84 23.028-80.004 90.727-59.734 139.234 5.413 12.95 13.721 23.601 23.709 33.173 70.256 67.351 140.506 134.717 210.76 202.077 15.638 14.993 31.264 29.995 47.364 45.45-9.302 9.529-18.386 18.833-27.451 28.137-12.122 12.442-13.234 20.28-5.067 35.498 4.735 8.816 4.789 8.878-2.627 16.198-20.012 19.72-40.168 39.198-63.498 55.188-27.167 18.624-57.161 24.233-89.083 19.849-53.402-7.328-91.609-38.372-121.413-81.046-12.774-18.299-15.365-40.313-17.517-61.875-3.23-32.245-2.415-64.479 2.209-96.597 1.654-11.515-3.863-16.539-13.835-11.175-8.306 4.448-16.095 11.048-22.115 18.353-15.574 18.89-22.223 42.042-27.474 65.395-12.955 57.652-8.86 114.49 12.191 169.495 32.345 84.537 79.743 159.571 145.953 221.932 13.659 12.857 176.841 180.564 202.944 207.021 7.493 7.599 14.895 7.635 22.393 0.028 43.009-43.641 85.985-87.316 128.927-131.029 8.117-8.267 8.019-15.097-0.222-23.49-26.339-26.834-52.726-53.627-79.106-80.419-6.244-6.334-97.34-82.437-73.027-128.816 22.693-25.090 46.196-49.449 69.575-73.904 1.189-1.238 4.686-1.386 6.523-0.632 3.63 1.499 6.848 3.997 10.248 6.066 9.745 5.94 19.545 4.918 27.812-3.083 11.755-11.381 23.405-22.858 35.392-34.59 4.807 4.575 9.939 9.41 15.027 14.294 27.128 26.039 54.272 52.071 81.351 78.146 16.413 15.778 18.652 28.418 11.038 49.658-10.473 29.221-14.356 59.677-13.85 90.624 1.017 61.045 20.438 115.334 61.003 161.416 32.825 37.286 72.054 64.311 121.643 74.325 35.227 7.101 69.139 4.513 100.663-14.026 6.365-3.752 11.908-9.007 17.455-14.005 3.491-3.125 3.153-6.236-0.565-9.98-42.503-42.885-84.772-86.013-127.154-129.035-12.442-12.638-12.356-23.167 0.196-35.914 40.344-40.978 80.597-82.050 120.936-123.052 10.076-10.233 19.537-10.021 29.504 0.134 43.195 44.077 86.449 88.090 129.706 132.118 1.21 1.233 2.572 2.322 5.135 4.624 5.491-5.893 11.895-10.924 15.961-17.406 19.452-30.944 22.608-64.83 17.073-100.25-14.253-91.080-97.188-175.638-197.712-190.123-39.977-5.764-79.372-2.562-118.067 9.031-5.898 1.775-11.541 4.629-17.538 5.829-12.47 2.474-23.872-0.366-32.74-9.877-30.921-33.168-61.674-66.484-92.474-99.758-0.73-0.805-1.349-1.718-0.181-1.099 8.992-10.006 17.354-20.662 27.061-29.94 81.064-77.54 164.91-151.986 250.882-224.063 9.936-8.347 10.274-15.695 1.040-25.1-42.338-43.068-84.689-86.111-127.059-129.154-9.413-9.575-16.846-9.152-25.291 1.295-76.686 94.78-156.8 186.609-239.707 276.002-1.334 1.453-2.562 3.029-4.257 5.042z" horiz-adv-x="1105" />
<glyph unicode="&#xe61c;" d="M74.418 881.299h239.304v-228.491h-239.304v228.491zM393.455 881.299h239.304v-228.491h-239.304v228.491zM712.494 881.299h239.263v-228.491h-239.263v228.491zM74.418 562.265h239.304v-228.555h-239.304v228.555zM393.455 562.265h239.304v-228.555h-239.304v228.555zM712.494 562.265h239.263v-228.555h-239.263v228.555zM74.418 243.166h239.304v-228.465h-239.304v228.465zM393.455 243.166h239.304v-228.465h-239.304v228.465zM712.494 243.166h239.263v-228.465h-239.263v228.465z" horiz-adv-x="1026" />
<glyph unicode="&#x20;" d="" />
<glyph unicode="&#xe603;" glyph-name="presentation" horiz-adv-x="1088" d="M952.495 1019.065h-818.689c-72.81 0-132.183-60.63-132.183-135.162v-750.719c0-74.473 59.372-135.101 132.183-135.101h818.686c72.936 0 132.314 60.625 132.314 135.101v750.722c0.003 74.532-59.378 135.159-132.311 135.159zM946.346 139.651h-806.14v737.822h806.015l0.126-737.822zM685.753 738.544h216.911v-566.758h-216.911v566.758zM428.672 610.002h216.911v-438.216h-216.911v438.216zM172.339 481.46h216.161v-309.677h-216.161v309.677z" />
<glyph unicode="&#xe613;" glyph-name="recDisable" horiz-adv-x="1140" d="M1123.444 1003.015c-23.593 26.481-64.131 28.989-90.74 5.395l-1008.269-893.436c-26.609-23.468-28.991-64.131-5.46-90.676 12.674-14.306 30.308-21.649 48.126-21.649 15.123 0 30.372 5.401 42.544 16.195l130.045 115.22c90.743-81.844 210.569-132.165 342.473-132.101 282.816 0.061 510.913 227.969 511.287 510.972 0.126 109.934-34.682 211.367-93.499 294.72l118.088 104.625c26.483 23.526 28.997 64.129 5.404 90.735zM944.422 513.818c0.128-200.922-161.896-363.201-362.509-362.952-87.56 0.123-167.573 31.151-230.061 82.569l331.277 293.509v-73.176c1.071-60.993 32.696-92.18 94.944-93.692 61.997 1.512 93.686 32.763 95.131 93.756v41.096h-72.227v-47.499c0.251-4.642-0.564-10.607-2.511-17.949-1.25-3.261-3.448-6.020-6.525-8.093-3.197-2.572-7.845-3.828-13.868-3.828-10.543 0.31-17.132 4.268-19.827 11.921-1.068 3.512-1.947 6.905-2.508 10.163-0.254 2.887-0.377 5.532-0.377 7.786v143.511l42.477 37.634c0.215-0.432 0.452-0.851 0.63-1.303 1.947-6.467 2.762-12.799 2.511-19.076v-36.772h72.227v30.121c-0.246 31.245-9.086 54.699-26.363 70.447l40.711 36.069c35.787-56.055 56.803-122.585 56.867-194.244zM239.795 395.47c-12.613 37.023-19.827 76.557-19.827 117.913-0.19 200.236 161.584 362.009 361.945 362.135 56.853 0 110.313-13.302 158.133-36.398l117.846 104.421c-79.444 50.952-173.758 80.817-275.292 80.948-283.377 0.181-511.354-227.729-511.789-511.675-0.126-79.567 18.636-154.679 51.137-221.882l117.848 104.538zM388.576 690.020h-97.514v-249.057l72.23 64.070v0.689h0.815l117.72 104.418c0 0.564 0.123 0.94 0.123 1.509 0.753 53.898-30.369 80.069-93.374 78.37zM405.959 625.517c1.942-2.767 3.074-6.469 3.323-11.112 0.312-4.452 0.438-9.6 0.438-15.246 0.251-10.916-0.689-19.83-2.949-26.985-2.952-7.594-10.983-11.357-24.159-11.357h-19.325v74.043h15.31c7.842 0 13.865-0.683 18.072-2.19 4.397-1.573 7.468-3.953 9.29-7.153z" />
<glyph unicode="&#xe614;" glyph-name="recEnable" horiz-adv-x="1142" d="M581.278 1025.708c284.857-0.19 514.807-230.517 514.427-514.997-0.378-285.047-230.073-514.553-514.869-514.615-284.541-0.062-515.311 230.517-514.933 514.422 0.439 285.936 230.009 515.439 515.375 515.19zM580.579 875.756c-201.764-0.123-364.666-163.032-364.478-364.663 0-202.018 162.524-364.735 364.478-364.984 202.018-0.316 365.174 163.030 365.048 365.423-0.252 201.767-163.156 364.35-365.048 364.224zM287.698 688.907h98.196c63.442 1.767 94.785-24.518 94.027-78.863 0.254-19.081-2.211-34.882-7.456-47.521-6.005-12.508-18.706-21.988-38.167-28.181v-0.819c28.373-6.259 43.031-23.573 43.981-51.946v-57.689c0-11.247 0.254-22.813 0.758-34.756 0.819-12.005 3.033-20.979 6.696-27.043h-71.846c-3.727 6.064-6.128 15.038-7.14 27.043-1.012 11.943-1.454 23.509-1.138 34.756v52.321c0 9.603-2.214 16.553-6.573 20.979-4.675 4.107-12.701 6.19-24.012 6.19h-14.599v-141.291h-72.73v326.82zM360.428 558.861h19.463c13.271 0 21.359 3.794 24.331 11.375 2.276 7.204 3.221 16.304 2.969 27.171 0 5.815-0.126 10.867-0.442 15.418-0.252 4.675-1.392 8.404-3.352 11.247-1.831 3.157-4.926 5.561-9.352 7.14-4.233 1.454-10.299 2.211-18.2 2.211h-15.418v-74.564zM498.372 688.907h162.082v-62.687h-89.35v-65.587h78.103v-62.685h-78.103v-73.11h92.822v-62.749h-165.557v326.818zM682.507 599.999c0.316 31.782 9.416 55.542 27.425 71.407 17.44 15.29 40.185 22.936 68.181 22.936 28.247 0 51.119-7.646 68.623-23 17.82-15.798 26.92-39.623 27.171-71.407v-30.333h-72.73v37.031c0.254 6.192-0.57 12.639-2.527 19.209-1.264 3.157-3.475 5.938-6.573 8.214-3.221 1.515-7.898 2.404-13.964 2.404-10.615-0.316-17.249-3.855-19.967-10.618-2.211-6.573-3.223-13.017-2.907-19.209v-161.956c0-2.273 0.126-4.865 0.38-7.772 0.568-3.411 1.454-6.824 2.527-10.233 2.717-7.775 9.352-11.756 19.967-12.007 6.067 0 10.744 1.261 13.964 3.791 3.098 2.15 5.309 4.867 6.573 8.216 1.96 7.33 2.782 13.33 2.527 18.007v47.837h72.73v-41.328c-1.451-61.547-33.364-93.015-95.794-94.469-62.685 1.454-94.53 32.922-95.607 94.343v148.937z" />
<glyph unicode="&#xe61a;" glyph-name="connection" horiz-adv-x="1444" d="M3.881 210.835h220.26v-210.835h-220.26v210.835zM308.817 414.143h220.27v-414.143h-220.27v414.143zM613.764 617.412h220.268v-617.412h-220.268v617.412zM918.685 820.715h220.265v-820.715h-220.265v820.715zM1223.629 1024h220.263v-1024h-220.263v1024z" />
<glyph unicode="&#xe900;" glyph-name="connection-lost" horiz-adv-x="1414" d="M0 299.153h196.337v-187.951h-196.337v187.951zM271.842 480.372h196.337v-369.169h-196.337v369.169zM543.656 661.562h196.337v-550.36h-196.337v550.36zM815.47 842.766v-731.564h119.56c-14.589 33.025-23.125 71.503-23.232 111.943 0.132 86.42 38.697 163.851 99.656 216.468l0.348 403.153h-196.332zM1087.292 1024v-533.672c28.874 10.572 62.222 16.73 97.009 16.825 35.717-0.129 69.823-6.614 101.322-18.371l-1.999 535.218h-196.332zM1192.868 439.852c-0.009 0-0.020 0-0.031 0-122.247 0-221.351-98.447-221.372-219.896 0-0.007 0-0.014 0-0.021 0-121.467 99.111-219.935 221.372-219.935 0.011 0 0.021 0 0.032 0 122.248 0.014 221.345 98.477 221.345 219.935 0 0.007 0 0.013 0 0.020-0.021 121.441-99.11 219.883-221.345 219.897zM1194.706 372.607c87.601-0.006 158.614-69.787 158.614-155.866 0-0.006 0-0.012 0-0.019-0.022-86.062-71.026-155.822-158.614-155.828-87.588 0.006-158.593 69.766-158.615 155.826 0 0.007 0 0.014 0 0.020 0 86.079 71.013 155.86 158.613 155.866zM1286.795 355.682l48.348-52.528-236.375-217.567-48.348 52.528 236.375 217.567z" />
<glyph unicode="&#xe901;" glyph-name="avatar" d="M512 204c106 0 200 56 256 138-2 84-172 132-256 132-86 0-254-48-256-132 56-82 150-138 256-138zM512 810c-70 0-128-58-128-128s58-128 128-128 128 58 128 128-58 128-128 128zM512 938c236 0 426-190 426-426s-190-426-426-426-426 190-426 426 190 426 426 426z" />
<glyph unicode="&#xe902;" glyph-name="download" d="M726 470h-128v170h-172v-170h-128l214-214zM826 596c110-8 198-100 198-212 0-118-96-214-214-214h-554c-142 0-256 114-256 256 0 132 100 240 228 254 54 102 160 174 284 174 156 0 284-110 314-258z" />
<glyph unicode="&#xe903;" glyph-name="autorenew" d="M800 694c34-52 54-116 54-182 0-188-154-342-342-342v-128l-170 172 170 170v-128c142 0 256 114 256 256 0 44-12 84-30 120zM512 768c-142 0-256-114-256-256 0-44 10-84 30-120l-62-62c-34 52-54 116-54 182 0 188 154 342 342 342v128l170-172-170-170v128z" />
<glyph unicode="&#xe904;" glyph-name="kick" d="M512 810l284-426h-568zM214 298h596v-84h-596v84z" />
<glyph unicode="&#xe905;" glyph-name="hangup" d="M512 640c-68 0-134-10-196-30v-132c0-16-10-34-24-40-42-20-80-46-114-78-8-8-18-12-30-12s-22 4-30 12l-106 106c-8 8-12 18-12 30s4 22 12 30c130 124 306 200 500 200s370-76 500-200c8-8 12-18 12-30s-4-22-12-30l-106-106c-8-8-18-12-30-12s-22 4-30 12c-34 32-72 58-114 78-14 6-24 20-24 38v132c-62 20-128 32-196 32z" />
<glyph unicode="&#xe906;" glyph-name="chat" d="M854 342v512h-684v-598l86 86h598zM854 938c46 0 84-38 84-84v-512c0-46-38-86-84-86h-598l-170-170v768c0 46 38 84 84 84h684z" />
<glyph unicode="&#xe907;" glyph-name="edit" d="M884 724l-78-78-160 160 78 78c16 16 44 16 60 0l100-100c16-16 16-44 0-60zM128 288l472 472 160-160-472-472h-160v160z" />
<glyph unicode="&#xe908;" glyph-name="share-doc" d="M554 640h236l-236 234v-234zM682 426v86h-340v-86h340zM682 256v86h-340v-86h340zM598 938l256-256v-512c0-46-40-84-86-84h-512c-46 0-86 38-86 84l2 684c0 46 38 84 84 84h342z" />
<glyph unicode="&#xe909;" glyph-name="telephone" d="M854 362c24 0 42-18 42-42v-150c0-24-18-42-42-42-400 0-726 326-726 726 0 24 18 42 42 42h150c24 0 42-18 42-42 0-54 8-104 24-152 4-14 2-32-10-44l-94-94c62-122 162-220 282-282l94 94c12 12 30 14 44 10 48-16 98-24 152-24zM854 810v44h-44v-44h44zM768 896h128v-128h-86v-86h-42v214zM640 810v-128h-128v44h86v42h-86v128h128v-42h-86v-44h86zM726 896v-214h-44v214h44z" />
<glyph unicode="&#xe90a;" glyph-name="star-full" d="M512 288l-264-160 70 300-232 202 306 26 120 282 120-282 306-26-232-202 70-300z" />
<glyph unicode="&#xe90b;" glyph-name="full-screen" d="M598 810h212v-212h-84v128h-128v84zM726 298v128h84v-212h-212v84h128zM214 598v212h212v-84h-128v-128h-84zM298 426v-128h128v-84h-212v212h84z" />
<glyph unicode="&#xe90c;" glyph-name="exit-full-screen" d="M682 682h128v-84h-212v212h84v-128zM598 214v212h212v-84h-128v-128h-84zM342 682v128h84v-212h-212v84h128zM214 342v84h212v-212h-84v128h-128z" />
<glyph unicode="&#xe90d;" glyph-name="security" d="M768 170v428h-512v-428h512zM768 682c46 0 86-38 86-84v-428c0-46-40-84-86-84h-512c-46 0-86 38-86 84v428c0 46 40 84 86 84h388v86c0 72-60 132-132 132s-132-60-132-132h-82c0 118 96 214 214 214s214-96 214-214v-86h42zM512 298c-46 0-86 40-86 86s40 86 86 86 86-40 86-86-40-86-86-86z" />
<glyph unicode="&#xe90e;" glyph-name="security-locked" d="M768 170v428h-512v-428h512zM380 768v-86h264v86c0 72-60 132-132 132s-132-60-132-132zM768 682c46 0 86-38 86-84v-428c0-46-40-84-86-84h-512c-46 0-86 38-86 84v428c0 46 40 84 86 84h42v86c0 118 96 214 214 214s214-96 214-214v-86h42zM512 298c-46 0-86 40-86 86s40 86 86 86 86-40 86-86-40-86-86-86z" />
<glyph unicode="&#xe90f;" glyph-name="reload" d="M512 256v128l170-170-170-172v128c-188 0-342 154-342 342 0 66 20 130 54 182l62-62c-20-36-30-76-30-120 0-142 114-256 256-256zM512 854c188 0 342-154 342-342 0-66-20-130-54-182l-62 62c20 36 30 76 30 120 0 142-114 256-256 256v-128l-170 170 170 172v-128z" />
<glyph unicode="&#xe910;" glyph-name="microphone" d="M738 554h72c0-146-116-266-256-286v-140h-84v140c-140 20-256 140-256 286h72c0-128 108-216 226-216s226 88 226 216zM512 426c-70 0-128 58-128 128v256c0 70 58 128 128 128s128-58 128-128v-256c0-70-58-128-128-128z" />
<glyph unicode="&#xe911;" glyph-name="mic-empty" d="M738 554h72c0-146-116-266-256-286v-140h-84v140c-140 20-256 140-256 286h72c0-128 108-216 226-216s226 88 226 216zM460 814v-264c0-28 24-50 52-50s50 22 50 50l2 264c0 28-24 52-52 52s-52-24-52-52zM512 426c-70 0-128 58-128 128v256c0 70 58 128 128 128s128-58 128-128v-256c0-70-58-128-128-128z" />
<glyph unicode="&#xe912;" glyph-name="mic-disabled" d="M182 896l714-714-54-54-178 178c-32-20-72-32-110-38v-140h-84v140c-140 20-256 140-256 286h72c0-128 108-216 226-216 34 0 68 8 98 22l-70 70c-8-2-18-4-28-4-70 0-128 58-128 128v32l-256 256zM640 548l-256 254v8c0 70 58 128 128 128s128-58 128-128v-262zM810 554c0-50-14-98-38-140l-52 54c12 26 18 54 18 86h72z" />
<glyph unicode="&#xe913;" glyph-name="link" d="M640 426c114 0 342-56 342-170v-86h-684v86c0 114 228 170 342 170zM256 598h128v-86h-128v-128h-86v128h-128v86h128v128h86v-128zM640 512c-94 0-170 76-170 170s76 172 170 172 170-78 170-172-76-170-170-170z" />
<glyph unicode="&#xe914;" glyph-name="shared-video" d="M512 170c188 0 342 154 342 342s-154 342-342 342-342-154-342-342 154-342 342-342zM512 938c236 0 426-190 426-426s-190-426-426-426-426 190-426 426 190 426 426 426zM426 320v384l256-192z" />
<glyph unicode="&#xe915;" glyph-name="settings" d="M512 362c82 0 150 68 150 150s-68 150-150 150-150-68-150-150 68-150 150-150zM830 470l90-70c8-6 10-18 4-28l-86-148c-6-10-16-12-26-8l-106 42c-22-16-46-32-72-42l-16-112c-2-10-10-18-20-18h-172c-10 0-18 8-20 18l-16 112c-26 10-50 24-72 42l-106-42c-10-4-20-2-26 8l-86 148c-6 10-4 22 4 28l90 70c-2 14-2 28-2 42s0 28 2 42l-90 70c-8 6-10 18-4 28l86 148c6 10 16 12 26 8l106-42c22 16 46 32 72 42l16 112c2 10 10 18 20 18h172c10 0 18-8 20-18l16-112c26-10 50-24 72-42l106 42c10 4 20 2 26-8l86-148c6-10 4-22-4-28l-90-70c2-14 2-28 2-42s0-28-2-42z" />
<glyph unicode="&#xe916;" glyph-name="star" d="M512 366l160-96-42 182 142 124-188 16-72 172-72-172-188-16 142-124-42-182zM938 630l-232-202 70-300-264 160-264-160 70 300-232 202 306 26 120 282 120-282z" />
<glyph unicode="&#xe917;" glyph-name="share-desktop" d="M896 298v512h-768v-512h768zM896 896c46 0 86-40 86-86l-2-512c0-46-38-84-84-84h-214v-86h-340v86h-214c-46 0-86 38-86 84v512c0 46 40 86 86 86h768z" />
<glyph unicode="&#xe918;" glyph-name="camera" d="M726 576l170 170v-468l-170 170v-150c0-24-20-42-44-42h-512c-24 0-42 18-42 42v428c0 24 18 42 42 42h512c24 0 44-18 44-42v-150z" />
<glyph unicode="&#xe919;" glyph-name="camera-disabled" d="M140 938l756-756-54-54-136 136c-6-4-16-8-24-8h-512c-24 0-42 18-42 42v428c0 24 18 42 42 42h32l-116 116zM896 746v-456l-478 478h264c24 0 44-18 44-42v-150z" />
<glyph unicode="&#xe91a;" glyph-name="volume" d="M598 886c172-38 298-192 298-374s-126-336-298-374v88c124 36 212 150 212 286s-88 250-212 286v88zM704 512c0-76-42-140-106-172v344c64-32 106-96 106-172zM128 640h170l214 214v-684l-214 214h-170v256z" />
<glyph unicode="&#xe91b;" glyph-name="contactList" d="M704 746c-46 0-86-38-86-84s40-86 86-86 86 40 86 86-40 84-86 84zM704 512c-82 0-150 68-150 150s68 148 150 148 150-66 150-148-68-150-150-150zM320 746c-46 0-86-38-86-84s40-86 86-86 86 40 86 86-40 84-86 84zM320 512c-82 0-150 68-150 150s68 148 150 148 150-66 150-148-68-150-150-150zM918 278v52c0 24-110 76-214 76-46 0-90-12-128-24 14-16 22-32 22-52v-52h320zM534 278v52c0 24-110 76-214 76s-214-52-214-76v-52h428zM704 470c92 0 278-48 278-140v-116h-940v116c0 92 186 140 278 140 52 0 130-16 192-44 62 28 140 44 192 44z" />
<glyph unicode="&#xe91c;" glyph-name="toggle-filmstrip" d="M896 896h-768c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.333h-768v128h768v-128z" />
<glyph unicode="&#xe91d;" glyph-name="feedback" d="M42.667 128h170.667v512h-170.667v-512zM981.333 597.333c0 46.933-38.4 85.333-85.333 85.333h-269.227l40.533 194.987 1.28 13.653c0 17.493-7.253 33.707-18.773 45.227l-45.227 44.8-280.747-281.173c-15.787-15.36-25.173-36.693-25.173-60.16v-426.667c0-46.933 38.4-85.333 85.333-85.333h384c35.413 0 65.707 21.333 78.507 52.053l128.853 300.8c3.84 9.813 5.973 20.053 5.973 31.147v81.493l-0.427 0.427 0.427 3.413z" />
</font></defs></svg>

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 611 B

2
images/spin.svg Normal file
View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<svg width='20px' height='20px' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="uil-spin"><rect x="0" y="0" width="100" height="100" fill="none" class="bk"></rect><g transform="translate(50 50)"><g transform="rotate(0) translate(34 0)"><circle cx="0" cy="0" r="8" fill="#ffffff"><animate attributeName="opacity" from="1" to="0.1" begin="0s" dur="1s" repeatCount="indefinite"></animate><animateTransform attributeName="transform" type="scale" from="1.5" to="1" begin="0s" dur="1s" repeatCount="indefinite"></animateTransform></circle></g><g transform="rotate(45) translate(34 0)"><circle cx="0" cy="0" r="8" fill="#ffffff"><animate attributeName="opacity" from="1" to="0.1" begin="0.12s" dur="1s" repeatCount="indefinite"></animate><animateTransform attributeName="transform" type="scale" from="1.5" to="1" begin="0.12s" dur="1s" repeatCount="indefinite"></animateTransform></circle></g><g transform="rotate(90) translate(34 0)"><circle cx="0" cy="0" r="8" fill="#ffffff"><animate attributeName="opacity" from="1" to="0.1" begin="0.25s" dur="1s" repeatCount="indefinite"></animate><animateTransform attributeName="transform" type="scale" from="1.5" to="1" begin="0.25s" dur="1s" repeatCount="indefinite"></animateTransform></circle></g><g transform="rotate(135) translate(34 0)"><circle cx="0" cy="0" r="8" fill="#ffffff"><animate attributeName="opacity" from="1" to="0.1" begin="0.37s" dur="1s" repeatCount="indefinite"></animate><animateTransform attributeName="transform" type="scale" from="1.5" to="1" begin="0.37s" dur="1s" repeatCount="indefinite"></animateTransform></circle></g><g transform="rotate(180) translate(34 0)"><circle cx="0" cy="0" r="8" fill="#ffffff"><animate attributeName="opacity" from="1" to="0.1" begin="0.5s" dur="1s" repeatCount="indefinite"></animate><animateTransform attributeName="transform" type="scale" from="1.5" to="1" begin="0.5s" dur="1s" repeatCount="indefinite"></animateTransform></circle></g><g transform="rotate(225) translate(34 0)"><circle cx="0" cy="0" r="8" fill="#ffffff"><animate attributeName="opacity" from="1" to="0.1" begin="0.62s" dur="1s" repeatCount="indefinite"></animate><animateTransform attributeName="transform" type="scale" from="1.5" to="1" begin="0.62s" dur="1s" repeatCount="indefinite"></animateTransform></circle></g><g transform="rotate(270) translate(34 0)"><circle cx="0" cy="0" r="8" fill="#ffffff"><animate attributeName="opacity" from="1" to="0.1" begin="0.75s" dur="1s" repeatCount="indefinite"></animate><animateTransform attributeName="transform" type="scale" from="1.5" to="1" begin="0.75s" dur="1s" repeatCount="indefinite"></animateTransform></circle></g><g transform="rotate(315) translate(34 0)"><circle cx="0" cy="0" r="8" fill="#ffffff"><animate attributeName="opacity" from="1" to="0.1" begin="0.87s" dur="1s" repeatCount="indefinite"></animate><animateTransform attributeName="transform" type="scale" from="1.5" to="1" begin="0.87s" dur="1s" repeatCount="indefinite"></animateTransform></circle></g></g></svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -1,20 +1,21 @@
<html itemscope itemtype="http://schema.org/Product" prefix="og: http://ogp.me/ns#" xmlns="http://www.w3.org/1999/html">
<head>
<!--#include virtual="title.html" -->
<link rel="icon" type="image/png" href="/images/favicon.ico?v=1"/>
<meta property="og:title" content="Jitsi Meet"/>
<meta property="og:image" content="/images/jitsilogo.png?v=1"/>
<meta property="og:description" content="Join a WebRTC video conference powered by the Jitsi Videobridge"/>
<meta description="Join a WebRTC video conference powered by the Jitsi Videobridge"/>
<meta itemprop="name" content="Jitsi Meet"/>
<meta itemprop="description" content="Join a WebRTC video conference powered by the Jitsi Videobridge"/>
<meta itemprop="image" content="/images/jitsilogo.png?v=1"/>
<link rel="stylesheet" href="css/all.css"/>
<script>console.log("(TIME) index.html loaded:\t", window.performance.now());</script>
<script src="config.js?v=15"></script><!-- adapt to your needs, i.e. set hosts and bosh path -->
<script src="interface_config.js?v=6"></script>
<meta charset="utf-8" />
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<!--#include virtual="base.html" -->
<script>
window.indexLoadedTime = window.performance.now();
console.log("(TIME) index.html loaded:\t", indexLoadedTime);
</script>
<script><!--#include virtual="/config.js" --></script><!-- adapt to your needs, i.e. set hosts and bosh path -->
<script src="utils.js?v=1"></script>
<!--#include virtual="connection_optimization/connection_optimization.html" -->
<script src="connection_optimization/do_external_connect.js?v=1"></script>
<script><!--#include virtual="/interface_config.js" --></script>
<script src="libs/lib-jitsi-meet.min.js?v=139"></script>
<script src="libs/app.bundle.min.js?v=139"></script>
<!--#include virtual="title.html" -->
<link rel="stylesheet" href="css/all.css"/>
<!--#include virtual="plugin.head.html" -->
</head>
<body>
@@ -32,7 +33,7 @@
<div id="enter_room_form" >
<div id="domain_name"></div>
<div id="enter_room">
<input id="enter_room_field" type="text" autofocus data-i18n="[placeholder]welcomepage.roomname" placeholder="Enter room name" />
<input id="enter_room_field" type="text" autofocus/>
<div class="icon-reload" id="reload_roomname"></div>
<input id="enter_room_button" type="button" data-i18n="[value]welcomepage.go" value="GO" />
@@ -95,50 +96,124 @@
<!--#include virtual="plugin.welcomepage.footer.html" -->
</div>
<div id="videoconference_page">
<div style="position: relative;" id="header_container">
<div id="header">
<div id="mainToolbarContainer">
<div id="notice" class="notice" style="display: none">
<span id="noticeText" class="noticeText"></span>
</div>
<span id="toolbar">
<span id="authentication" class="authentication" style="display: none">
<a class="button icon-avatar" id="toolbar_button_authentication" data-i18n="[content]toolbar.authenticate"></a>
<ul class="loginmenu">
<span class="loginmenuPadding"></span>
<li id="toolbar_auth_identity" class="identity"></li>
<li id="toolbar_button_login">
<a class="authButton" data-i18n="toolbar.login"></a>
</li>
<li id="toolbar_button_logout">
<a class="authButton" data-i18n="toolbar.logout"></a>
</li>
</ul>
</span>
<a class="button icon-microphone" id="toolbar_button_mute" data-container="body" data-toggle="popover" data-placement="bottom" shortcut="mutePopover" data-i18n="[content]toolbar.mute" content="Mute / Unmute"></a>
<a class="button icon-camera" id="toolbar_button_camera" data-container="body" data-toggle="popover" data-placement="bottom" shortcut="toggleVideoPopover" data-i18n="[content]toolbar.videomute" content="Start / stop camera"></a>
<a class="button icon-recEnable" id="toolbar_button_record" data-container="body" data-toggle="popover" data-placement="bottom" data-i18n="[content]toolbar.record" content="Record" style="display: none"></a>
<a class="button icon-security" id="toolbar_button_security" data-container="body" data-toggle="popover" data-placement="bottom" data-i18n="[content]toolbar.lock" content="Lock / unlock room"></a>
<a class="button icon-link" id="toolbar_button_link" data-container="body" data-toggle="popover" data-placement="bottom" data-i18n="[content]toolbar.invite" content="Invite others"></a>
<a class="button icon-chat" id="toolbar_button_chat" data-container="body" data-toggle="popover" shortcut="toggleChatPopover" data-placement="bottom" data-i18n="[content]toolbar.chat" content="Open / close chat">
<span id="unreadMessages"></span>
</a>
<a class="button icon-prezi" id="toolbar_button_prezi" data-container="body" data-toggle="popover" data-placement="bottom" data-i18n="[content]toolbar.prezi" content="Share Prezi"></a>
<a class="button icon-share-doc" id="toolbar_button_etherpad" data-container="body" data-toggle="popover" data-placement="bottom" content="Shared document" data-i18n="[content]toolbar.etherpad"></a>
<a class="button icon-share-desktop" id="toolbar_button_desktopsharing" data-container="body" data-toggle="popover" data-placement="bottom" shortcut="toggleDesktopSharingPopover" content="Share screen" data-i18n="[content]toolbar.sharescreen" style="display: none"></a>
<a class="button icon-full-screen" id="toolbar_button_fullScreen" data-container="body" data-toggle="popover" data-placement="bottom" content="Enter / Exit Full Screen" data-i18n="[content]toolbar.fullscreen"></a>
<a class="button icon-telephone" id="toolbar_button_sip" data-container="body" data-toggle="popover" data-placement="bottom" content="Call SIP number" data-i18n="[content]toolbar.sip" style="display: none"></a>
<a class="button icon-dialpad" id="toolbar_button_dialpad" data-container="body" data-toggle="popover" data-placement="bottom" content="Open dialpad" data-i18n="[content]toolbar.dialpad" style="display: none"></a>
<a class="button icon-settings" id="toolbar_button_settings" data-container="body" data-toggle="popover" data-placement="bottom" content="Settings" data-i18n="[content]toolbar.Settings"></a>
<a class="button icon-hangup" id="toolbar_button_hangup" data-container="body" data-toggle="popover" data-placement="bottom" content="Hang Up" data-i18n="[content]toolbar.hangup"></a>
</span>
</div>
<div id="subject"></div>
<span id="mainToolbar" class="toolbar"></span>
</div>
<div id="reloadPresentation"><a id="reloadPresentationLink"><i title="Reload Prezi" class="fa fa-repeat fa-lg"></i></a></div>
<div id="videospace">
<div id="subject" class="hide"></div>
<div id="extendedToolbar" class="toolbar">
<a class="button" id="toolbar_button_profile" data-container="body" data-placement="right" data-i18n="[content]toolbar.profile" content="Edit your profile">
<img id="avatar" src="images/avatar2.png"/>
</a>
<span id="authentication" class="authentication" style="display: none">
<a class="button icon-avatar" id="toolbar_button_authentication" data-i18n="[content]toolbar.authenticate"></a>
<ul class="loginmenu extendedToolbarPopup">
<span class="loginmenuPadding"></span>
<li id="toolbar_auth_identity"></li>
<li id="toolbar_button_login">
<a class="authButton" data-i18n="toolbar.login"></a>
</li>
<li id="toolbar_button_logout">
<a class="authButton" data-i18n="toolbar.logout"></a>
</li>
</ul>
</span>
<a class="button icon-contactList" id="toolbar_contact_list" data-container="body" data-toggle="popover" data-placement="right" shortcut="contactlistpopover" data-i18n="[content]bottomtoolbar.contactlist" content="Open / close contact list">
<span id="numberOfParticipants"></span>
</a>
<a class="button icon-chat" id="toolbar_button_chat" data-container="body" data-toggle="popover" shortcut="toggleChatPopover" data-placement="right" data-i18n="[content]toolbar.chat" content="Open / close chat">
<span id="unreadMessages"></span>
</a>
<a class="button" id="toolbar_button_record" data-container="body" data-toggle="popover" data-placement="right" style="display: none"></a>
<a class="button icon-security" id="toolbar_button_security" data-container="body" data-toggle="popover" data-placement="right" data-i18n="[content]toolbar.lock" content="Lock / unlock room"></a>
<a class="button icon-share-doc" id="toolbar_button_etherpad" data-container="body" data-toggle="popover" data-placement="right" content="Shared document" data-i18n="[content]toolbar.etherpad"></a>
<a class="button icon-shared-video" id="toolbar_button_sharedvideo" data-container="body" data-toggle="popover" data-placement="right" content="Share a YouTube video" data-i18n="[content]toolbar.sharedvideo" style="display: none">
<ul id="sharedVideoMutedPopup" class="loginmenu extendedToolbarPopup">
<li data-i18n="[html]toolbar.sharedVideoMutedPopup"></li>
</ul>
</a>
<a class="button icon-telephone" id="toolbar_button_sip" data-container="body" data-toggle="popover" data-placement="right" content="Call SIP number" data-i18n="[content]toolbar.sip" style="display: none"></a>
<a class="button icon-dialpad" id="toolbar_button_dialpad" data-container="body" data-toggle="popover" data-placement="right" content="Open dialpad" data-i18n="[content]toolbar.dialpad" style="display: none"></a>
<a class="button icon-settings" id="toolbar_button_settings" data-container="body" data-toggle="popover" data-placement="right" content="Settings" data-i18n="[content]toolbar.Settings"></a>
<a class="button icon-full-screen" id="toolbar_button_fullScreen" data-container="body" data-toggle="popover" data-placement="right" shortcut="toggleFullscreenPopover" data-i18n="[content]toolbar.fullscreen" content="Enter / Exit Full Screen"></a>
<a class="button icon-toggle-filmstrip" id="toolbar_film_strip" data-container="body" data-toggle="popover" shortcut="filmstripPopover" data-placement="right" data-i18n="[content]toolbar.filmstrip" content="Show / hide videos"></a>
<a class="button icon-feedback" id="feedbackButton" data-container="body" data-toggle="popover" data-placement="right" data-i18n="[content]feedback"></a>
<div id="sideToolbarContainer">
<div id="profile_container" class="sideToolbarContainer__inner">
<div class="title" data-i18n="profile.title"></div>
<div class="sideToolbarBlock first">
<label class="first" data-i18n="profile.setDisplayNameLabel"></label>
<input type="text" id="setDisplayName" data-i18n="[placeholder]settings.name" placeholder="Name">
</div>
<div class="sideToolbarBlock">
<label data-i18n="profile.setEmailLabel"></label>
<input type="text" id="setEmail" placeholder="Enter e-mail">
</div>
</div>
<div id="chat_container" class="sideToolbarContainer__inner">
<div id="nickname">
<span data-i18n="chat.nickname.title"></span>
<form>
<input type='text' id="nickinput" data-i18n="[placeholder]chat.nickname.popover" autofocus>
</form>
</div>
<div id="chatconversation"></div>
<audio id="chatNotification" src="sounds/incomingMessage.wav" preload="auto"></audio>
<textarea id="usermsg" data-i18n="[placeholder]chat.messagebox" autofocus></textarea>
<div id="smileysarea">
<div id="smileys" id="toggle_smileys">
<img src="images/smile.svg"/>
</div>
</div>
</div>
<div id="contacts_container" class="sideToolbarContainer__inner">
<div class="title" data-i18n="contactlist"></div>
<ul id="contacts"></ul>
</div>
<div id="settings_container" class="sideToolbarContainer__inner">
<div class="title" data-i18n="settings.title"></div>
<select id="languages_selectbox" class="first hide"></select>
<div id="deviceOptionsTitle" class="subTitle hide" data-i18n="settings.audioVideo"></div>
<div id="devicesOptions" class="hide">
<div class="sideToolbarBlock first">
<label class="first" data-i18n="settings.selectCamera"></label>
<select id="selectCamera"></select>
</div>
<div class="sideToolbarBlock">
<label data-i18n="settings.selectMic"></label>
<select id="selectMic"></select>
</div>
<div class="sideToolbarBlock">
<label data-i18n="settings.selectAudioOutput"></label>
<select id="selectAudioOutput"></select>
</div>
</div>
<div id="moderatorOptionsTitle" class="subTitle hide" data-i18n="settings.moderator"></div>
<div id = "startMutedOptions" class="hide">
<div class="sideToolbarBlock first">
<input type="checkbox" id="startAudioMuted">
<label class="startMutedLabel" for="startAudioMuted" data-i18n="settings.startAudioMuted"></label>
</div>
<div class="sideToolbarBlock">
<input type="checkbox" id="startVideoMuted">
<label class="startMutedLabel" for="startVideoMuted" data-i18n="settings.startVideoMuted"></label>
</div>
</div>
<div id="followMeOptions" class="sideToolbarBlock hide">
<input type="checkbox" id="followMeCheckBox">
<label class="followMeLabel" for="followMeCheckBox" data-i18n="settings.followMe"></label>
</div>
<a id="downloadlog" data-container="body" data-toggle="popover" data-placement="right" data-i18n="[data-content]downloadlogs" ><i class="icon-download"></i></a>
</div>
</div>
</div>
<div id="videospace">
<div id="largeVideoContainer" class="videocontainer">
<div id="presentation"></div>
<div id="sharedVideo"><div id="sharedVideoIFrame"></div></div>
<div id="etherpad"></div>
<a target="_new"><div class="watermark leftwatermark"></div></a>
<a target="_new"><div class="watermark rightwatermark"></div></a>
@@ -153,11 +228,15 @@
<video id="largeVideo" muted="true" autoplay></video>
</div>
<span id="videoConnectionMessage"></span>
<span id="videoResolutionLabel">HD</span>
<span id="recordingLabel" class="centeredVideoLabel">
<span id="recordingLabelText"></span>
<img id="recordingSpinner" class="recordingSpinner" src="images/spin.svg"></img>
</span>
</div>
<div id="remoteVideos">
<span id="localVideoContainer" class="videocontainer">
<span id="localNick" class="nick"></span>
<span id="localVideoWrapper">
<!--<video id="localVideo" autoplay muted></video> - is now per stream generated -->
</span>
@@ -167,75 +246,13 @@
<audio id="userJoined" src="sounds/joined.wav" preload="auto"></audio>
<audio id="userLeft" src="sounds/left.wav" preload="auto"></audio>
</div>
<span id="bottomToolbar">
<span class="bottomToolbar_span">
<a class="bottomToolbarButton" id="bottom_toolbar_chat" data-container="body" data-toggle="popover" shortcut="toggleChatPopover" data-placement="top" data-i18n="[content]bottomtoolbar.chat" content="Open / close chat">
<i id="chatBottomButton" class="icon-chat-simple">
<span id="bottomUnreadMessages"></span>
</i>
</a>
</span>
<div class="bottom_button_separator"></div>
<span class="bottomToolbar_span">
<a class="bottomToolbarButton" id="bottom_toolbar_contact_list" data-container="body" data-toggle="popover" data-placement="top" id="contactlistpopover" data-i18n="[content]bottomtoolbar.contactlist" content="Open / close contact list">
<i id="contactListButton" class="icon-contactList">
<span id="numberOfParticipants"></span>
</i>
</a>
</span>
<div class="bottom_button_separator"></div>
<span class="bottomToolbar_span">
<a class="bottomToolbarButton" id="bottom_toolbar_film_strip" data-container="body" data-toggle="popover" shortcut="filmstripPopover" data-placement="top" data-i18n="[content]bottomtoolbar.filmstrip" content="Show / hide film strip">
<i id="filmStripButton" class="icon-filmstrip"></i>
</a>
</span>
</span>
</div>
<div id="chatspace" class="right-panel">
<div id="nickname">
<span data-i18n="chat.nickname.title"></span>
<form>
<input type='text' id="nickinput" data-i18n="[placeholder]chat.nickname.popover" autofocus>
</form>
</div>
<!--div><i class="fa fa-comments">&nbsp;</i><span class='nick'></span>:&nbsp;<span class='chattext'></span></div-->
<div id="chatconversation"></div>
<audio id="chatNotification" src="sounds/incomingMessage.wav" preload="auto"></audio>
<textarea id="usermsg" data-i18n="[placeholder]chat.messagebox" autofocus></textarea>
<div id="smileysarea">
<div id="smileys" id="toggle_smileys">
<img src="images/smile.svg"/>
</div>
</div>
</div>
<div id="contactlist" class="right-panel">
<div class="title">
<i class="icon-contactList"><span data-i18n="contactlist"></span></i>
</div>
<ul id="contacts"></ul>
</div>
<div id="settingsmenu" class="right-panel">
<div class="icon-settings" data-i18n="settings.title"></div>
<img id="avatar" src="images/avatar2.png"/>
<div class="arrow-up"></div>
<input type="text" id="setDisplayName" data-i18n="[placeholder]settings.name" placeholder="Name">
<input type="text" id="setEmail" placeholder="E-Mail">
<div id = "startMutedOptions">
<label class = "startMutedLabel">
<input type="checkbox" id="startAudioMuted">
<span data-i18n="settings.startAudioMuted"></span>
</label>
<label class = "startMutedLabel">
<input type="checkbox" id="startVideoMuted">
<span data-i18n="settings.startVideoMuted"></span>
</label>
</div>
<button id="updateSettings" data-i18n="settings.update"></button>
<a id="downloadlog" data-container="body" data-toggle="popover" data-placement="right" data-i18n="[data-content]downloadlogs" ><i class="fa fa-cloud-download"></i></a>
</div>
<div class="feedbackButton">
<a id="feedbackButton" data-container="body" data-toggle="popover" data-placement="right" data-i18n="[data-content]feedback"><i class="fa fa-heart"></i></a>
</div>
<div id="keyboard-shortcuts" class="keyboard-shortcuts" style="display:none;">
<div class="header"><h3 data-i18n="keyboardShortcuts.keyboardShortcuts"></h3></div>
<div class="content">
<ul id="keyboard-shortcuts-list" class="item">
</ul>
</div>
</div>
</body>

View File

@@ -1,7 +1,10 @@
var interfaceConfig = {
CANVAS_EXTRA: 104,
CANVAS_RADIUS: 7,
CANVAS_RADIUS: 0,
SHADOW_COLOR: '#ffffff',
// TO FIX: this needs to be handled from SASS variables. There are some
// methods allowing to use variables both in css and js.
DEFAULT_BACKGROUND: '#474747',
INITIAL_TOOLBAR_TIMEOUT: 20000,
TOOLBAR_TIMEOUT: 4000,
DEFAULT_REMOTE_DISPLAY_NAME: "Fellow Jitster",
@@ -14,11 +17,11 @@ var interfaceConfig = {
GENERATE_ROOMNAMES_ON_WELCOME_PAGE: true,
APP_NAME: "Jitsi Meet",
INVITATION_POWERED_BY: true,
DOMINANT_SPEAKER_AVATAR_SIZE: 100,
TOOLBAR_BUTTONS: ['authentication', 'microphone', 'camera', 'desktop',
'recording', 'security', 'invite', 'chat', 'prezi', 'etherpad',
'fullscreen', 'sip', 'dialpad', 'settings', 'hangup', 'filmstrip',
'contacts'],
// the toolbar buttons line is intentionally left in one line, to be able
// to easily override values or remove them using regex
MAIN_TOOLBAR_BUTTONS: ['microphone', 'camera', 'desktop', 'invite', 'hangup'], // jshint ignore:line
TOOLBAR_BUTTONS: ['profile', 'authentication', 'microphone', 'camera', 'desktop', 'recording', 'security', 'invite', 'chat', 'etherpad', 'sharedvideo', 'fullscreen', 'sip', 'dialpad', 'settings', 'hangup', 'filmstrip', 'contacts'], // jshint ignore:line
SETTINGS_SECTIONS: ['language', 'devices', 'moderator'],
// Determines how the video would fit the screen. 'both' would fit the whole
// screen, 'height' would fit the original video height to the height of the
// screen, 'width' would fit the original video width to the width of the
@@ -29,5 +32,6 @@ var interfaceConfig = {
*/
filmStripOnly: false,
RANDOM_AVATAR_URL_PREFIX: false,
RANDOM_AVATAR_URL_SUFFIX: false
};
RANDOM_AVATAR_URL_SUFFIX: false,
FILM_STRIP_MAX_HEIGHT: 120
};

View File

@@ -2,6 +2,14 @@
"en": "Английски",
"bg": "Български",
"de": "Немски",
"tr": "Турски",
"it": "Италиански"
"es": "",
"fr": "Френски",
"hy": "",
"it": "Италиански",
"oc": "",
"ptBR": "",
"sk": "Словашки",
"sl": "Словенски",
"sv": "Шведски",
"tr": "Турски"
}

View File

@@ -2,9 +2,14 @@
"en": "Englisch",
"bg": "Bulgarisch",
"de": "Deutsch",
"tr": "Türkisch",
"it": "Italienisch",
"es": "Spanisch",
"fr": "Französisch",
"hy": "Armenisch",
"it": "Italienisch",
"oc": "Okzitanisch",
"ptBR": "Portugiesisch (Brasilien)",
"sk": "Slowakisch",
"sl": "Slowenisch",
"sk": "Slowakisch"
"sv": "Schwedisch",
"tr": "Türkisch"
}

15
lang/languages-es.json Normal file
View File

@@ -0,0 +1,15 @@
{
"en": "Inglés",
"bg": "Búlgaro",
"de": "Alemán",
"es": "",
"fr": "Francés",
"hy": "",
"it": "Italiano",
"oc": "",
"ptBR": "",
"sk": "Eslovaco",
"sl": "Esloveno",
"sv": "Sueco",
"tr": "Turco"
}

View File

@@ -2,6 +2,14 @@
"en": "Anglais",
"bg": "Bulgare",
"de": "Allemand",
"tr": "Turc",
"it": "Italien"
"es": "Espagnol",
"fr": "Français",
"hy": "Arménien",
"it": "Italien",
"oc": "Occitan",
"ptBR": "Portugais (Brésil)",
"sk": "Slovaque",
"sl": "Slovène",
"sv": "Suédois",
"tr": "Turc"
}

15
lang/languages-hy.json Normal file
View File

@@ -0,0 +1,15 @@
{
"en": "Անգլերեն",
"bg": "Բուլղարերեն",
"de": "Գերմաներեն ",
"es": "",
"fr": "Ֆրանսերեն",
"hy": "",
"it": "Իտալերեն",
"oc": "",
"ptBR": "",
"sk": "Սլովակերեն",
"sl": "Սլովեներեն ",
"sv": "Շվեդերեն ",
"tr": "Թուրքերեն"
}

View File

@@ -2,6 +2,14 @@
"en": "Inglese",
"bg": "Bulgaro",
"de": "Tedesco",
"tr": "Turco",
"it": "Italiano"
"es": "",
"fr": "Francese",
"hy": "",
"it": "Italiano",
"oc": "",
"ptBR": "",
"sk": "Slovacco",
"sl": "Sloveno",
"sv": "",
"tr": "Turco"
}

15
lang/languages-oc.json Normal file
View File

@@ -0,0 +1,15 @@
{
"en": "Anglés",
"bg": "Bulgar",
"de": "Aleman",
"es": "",
"fr": "Francés",
"hy": "",
"it": "Italian",
"oc": "",
"ptBR": "",
"sk": "Eslovac",
"sl": "Eslovèn",
"sv": "Suedés",
"tr": "Turc"
}

15
lang/languages-ptBR.json Normal file
View File

@@ -0,0 +1,15 @@
{
"en": "Inglês",
"bg": "Búlgaro",
"de": "Alemão",
"es": "Espanhol",
"fr": "Francês",
"hy": "Armênio",
"it": "Italiano",
"oc": "Provençal",
"ptBR": "Português (Brasil)",
"sk": "Eslovaco",
"sl": "Esloveno",
"sv": "Sueco",
"tr": "Turco"
}

15
lang/languages-ru.json Normal file
View File

@@ -0,0 +1,15 @@
{
"en": "",
"bg": "",
"de": "",
"es": "",
"fr": "",
"hy": "",
"it": "",
"oc": "",
"ptBR": "",
"sk": "",
"sl": "",
"sv": "",
"tr": ""
}

View File

@@ -2,9 +2,14 @@
"en": "Angličtina",
"bg": "Bulharština",
"de": "Nemčina",
"tr": "Turečtina",
"it": "Taliančina",
"es": "",
"fr": "Francúžtina",
"hy": "",
"it": "Taliančina",
"oc": "",
"ptBR": "",
"sk": "Slovenčina",
"sl": "Slovinčina",
"sk": "Slovenčina"
"sv": "",
"tr": "Turečtina"
}

View File

@@ -2,8 +2,14 @@
"en": "Angleščina",
"bg": "Bolgarščina",
"de": "Nemščina",
"tr": "Turščina",
"it": "Italjanščina",
"es": "",
"fr": "Francoščina",
"sl": ""
"hy": "",
"it": "Italjanščina",
"oc": "",
"ptBR": "",
"sk": "",
"sl": "Slovenščina",
"sv": "",
"tr": "Turščina"
}

View File

@@ -2,9 +2,14 @@
"en": "Engelska",
"bg": "Bulgariska",
"de": "Tyska",
"tr": "Turkiska",
"it": "Italienska",
"es": "",
"fr": "Franska",
"hy": "",
"it": "Italienska",
"oc": "",
"ptBR": "",
"sk": "Slovakiska",
"sl": "Slovenska",
"sk": "Slovakiska"
"sv": "",
"tr": "Turkiska"
}

View File

@@ -1,5 +1,15 @@
{
"en": "İngilizce",
"bg": "Bulgarca",
"de": "Almanca"
"de": "Almanca",
"es": "",
"fr": "",
"hy": "",
"it": "",
"oc": "",
"ptBR": "",
"sk": "",
"sl": "",
"sv": "",
"tr": ""
}

View File

@@ -1,11 +1,16 @@
{
"en": "English",
"bg": "Bulgarian",
"de": "German",
"tr": "Turkish",
"it": "Italian",
"es": "Spanish",
"fr": "French",
"sl": "Slovenian",
"hy": "Armenian",
"it": "Italian",
"oc": "Occitan",
"ptBR": "Portuguese (Brazil)",
"sk": "Slovak",
"sv": "Swedish"
"sl": "Slovenian",
"sv": "Swedish",
"tr": "Turkish"
}

View File

@@ -3,27 +3,53 @@
"connectionsettings": "Настройки на връзката",
"poweredby": "powered by",
"downloadlogs": "Изтегли логовете",
"feedback": "Кажете ни как върви",
"roomUrlDefaultMsg": "Конференцията се създава...",
"participant": "Участник",
"me": "аз",
"speaker": "Говорител",
"defaultNickname": "например __name__",
"defaultPreziLink": "например __url__",
"raisedHand": "",
"defaultNickname": "Яна Розова",
"defaultLink": "например __url__",
"calling": "Обаждане към __name__ ...",
"userMedia": {
"react-nativeGrantPermissions": "",
"chromeGrantPermissions": "",
"androidGrantPermissions": "",
"firefoxGrantPermissions": "",
"operaGrantPermissions": "",
"iexplorerGrantPermissions": "",
"safariGrantPermissions": "",
"nwjsGrantPermissions": ""
},
"keyboardShortcuts": {
"keyboardShortcuts": "Клавишни комбинации:",
"raiseHand": "Вдигни ръка.",
"pushToTalk": "Push to talk.",
"toggleScreensharing": "Смяна между камера и споделен екран.",
"toggleFilmstrip": "Показване/скриване на лентата с видеата.",
"toggleShortcuts": "Показване/скриване на това меню.",
"focusLocal": "Фокусиране върху нашето видео.",
"focusRemote": "Фокусиране върху видео на участник.",
"toggleChat": "Отваряне/скриване на чат панела.",
"mute": "Спиране/пускане на микрофона.",
"videoMute": "Спиране/пускане на нашето видео."
},
"welcomepage": {
"go": "Влез",
"roomname": "Въведете име на стаята",
"disable": "Не показвай страницата следващия път",
"disable": "Не показвай повече тази страница",
"feature1": {
"title": "Лесен за употреба",
"content": "Не е необходимо да сваляте нищо. _app_ работи директно във вашия браузър. Просто споделете адреса на вашата конференция с другите за да започнете."
},
"feature2": {
"title": "",
"title": "Нисък дебит",
"content": "Видео конференциите могат да работят с по-малко от 128Kbps, а аудио конференциите и конференциите с споделен екран дори с по-малко."
},
"feature3": {
"title": "Отворен код",
"content": "__app__ е лицензиран под MIT лиценз. Можете свободно да го изтеглите, използвате, променяте и споделяте според тези лицензи."
"content": "__app__ се разпространява под лицензе Apache. Свободни сте да го сваляте ползвате, променяте и споделяте спрямо правилата на лиценза."
},
"feature4": {
"title": "Неограничен брой потребители",
@@ -48,21 +74,26 @@
},
"toolbar": {
"mute": "Включи / Изключи микрофона",
"videomute": "Спри / пусни камерата",
"authenticate": "",
"record": "Запис",
"videomute": "Включи / Изключи камерата",
"authenticate": "Идентификация",
"lock": "Заключи / отключи стаята",
"invite": "Поканване на други",
"chat": "",
"prezi": "Сподели Prezi",
"etherpad": "Споделяне на документ",
"sharescreen": "Споделяне на екрана",
"invite": "Покани други",
"chat": "Отвори / затвори чат",
"etherpad": "Покажи споделения документ",
"sharedvideo": "Сподели YouTube видео",
"sharescreen": "Сподели екрана",
"fullscreen": "Влез / Излез от Пълен екран",
"sip": "Обади се на SIP номер",
"Settings": "Настройки",
"hangup": "Затвори",
"login": "Влез",
"logout": ""
"logout": "Изход",
"dialpad": "Цифров панел",
"sharedVideoMutedPopup": "Споделеното видео е заглуено,<br/>, за да можете да говорите.",
"micMutedPopup": "Микрофонът е заглушен, за да<br/>не пречи на YouTube видеото.",
"unableToUnmutePopup": "Не се говори по време на филм!",
"cameraDisabled": "Не е налична камера",
"micDisabled": "Не е наличен микрофон"
},
"bottomtoolbar": {
"chat": "Отвори / затвори чат",
@@ -79,7 +110,16 @@
"settings": {
"title": "НАСТРОЙКИ",
"update": "Актуализиране",
"name": "Име"
"name": "Име",
"startAudioMuted": "Започни без аудио",
"startVideoMuted": "Започни без видео",
"selectCamera": "Избери камера",
"selectMic": "Избери микрофон",
"selectAudioOutput": "Избери аудио изход",
"followMe": "Включи \"следвай ме\"",
"noDevice": "Няма",
"noPermission": "Не е разрешен достъп до устройството",
"avatarUrl": "Адрес на аватар"
},
"videothumbnail": {
"editnickname": "Натиснете за да<br/>промените името",
@@ -88,10 +128,11 @@
"mute": "Учасника е с изключен микрофон",
"kick": "Изгони",
"muted": "Изключен микрофон",
"domute": "Изключи микрофона"
"domute": "Изключи микрофона",
"flip": "Огледално"
},
"connectionindicator": {
"bitrate": "",
"bitrate": "Дебит:",
"packetloss": "Загуба на пакети:",
"resolution": "Резолюция:",
"less": "Скрий",
@@ -106,7 +147,7 @@
"remoteaddress": "Отдалечен адрес:",
"remoteaddress_plural": "Отдалечени адреси:",
"transport": "Транспорт:",
"bandwidth": "",
"bandwidth": "Оценка макс. дебит:",
"na": "Върнете се тук за информацията относно вашата връзка, когато започне конференцията"
},
"notify": {
@@ -118,21 +159,26 @@
"focus": "Конферентен фокус",
"focusFail": "__component__ не е на раположения - следващ опит след __ms__ секунди",
"grantedTo": "Даване на роля модератор на __to__!",
"grantedToUnknown": "Даване на роля модератор на $t(somebody)!"
"grantedToUnknown": "Даване на роля модератор на $t(somebody)!",
"muted": "Започвате разговора без звук.",
"mutedTitle": "Звукът ви е спрян!",
"raisedHand": ""
},
"dialog": {
"kickMessage": "Бяхте изгонен от срещата!",
"popupError": "Вашия браузър блокира попъп прозорците от този сайт. Моля позволете попъп прозорците от настройките на браузъра и опитайте пак.",
"passwordError": "Тази конференция е защитена с парола. Само създателя и може да промени паролата.",
"passwordError2": "Тази конференция не е защитена с парола. Само създателя и може да сложи парола.",
"joinError": "Не можете да се присъедините към конференцията. Може би имате проблем с конфигурацията на сифурността. Моля обърнете се към администратора на услугата.",
"popupError": "Навигаторът ви блокира попъите. Молим ви да премахнете забраната и да опитате отново.",
"passwordError": "Стаята е защитена с парола. Само собственикът може да я променя или премахва.",
"passwordError2": "Стаята ви не е защитена с парола. Собственикът би могъл да добави парола.",
"connectError": "Опа! Нещо се обърка и не успяхме да се свържем с конференцията.",
"connecting": "",
"error": "",
"connectErrorWithMsg": "Опа! Нещо се обърка и не успяхме да се свържем с конференцията: __msg__",
"connecting": "Свързване",
"error": "Грешка",
"detectext": "Възникна грешка при опит да бъде намерено разширението за споделяне на екран.",
"failtoinstall": "Неуспешна инсталация на разширението за споделяне на екрана.",
"failedpermissions": "Неуспешен опит за получаване на права за използване на микрофон и/или камера.",
"bridgeUnavailable": "Jitsi Videobridge не е наличен. Моля опитайте пак!",
"jicofoUnavailable": "Jitsi Videobridge не е наличен. Моля опитайте пак!",
"maxUsersLimitReached": "Конференцията е пълна. Моля, опитайте по-късно!",
"lockTitle": "Неуспешно заключване",
"lockMessage": "Неуспешно заключване на конференцията.",
"warning": "Внимание",
@@ -146,24 +192,25 @@
"defaultError": "Възникна грешка",
"passwordRequired": "Изисква се парола",
"Ok": "ОК",
"removePreziTitle": "Премахни Prezi",
"removePreziMsg": "Сигурни ли сте, че искате да премахнете Prezi?",
"sharePreziTitle": "Сподели Prezi",
"sharePreziMsg": "Друг участник вече е споделил Prezi. Тази конференция позволява само да се споделя само едно Prezi.",
"Remove": "Премахване",
"Stop": "Спиране",
"AuthMsg": "Нужна е идентификация, за да създадете стая:<br/><b>__room__</b></br> Може да се идентифицирате, за да създадете стая или да изчакате някой друг да го направи.",
"Authenticate": "Идентификация",
"Remove": "DELETE DELETE DELETE DELETE DELETE DELETE DELETE DELETE DELETE DELETE ",
"shareVideoTitle": "Сподели видео",
"shareVideoLinkError": "Моля въведете правилен Prezi линк.",
"removeSharedVideoTitle": "Край на споделянето на видео",
"removeSharedVideoMsg": "Сигурни ли сте, че искате да премахнете Prezi?",
"alreadySharedVideoMsg": "Друг участник вече споделя видео. Споделянето е възможно само по веднъж на стая.",
"WaitingForHost": "Чакаме домакина ...",
"WaitForHostMsg": "<b>__room__ </b> още не е започнал. Ако вие сте домакина моля идентифицирайте се. В противен случай ще изчакаме домакина.",
"IamHost": "Аз съм домакина",
"Cancel": "Отказ",
"retry": "Повторен опит",
"logoutTitle": "Изход",
"logoutQuestion": "Сигурни ли сте, че искате да излезете и да прекъснете конференцията?",
"sessTerminated": "Сесията е прекъсната.",
"hungUp": "Вие затворихте обаждането.",
"joinAgain": есъединете се отново",
"hungUp": "Затворихте",
"joinAgain": рисъединете се отново",
"Share": "Споделяне",
"preziLinkError": "Моля въведете правилен Prezi линк.",
"Save": "Запазване",
"recording": "Запис",
"recordingToken": "Въведете код за достъп за запис на конференцията",
"Dial": "Набиране",
"sipMsg": "Въведете SIP номер",
@@ -183,11 +230,39 @@
"reservationErrorMsg": "Грешка номер: __code__, съобщение: __msg__",
"password": "парола",
"userPassword": "потребителска парола",
"token": "код за достъп"
"token": "код за достъп",
"tokenAuthFailed": "Неуспешна XMPP автентикация: невалиден тоукън",
"displayNameRequired": "Въведете името си:",
"extensionRequired": "Изисква се разширение: ",
"firefoxExtensionPrompt": "За да споделите екрана си, трябва да инсталирате Firefox разширение. <a href='__url__'>свалете го тук</a> и пробвайте пак!",
"feedbackQuestion": "Как мина разговора?",
"thankYou": "Благодарим, че използвахте __appName__!",
"sorryFeedback": "Много съжаляваме! Бихте ли ни казали повече?",
"liveStreaming": "Пряко предаване",
"streamKey": "Имке/ключ на потока",
"startLiveStreaming": "Пряко предаване",
"stopStreamingWarning": "Наистина ли искате да спрем прякото предаване?",
"stopRecordingWarning": "Наистина ли искате да спрем записа?",
"stopLiveStreaming": "Край на прякото предаване",
"stopRecording": "Край на записа",
"doNotShowWarningAgain": "Занапред не ме предупреждавай пак",
"permissionDenied": "Достъпът е отказан",
"screenSharingPermissionDeniedError": "Не сте дали права за споделяне на екран",
"micErrorPresent": "Грешка при достъп до микрофона",
"cameraErrorPresent": "Грешка при достъп до камерата.",
"cameraUnsupportedResolutionError": "Камерата ви не поддържа тази резолюция",
"cameraUnknownError": "Невъзможен достъп до камерата по неясна причина.",
"cameraPermissionDeniedError": "",
"cameraNotFoundError": "Указаната камера не е намерена.",
"cameraConstraintFailedError": "Камерата ви не задоволява зададените условия.",
"micUnknownError": "Не възможен достъп до микрофона по неясна причина.",
"micPermissionDeniedError": "",
"micNotFoundError": "Микрофонът не задоволява зададените условия.",
"micConstraintFailedError": "Микрофонът не задоволява зададените условия."
},
"email": {
"sharedKey": [
"Тази конференция е защитена с парола. Моля използвайте следния код за да се присъедините:",
"Стаята е защитена с парола. Моля използвайте следния пин при влизане:",
"",
"",
"__sharedKey__",
@@ -213,6 +288,7 @@
"connection": {
"ERROR": "Грешка",
"CONNECTING": "Свързване",
"RECONNECTING": "Появи се проблем с мрежата. Връзваме се наново...",
"CONNFAIL": "Връзката е неуспешна",
"AUTHENTICATING": "Идентификация",
"AUTHFAIL": "Неуспешна идентификация",
@@ -220,5 +296,25 @@
"DISCONNECTED": "Изключен",
"DISCONNECTING": "Прекъсване на връзката",
"ATTACHED": "Прикрепен"
},
"recording": {
"pending": "Записът изчаква участник.",
"on": "Запис",
"off": "Записът спрян",
"failedToStart": "Неуспешен опит за записване",
"buttonTooltip": "Пускане / спиране на запис",
"error": "Грешка при опит за запис. Моля опитайте отново.",
"unavailable": "Записите са временно невъзможни. Моля опитайте по-късно."
},
"liveStreaming": {
"pending": "Започва пряко предаване...",
"on": "Пряко предаване",
"off": "Край на прякото предаване",
"unavailable": "Услугата за пряко предаване е временно недостъпна. Опитайте по-късно.",
"failedToStart": "Неуспешен опит за пряко предаване",
"buttonTooltip": "Начало / край на пряко предаване",
"streamIdRequired": "Моля попълнете името на потока, за да можем да започнем прякото предаване.",
"error": "Неуспешно пряко предаване. Опитайте пак.",
"busy": "Всички записвачки са временно заети. Опитайте отново по-късно."
}
}

View File

@@ -8,12 +8,37 @@
"participant": "Teilnehmer",
"me": "ich",
"speaker": "Sprecher",
"defaultNickname": "Bsp.: __name__",
"defaultPreziLink": "Bsp.: __url__",
"raisedHand": "Möchte sprechen",
"defaultNickname": "Bsp: Heidi Blau",
"defaultLink": "Bsp.: __url__",
"calling": "Rufe __name__ an...",
"userMedia": {
"react-nativeGrantPermissions": "Bitte Berechtigungen zur Verwendung der Kamera und des Mikrofons durch anwählen von <b><i>Erlauben</i></b>",
"chromeGrantPermissions": "Bitte Berechtigungen zur Verwendung der Kamera und des Mikrofons durch anwählen von <b><i>Erlauben</i></b>",
"androidGrantPermissions": "Bitte Berechtigungen zur Verwendung der Kamera und des Mikrofons durch anwählen von <b><i>Erlauben</i></b>",
"firefoxGrantPermissions": "Bitte Berechtigungen zur Verwendung der Kamera und des Mikrofons durch anwählen von <b><i>Ausgewähltes Gerät freigeben</i></b>",
"operaGrantPermissions": "Bitte Berechtigungen zur Verwendung der Kamera und des Mikrofons durch anwählen von <b><i>Erlauben</i></b>",
"iexplorerGrantPermissions": "Bitte Berechtigung zur Verwendung der Kamera und des Mikrofons durch anwählen von <b><i>OK</i></b> erteilen",
"safariGrantPermissions": "Bitte Berechtigung zur Verwendung der Kamera und des Mikrofons durch anwählen von <b><i>OK</i></b> erteilen",
"nwjsGrantPermissions": "Bitte Berechtigungen zur Verwendung der Kamera und des Mikrofons erteilen"
},
"keyboardShortcuts": {
"keyboardShortcuts": "Tastaturkürzel:",
"raiseHand": "Heben Sie Ihre Hand.",
"pushToTalk": "Drücken um zu sprechen.",
"toggleScreensharing": "Zwischen Kamera und Bildschirmfreigabe wechseln.",
"toggleFilmstrip": "Videovorschau anzeigen oder verstecken.",
"toggleShortcuts": "Hilfe-Menu anzeigen oder verdecken.",
"focusLocal": "Lokales Video fokussieren.",
"focusRemote": "Andere Videos fokussieren.",
"toggleChat": "Chat öffnen oder schliessen.",
"mute": "Stummschaltung aktivieren oder deaktivieren.",
"videoMute": "Eigenes Video starten oder stoppen."
},
"welcomepage": {
"go": "Los",
"roomname": "Raumnamen eingeben",
"disable": "Diese Seite beim nächsten Betreten nicht mehr anzeigen",
"disable": "Diesen Hinweis nicht mehr anzeigen",
"feature1": {
"title": "Einfach zu benutzen",
"content": "Kein Download nötig. __app__ läuft direkt im Browser. Einfach die Konferenzadresse teilen und los geht's."
@@ -24,7 +49,7 @@
},
"feature3": {
"title": "Open Source",
"content": "__app__ steht unter der Apache Lizenz. Es steht ihnen frei __app__ gemäss dieser Lizenz herunterzuladen, zu verändern oder zu verbreiten."
"content": "__app__ steht unter der Apache Lizenz. Es steht ihnen frei __app__ gemäß dieser Lizenz herunterzuladen, zu verändern oder zu verbreiten."
},
"feature4": {
"title": "Unbegrenzte Anzahl Benutzer",
@@ -40,7 +65,7 @@
},
"feature7": {
"title": "Freigegebene Notizen",
"content": "__app__ verwendent Etherpad, ein Editor zur kollaborativen Bearbeitung von Texten."
"content": "__app__ verwendet Etherpad, ein Editor zur kollaborativen Bearbeitung von Texten."
},
"feature8": {
"title": "Benutzungsstatistiken",
@@ -51,12 +76,11 @@
"mute": "Stummschaltung aktivieren / deaktivieren",
"videomute": "Kamera starten / stoppen",
"authenticate": "Anmelden",
"record": "Aufnehmen",
"lock": "Raum schützen / Schutz aufheben",
"invite": "Andere einladen",
"chat": "Chat öffnen / schliessen",
"prezi": "Prezi freigeben",
"chat": "Chat öffnen / schließen",
"etherpad": "Geteiltes Dokument",
"sharedvideo": "Ein YouTube-Video teilen",
"sharescreen": "Bildschirm freigeben",
"fullscreen": "Vollbildmodus aktivieren / deaktivieren",
"sip": "SIP Nummer anrufen",
@@ -64,12 +88,17 @@
"hangup": "Auflegen",
"login": "Anmelden",
"logout": "Abmelden",
"dialpad": "Tastenblock anzeigen"
"dialpad": "Tastenblock anzeigen",
"sharedVideoMutedPopup": "Das geteilte Video wurde stumm geschaltet damit mit <br/>den anderen Teilnehmern gesprochen werden kann.",
"micMutedPopup": "Ihr Mikrofon wurde stumm geschaltet damit das<br/>geteilte Video genossen werden kann.",
"unableToUnmutePopup": "Die Stummschaltung kann nicht aufgehoben werden während das geteilte Video abgespielt wird.",
"cameraDisabled": "Keine Kamera verfügbar",
"micDisabled": "Kein Mikrofon verfügbar"
},
"bottomtoolbar": {
"chat": "Chat öffnen / schliessen",
"filmstrip": "Videovorschauen anzeigen / verstecken",
"contactlist": "Kontaktliste öffnen / schliessen"
"chat": "Chat öffnen / schließen",
"filmstrip": "Videovorschau anzeigen / verstecken",
"contactlist": "Kontaktliste öffnen / schließen"
},
"chat": {
"nickname": {
@@ -83,16 +112,24 @@
"update": "Aktualisieren",
"name": "Name",
"startAudioMuted": "Stumm beitreten",
"startVideoMuted": "Ohne Video beitreten"
"startVideoMuted": "Ohne Video beitreten",
"selectCamera": "Kamera auswählen",
"selectMic": "Mikrofon auswählen",
"selectAudioOutput": "Audio-Ausgabe auswählen",
"followMe": "Follow-me aktivieren",
"noDevice": "Kein",
"noPermission": "Keine Berechtigung um das Gerät zu verwenden",
"avatarUrl": "Avatar URL"
},
"videothumbnail": {
"editnickname": "Klicken um den Anzeigenamen zu bearbeiten",
"editnickname": "Klicken, um den Anzeigenamen zu bearbeiten",
"moderator": "Besitzer dieser Konferenz",
"videomute": "Teilnehmer hat die Kamera pausiert.",
"mute": "Teilnehmer ist stumm geschaltet",
"kick": "Hinauswerfen",
"muted": "Stummgeschaltet",
"domute": "Stummschalten"
"domute": "Stummschalten",
"flip": "Spiegeln"
},
"connectionindicator": {
"bitrate": "Bitrate:",
@@ -124,7 +161,8 @@
"grantedTo": "Moderatorenrechte an __to__ vergeben.",
"grantedToUnknown": "Moderatorenrechte an $t(somebody) vergeben.",
"muted": "Der Konferenz wurde stumm beigetreten.",
"mutedTitle": "Stummschaltung aktiv."
"mutedTitle": "Stummschaltung aktiv!",
"raisedHand": "Möchte sprechen."
},
"dialog": {
"kickMessage": "Oh! Sie wurden aus der Konferenz ausgeschlossen.",
@@ -137,8 +175,10 @@
"error": "Fehler",
"detectext": "Fehler bei der Erkennung der Bildschirmfreigabeerweiterung.",
"failtoinstall": "Die Bildschirmfreigabeerweiterung konnte nicht installiert werden.",
"failedpermissions": "Die Zugriffsberechtigungen auf das Mikrofon und/oder die Kamera konnte nicht eingeholt werden.",
"failedpermissions": "Die Zugriffsberechtigungen auf das Mikrofon und/oder die Kamera konnten nicht eingeholt werden.",
"bridgeUnavailable": "Die Jitsi Videobridge ist momentan nicht erreichbar. Bitte versuchen Sie es später noch einmal.",
"jicofoUnavailable": "Jicofo ist momentan nicht erreichbar. Bitte versuchen Sie es später noch einmal.",
"maxUsersLimitReached": "Die maximale Teilnehmerzahl dieser Konferenz ist erreicht. Die Konferenz ist voll. Bitte versuchen Sie es später noch einmal.",
"lockTitle": "Sperren fehlgeschlagen",
"lockMessage": "Die Konferenz konnte nicht gesperrt werden.",
"warning": "Warnung",
@@ -152,34 +192,35 @@
"defaultError": "Es ist ein Fehler aufgetreten",
"passwordRequired": "Passwort erforderlich",
"Ok": "OK",
"removePreziTitle": "Prezi entfernen",
"removePreziMsg": "Sind Sie sich sicher dass sie Prezi entfernen möchten?",
"sharePreziTitle": "Ein Prezi teilen",
"sharePreziMsg": "Ein anderer Teilnehmer teilt bereits ein Prezi. Diese Konferenz kann nur eine Prezi auf einmal anzeigen.",
"Remove": "Entfernen",
"shareVideoTitle": "Video teilen",
"shareVideoLinkError": "Bitte einen gültigen YouTube-Link angeben.",
"removeSharedVideoTitle": "Freigegebenes Video entfernen",
"removeSharedVideoMsg": "Sind Sie sicher dass Sie das geteilte Video entfernen möchten?",
"alreadySharedVideoMsg": "Ein anderer Teilnehmer teilt bereits ein Video. Diese Konferenz ermöglicht nur ein freigegebenes Video auf einmal.",
"WaitingForHost": "Warten auf den Organisator...",
"WaitForHostMsg": "Die Konferenz <b>__room__</b> hat noch nicht begonnen. Wenn Sie der Organisator sind, melden Sie sich bitte an. Anderenfalls warten Sie bitte bis der Organisator beigetreten ist.",
"WaitForHostMsg": "Die Konferenz <b>__room__</b> hat noch nicht begonnen. Wenn Sie der Organisator sind, melden Sie sich bitte an. Anderenfalls warten Sie bitte, bis der Organisator beigetreten ist.",
"IamHost": "Ich bin der Organisator",
"Cancel": "Abbrechen",
"retry": "Wiederholen",
"logoutTitle": "Abmelden",
"logoutQuestion": "Sind Sie sicher dass Sie sich abmelden und die Konferenz verlassen möchten?",
"logoutQuestion": "Sind Sie sicher, dass Sie sich abmelden und die Konferenz verlassen möchten?",
"sessTerminated": "Sitzung beendet",
"hungUp": "Anruf beendet",
"joinAgain": "Erneut beitreten",
"Share": "Teilen",
"preziLinkError": "Bitte einen gültigen Prezi-Link angeben.",
"Save": "Speichern",
"recording": "Aufnahme",
"recordingToken": "Aufnahme-Token eingeben",
"Dial": "Wählen",
"sipMsg": "Geben Sie eine SIP Nummer ein",
"passwordCheck": "Sind Sie sicher dass Sie das Passwort entfernen möchten?",
"passwordMsg": "Passwort setzen um den Raum zu schützen",
"passwordCheck": "Sind Sie sicher, dass Sie das Passwort entfernen möchten?",
"passwordMsg": "Passwort setzen, um den Raum zu schützen",
"Invite": "Einladen",
"shareLink": "Teilen Sie diesen Link mit jedem den Sie einladen möchten",
"settings1": "Konferenz einrichten",
"settings2": "Teilnehmer treten stummgeschaltet bei",
"settings3": "Nickname erforderlich<br/><br/>Setzen Sie ein Passwort um den Raum zu schützen:",
"settings3": "Nickname erforderlich<br/><br/>Setzen Sie ein Passwort, um den Raum zu schützen:",
"yourPassword": "Ihr Passwort",
"Back": "Zurück",
"serviceUnavailable": "Dienst nicht verfügbar",
@@ -191,16 +232,38 @@
"userPassword": "Benutzerpasswort",
"token": "Token",
"tokenAuthFailed": "Anmeldung am XMPP-Server fehlgeschlagen: ungültiges Token",
"displayNameRequired": "Geben Sie Ihren Anzeigenamen ein:",
"displayNameRequired": "Geben Sie Ihren Anzeigenamen ein",
"extensionRequired": "Erweiterung erforderlich:",
"firefoxExtensionPrompt": "Um die Bildschirmfreigabe nutzen zu können, muss eine Firefox-Erweiterung installiert werden. Bitte versuchen Sie es erneut nachdem die <a href='__url__'>Erweiterung installiert</a> wurde.",
"feedbackQuestion": "Wie war der Anruf?",
"thankYou": "Danke für die Verwendung von __appName__!",
"sorryFeedback": "Tut uns leid. Möchten Sie uns mehr mitteilen?"
"sorryFeedback": "Tut uns leid. Möchten Sie uns mehr mitteilen?",
"liveStreaming": "Live-Streaming",
"streamKey": "Streamname/-schlüssel",
"startLiveStreaming": "Live-Streaming starten",
"stopStreamingWarning": "Sind Sie sicher dass Sie das Live-Streaming stoppen möchten?",
"stopRecordingWarning": "Sind Sie sicher dass Sie die Aufnahme stoppen möchten?",
"stopLiveStreaming": "Live-Streaming stoppen",
"stopRecording": "Aufnahme stoppen",
"doNotShowWarningAgain": "Diesen Hinweis nicht mehr anzeigen",
"permissionDenied": "Zugriff verweigert",
"screenSharingPermissionDeniedError": "Sie haben die Berechtigung für die Bildschirmfreigabe nicht erteilt.",
"micErrorPresent": "Fehler beim Verbinden zum Mikrofon.",
"cameraErrorPresent": "Fehler beim Verbinden zur Kamera.",
"cameraUnsupportedResolutionError": "Die Kamera unterstützt die erforderliche Auflösung nicht.",
"cameraUnknownError": "Die Kamera kann aus einem unbekannten Grund nicht verwendet werden.",
"cameraPermissionDeniedError": "Die Berechtigung zur Verwendung der Kamera wurde nicht erteilt. Sie können trotzdem an der Konferenz teilnehmen, aber die anderen Teilnehmer können Sie nicht sehen. Verwenden Sie die Kamera-Schaltfläche in der Adressleiste um die Berechtigungen zu erteilen.",
"cameraNotFoundError": "Die Berechtigung zur Verwendung der Kamera wurde nicht erteilt. Sie können trotzdem an der Konferenz teilnehmen, aber die anderen Teilnehmer können Sie nicht sehen. Verwenden Sie die Kamera-Schaltfläche in der Adressleiste um die Berechtigungen zu erteilen.",
"cameraConstraintFailedError": "Ihre Kamera erfüllt die notwendigen Anforderungen nicht.",
"micUnknownError": "Das Mikrofon kann aus einem unbekannten Grund nicht verwendet werden.",
"micPermissionDeniedError": "Die Berechtigung zur Verwendung des Mikrofons wurde nicht erteilt. Sie können trotzdem an der Konferenz teilnehmen, aber die anderen Teilnehmer können Sie nicht hören. Verwenden Sie die Kamera-Schaltfläche in der Adressleiste um die Berechtigungen zu erteilen.",
"micNotFoundError": "Das angeforderte Mikrofon konnte nicht gefunden werden.",
"micConstraintFailedError": "Ihr Mikrofon erfüllt die notwendigen Anforderungen nicht."
},
"\u0005dialog": {},
"email": {
"sharedKey": [
"Diese Konferenz ist Passwortgeschützt. Bitte verwenden Sie diese PIN zum Beitreten:",
"Diese Konferenz ist passwortgeschützt. Bitte verwenden Sie diese PIN zum Beitreten:",
"",
"",
"__sharedKey__",
@@ -215,7 +278,7 @@
"Ich möchte dich zu einer eben erstellten __appName__-Konferenz einladen.",
"",
"",
"Bitte klicke auf den folgenden Link um der Konferenz ebenfalls beizutreten:",
"Bitte klicke auf den folgenden Link, um der Konferenz ebenfalls beizutreten:",
"",
"",
"__roomUrl__",
@@ -242,8 +305,23 @@
"ATTACHED": "Angehängt"
},
"recording": {
"toaster": "Wird aufgezeichnet",
"pending": "Die Aufzeichnung wird gestartet sobald ein weiterer Teilnehmer beitritt",
"on": "Aufzeichnung wurde gestartet"
"pending": "Die Aufnahme wartet auf den Beitritt eines Teilnehmers...",
"on": "Aufnahme",
"off": "Aufnahme gestoppt",
"failedToStart": "Die Aufnahme konnte nicht gestartet werden",
"buttonTooltip": "Aufnahme starten / stoppen",
"error": "Die Aufzeichnung ist fehlgeschlagen. Bitte versuchen Sie es erneut.",
"unavailable": "Der Aufnahmedienst steht momentan nicht zur Verfügung. Bitte versuchen Sie es später noch einmal."
},
"liveStreaming": {
"pending": "Live-Stream wird gestartet...",
"on": "Live-Streaming",
"off": "Live-Streaming gestoppt",
"unavailable": "Der Live-Streaming Dienst ist momentan nicht verfügbar. Bitte versuchen Sie es später noch einmal.",
"failedToStart": "Live-Streaming konnte nicht gestartet werden",
"buttonTooltip": "Live-Stream starten / stoppen",
"streamIdRequired": "Bitte Stream-ID eingeben um das Live-Streaming zu starten.",
"error": "Das Live-Streaming ist fehlgeschlagen. Bitte versuchen Sie es erneut.",
"busy": "All Aufnahmegeräte sind momentan ausgelastet. Bitte versuchen Sie es später noch einmal."
}
}

323
lang/main-es.json Normal file
View File

@@ -0,0 +1,323 @@
{
"contactlist": "LISTA DE CONTACTOS",
"connectionsettings": "Ajustes de la conexión",
"poweredby": "impulsado por",
"downloadlogs": "Descargar logs",
"feedback": "Danos tu opinión",
"roomUrlDefaultMsg": "Tu conferencia está siendo creada...",
"participant": "Participante",
"me": "yo",
"speaker": "Orador",
"raisedHand": "",
"defaultNickname": "ej. Juana Rosas",
"defaultLink": "ej. __url__",
"calling": "Llamando __nombre__ ...",
"userMedia": {
"react-nativeGrantPermissions": "",
"chromeGrantPermissions": "",
"androidGrantPermissions": "",
"firefoxGrantPermissions": "",
"operaGrantPermissions": "",
"iexplorerGrantPermissions": "",
"safariGrantPermissions": "",
"nwjsGrantPermissions": ""
},
"keyboardShortcuts": {
"keyboardShortcuts": "Atajos de teclado:",
"raiseHand": "Levantar la mano.",
"pushToTalk": "Presione para hablar.",
"toggleScreensharing": "Cambiar entre cámara y compartir pantalla.",
"toggleFilmstrip": "Mostrar u ocultar película.",
"toggleShortcuts": "Muestra u oculta este menú de ayuda.",
"focusLocal": "Enfocar el video local.",
"focusRemote": "Enfocarse en uno de los videos remotos.",
"toggleChat": "Abrir o cerrar panel de charlas.",
"mute": "Activar o desactivar micrófono.",
"videoMute": "Detener o iniciar el video local."
},
"welcomepage": {
"go": "IR",
"roomname": "Introduzca un nombre de sala:",
"disable": "No mostrar esta página otra vez",
"feature1": {
"title": "Sencillo de usar",
"content": "No se requiere descargar nada. __app__ funciona directamente con tu navegador. Solo comparte el URL de tu conferencia con otros para comenzar."
},
"feature2": {
"title": "Bajo Ancho de Banda",
"content": "Las Videoconferencias con múltiples participantes funcionan con tan solo 128 Kbps. Conferencias para compartir pantalla y audio son posibles con mucho menos."
},
"feature3": {
"title": "Código abierto",
"content": "__app__ está licenciado bajo la licencia Apache. Eres libre de descargar, usar, modificar, y compartirlo conforme a esta licencia libre."
},
"feature4": {
"title": "Usuarios ilimitados",
"content": "No hay restricciones artificiales en el número de usuarios o participantes de la conferencia. La capacidad del servidor y ancho de banda son los únicos factores limitantes."
},
"feature5": {
"title": "Compartir pantalla",
"content": "Es fácil compartir su pantalla con otros. __app__ es ideal para presentaciones en línea, conferencias y sesiones de soporte técnico."
},
"feature6": {
"title": "Salas seguras",
"content": "¿Necesita un poco de privacidad? Las salas de conferencias __app__ se pueden asegurar con una contraseña con el fin de excluir a los invitados no deseados y evitar interrupciones."
},
"feature7": {
"title": "Notas compartidas",
"content": "__app__ incluye Etherpad, un editor de texto colaborativo, en tiempo real, que es genial para minutas de reuniones, redactar artículos, y más."
},
"feature8": {
"title": "Estadísticas de uso",
"content": "Aprenda de sus usuarios a través de una fácil integración con Piwik, Google Analytics, y otros sistemas de seguimiento y análisis de uso."
}
},
"toolbar": {
"mute": "Activar / Desactivar Silencio",
"videomute": "Iniciar / detener cámara",
"authenticate": "Autenticar",
"lock": "Bloquear / desbloquear sala",
"invite": "Invitar a otros",
"chat": "Abrir / cerrar chat",
"etherpad": "Compartir documento",
"sharedvideo": "Compartir un vídeo de YouTube",
"sharescreen": "Compartir pantalla",
"fullscreen": "Entrar / Salir de Pantalla completa",
"sip": "Llamar a un número SIP",
"Settings": "Ajustes",
"hangup": "Colgar",
"login": "Inicio de sesión",
"logout": "Cerrar sesión",
"dialpad": "Mostrar teclado de llamada",
"sharedVideoMutedPopup": "Su vídeo compartido ha sido silenciado<br/>para que pueda hablar con otros participantes.",
"micMutedPopup": "Su micrófono ha sido silenciado para que<br/>pueda disfrutar completamente de compartir su vídeo.",
"unableToUnmutePopup": "No puede silenciar su micrófono mientras el vídeo compartido está activo.",
"cameraDisabled": "Cámara no disponible",
"micDisabled": "Micrófono no disponible"
},
"bottomtoolbar": {
"chat": "Abrir / cerrar chat",
"filmstrip": "Mostrar / ocultar film",
"contactlist": "Abrir / cerrar lista de contactos"
},
"chat": {
"nickname": {
"title": "Indique un nombre en la caja inferior",
"popover": "Seleccione un nombre"
},
"messagebox": "Introduzca texto..."
},
"settings": {
"title": "CONFIGURAR",
"update": "Actualizar",
"name": "Nombre",
"startAudioMuted": "Iniciar sin audio",
"startVideoMuted": "Iniciar sin vídeo",
"selectCamera": "Seleccionar cámara",
"selectMic": "Seleccionar micrófono",
"selectAudioOutput": "Selecciona salida de audio",
"followMe": "Habilitar sígueme",
"noDevice": "Ninguno",
"noPermission": "Permiso para usar el dispositivo no permitido",
"avatarUrl": "URL del Avatar"
},
"videothumbnail": {
"editnickname": "Click para editar tu <br/>nombre",
"moderator": "El propietario de<br/>esta conferencia",
"videomute": "Participante ha<br/>detenido la cámara.",
"mute": "Participante está silenciado",
"kick": "Expulsar",
"muted": "Silenciado",
"domute": "Silenciar",
"flip": "Voltear"
},
"connectionindicator": {
"bitrate": "Tasa de bits:",
"packetloss": "Pérdida de paquetes:",
"resolution": "Resolución:",
"less": "Mostrar menos",
"more": "Ver más",
"address": "Dirección:",
"remoteport": "Puerto remoto:",
"remoteport_plural": "Puertos remotos:",
"localport": "Puerto local:",
"localport_plural": "Puertos locales:",
"localaddress": "Dirección local:",
"localaddress_plural": "Direcciones locales:",
"remoteaddress": "Dirección remota:",
"remoteaddress_plural": "Direcciones remotas:",
"transport": "Transporte:",
"bandwidth": "Ancho de banda estimado:",
"na": "Volver aquí para ver información de la conexión, una vez que se inicia la conferencia"
},
"notify": {
"disconnected": "desconectado",
"moderator": "¡Otorgados derechos de moderador! ",
"connected": "conectado",
"somebody": "Alguien",
"me": "Yo",
"focus": "Foco de conferencia",
"focusFail": "__component__ no disponible - reintentar en __ms__ seg",
"grantedTo": "¡Derechos de moderador otorgados a __to__!",
"grantedToUnknown": "¡Derechos de moderador otorgados a $t(somebody)!",
"muted": "Has iniciado la conversación silenciado.",
"mutedTitle": "¡Estás silenciado!",
"raisedHand": ""
},
"dialog": {
"kickMessage": "¡Auch! ¡Haz sido expulsado de la reunión!",
"popupError": "Su navegador está bloqueando las ventanas emergentes de este sitio. Por favor, activa las ventanas emergentes en la configuración de seguridad del navegador y vuelva a intentarlo.",
"passwordError": "Esta conversación está protegida con una contraseña. Sólo el propietario de la conferencia puede establecer una contraseña.",
"passwordError2": "Esta conversación no está protegida con una contraseña. Sólo el propietario de la conferencia puede establecer una contraseña.",
"connectError": "¡Uups! Algo salió mal y no pudimos conectarnos a la conferencia.",
"connectErrorWithMsg": "¡Uups! Algo salió mal y no pudimos conectarnos a la conferencia: __msg__",
"connecting": "Conectando",
"error": "Error",
"detectext": "Error al tratar de detectar la extensión de compartir escritorio.",
"failtoinstall": "Fallo al instalar la extensión de compartir escritorio",
"failedpermissions": "Fallo al obtener permisos para utilizar el micrófono y/o cámara de tu equipo.",
"bridgeUnavailable": "Videobridge Jitsi no está actualmente disponible. ¡Por favor inténtelo más tarde!",
"jicofoUnavailable": "Jicofo no está disponible actualmente. ¡Por favor inténtelo más tarde!",
"maxUsersLimitReached": "El número máximo de participantes en la conferencia ha sido alcanzado. La conferencia está llena. ¡Por favor intente nuevamente más tarde!",
"lockTitle": "El número máximo de participantes en la conferencia ha sido alcanzado. La conferencia está llena. ¡Por favor intente nuevamente más tarde!",
"lockMessage": "No se pudo bloquear la conferencia.",
"warning": "Advertencia",
"passwordNotSupported": "No se soportan contraseñas para la sala. ",
"sorry": "¡Perdón!",
"internalError": "Error interno de la aplicación [setRemoteDescription]",
"unableToSwitch": "No se puede activar transmisión de video",
"SLDFailure": "¡Ups! Algo salió mal y no se logró silenciar! (Falla de SLD)",
"SRDFailure": "¡Ups! ¡Algo salió mal y no se logró detener el video! (Falla SRD)",
"oops": "¡Ups!",
"defaultError": "Hubo algún tipo de error",
"passwordRequired": "Se necesita contraseña",
"Ok": "Aceptar",
"Remove": "Eliminar",
"shareVideoTitle": "Compartir un vídeo",
"shareVideoLinkError": "Por favor introduzca un enlace correcto de Youtube.",
"removeSharedVideoTitle": "Eliminar video compartido",
"removeSharedVideoMsg": "¿Estas seguro que deseas eliminar tu vídeo compartido?",
"alreadySharedVideoMsg": "Otro participante esta ahora mismo compartiendo el vídeo. Esta conferencia permite sólo compartir un único vídeo a la vez.",
"WaitingForHost": "Esperando al anfitrión...",
"WaitForHostMsg": "La conferencia <b>__room__ </b> aún no inicia. Si usted es el anfitrión, por favor autentíquese. De lo contrario, por favor espere a que el anfitrión llegue.",
"IamHost": "Yo soy el anfitrión",
"Cancel": "Cancelar",
"retry": "Reintentar",
"logoutTitle": "Cerrar sesión",
"logoutQuestion": "¿Está seguro que quiere salir y detener la conferencia?",
"sessTerminated": "Sesión finalizada",
"hungUp": "Colgaste",
"joinAgain": "Unirse de nuevo",
"Share": "Compartir",
"Save": "Guardar",
"recording": "Grabando",
"recordingToken": "Introduzca el token de grabación",
"Dial": "Marcar",
"sipMsg": "Introduzca número SIP",
"passwordCheck": "¿Realmente quieres eliminar tu contraseña?",
"passwordMsg": "Indica una contraseña para bloquear tu sala",
"Invite": "Invitar",
"shareLink": "Comparte este enlace con las personas que deseas invitar",
"settings1": "Configure su conferencia",
"settings2": "Los participantes se unieron silenciados",
"settings3": "Solicita nombres <br/> <br/>Establecer una contraseña para bloquear la sala:",
"yourPassword": "tu contraseña",
"Back": "Atrás",
"serviceUnavailable": "Servicio no disponible",
"gracefulShutdown": "Nuestro servicio está detenido por mantenimiento. Por favor, inténtelo de nuevo más tarde.",
"Yes": "Sí",
"reservationError": "Error de sistema de reservación",
"reservationErrorMsg": "Código de error: __code__, message: __msg__",
"password": "contraseña",
"userPassword": "contraseña de usuario",
"token": "token",
"tokenAuthFailed": "Error al autenticar con el servidor XMPP: token inválido",
"displayNameRequired": "Por favor escriba su nombre",
"extensionRequired": "Extensión requerida",
"firefoxExtensionPrompt": "Es necesario instalar una extensión para Firefox con el fin de utilizar la pantalla compartida. Por favor, inténtelo de nuevo después de que lo obtenga de aquí <a href='__url__'> </a>!",
"feedbackQuestion": "¿Como fue su llamada?",
"thankYou": "Gracias por usar __appName__!",
"sorryFeedback": " Sentimos escuchar eso. ¿Quieres decirnos algo más?",
"liveStreaming": "Emisión en Directo",
"streamKey": "Nombre/clave de emisión",
"startLiveStreaming": "Comenzar streaming en tiempo real",
"stopStreamingWarning": "¿Estas seguro que quieres parar la retransmisión en directo?",
"stopRecordingWarning": "¿Estás seguro que quieres parar la grabación?",
"stopLiveStreaming": "Parar retransmisión en directo",
"stopRecording": "Parar grabación",
"doNotShowWarningAgain": "No volver a mostrar esta advertencia",
"permissionDenied": "Permiso Denegado",
"screenSharingPermissionDeniedError": "No ha otorgado permiso para compartir su pantalla.",
"micErrorPresent": "Hubo un error conectando su micrófono.",
"cameraErrorPresent": "Hubo un error conectando su cámara.",
"cameraUnsupportedResolutionError": "Su cámara no soporta la resolución de video.",
"cameraUnknownError": "No se puede usar su cámara por motivos desconocidos.",
"cameraPermissionDeniedError": "",
"cameraNotFoundError": "No se encontró la cámara.",
"cameraConstraintFailedError": "Su cámara no cumple los requerimientos.",
"micUnknownError": "No se puede usar su micrófono por motivos desconocidos.",
"micPermissionDeniedError": "",
"micNotFoundError": "No se encontró el micrófono.",
"micConstraintFailedError": "Su micrófono no cumple los requerimientos."
},
"email": {
"sharedKey": [
"Esta conferencia está protegida con contraseña. Utiliza el siguiente pin cuando te unas: ",
"",
"",
"__sharedKey__",
"",
""
],
"subject": "Invitación a a __appName__ (__conferenceName__)",
"body": [
"Ey allí, quiero invitarte a una a conferencia __appName__ que acabo de crear.",
"",
"",
"Por favor pica en la liga siguiente para unirte a la conferencia.",
"",
"",
"__roomUrl__",
"",
"",
"__sharedKeyText__",
"Nota que __appName__ es soportada solo por __supportedBrowsers__, por lo que debes usar uno de esos navegadores.",
"",
"",
"Talk to you in a sec!"
],
"and": "y"
},
"connection": {
"ERROR": "Error",
"CONNECTING": "Conectando",
"RECONNECTING": "Ocurrió un problema en la red. Reconectando ...",
"CONNFAIL": "Conexión fallida",
"AUTHENTICATING": "Autenticando",
"AUTHFAIL": "Falló la autenticación",
"CONNECTED": "Conectado",
"DISCONNECTED": "Desconectado",
"DISCONNECTING": "Desconectando",
"ATTACHED": "Adjunto"
},
"recording": {
"pending": "La grabación esta esperando la entrada de un participante...",
"on": "Grabando",
"off": "Grabación parada",
"failedToStart": "No se pudo iniciar la grabación",
"buttonTooltip": "Iniciar / parar grabación",
"error": "Falla de grabación. Vuelva a intentarlo.",
"unavailable": "El servicio de grabación no está disponible. Inténtelo más tarde."
},
"liveStreaming": {
"pending": "Iniciando Emisión en Directo",
"on": "Emisión en Directo",
"off": "Emisión en Directo Detenida",
"unavailable": "El servicio de emisión en directo no está disponible actualmente. Por favor inténtelo de nuevo más tarde.",
"failedToStart": "La emisión en Directo falló al iniciar",
"buttonTooltip": "Iniciar / parar emisión en directo",
"streamIdRequired": "Por favor introduzca el id de emisión para poder lanzar la emisión en directo",
"error": "Falló el video en vivo. Por favor, vuelva a intentarlo.",
"busy": "Todos los grabadores están ocupados. Por favor intente más tarde."
}
}

View File

@@ -1,41 +1,67 @@
{
"contactlist": "Liste de contacts",
"connectionsettings": "Paramètres de connexion",
"poweredby": "propulsé par",
"poweredby": "Produit par",
"downloadlogs": "Téléchargement des logs",
"feedback": "Donnez-nous votre avis",
"roomUrlDefaultMsg": "Votre conférence est en cours de création...",
"participant": "Participant",
"me": "moi",
"speaker": "Haut-parleur",
"defaultNickname": "ex: __name__",
"defaultPreziLink": "e.g. __url__",
"raisedHand": "Aimerais prendre la parole",
"defaultNickname": "ex. Jean Dupont",
"defaultLink": "ex. __url__",
"calling": "Appel __nom__ ...",
"userMedia": {
"react-nativeGrantPermissions": "Merci d'autoriser le partage de votre camera et microphone en appuyant sur le bouton <b><i>Autoriser</i></b>",
"chromeGrantPermissions": "Merci d'autoriser le partage de votre camera et microphone en appuyant sur le bouton <b><i>Autoriser</i></b>",
"androidGrantPermissions": "Merci d'autoriser le partage de votre camera et microphone en appuyant sur le bouton <b><i>Autoriser</i></b>",
"firefoxGrantPermissions": "Merci d'accorder l'autorisation d'utiliser votre caméra et un microphone en appuyant sur le bouton<b> <i> Partager le périphérique sélectionné </ i> </ b> ",
"operaGrantPermissions": "Merci d'autoriser le partage de votre camera et microphone en appuyant sur le bouton <b><i>Autoriser</i></b>",
"iexplorerGrantPermissions": "Merci d'autoriser l'utilisation de votre caméra et du microphone en appuyant sur <b><i>OK</i></b>",
"safariGrantPermissions": "Merci d'autoriser l'utilisation de votre caméra et du microphone en appuyant sur <b><i>OK</i></b>",
"nwjsGrantPermissions": "Merci d'autoriser le partage de votre camera et microphone"
},
"keyboardShortcuts": {
"keyboardShortcuts": "Raccourcis clavier :",
"raiseHand": "Demander la parole.",
"pushToTalk": "Appuyer pour parler.",
"toggleScreensharing": "Basculer entre la caméra et le partage d'écran.",
"toggleFilmstrip": "Afficher ou masquer les vidéos miniatures.",
"toggleShortcuts": "Afficher ou masquer ce menu d'aide.",
"focusLocal": "Focus sur la vidéo locale.",
"focusRemote": "Focus sur l'une des vidéos distantes.",
"toggleChat": "Ouvrir ou fermer le panneau de conversation.",
"mute": "Activer ou désactiver le microphone.",
"videoMute": "Arrêter ou démarrer la vidéo locale."
},
"welcomepage": {
"go": "Créer",
"roomname": "Saisissez un nom de salle",
"disable": "Ne pas afficher cette page lors de ma prochaine visite",
"disable": "Ne plus afficher cette page",
"feature1": {
"title": "Simple à utiliser",
"content": "Aucun téléchargement requis. __app__ s'utilise directement depuis votre navigateur. Partager simplement l'URL de votre conférence avec les autres pour commencer."
},
"feature2": {
"title": "Faible bande passante",
"title": "Bande passante faible",
"content": "Les vidéo conférences à plusieurs participants nécessitent moins de 128 kbps. Le partage d'écran et les conférences avec seulement de l'audio sont possibles avec beaucoup moins de débit."
},
"feature3": {
"title": "Open source",
"content": "__app__ est sous licence MIT. Vous êtes libre de le télécharger, l'utiliser, le modifier et le partager sous cette licence."
"content": "__app__ est sous licence Apache. Vous êtes libre de télécharger, d'utiliser, de modifier et de partager __app__ selon cette licence libre."
},
"feature4": {
"title": "Nombre d'utilisateurs illimité",
"content": "Il n'y a pas de restrictions artificielles concernant le nombre d'utilisateurs ou de participants à une conférence. La puissance du serveur et la bande passante sont les seuls facteurs limitants."
},
"feature5": {
"title": "Partage d'écan",
"title": "Partage d'écran",
"content": "C'est facile de partager votre écran avec d'autres personnes. __app__ est idéal pour les présentations en ligne, les cours, et les sessions de support technique."
},
"feature6": {
"title": "Salles sécurisées",
"content": "Besoin de confidentialité? Les salles de conférence __app__ peuvent être sécurisées par un mot de passe pour exclure des invités non désirées, et prévenir des interruptions. "
"content": "Besoin de confidentialité ? Les salles de conférence __app__ peuvent être sécurisées par un mot de passe pour exclure les invités non désirées, et prévenir des interruptions."
},
"feature7": {
"title": "Notes partagées",
@@ -43,26 +69,31 @@
},
"feature8": {
"title": "Statistiques d'utilisation",
"content": "Connaissez mieux vos utilisateurs avec une intégration facile de Piwik, Google Analytics et d'autres systèmes de statistiques et supervision d'utilisation."
"content": "Apprenez plus au sujet de vos utilisateurs avec une intégration facile de Piwik, Google Analytics et d'autres systèmes de statistiques et supervision d'utilisation."
}
},
"toolbar": {
"mute": "Muet / Actif",
"videomute": "Démarrer / Arrêter la caméra",
"authenticate": "",
"record": "Enregistrer",
"authenticate": "Authentifiez-vous",
"lock": "Verrouiller / déverrouiller la salle",
"invite": "Inviter des participants",
"chat": "",
"prezi": "Partager une présentation Prezi",
"etherpad": "Partager un document",
"chat": "Ouvrir / fermer le chat",
"etherpad": "Document partagé",
"sharedvideo": "Partager une vidéo Youtube",
"sharescreen": "Partager mon écran",
"fullscreen": "Activer / Désactiver le plein écran",
"sip": "Appeler un numéro SIP",
"Settings": "Paramètres",
"hangup": "Raccrocher",
"login": "Connexion",
"logout": ""
"logout": "Déconnexion",
"dialpad": "Afficher le clavier de numérotation",
"sharedVideoMutedPopup": "Votre vidéo a été mise en muet<br/>pour que vous puissiez parler aux autres participants.",
"micMutedPopup": "Votre microphone a été désactivé afin que vous<br/>puissiez profiter pleinement de votre vidéo partagée.",
"unableToUnmutePopup": "Vous ne pouvez pas réactiver votre microphone pendant que la vidéo partagée est activée.",
"cameraDisabled": "La camera n'est pas disponible",
"micDisabled": "Le microphone n'est pas disponible"
},
"bottomtoolbar": {
"chat": "Ouvrir / fermer le chat",
@@ -79,7 +110,16 @@
"settings": {
"title": "PARAMÈTRES",
"update": "Mise à jour",
"name": "Nom"
"name": "Nom",
"startAudioMuted": "Démarrer sans son",
"startVideoMuted": "Démarrer sans vidéo",
"selectCamera": "Sélectionnez une caméra",
"selectMic": "Sélectionnez un microphone",
"selectAudioOutput": "Sélectionner la sortie audio",
"followMe": "Activer \"me suivre\"",
"noDevice": "Aucun",
"noPermission": "L'autorisation d'utiliser l'appareil n'a pas été accordé",
"avatarUrl": "URL de l'avatar"
},
"videothumbnail": {
"editnickname": "Cliquez pour modifier<br/>votre nom",
@@ -87,94 +127,101 @@
"videomute": "Un participant a<br/>arrêté sa caméra.",
"mute": "Un participant a coupé son micro",
"kick": "Exclure",
"muted": "Coupé",
"domute": "Couper le son"
"muted": "Muet",
"domute": "Couper le son",
"flip": "Retourner"
},
"connectionindicator": {
"bitrate": "Débit",
"packetloss": "Perte de paquets:",
"resolution": "Résolution:",
"bitrate": "Débit :",
"packetloss": "Perte de paquets :",
"resolution": "Résolution :",
"less": "Cacher le détail",
"more": "Montrer le détail",
"address": "Adresse:",
"remoteport": "Port distant:",
"remoteport_plural": "Ports distants:",
"localport": "Port local:",
"localport_plural": "Ports locaux:",
"localaddress": "Adresse locale:",
"localaddress_plural": "Adresses locales:",
"remoteaddress": "Adresse distante:",
"remoteaddress_plural": "Adresses distantes:",
"transport": "Transport:",
"bandwidth": "Bande passante estimée:",
"address": "Adresse :",
"remoteport": "Port distant :",
"remoteport_plural": "Ports distants :",
"localport": "Port local :",
"localport_plural": "Ports locaux :",
"localaddress": "Adresse locale :",
"localaddress_plural": "Adresses locales :",
"remoteaddress": "Adresse distante :",
"remoteaddress_plural": "Adresses distantes :",
"transport": "Transport :",
"bandwidth": "Bande passante estimée :",
"na": "Revenez ici pour afficher les informations de connexion une fois la conférence démarrée"
},
"notify": {
"disconnected": "Déconnecté",
"moderator": "Droits modérateur accordés!",
"connected": "Connecté",
"disconnected": "déconnecté",
"moderator": "Droits modérateur accordés !",
"connected": "connecté",
"somebody": "Quelqu'un",
"me": "Moi",
"focus": "",
"focus": "Focus de conférence",
"focusFail": "__component__ n'est pas disponible - réessayez dans __ms__ sec",
"grantedTo": "Droits modérateur accordés à __to__!",
"grantedToUnknown": "Droits modérateur accordés à $t(somebody)!"
"grantedTo": "Droits modérateur accordés à __to__ !",
"grantedToUnknown": "Droits modérateur accordés à $t(somebody) !",
"muted": "Vous avez commencé la conversation en muet.",
"mutedTitle": "Vous êtes en muet !",
"raisedHand": "Aimerais prendre la parole."
},
"dialog": {
"kickMessage": "Oups! Vous avez été renvoyé de la réunion!",
"popupError": "Votre navigateur bloque les popups pour ce site. Activez les popups pour ce site dans vos paramètres de sécurité et réessayez.",
"passwordError": "Cette conversation est protégée par un mot de passe. Seul le propriétaire de cette conférence peut paramétrer un mot de passe.",
"passwordError2": "Cette conversation n'est pas protégée par un mot de passe. Seul le propriétaire de cette conférence peut paramétrer un mot de passe.",
"joinError": "Oups! La conférence ne peut être rejointe. Il y a peut-être un souci avec les paramètres de sécurité. Contactez l'administrateur.",
"kickMessage": "Oups! Vous avez été renvoyé de la réunion !",
"popupError": "Votre navigateur bloque les fenêtres popup de ce site. Merci d'activer les popups dans les paramètres de sécurité de votre navigateur et d'essayer à nouveau.",
"passwordError": "Cette conversation est actuellement protégée par un mot de passe. Seul le propriétaire de la conférence peut définir un mot de passe.",
"passwordError2": "Cette conversation n'est actuellement pas protégé par un mot de passe. Seul le propriétaire de la conférence peut définir un mot de passe.",
"connectError": "Oups! Un problème est survenu et la connexion à la conférence est impossible.",
"connecting": "",
"error": "",
"connectErrorWithMsg": "Oups! Un problème est survenu et la connexion à la conférence est impossible: __msg__",
"connecting": "Connexion en cours",
"error": "Erreur",
"detectext": "Une erreur est survenue pendant la détection de l'extension de partage d'écran.",
"failtoinstall": "Échec de l'installation de l'extension de partage d'écran",
"failedpermissions": "Échec d'obtention des permissions pour utiliser le micro et/ou la caméra local(e)",
"bridgeUnavailable": "Le pont de visioconférence Jitsi est indisponible pour le moment. Réessayez plus tard!",
"failedpermissions": "Échec d'obtention des permissions pour utiliser le micro et/ou la caméra.",
"bridgeUnavailable": "Le pont de visioconférence Jitsi est indisponible pour le moment. Réessayez plus tard !",
"jicofoUnavailable": "Le pont de visioconférence Jitsi est indisponible pour le moment. Réessayez plus tard !",
"maxUsersLimitReached": "La limite pour le nombre maximum de participants à la conférence a été atteinte. La conférence est pleine. Veuillez réessayer plus tard !",
"lockTitle": "Échec du verrouillage",
"lockMessage": "Impossible de verrouiller la conférence.",
"warning": "Avertissement",
"passwordNotSupported": "Les mots de passe de conférence ne sont pas supportés.",
"sorry": "Désolé",
"internalError": "Une erreur interne de l'application est survenue [setRemoteDescription]",
"unableToSwitch": "Impossible de passer le flux vidéo.",
"unableToSwitch": "Impossible de changer le flux vidéo.",
"SLDFailure": "Oups! Un problème est survenu et le micro n'a pas été coupé! (Échec SLD)",
"SRDFailure": "Oups! Un problème est survenu et la caméra n'a pas été coupée! (Échec SRD)",
"oops": "Oups!",
"oops": "Oups !",
"defaultError": "Une erreur est survenue",
"passwordRequired": "Mot de passe requis",
"Ok": "Ok",
"removePreziTitle": "Supprimer la présentation Prezi",
"removePreziMsg": "Voulez-vous vraiment supprimer votre présentation Prezi?",
"sharePreziTitle": "Partager une présentation Prezi",
"sharePreziMsg": "Un autre participant partage déjà une présentation Prezi. Cette conférence autorise une seule présentation Prezi à la fois.",
"Remove": "Supprimer",
"Stop": "Arrêter",
"AuthMsg": "L'authentification est requise pour créer la conférence:<br/><b>__room__ </b></br> Vous pouvez vous authentifier pour créer la conférence ou attendre que quelqu'un le fasse pour vous.",
"Authenticate": "Authentifiez-vous",
"shareVideoTitle": "Partager une vidéo",
"shareVideoLinkError": "Fournissez s'il vous plaît un lien Youtube fonctionnel.",
"removeSharedVideoTitle": "Supprimer la vidéo partagée",
"removeSharedVideoMsg": "Voulez-vous vraiment supprimer votre vidéo partagée ?",
"alreadySharedVideoMsg": "Un autre participant partage déjà une vidéo. Cette conférence ne permet qu'une seule vidéo partagée à la fois.",
"WaitingForHost": "En attente de l'hôte ...",
"WaitForHostMsg": "La conférence <b>__room__</b> n'a pas encore commencé. Si vous êtes l'hôte, merci de vous authentifier. Sinon, merci d'attendre que l'hôte arrive.",
"IamHost": "Je suis lhôte",
"Cancel": "Annuler",
"retry": "Réessayer",
"logoutTitle": "Déconnexion",
"logoutQuestion": "Voulez-vous vraiment vous déconnecter et arrêter la conférence?",
"logoutQuestion": "Voulez-vous vraiment vous déconnecter et arrêter la conférence ?",
"sessTerminated": "Session terminée",
"hungUp": "Vous avez raccroché et quitté la conférence",
"hungUp": "Vous avez raccroché",
"joinAgain": "Rejoignez à nouveau la conférence",
"Share": "Partager",
"preziLinkError": "Fournissez s'il vous plaît un lien prezi fonctionnel.",
"Save": "Sauvegarder",
"recording": "Enregistrement",
"recordingToken": "Saisissez un jeton d'enregistrement",
"Dial": "Composer",
"sipMsg": "Saisissez un numéro SIP",
"passwordCheck": "Voulez-vous vraiment supprimer votre mot de passe?",
"passwordCheck": "Voulez-vous vraiment supprimer votre mot de passe ?",
"passwordMsg": "Saisissez un mot de passe pour verrouiller la conférence",
"Invite": "Inviter",
"shareLink": "Partagez ce lien avec toutes les personnes que vous voulez inviter",
"settings1": "Configurez votre conférence",
"settings2": "Les participants rejoignent la conférence en étant muets.",
"settings3": "Pseudonymes requis<br/><br/>Saisissez un mot de passe pour verrouiller la conférence:",
"yourPassword": "Votre mot de passe",
"settings2": "Les participants rejoignent la conférence en étant muets",
"settings3": "Pseudonymes requis<br/><br/>Saisissez un mot de passe pour verrouiller la conférence :",
"yourPassword": "votre mot de passe",
"Back": "Retour",
"serviceUnavailable": "Service indisponible",
"gracefulShutdown": "Le service est actuellement en maintenance. Réessayez plus tard.",
@@ -183,14 +230,42 @@
"reservationErrorMsg": "Code d'erreur: __code__, message: __msg__",
"password": "mot de passe",
"userPassword": "mot de passe utilisateur",
"token": "jeton"
"token": "jeton",
"tokenAuthFailed": "Échec de l'authentification avec le serveur XMPP : jeton non valide",
"displayNameRequired": "Veuillez saisir votre nom",
"extensionRequired": "Extension requise :",
"firefoxExtensionPrompt": "Vous devez installer une extension Firefox pour utiliser le partage d'écran. Merci d'essayer de nouveau après l'installation <a href='__url__'>depuis ce lien</a> !",
"feedbackQuestion": "Comment était votre conférence ?",
"thankYou": "Merci d'avoir utilisé __appName__ !",
"sorryFeedback": "Nous sommes désolés d'apprendre cela. Voulez-vous nous en dire plus ?",
"liveStreaming": "Direct",
"streamKey": "Stream name/key",
"startLiveStreaming": "Commencer le direct",
"stopStreamingWarning": "Désirez-vous vraiment arrêter le direct?",
"stopRecordingWarning": "Désirez-vous vraiment arrêter l'enregistrement?",
"stopLiveStreaming": "Arrêter le direct",
"stopRecording": "Arrêter l'enregistrement",
"doNotShowWarningAgain": "Ne plus afficher cet avertissement",
"permissionDenied": "Permission refusée",
"screenSharingPermissionDeniedError": "Vous n'avez pas autorisé le partage de votre écran.",
"micErrorPresent": "Une erreur est survenue lors de la connexion à votre microphone.",
"cameraErrorPresent": "Votre caméra ne satisfait pas certaines des contraintes nécessaires.",
"cameraUnsupportedResolutionError": "Votre appareil ne prend pas en charge la résolution vidéo requise.",
"cameraUnknownError": "Vous ne pouvez pas utiliser la caméra pour une raison inconnue.",
"cameraPermissionDeniedError": "Vous n'avez pas autorisé l'utilisation de votre caméra. Vous pouvez toujours participer à la conférence, mais les autres ne vont pas vous voir. Utilisez le bouton de la caméra dans la barre d'adresse pour résoudre ce problème.",
"cameraNotFoundError": "La caméra demandée n'a pas été trouvée.",
"cameraConstraintFailedError": "Votre caméra ne satisfait pas certaines des contraintes nécessaires.",
"micUnknownError": "Vous ne pouvez pas utiliser le microphone pour une raison inconnue.",
"micPermissionDeniedError": "Vous n'avez pas autorisé l'utilisation de votre microphone. Vous pouvez toujours participer à la conférence, mais les autres ne vont pas vous entendre. Utilisez le bouton du microphone dans la barre d'adresse pour résoudre ce problème.",
"micNotFoundError": "Le microphone demandé n'a pas été trouvé.",
"micConstraintFailedError": "Votre microphone ne satisfait pas certaines des contraintes nécessaires."
},
"email": {
"sharedKey": [
"Cette conférence est protégée par un mot de passe. Utilisez le code suivant pour la rejoindre:",
"Cette conférence est protégée par un mot de passe. Merci utiliser la code suivant lors de la connexion :",
"",
"",
"__sharedKey__",
"__sharedKey __",
"",
""
],
@@ -206,22 +281,43 @@
"",
"",
"__sharedKeyText__",
" Notez que __appName__ est actuellement seulement supporté par __supportedBrowsers__, vous devez donc utiliser un de ces navigateurs.",
" Notez que __appName__ est actuellement seulement supporté par __supportedBrowsers__, vous devez donc utiliser un de ces navigateurs.",
"",
"",
"À tout de suite dans la conférence!"
"À tout de suite dans la conférence !"
],
"and": "et"
},
"connection": {
"ERROR": "Erreur",
"CONNECTING": "Connexion en cours...",
"CONNFAIL": "Échec de la Connexion",
"AUTHENTICATING": "Authentification en cours...",
"CONNECTING": "Connexion en cours",
"RECONNECTING": "Un problème réseau est survenue. Reconnexion en cours...",
"CONNFAIL": "Échec de la connexion",
"AUTHENTICATING": "Authentification en cours",
"AUTHFAIL": "Échec de l'authentification",
"CONNECTED": "Connecté",
"DISCONNECTED": "Déconnecté",
"DISCONNECTING": "Déconnexion en cours...",
"DISCONNECTING": "Déconnexion en cours",
"ATTACHED": "Attachée"
},
"recording": {
"pending": "Enregistrement en attente de participant...",
"on": "Enregistrement",
"off": "Enregistrement arrêter",
"failedToStart": "L'enregistrement n'as pas réussi à démarrer",
"buttonTooltip": "Démarrer / arrêter l'enregistrement",
"error": "Échec de l'enregistrement. Veuillez réessayer.",
"unavailable": "Le service d'enregistrement est actuellement indisponible. Veuillez réessayer plus tard."
},
"liveStreaming": {
"pending": "Commencer le direct...",
"on": "Direct",
"off": "Le direct a été arrêter",
"unavailable": "Le direct est temporairement indisponible. Veuillez réessayer plus tard.",
"failedToStart": "Le direct n'as pas réussi à démarrer",
"buttonTooltip": "Démarrer / arrêter le direct",
"streamIdRequired": "Merci de renseigner le stream id pour lancer le direct.",
"error": "La retransmission en direct a échoué. Veuillez réessayer.",
"busy": "Tous les enregistreurs sont actuellement occupés. Veuillez réessayer plus tard."
}
}

315
lang/main-hy.json Normal file
View File

@@ -0,0 +1,315 @@
{
"contactlist": "ԿՈՆՏԱԿՏՆԵՐ",
"connectionsettings": "Միացման կարգավորումներ",
"poweredby": "Հիմնված է",
"downloadlogs": "Բեռնել log-էրը",
"feedback": "Հայտնեք ձեր կարծիքը",
"roomUrlDefaultMsg": "Ձեր կոնֆերանսը այժմ ստեղծվում է...",
"participant": "Մասնակից",
"me": "ես",
"speaker": "Հռետոր",
"raisedHand": "",
"defaultNickname": "օրինակ՝ Պողոս Պողոսյան",
"defaultLink": "օրինակ՝ __url__",
"calling": "",
"userMedia": {
"react-nativeGrantPermissions": "",
"chromeGrantPermissions": "",
"androidGrantPermissions": "",
"firefoxGrantPermissions": "",
"operaGrantPermissions": "",
"iexplorerGrantPermissions": "",
"safariGrantPermissions": "",
"nwjsGrantPermissions": ""
},
"keyboardShortcuts": {
"keyboardShortcuts": "",
"raiseHand": "",
"pushToTalk": "",
"toggleScreensharing": "",
"toggleFilmstrip": "",
"toggleShortcuts": "",
"focusLocal": "",
"focusRemote": "",
"toggleChat": "",
"mute": "",
"videoMute": ""
},
"welcomepage": {
"go": "ՄՈՒՏՔ",
"roomname": "Մուտքագրեք սենյակի անունը",
"disable": "Այլևս ցույց չտալ այս էջը",
"feature1": {
"title": "Հեշտ է օգտվել",
"content": "Ոչ մի լրացուցիչ ներբեռնումներ: __apple__ աշխատում է անմիջապես Ձեր բրաուզերում: Պարզապես հայտնեք ձեր կոնֆերանսի URL հասցեն ուրիշներին և դուք կապի մեջ էք:"
},
"feature2": {
"title": "Պետք չէ արագ կապ",
"content": "Բազմամասնակից վիդեո կոնֆերանսները աշխատում են ընդամենը 128 Կբ/վ արագությամբ: Իսկ միայն էկրանի ցուցադրման կամ միայն ձայնի դեպքում՝ ավելի քիչ:"
},
"feature3": {
"title": "Բաց կոդ",
"content": "_app_ լիցենզավորված է Apache լիցենզիայով: Կարող էք ազատորեն ներբեռնել, օգտագործել, ձևափոխել և կիսվել դրանով այդ լիցենզիայի համապատասխան:"
},
"feature4": {
"title": "Օգտվողների թիվը սահմանափակ չէ",
"content": "Չկան արհեստական սահմանափակումներ օգտագործողների կամ կոնֆերանսի մասնակիցների թվի համար: Սահմանափակող գործոնները՝ միայն սերվերի հզորությունն ու թողունակությունն են:"
},
"feature5": {
"title": "Էկրանի ցուցադրում",
"content": "Շատ հեշտ է ցուցադրել Ձեր էկրանը ուրիշներին: __app__ իդեալական է օնլայն ներկայացումների, դասախոսությունների և տեխնիկական սպասարկման համար:"
},
"feature6": {
"title": "Փակ սենյակներ",
"content": "Պե՞տք է առանձնանալ: __app__ կոնֆերանսում կարող էք փակվել սենյակը գաղտնաբառով, որպեսզի անսպասելի հյուրեր կամ ընդհատումներ չունենաք:"
},
"feature7": {
"title": "Համատեղ նշումներ",
"content": "Շնորհիվ __app__ -ում ընդգրկված Etherpad տեքստային խմբագրի, իրական ժամանակում կարող էք համատեղ նշումներ կատարել, ինչը շատ հարմար է հանդիպումն արձանագրելու, հոդվածներ գրելու և այլ նպատակների համար:"
},
"feature8": {
"title": "Օգտագործման վիճակագրություն",
"content": "Օգտագործման վիճակագրություն կարելի է ստանալ հեշտ ինտեգրվող Piwik, Google Analytics կամ այլ մոնիտորինգի համակարգերի միջոցով:"
}
},
"toolbar": {
"mute": "Ձայնը Միացնել/Անջատել ",
"videomute": "Տեսախցիկը Միացնել/Անջատել ",
"authenticate": "Վավերացում",
"lock": "Փակել/բացել սենյակը",
"invite": "Հրավիրել ուրիշներին",
"chat": "Բացել/փակել չատը",
"etherpad": "Համատեղ փաստաթուղթ",
"sharedvideo": "Կիսվել YouTube-ի նյութով",
"sharescreen": "Ցուցադրել էկրանը",
"fullscreen": "Ամբողջ Էկրանի ռեժիմը միացնել/անջատել",
"sip": "Զանգել SIP համարով",
"Settings": "Կարգավորումներ",
"hangup": "Անջատել",
"login": "Մուտք",
"logout": "Ելք",
"dialpad": "Ցույց տալ թվաշարը",
"sharedVideoMutedPopup": "Ձեր ցուցադրված տեսանյութի ձայնը անջատված է, այնպես որ <br />, կարող եք խոսել մյուս մասնակիցների հետ:",
"micMutedPopup": "Ձեր խոսափողը անջատված է՝<br/> կարող եք լիովին վայելել ձեր ցուցադրված տեսանյութը:",
"unableToUnmutePopup": "Դուք չեք կարող միացնել ձայնը, քանի դեռ միանցված է ցուցադրվող տեսանյութը:",
"cameraDisabled": "",
"micDisabled": ""
},
"bottomtoolbar": {
"chat": "Բացել/փակել չատը",
"filmstrip": "Ցույղ տալ/թաքցնել ժապավենը",
"contactlist": "Բացել/փակել կոնտակտների ցուցակը"
},
"chat": {
"nickname": {
"title": "Գրեք մականուն ստորև գտնվող հատվածում",
"popover": "Ընտրեք մականուն"
},
"messagebox": "Գրեք տեքստ..."
},
"settings": {
"title": "ԿԱՐԳԱՎՈՐՈՒՄՆԵՐ",
"update": "Թարմացնել",
"name": "Անուն",
"startAudioMuted": "Սկսել առանց ձայնի",
"startVideoMuted": "Սկսել առանց վիդեոյի",
"selectCamera": "Ընտրեք տեսախցիկը",
"selectMic": "Ընտրեք խոսափողը",
"selectAudioOutput": "",
"followMe": "Թույլ տալ ինձ հետևելը",
"noDevice": "",
"noPermission": "",
"avatarUrl": ""
},
"videothumbnail": {
"editnickname": "Սեղմեք Ձեր անունը <br/>փոխելու համար",
"moderator": "Այս կոնֆերանսի տերը",
"videomute": "Մասնակիցը անջատեց<br/>իր տեսախցիկը",
"mute": "Մասնակիցը անջատեց ձայնը",
"kick": "Դուրս հանել",
"muted": "Ձայնը անջատված է",
"domute": "Անջատել ձայնը",
"flip": ""
},
"connectionindicator": {
"bitrate": "Բիթրեյթ",
"packetloss": "Փաթեթների կորուստ՝",
"resolution": "Որակ՝",
"less": "Ցույց տալ ավելի քիչ",
"more": "Ցույց տալ ավելի շատ",
"address": "Հասցե՝",
"remoteport": "Հեռակա պորտ՝Հեռակա պորտեր՝",
"localport": "Տեղային պորտ՝Տեղային պորտեր՝",
"localaddress": "Տեղային հասցե՝Տեղային հասցեներ՝",
"remoteaddress": "Հեռակա հասցե՝Հեռակա հասցեներ՝",
"transport": "Տրանսպորտ՝",
"bandwidth": "Մոտավոր թողունակություն՝",
"na": "Միացման տվյալները հասանելի կլինեն այստեղ կոնֆերանսի մեկնարկից հետո:"
},
"notify": {
"disconnected": "անջատված է",
"moderator": "Կարգավորիչ իրավունքները տրամադրված են:",
"connected": "միացված է",
"somebody": "Ոմն",
"me": "Ես",
"focus": "Կոնֆերանսի կենտրոնացումը",
"focusFail": "__component__ հասանելի չէ - փորձեք կրկին __ms__ վայրկյանից",
"grantedTo": "Կարգավորիչի իրավունքները տրամադրված է __to__-ին",
"grantedToUnknown": "Կարգավորիչի իրավունքները տրամադրված է $t(somebody)! -ին",
"muted": "Դուք խոսակցությունը սկսեցիք անջատած ձայնով:",
"mutedTitle": "Ձեր ձայնը անջատվա'ծ է",
"raisedHand": ""
},
"dialog": {
"kickMessage": "Վա՜յ: Ձեզ դուրս հանեցին հանդիպումից:",
"popupError": "Ձեր բրաուզերը արգելափակել է թռուցիկ(popup) պատուհանները այս կայքում: Խնդրում ենք միացրեք թռուցիկները Ձեր բրաուզերի անվտանգության կարգավորումներում և կրկին փորձեք:",
"passwordError": "Այս խոսակցությունը այս պահին պաշտպանված է գաղտնաբառով:Միայն կոնֆերանսի սեփականատերը կարող է սահմանել գաղտնաբառ:",
"passwordError2": "Այս խոսակցությունը այս պահին պաշտպանված չէ գաղտնաբառով:Միայն կոնֆերանսի սեփականատերը կարող է սահմանել գաղտնաբառ:",
"connectError": "Ու՜պս! Ինչոր բան այն չէ և մենք չկարողացանք միանալ կոնֆերանսին:",
"connectErrorWithMsg": "Ու՜պս! Ինչոր բան այն չէ և մենք չկարողացանք միանալ կոնֆերանսին: __msg__",
"connecting": "Միանում է...",
"error": "Սխալ",
"detectext": "Սխալ, երբ փորձում է հայտնաբերել էկրանի ցուցադրման ընդլայնումը:",
"failtoinstall": "Չհաջողվեց տեղադրել էկրանի ցուցադրման ընդլայնումը",
"failedpermissions": "Չհաջողվեց ստանալ թույլտվություն օգտագործելու տեղի խոսափողը և/ կամ տեսախցիկը:",
"bridgeUnavailable": "Jitsi Videobridge-ը ներկայումս անհասանելի է: Խնդրում ենք փորձեք մի փոքր ուշ!",
"jicofoUnavailable": "Jicofo ներկայումս անհասանելի է: Խնդրում ենք փորձեք ավելի ուշ:",
"maxUsersLimitReached": "Մասնակիցների առավելագույն թիվը արդեն լրացել է: Մասնակիցները արդեն հավաքվել են: Խնդրում ենք փորձեք ավելի ուշ:",
"lockTitle": "Փակումը ձախողվեց",
"lockMessage": "Ձախողվեց արգելափակել կոնֆերանսը:",
"warning": "Ուշադրությու՝ն",
"passwordNotSupported": "Սենյակների գաղտնաբառերը ներկայումս չեն ապահովվում:",
"sorry": "Ներողություն",
"internalError": "Ներքին ծրագրային սխալ [setRemoteDescription]",
"unableToSwitch": "Անհնար է անցնել վիդեո հոսքին:",
"SLDFailure": "Ու՜պս: Ինչ-որ բան գնաց սխալ, և մենք չկարողացանք անջատել ձայնը (SLD Failure)",
"SRDFailure": "Ու՜պս: Ինչ-որ բան գնաց սխալ, և մենք չկարողացանք անջատել տեսահոսքը (SRD Failure)",
"oops": "Ու՜պս:",
"defaultError": "Առկա էր որոշակի սխալ",
"passwordRequired": "Պահանջվում է գաղտնաբառ",
"Ok": "Ok",
"Remove": "Հեռացնել",
"shareVideoTitle": "Տարածել տեսանյութը",
"shareVideoLinkError": "Խնդրում ենք ներկայացնել ճիշտ Youtube հղում:",
"removeSharedVideoTitle": "Հեռացնել տարածված տեսանյութը",
"removeSharedVideoMsg": "Համոզված եք, որ ցանկանում եք հեռացնել ձեր կիսած տեսանյութը:",
"alreadySharedVideoMsg": "Մեկ այլ մասնակից արդեն կիսում է տեսանյութ: Այս կոնֆերանսը հնարավորություն է տալիս միայն մեկ հիմնական տեսանյութ միաժամանակ:",
"WaitingForHost": "Սպասում է հյուրընկալողի ...",
"WaitForHostMsg": "Կոնֆերանսը <b> __ root__ </ b> դեռ չի սկսվել. Եթե դուք են հյուրընկալող եք ապա խնդրում ենք հաստատել իսկությունը: Հակառակ դեպքում, խնդրում ենք սպասել հյուրընկալող կժամանի.",
"IamHost": "Ես եմ ընդունողը",
"Cancel": "Չեղարկել",
"retry": "Կրկին փորձել",
"logoutTitle": "Ելք",
"logoutQuestion": "Համոզված եք, որ ցանկանում եք դուրս գալ, եւ դադարեցնել կոնֆերանսը:",
"sessTerminated": "Նիստը ավարտված է",
"hungUp": "Դուք անջատեցիք",
"joinAgain": "Միանալ կրկին",
"Share": "Տարածել",
"Save": "Պահպանել",
"recording": "Գրանցում",
"recordingToken": "Մուտքագրեք ձայնագրման կոդանշանը",
"Dial": "Զանգ",
"sipMsg": "Նշեք SIP համարը",
"passwordCheck": "Դուք վստա՞հ էք որ ցանկանում էք ջնջել Ձեր գաղտնաբառը։",
"passwordMsg": "Սահմանել գաղտնաբառ ձեր սենյակը կողպելու համար",
"Invite": "Հրավիրել",
"shareLink": "Տարածել այս հղումը բոլոր նրանց ում կհրավիրեմ:",
"settings1": "Կարգավորել Ձեր կոնֆերանսը",
"settings2": "Մասնակիցները միացան անջատվախ ձայնով",
"settings3": "Պահանջվում է մականունը<br/><br/>Դրեք գաղտնաբառ Ձեր սենյակը արգելափակելու համար",
"yourPassword": "Ձեր գաղտնաբառը",
"Back": "Վերադառնալ",
"serviceUnavailable": "Ծառայությունը անհասանելի է",
"gracefulShutdown": "Մեր ծառայությունը ներկայումս չի գործում տեխնիկական սպասարկման համար: Խնդրում ենք փորձեք ավելի ուշ:",
"Yes": "Այո",
"reservationError": "Վերապահման համակարգի սխալ",
"reservationErrorMsg": "Սխալ. __code__, ծանուցում. __msg__",
"password": "Գաղտնաբառ",
"userPassword": "օգտագործողի գաղտնաբառը",
"token": "սիմվոլ",
"tokenAuthFailed": "Սխալ: XMPP սերվեր մուտք գործելուց. սխալ սիմվոլ",
"displayNameRequired": "Խնդրում ենք մուտքագրել Ձեր ցուցադրման անունը",
"extensionRequired": "Ընդլայնում է պահանջվում:",
"firefoxExtensionPrompt": "Դուք պետք է տեղադրեք Firefox ընդլայնում, որպեսզի օգտագործել էկրանի փոխանակման ռեժիմը: Խնդրում ենք փորձեք կրկին՝ այն <a href='__url__'> այստեղից ձեռք բերելուց հետո</a>:",
"feedbackQuestion": "Ինչպիսին էր ձեր զանգը:",
"thankYou": "Շնորհակալություն __appName__ -ից օգտվելու համար:",
"sorryFeedback": "Մենք շատ ցավում ենք լսել դա: Կուզե՞ք ինչոր բան ասել ավելին:",
"liveStreaming": "Ուղիղ Հեռարձակում",
"streamKey": "Հոսքի անուն/բանալի",
"startLiveStreaming": "Սկսել ուղիղ հեռարձակումը",
"stopStreamingWarning": "Վստա՞հ եք որ ցանկանում եք կանգնացնել ուղիղ հեռարձակումը:",
"stopRecordingWarning": "Վստա՞հ եք որ ցանկանում եք կանգնացնել ձայնագրումը",
"stopLiveStreaming": "Կանգնացնել ուղիղ հեռարձակումը:",
"stopRecording": "Կանգնացնել ձայնագրումը",
"doNotShowWarningAgain": "",
"permissionDenied": "",
"screenSharingPermissionDeniedError": "",
"micErrorPresent": "",
"cameraErrorPresent": "",
"cameraUnsupportedResolutionError": "",
"cameraUnknownError": "",
"cameraPermissionDeniedError": "",
"cameraNotFoundError": "",
"cameraConstraintFailedError": "",
"micUnknownError": "",
"micPermissionDeniedError": "",
"micNotFoundError": "",
"micConstraintFailedError": ""
},
"email": {
"sharedKey": [
"Այս կոնֆերանսը գաղտնաբառով փակ է: Խնդրում ենք օգտագործեք այս կոդը միանալիս:",
"",
"",
"__sharedKey__",
"",
""
],
"subject": "Հրավեր __appName__ (__conferenceName__)",
"body": [
"Ես ուզում եմ հրավիրել __appName__ կոնֆերանսին, ես հենց նոր ստեղծցի այն ",
"",
"",
"Խնդրում ենք սեղմեք հետևյալ հղմանը, որպեսզի միանալ կոնֆերանսին \\ n",
"",
"__roomUrl__",
"",
"",
"Նշենք նաեւ, որ __appName__ներկայումս միայն աջակցում է __supportedBrowsers__, այնպես որ դուք պետք է, օգտագործեք այս բրաուզերներից մեկը ",
"\\ n\\ nԽոսեք մի քանի վայրկյանից:"
],
"and": "և"
},
"connection": {
"ERROR": "Սխալ",
"CONNECTING": "Միանում է...",
"RECONNECTING": "Ցանցի խնդիր է տեղի ունեցել: Վերամիացում...",
"CONNFAIL": "Միացումը չստացվեց",
"AUTHENTICATING": "Վավերացում",
"AUTHFAIL": "Վավերացումը չի ստացվել",
"CONNECTED": "Միացված է",
"DISCONNECTED": "Անջատված է",
"DISCONNECTING": "Անջատում...",
"ATTACHED": "Կցված"
},
"recording": {
"pending": "Ձայնագրությունը սպասում է մասնակցի միանացմանը ...",
"on": "Գրանցում",
"off": "Ձայնագրությունը կանգնացված է",
"failedToStart": "Ձայնագրությունը ստացվեց սկսել",
"buttonTooltip": "Սկսել / կանգնացնել ձայնագրությունը",
"error": "",
"unavailable": ""
},
"liveStreaming": {
"pending": "Սկսում ենք Ուղիղ Հեռարձակումը",
"on": "Ուղիղ Հեռարձակում",
"off": "Ուղիղ Հեռարձակումը կանգնեցված է",
"unavailable": "Ուղիղ հեռարձակման ծառայությունը ներկայումս հասանելի չէ: Խնդրում եք փորձեք ավելի ուշ:",
"failedToStart": "Ուղիղ հեռարձակումը չստացվեց սկսել",
"buttonTooltip": "Սկսել / կանգնեցնել ուղիղ հեռարձակումը",
"streamIdRequired": "Խնդրում ենք լրացնել հոսքի ID-ն, որպեսզի կսկսի հեռարձակումը:",
"error": "",
"busy": ""
}
}

View File

@@ -3,16 +3,42 @@
"connectionsettings": "Impostazioni Connessione",
"poweredby": "powered by",
"downloadlogs": "Scarica logs",
"feedback": "",
"roomUrlDefaultMsg": "La tua conferenza sta per essere creata...",
"participant": "Partecipante",
"me": "io",
"speaker": "Relatore",
"defaultNickname": "es. __nome__",
"defaultPreziLink": "es. __url__",
"raisedHand": "",
"defaultNickname": "",
"defaultLink": "es. __url__",
"calling": "",
"userMedia": {
"react-nativeGrantPermissions": "",
"chromeGrantPermissions": "",
"androidGrantPermissions": "",
"firefoxGrantPermissions": "",
"operaGrantPermissions": "",
"iexplorerGrantPermissions": "",
"safariGrantPermissions": "",
"nwjsGrantPermissions": ""
},
"keyboardShortcuts": {
"keyboardShortcuts": "",
"raiseHand": "",
"pushToTalk": "",
"toggleScreensharing": "",
"toggleFilmstrip": "",
"toggleShortcuts": "",
"focusLocal": "",
"focusRemote": "",
"toggleChat": "",
"mute": "",
"videoMute": ""
},
"welcomepage": {
"go": "VAI",
"roomname": "Inserisci Nome Stanza",
"disable": "Non visualizzare questa pagina la prossima volta",
"disable": "",
"feature1": {
"title": "Semplice da usare",
"content": "Nessun download richiesto. __app__ funziona direttamente nel tuo browser. Condividi semplicemente l'URL della tua conferenza con altri per iniziare."
@@ -23,7 +49,7 @@
},
"feature3": {
"title": "Open source",
"content": "__app__ è sotto licenza MIT. Sei libero di scaricarla, usarla, modificarla e condividerla con la medesima licenza."
"content": ""
},
"feature4": {
"title": "Utenti illimitati",
@@ -31,7 +57,7 @@
},
"feature5": {
"title": "Condivisione Schermo",
"content": "é facile condividere il tuo schermo con altri. __app__ è l'ideale per presentazioni online, letture, e sessioni di supporto tecnico."
"content": "è facile condividere il tuo schermo con altri. __app__ è l'ideale per presentazioni online, letture, e sessioni di supporto tecnico."
},
"feature6": {
"title": "Stanze sicure",
@@ -49,20 +75,25 @@
"toolbar": {
"mute": "Microfono Attiva / Disattiva",
"videomute": "Abilita / Disabilita video",
"authenticate": "",
"record": "Registra",
"authenticate": "Autenticazione",
"lock": "Blocca / Sblocca Stanza",
"invite": "Invita altri",
"chat": "",
"prezi": "Condividi con Prezi",
"chat": "Apri / Chiudi chat",
"etherpad": "Documento condiviso",
"sharedvideo": "",
"sharescreen": "Condividi schermo",
"fullscreen": "Entra / Esci da schermo intero",
"sip": "Chiama numero SIP",
"Settings": "Impostazioni",
"hangup": "Termina",
"login": "Login",
"logout": ""
"logout": "Logout",
"dialpad": "Mostra il tastierino",
"sharedVideoMutedPopup": "",
"micMutedPopup": "",
"unableToUnmutePopup": "",
"cameraDisabled": "",
"micDisabled": ""
},
"bottomtoolbar": {
"chat": "Apri / Chiudi chat",
@@ -79,7 +110,16 @@
"settings": {
"title": "IMPOSTAZIONI",
"update": "Aggiorna",
"name": "Nome"
"name": "Nome",
"startAudioMuted": "",
"startVideoMuted": "",
"selectCamera": "",
"selectMic": "",
"selectAudioOutput": "",
"followMe": "",
"noDevice": "",
"noPermission": "",
"avatarUrl": ""
},
"videothumbnail": {
"editnickname": "Clicca per modificare il tuo<br/>nome visualizzato",
@@ -88,7 +128,8 @@
"mute": "Il partecipante è in muto",
"kick": "Espelli",
"muted": "Audio disattivato",
"domute": "Disattiva audio"
"domute": "Disattiva audio",
"flip": ""
},
"connectionindicator": {
"bitrate": "Bitrate:",
@@ -118,23 +159,28 @@
"focus": "Focus su conferenza",
"focusFail": "__component__ non disponibile - riprova in __ms__ sec",
"grantedTo": "Permessi di moderatore garantiti a __to__!",
"grantedToUnknown": "Permessi di moderatore garantiti a $t(somebody)!"
"grantedToUnknown": "Permessi di moderatore garantiti a $t(somebody)!",
"muted": "Hai iniziato la conversazione con l'audio disattivato.",
"mutedTitle": "Hai l'audio disattivato!",
"raisedHand": ""
},
"dialog": {
"kickMessage": "Accidenti! Sei stato espulso dalla conferenza !",
"popupError": "Il tuo browser sta bloccando le finestre popup da questo sito. Abilita i popup tra le impostazioni di sicurezza del tuo browser e riprova.",
"passwordError": "Questa conversazione è protetta da una password. Solo il proprietario della conferenza può impostare una password.",
"passwordError2": "Questa conversazione non è al momento protetta da una password. Solo il proprietario può impostare la password.",
"joinError": "Oops! Non puoi entrare nella conferenza. Ci deve essere qualche problema con la configurazione di sicurezza. Contattare l'amministratore di sistema.",
"popupError": "",
"passwordError": "",
"passwordError2": "",
"connectError": "Oops! Qualcosa è andato storto e non ti puoi collegare alla conferenza.",
"connecting": "",
"error": "",
"connectErrorWithMsg": "Oops! Qualcosa è andato storto e non ti puoi collegare alla conferenza: __msg__",
"connecting": "Connessione",
"error": "Errore",
"detectext": "Errore durante il rilevamento dell'estensione per il desktopsharing.",
"failtoinstall": "Impossibile installare l'estensione per il desktop sharing",
"failedpermissions": "Impossibile ottenere i permessi per usare il microfono e/o il video locale.",
"bridgeUnavailable": "Il Videobridge non è al momento disponibile. Si prega di riprovare più tardi!",
"jicofoUnavailable": "",
"maxUsersLimitReached": "",
"lockTitle": "Blocco fallito",
"lockMessage": "Impossibile bloccare la conferenza.",
"lockMessage": "",
"warning": "Attenzione",
"passwordNotSupported": "Le password sulla stanza non sono al momento supportate.",
"sorry": "Spiacente",
@@ -146,24 +192,25 @@
"defaultError": "C'è stato qualche tipo di errore",
"passwordRequired": "Richiesta password ",
"Ok": "Ok",
"removePreziTitle": "Rimuovi Prezi",
"removePreziMsg": "Sei sicuro di voler rimuovere il tuo Prezi?",
"sharePreziTitle": "Condividi un Prezi",
"sharePreziMsg": "Un altro partecipante sta già condividendo un Prezi. Questa conferenza permette un solo Prezi alla volta.",
"Remove": "Rimuovi",
"Stop": "Ferma",
"AuthMsg": "Autenticazione richiesta per creare la stanza:<br/><b>__room__ </b></br> Puoi autenticarti per creare la stanza o aspettare che qualcun altro lo faccia per te.",
"Authenticate": "Autenticazione",
"shareVideoTitle": "",
"shareVideoLinkError": "",
"removeSharedVideoTitle": "",
"removeSharedVideoMsg": "",
"alreadySharedVideoMsg": "",
"WaitingForHost": "In attesa dell'organizzatore ...",
"WaitForHostMsg": "La conferenza <b>__room__ </b> non è ancora iniziata. Se sei l'organizzatore sei pregato di autenticarti, altrimenti ti preghiamo di attendere l'arrivo dell'organizzatore.",
"IamHost": "Sono l'organizzatore",
"Cancel": "Annulla",
"retry": "Riprova",
"logoutTitle": "Logout",
"logoutQuestion": "Vuoi disconnetterti e interrompere la conferenza ?",
"sessTerminated": "Sessione Terminata",
"hungUp": "Hai terminato la conversazione",
"hungUp": "",
"joinAgain": "Entra ancora",
"Share": "Condividi",
"preziLinkError": "Fornire un link Prezi esatto.",
"Save": "Salva",
"recording": "",
"recordingToken": "Inserire token di registrazione",
"Dial": "Componi",
"sipMsg": "Inserire numero SIP",
@@ -183,17 +230,38 @@
"reservationErrorMsg": "Codice di errore: __code__, messaggio: __msg__",
"password": "password",
"userPassword": "password utente",
"token": "token"
"token": "token",
"tokenAuthFailed": "",
"displayNameRequired": "",
"extensionRequired": "",
"firefoxExtensionPrompt": "",
"feedbackQuestion": "",
"thankYou": "",
"sorryFeedback": "",
"liveStreaming": "",
"streamKey": "",
"startLiveStreaming": "",
"stopStreamingWarning": "",
"stopRecordingWarning": "",
"stopLiveStreaming": "",
"stopRecording": "",
"doNotShowWarningAgain": "",
"permissionDenied": "",
"screenSharingPermissionDeniedError": "",
"micErrorPresent": "",
"cameraErrorPresent": "",
"cameraUnsupportedResolutionError": "",
"cameraUnknownError": "",
"cameraPermissionDeniedError": "",
"cameraNotFoundError": "",
"cameraConstraintFailedError": "",
"micUnknownError": "",
"micPermissionDeniedError": "",
"micNotFoundError": "",
"micConstraintFailedError": ""
},
"email": {
"sharedKey": [
"Questa conferenza è protetta da password. Utilizzare il seguente PIN alla connessione:",
"",
"",
"__sharedKey__",
"",
""
],
"sharedKey": "",
"subject": "Invito su __appName__ (__conferenceName__)",
"body": [
"Ciao, Vorrei invitarti alla conferenza che ho appena creato su __appName__ .",
@@ -216,6 +284,7 @@
"connection": {
"ERROR": "Errore",
"CONNECTING": "Connessione",
"RECONNECTING": "Si è verificato un problema di rete. Riconnessione...",
"CONNFAIL": "Connessione non riuscita",
"AUTHENTICATING": "Autenticazione",
"AUTHFAIL": "Autenticazione fallita",
@@ -223,5 +292,25 @@
"DISCONNECTED": "Disconnesso",
"DISCONNECTING": "Disconnessione in corso",
"ATTACHED": "Collegato"
},
"recording": {
"pending": "",
"on": "",
"off": "",
"failedToStart": "",
"buttonTooltip": "",
"error": "",
"unavailable": ""
},
"liveStreaming": {
"pending": "",
"on": "",
"off": "",
"unavailable": "",
"failedToStart": "",
"buttonTooltip": "",
"streamIdRequired": "",
"error": "",
"busy": ""
}
}

323
lang/main-oc.json Normal file
View File

@@ -0,0 +1,323 @@
{
"contactlist": "Lista de contactes",
"connectionsettings": "Paramètres de connexion",
"poweredby": "Produit per",
"downloadlogs": "Telecargament dels logs",
"feedback": "Donatz-nos vòstre vejaire",
"roomUrlDefaultMsg": "Vòstra conferéncia es en cors de creacion...",
"participant": "Participant",
"me": "ieu",
"speaker": "Nautparlaire",
"raisedHand": "",
"defaultNickname": "ex. Joan Delpuèch",
"defaultLink": "ex. __url__",
"calling": "",
"userMedia": {
"react-nativeGrantPermissions": "",
"chromeGrantPermissions": "",
"androidGrantPermissions": "",
"firefoxGrantPermissions": "",
"operaGrantPermissions": "",
"iexplorerGrantPermissions": "",
"safariGrantPermissions": "",
"nwjsGrantPermissions": ""
},
"keyboardShortcuts": {
"keyboardShortcuts": "",
"raiseHand": "",
"pushToTalk": "",
"toggleScreensharing": "",
"toggleFilmstrip": "",
"toggleShortcuts": "",
"focusLocal": "",
"focusRemote": "",
"toggleChat": "",
"mute": "",
"videoMute": ""
},
"welcomepage": {
"go": "Crear",
"roomname": "Sasissètz un nom de sala",
"disable": "Afichar pas mai aquesta pagina",
"feature1": {
"title": "De bon utilizar",
"content": "Cap de telecargament pas requesit. __app__ s'utiliza dirèctament dempuèi vòstre navigador. Partejar simplament l'URL de vòstra conferéncia amb los autres per començar."
},
"feature2": {
"title": "Benda passanta febla",
"content": "Las videoconferéncias de mantun participant necessitan mens de 128 kbps. Lo partiment d'ecran e las conferéncias amb solament d'àudio son possiblas amb plan mens de debit."
},
"feature3": {
"title": "Open source",
"content": "__app__ es jos licéncia Apache. Sètz liure de telecargar, d'utilizar, de modificar e de partejar __app__ segon aquesta licéncia liura."
},
"feature4": {
"title": "Nombre d'utilizaires illimitat",
"content": "I a pas de restriccions artificialas a prepaus del nombre d'utilizaires o de participants a una conferéncia. La poténcia del servidor e la benda passanta son los sols factors limitants."
},
"feature5": {
"title": "Partiment d'ecran",
"content": "Es aisit de partejar vòstre ecran amb d'autras personas. __app__ es ideal per las presentacions en linha, los corses, e las sessions de supòrt tecnic."
},
"feature6": {
"title": "Salas securizadas",
"content": "Besonh de confidencialitat ? Las salas de conferéncia __app__ pòdon èsser securizadas per un senhal per exclure los convidats pas desirats, e prevenir de las interrupcions."
},
"feature7": {
"title": "Nòtas partejadas",
"content": "__app__ prepausa Etherpad, un editor de tèxte collaboratiu en temps real qu'es parfèit pels procèsses verbals, l'edicion d'articles e plan mai encara."
},
"feature8": {
"title": "Estatisticas d'utilizacion",
"content": "Aprenètz mai a prepaus de vòstres utilizaires amb una integracion aisida de Piwik, Google Analytics e d'autres sistèmas d'estatisticas e supervision d'utilizacion."
}
},
"toolbar": {
"mute": "Mut / Actiu",
"videomute": "Aviar / Arrestar la camèra",
"authenticate": "Autentificatz-vos",
"lock": "Verrolhar / desverrolhar la sala",
"invite": "Convidar de participants",
"chat": "Dobrir / tampar lo chat",
"etherpad": "Document partejat",
"sharedvideo": "Partejar una vidèo Youtube",
"sharescreen": "Partejar mon ecran",
"fullscreen": "Activar / Désactivar l'ecran complet",
"sip": "Sonar un numèro SIP",
"Settings": "Paramètres",
"hangup": "Tornar penjar",
"login": "Connexion",
"logout": "Desconnexion",
"dialpad": "Afichar lo clavièr de numerotacion",
"sharedVideoMutedPopup": "Vòstra vidèo es estada mesa en mut<br/>per que poscatz parlar als autres participants.",
"micMutedPopup": "Vòstre microfòn es estat desactivat per fin que <br/>poscatz profeitar plenament de vòstra vidèo partejada.",
"unableToUnmutePopup": "Podètz pas reactivar vòstre microfòn pendent que la vidèo partejada es activada.",
"cameraDisabled": "",
"micDisabled": ""
},
"bottomtoolbar": {
"chat": "Dobrir / tampar lo chat",
"filmstrip": "Mostrar / amagar ma vidèo miniatura",
"contactlist": "Dobrir / tampar ma lista de contactes"
},
"chat": {
"nickname": {
"title": "Sasissètz un escais dins lo camp çaijós",
"popover": "Causissètz un escais"
},
"messagebox": "Sasissètz vòstre tèxte..."
},
"settings": {
"title": "PARAMÈTRES",
"update": "Mesa a jorn",
"name": "Nom",
"startAudioMuted": "Aviar sens son",
"startVideoMuted": "Aviar sens vidèo",
"selectCamera": "Seleccionatz una camèra",
"selectMic": "Seleccionatz un microfòn",
"selectAudioOutput": "",
"followMe": "Activar \"me seguir\"",
"noDevice": "",
"noPermission": "",
"avatarUrl": ""
},
"videothumbnail": {
"editnickname": "Clicatz per modificar<br/>vòstre nom",
"moderator": "Lo proprietari de<br/>aquesta conferéncia",
"videomute": "Un participant a<br/>arrestat sa camèra.",
"mute": "Un participant a copat son micro",
"kick": "Exclure",
"muted": "Mut",
"domute": "Copar lo son",
"flip": ""
},
"connectionindicator": {
"bitrate": "Debit :",
"packetloss": "Pèrda de paquets :",
"resolution": "Resolucion :",
"less": "Amagar lo detalh",
"more": "Mostrar lo deta1h",
"address": "Adreça :",
"remoteport": "Pòrt distant :",
"remoteport_plural": "Pòrts distants :",
"localport": "Pòrt local :",
"localport_plural": "Pòrts locals :",
"localaddress": "Adreça locala :",
"localaddress_plural": "Adreças localas :",
"remoteaddress": "Adreça distanta :",
"remoteaddress_plural": "Adreças distantas :",
"transport": "Transpòrt :",
"bandwidth": "Benda passanta estimada :",
"na": "Tornatz aicí per afichar las informacions de connexion un còp la conferéncia aviada"
},
"notify": {
"disconnected": "desconnectat",
"moderator": "Dreits moderator acordats !",
"connected": "connectat",
"somebody": "Qualqu'un",
"me": "Ieu",
"focus": "Focus de conferéncia",
"focusFail": "__component__ es pas disponible - ensajatz tornamai dins __ms__ sec",
"grantedTo": "Dreits moderator acordats a __to__ !",
"grantedToUnknown": "Dreits moderator acordats a $t(somebody) !",
"muted": "Avètz començat la conversacion en mut.",
"mutedTitle": "Sètz en mut !",
"raisedHand": ""
},
"dialog": {
"kickMessage": "Ops! Sètz estat bandit de la reünion !",
"popupError": "Vòstre navigador blòca las fenèstras popup d'aqueste site. Mercé d'activar las popups dins los paramètres de seguretat de vòstre navigador e d'ensajar tornamai.",
"passwordError": "Aquesta conversacion es actualament protegida per un senhal. Sol lo proprietari de la conferéncia pòt definir un senhal.",
"passwordError2": "Actualament, aquesta conversacion es pas protegida per un senhal. Sol lo proprietari de la conferéncia pòt definir un senhal.",
"connectError": "Ops! Quicòm a trucat e la connexion a la conferéncia es impossibla.",
"connectErrorWithMsg": "Ops! Quicòm a trucat e la connexion a la conferéncia es impossibla: __msg__",
"connecting": "Connexion en cors",
"error": "Error",
"detectext": "Una error s'es produita pendent la deteccion de l'extension de partiment d'ecran.",
"failtoinstall": "Fracàs de l'installacion de l'extension de partiment d'ecran",
"failedpermissions": "Fracàs d'obtencion de las permissions per utilizar lo micro e/o la camèra.",
"bridgeUnavailable": "Lo pont de visioconferéncia Jitsi es indisponible pel moment. Ensajatz tornamai pus tard !",
"jicofoUnavailable": "Lo pont de visioconferéncia Jitsi es indisponible pel moment. Ensajatz tornamai pus tard !",
"maxUsersLimitReached": "Lo limit pel nombre maximum de participants a la conferéncia es estat atent. La conferéncia es plena. Ensajatz tornamai pus tard !",
"lockTitle": "Fracàs del verrolhatge",
"lockMessage": "Impossible de verrolhar la conferéncia.",
"warning": "Avertiment",
"passwordNotSupported": "Los senhals de conferéncia son pas suportats.",
"sorry": "O planhèm",
"internalError": "Una error intèrna de l'aplicacion s'es produita [setRemoteDescription]",
"unableToSwitch": "Impossible de cambiar lo flux vidèo.",
"SLDFailure": "Ops! Quicòm a trucat e lo micro es pas estat copat! (Fracàs SLD)",
"SRDFailure": "Ops! Quicòm a trucat e la camèra es pas estada copada! (Fracàs SRD)",
"oops": "Ops !",
"defaultError": "Una error s'es produita",
"passwordRequired": "Senhal requesit",
"Ok": "D'acòrdi",
"Remove": "Suprimir",
"shareVideoTitle": "Partejar una vidèo",
"shareVideoLinkError": "Se vos plai, provesissètz un ligam Youtube foncional.",
"removeSharedVideoTitle": "Suprimir la vidèo partejada",
"removeSharedVideoMsg": "Sètz segur que volètz suprimir vòstra vidèo partejada ?",
"alreadySharedVideoMsg": "Un autre participant parteja ja una vidèo. Aquesta conferéncia permet pas qu'una sola vidèo partejada a l'encòp.",
"WaitingForHost": "En espèra de l'òste ...",
"WaitForHostMsg": "La conferéncia <b> __ room__ </b> es pas encara començat. Se sètz l'òste, mercé de vos autentificar. Siquenon, mercé d'esperar que l'òste arribe.",
"IamHost": "Soi lòste",
"Cancel": "Anullar",
"retry": "Ensajar tornamai",
"logoutTitle": "Desconnexion",
"logoutQuestion": "Sètz segur que vos volètz desconnectar e arrestar la conferéncia ?",
"sessTerminated": "Session acabada",
"hungUp": "Avètz tornat penjar",
"joinAgain": "Rejonhètz tornamai la conferéncia",
"Share": "Partejar",
"Save": "Salvar",
"recording": "Enregistrament",
"recordingToken": "Sasissètz un geton d'enregistrament",
"Dial": "Compausar",
"sipMsg": "Sasissètz un numèro SIP",
"passwordCheck": "Sètz segur que volètz suprimir vòstre senhal ?",
"passwordMsg": "Sasissètz un senhal per verrolhar la conferéncia",
"Invite": "Convidar",
"shareLink": "Partejatz aqueste ligam amb totas las personas que volètz convidar",
"settings1": "Configuratz vòstra conferéncia",
"settings2": "Los participants rejonhon la conferéncia en essent muts",
"settings3": "Escaisses requesits<br/><br/>Sasissètz un senhal per verrolhar la conferéncia :",
"yourPassword": "vòstre senhal",
"Back": "Retorn",
"serviceUnavailable": "Servici indisponible",
"gracefulShutdown": "Lo servici es actualament en mantenença. Ensajatz tornamai pus tard.",
"Yes": "Òc",
"reservationError": "Error del sistèma de reservacion",
"reservationErrorMsg": "Còdi d'error: __code__, messatge: __msg__",
"password": "senhal",
"userPassword": "senhal utilizaire",
"token": "geton",
"tokenAuthFailed": "Fracàs de l'autentificacion amb lo servidor XMPP : geton pas valid",
"displayNameRequired": "Sasissètz vòstre nom",
"extensionRequired": "Extension requesida :",
"firefoxExtensionPrompt": "Vos cal installar una extension Firefox per utilizar lo partiment d'ecran. Mercé ensajar tornamai aprèp l'installacion <a href='__url__'>dempuèi aqueste ligam</a> !",
"feedbackQuestion": "Cossí èra vòstra conferéncia ?",
"thankYou": "Mercé d'aver utilizat __appName__ !",
"sorryFeedback": "Planhèm d'aprene aquò. Ne nos volètz dire mai ?",
"liveStreaming": "Dirècte",
"streamKey": "Stream name/key",
"startLiveStreaming": "Començar lo dirècte",
"stopStreamingWarning": "Sètz segur que volètz arrestar lo dirècte?",
"stopRecordingWarning": "Sètz segur que volètz arrestar l'enregistrament?",
"stopLiveStreaming": "Arrestar lo dirècte",
"stopRecording": "Arrestar l'enregistrament",
"doNotShowWarningAgain": "",
"permissionDenied": "",
"screenSharingPermissionDeniedError": "",
"micErrorPresent": "",
"cameraErrorPresent": "",
"cameraUnsupportedResolutionError": "",
"cameraUnknownError": "",
"cameraPermissionDeniedError": "",
"cameraNotFoundError": "",
"cameraConstraintFailedError": "",
"micUnknownError": "",
"micPermissionDeniedError": "",
"micNotFoundError": "",
"micConstraintFailedError": ""
},
"email": {
"sharedKey": [
"Aquesta conferéncia es protégée per un senhal. Mercé utilizar la code seguent lors de la connexion :",
"",
"",
"__sharedKey __",
"",
""
],
"subject": "Convit a la conferéncia __appName__ : __conferenceName__",
"body": [
"Bonjorn, vos convida a la conferéncia __appName__ que veni de crear.",
"",
"",
"Clicatz sul ligam seguent per rejónher la conferéncia.",
"",
"",
"__roomUrl__",
"",
"",
"__sharedKeyText__",
" Notatz que __appName__ es actualament suportat sonque per __supportedBrowsers__, doncas, vos cal utilizar un d'aqueles navigadors.",
"",
"",
"A sulpic dins la conferéncia !"
],
"and": "e"
},
"connection": {
"ERROR": "Error",
"CONNECTING": "Connexion en cors",
"RECONNECTING": "Un problèma ret s'es produita. Reconnexion en cors...",
"CONNFAIL": "Fracàs de la connexion",
"AUTHENTICATING": "Autentificacion en cors",
"AUTHFAIL": "Fracàs de l'autentificacion",
"CONNECTED": "Connectat",
"DISCONNECTED": "Desconnectat",
"DISCONNECTING": "Desconnexion en cors",
"ATTACHED": "Estacada"
},
"recording": {
"pending": "Enregistrament en espèra de participant...",
"on": "Enregistrament",
"off": "Enregistrament arrestar",
"failedToStart": "L'enregistrament n'as pas réussi a démarrer",
"buttonTooltip": "Aviar / arrestar l'enregistrament",
"error": "",
"unavailable": ""
},
"liveStreaming": {
"pending": "Començar lo dirècte...",
"on": "Dirècte",
"off": "Lo dirècte es estat arrestat",
"unavailable": "Lo dirècte es temporàriament indisponible. Ensajatz tornamai pus tard.",
"failedToStart": "Lo dirècte a pas capitat de s'aviar",
"buttonTooltip": "Aviar / arrestar lo dirècte",
"streamIdRequired": "Mercé de completar lo stream id per aviar lo dirècte.",
"error": "",
"busy": ""
}
}

319
lang/main-ptBR.json Normal file
View File

@@ -0,0 +1,319 @@
{
"contactlist": "LISTA DE CONTATO",
"connectionsettings": "Configurações de conexão",
"poweredby": "distribuído por",
"downloadlogs": "Baixar registros",
"feedback": "Dê seus comentários",
"roomUrlDefaultMsg": "Sua conferência está sendo criado...",
"participant": "Participante",
"me": "eu",
"speaker": "Orador",
"raisedHand": "Gostaria de falar",
"defaultNickname": "ex. João Pedro",
"defaultLink": "i.e. __url__",
"calling": "Chamando __name__ ...",
"userMedia": {
"react-nativeGrantPermissions": "Dê as permissões para usar sua câmera e microfone pressionando o botão <b> <i>Permitir</i> </b>",
"chromeGrantPermissions": "Dê as permissões para usar sua câmera e microfone pressionando o botão <b> <i>Permitir</i> </b>",
"androidGrantPermissions": "Dê as permissões para usar sua câmera e microfone pressionando o botão <b> <i>Permitir</i> </b>",
"firefoxGrantPermissions": "Dê as permissões para usar sua câmera e microfone pressionando o botão <b> <i>Compartilhar Dispositivos Selecionados</i> </b>",
"operaGrantPermissions": "Dê as permissões para usar sua câmera e microfone pressionando o botão <b> <i>Permitir</i> </b>",
"iexplorerGrantPermissions": "Dê as permissões para usar sua câmera e microfone pressionando o botão <b> <i>OK</i> </b>",
"safariGrantPermissions": "Dê as permissões para usar sua câmera e microfone pressionando o botão <b> <i>OK</i> </b>",
"nwjsGrantPermissions": "Dê as permissões para usar sua câmera e microfone"
},
"keyboardShortcuts": {
"keyboardShortcuts": "Atalhos de teclado:",
"raiseHand": "Erguer sua mão.",
"pushToTalk": "Pressione para falar.",
"toggleScreensharing": "Trocar entre câmera e compartilhamento de tela.",
"toggleFilmstrip": "Mostrar ou ocultar a tira de filme.",
"toggleShortcuts": "Mostrar ou ocultar este menu de ajuda.",
"focusLocal": "Foco no vídeo local.",
"focusRemote": "Foco em um dos vídeos remotos.",
"toggleChat": "Abrir ou fechar o painel de bate-papo.",
"mute": "Deixar mudo ou não o microfone.",
"videoMute": "Parar ou iniciar o vídeo local."
},
"welcomepage": {
"go": "IR",
"roomname": "Digite o nome da sala",
"disable": "Não mostre esta página novamente",
"feature1": {
"title": "Simples para usar",
"content": "Não precisa baixar nada. __app__ trabalha diretamente no seu navegador. Simplesmente compartilhe sua URL da conferência com outros para começar."
},
"feature2": {
"title": "Largura de banda baixa",
"content": "Conferências de vídeo de multipartes trabalha com tão pouco quanto 128 kbps. Compartilhamento de tela e conferências de áudio somente são possíveis com muito menos."
},
"feature3": {
"title": "Código aberto",
"content": "__app__ é licenciado sob a Licença Apache. Você é livre para baixar, usar, modificar e compartilhar ela com a mesma licença."
},
"feature4": {
"title": "Usuários ilimitados",
"content": "Aqui não há restrições artificiais no número de usuários ou participantes da conferência. A potência do servidor e largura de banda são os únicos fatores limitantes."
},
"feature5": {
"title": "Compartilhamento de tela",
"content": "É fácil compartilhar sua tela com outros. __app__ é ideal para apresentações online, leituras, e sessões de suporte técnico."
},
"feature6": {
"title": "Salas seguras",
"content": "Precisa alguma privacidade? Salas de conferência do __app__ podem ser seguras com uma senha para excluir visitantes indesejados e prevenir interrupções."
},
"feature7": {
"title": "Notas compartilhadas",
"content": "__app_ disponibiliza o Etherpad, um editor de texto colaborativo em tempo real, que é ótimo para reuniões rápidas, escrevendo artigos, e mais."
},
"feature8": {
"title": "Estatísticas de uso",
"content": "Aprenda sobre seus usuários através de integração fácil com o Piwik, Google Analytics, e outros sistemas de monitoramento e estatísticas."
}
},
"toolbar": {
"mute": "Mudo / Não mudo",
"videomute": "Iniciar / parar a câmera",
"authenticate": "Autenticar",
"lock": "Travar / destravar a sala",
"invite": "Convidar outros",
"chat": "Abrir / fechar bate-papo",
"etherpad": "Documento compartilhado",
"sharedvideo": "Compartilhar um vídeo do YouTube",
"sharescreen": "Compartilhar tela",
"fullscreen": "Entrar / Sair de Tela Cheia",
"sip": "Chamar número SIP",
"Settings": "Configurações",
"hangup": "Desligar",
"login": "Iniciar sessão",
"logout": "Encerrar sessão",
"dialpad": "Mostrar teclas de discagem",
"sharedVideoMutedPopup": "Seu vídeo compartilhado está mudo assim<br/>você pode falar com os outros participantes.",
"micMutedPopup": "Seu microfone está mudo assim que você<br/>pode curtir plenamente seu vídeo compartilhado.",
"unableToUnmutePopup": "Você não pode sair do mudo enquanto seu vídeo compartilhado está ativo.",
"cameraDisabled": "A câmera não está disponível",
"micDisabled": "O microfone não está disponível"
},
"bottomtoolbar": {
"chat": "Abrir / fechar bate-papo",
"filmstrip": "Mostrar / ocultar a tira de usuários",
"contactlist": "Abrir / fechar a lista de contatos"
},
"chat": {
"nickname": {
"title": "Digite um apelido na caixa a seguir",
"popover": "Escolha um apelido"
},
"messagebox": "Digite um texto..."
},
"settings": {
"title": "CONFIGURAÇÕES",
"update": "Atualizar",
"name": "Nome",
"startAudioMuted": "Iniciar sem áudio",
"startVideoMuted": "Iniciar sem vídeo",
"selectCamera": "Selecione a câmera",
"selectMic": "Selecionar o microfone",
"selectAudioOutput": "Selecionar a saída de áudio",
"followMe": "Habilitar o siga-me",
"noDevice": "Nenhum",
"noPermission": "Permissão para usar o dispositivo não concedida",
"avatarUrl": "URL do Avatar"
},
"videothumbnail": {
"editnickname": "Clique para editar o seu <br/>nome de exibição",
"moderator": "O proprietário<br/>desta conferência",
"videomute": "Participante parou<br/>a câmera.",
"mute": "Participante está mudo",
"kick": "Chutar fora",
"muted": "Mudo",
"domute": "Mudo",
"flip": "Inverter"
},
"connectionindicator": {
"bitrate": "Taxa de bits:",
"packetloss": "Perda de pacote:",
"resolution": "Resolução:",
"less": "Mostrar menos",
"more": "Mostrar mais",
"address": "Endereço:",
"remoteport": "Porta remota:",
"remoteport_plural": "Portas remotas:",
"localport": "Porta local:",
"localport_plural": "Portas locais:",
"localaddress": "Endereço local:",
"localaddress_plural": "Endereços locais:",
"remoteaddress": "Endereço remoto:",
"remoteaddress_plural": "Endereços remotos:",
"transport": "Transporte:",
"bandwidth": "Largura de banda estimada:",
"na": "Volte aqui para informações de conexão uma vez que a conferência inicie"
},
"notify": {
"disconnected": "desconectado",
"moderator": "Direitos de moderador concedidos!",
"connected": "conectado",
"somebody": "Alguém",
"me": "Eu",
"focus": "Foco da conferência",
"focusFail": "__component__ não disponĩvel - tente em __ms__ seg.",
"grantedTo": "Direitos de moderador concedido para __to__!",
"grantedToUnknown": "Direitos de moderador concedido para $t(somebody)!",
"muted": "Você iniciou uma conversa muda.",
"mutedTitle": "Você está mudo!",
"raisedHand": "Gostaria de falar."
},
"dialog": {
"kickMessage": "Ouch! Você o chutou para fora da reunião!",
"popupError": "Seu navegador está bloqueando janelas popup deste site. Por favor, habilite popups nas configurações de segurança do seu navegador e tente novamente.",
"passwordError": "Esta conversa está protegida atualmente por uma senha. Somente o dono da conferência pode definir a senha.",
"passwordError2": "Esta reunião não está protegida por senha atualmente. Somente o dono da conferência pode definir a senha.",
"connectError": "Oops! Alguma coisa está errada e nós não pudemos conectar à conferência.",
"connectErrorWithMsg": "Oops! Alguma coisa está errada e não podemos conectar à conferência: __msg__",
"connecting": "Conectando",
"error": "Erro",
"detectext": "Erro enquanto tenta detectar a extensão de compartilhamento de tela.",
"failtoinstall": "Falhou a instalação da extensão de compartilhamento de tela",
"failedpermissions": "Falha ao obter permissões para usar o microfone e/ou câmera local.",
"bridgeUnavailable": "Jitsi Videobridge está atualmente indisponível. Por favor, tente mais tarde!",
"jicofoUnavailable": "Jicofo está atualmente indisponível. Por favor, tente mais tarde!",
"maxUsersLimitReached": "O limite para o número máximo de participantes na conferência foi atingida. A conferência está cheia. Por favor, tente mais tarde!",
"lockTitle": "Bloqueio falhou",
"lockMessage": "Falha ao travar a conferência.",
"warning": "Atenção",
"passwordNotSupported": "Senhas de salas não são suportadas atualmente.",
"sorry": "Desculpe",
"internalError": "Erro interno de aplicação [setRemoteDescription]",
"unableToSwitch": "Impossível trocar o fluxo de vídeo.",
"SLDFailure": "Oops! Alguma coisa está errada e nós falhamos em silenciar! (Falha do SLD)",
"SRDFailure": "Oops! Alguma coisa está errada e nós falhamos em parar o vídeo! (Falha do SRD)",
"oops": "Oops!",
"defaultError": "Aqui teve algum tipo de erro",
"passwordRequired": "Senha requerida",
"Ok": "Ok",
"Remove": "Remover",
"shareVideoTitle": "Compartilhar um vídeo",
"shareVideoLinkError": "Por favor, forneça um link do youtube correto.",
"removeSharedVideoTitle": "Remover vídeo compartilhado",
"removeSharedVideoMsg": "Está certo que gostaria de remover seu vídeo compartilhado?",
"alreadySharedVideoMsg": "Outro participante já está compartilhando o vídeo. Esta conferência permite somente um vídeo compartilhado por vez.",
"WaitingForHost": "Esperando o hospedeiro...",
"WaitForHostMsg": "A conferência <b>__room__</b> não foi iniciada. Se você é o hospedeiro, então autentique-se. Caso contrário, aguarde o hospedeiro chegar.",
"IamHost": "Eu sou o hospedeiro",
"Cancel": "Cancelar",
"retry": "Tentar novamente",
"logoutTitle": "Encerrar sessão",
"logoutQuestion": "Está certo em encerrar a sessão e terminar a conferência?",
"sessTerminated": "Sessão Terminada",
"hungUp": "Você desconectou",
"joinAgain": "Conectar novamente",
"Share": "Compartilhar",
"Save": "Salvar",
"recording": "Gravando",
"recordingToken": "Digite o token de gravação",
"Dial": "Discar",
"sipMsg": "Digite o número SIP",
"passwordCheck": "Você tem certeza que deseja remover sua senha?",
"passwordMsg": "Definir uma senha para trancar sua sala",
"Invite": "Convidar",
"shareLink": "Compartilhar este link com quem você espera convidar",
"settings1": "Configure sua conferência",
"settings2": "Participantes entram mudos",
"settings3": "Requer apelidos<br/><br/>Defina uma senha para trancar sua sala:",
"yourPassword": "sua Senha",
"Back": "Voltar",
"serviceUnavailable": "Serviço indisponível",
"gracefulShutdown": "Nosso serviço está desligado para manutenção. Por favor, tente mais tarde.",
"Yes": "Sim",
"reservationError": "Erro de sistema de reserva",
"reservationErrorMsg": "Código do erro: __code__, mensagem: __msg__",
"password": "senha",
"userPassword": "senha do usuário",
"token": "token",
"tokenAuthFailed": "Falha em autenticar com o servidor XMPP: token inválido",
"displayNameRequired": "Digite seu nome de exibição",
"extensionRequired": "Extensão requerida:",
"firefoxExtensionPrompt": "Você precisa instalar uma extensão do Firefox para compartilhar a tela. Tente novamente depois que você <a href='__url__'>pegá-lo aqui</a>!",
"feedbackQuestion": "Como foi a chamada?",
"thankYou": "Obrigado por usar o __appName__!",
"sorryFeedback": "Lamentamos escutar isso. Gostaria de nos contar mais?",
"liveStreaming": "Live Streaming",
"streamKey": "Nome/chave do fluxo",
"startLiveStreaming": "Iniciar live streaming",
"stopStreamingWarning": "Você tem certeza que deseja parar o live streaming?",
"stopRecordingWarning": "Tem certeza que deseja parar a gravação?",
"stopLiveStreaming": "Parar o live streaming",
"stopRecording": "Parar a gravação",
"doNotShowWarningAgain": "Não exibir este aviso novamente",
"permissionDenied": "Permissão Negada",
"screenSharingPermissionDeniedError": "Você não tem permissão concedida para compartilhar sua tela.",
"micErrorPresent": "Ocorreu um erro conectando seu microfone.",
"cameraErrorPresent": "Ocorreu um erro conectando sua câmera.",
"cameraUnsupportedResolutionError": "Sua câmera não suporta a resolução de vídeo requerida.",
"cameraUnknownError": "Não pode usar a câmera por uma razão desconhecida.",
"cameraPermissionDeniedError": "Você não tem permissão para usar sua câmera. Você ainda pode entrar na conferência, mas os outros não verão você. Use o botão da câmera na barra de endereço para fixar isto.",
"cameraNotFoundError": "Câmera solicitada não foi encontrada.",
"cameraConstraintFailedError": "Sua câmera não satisfaz algumas condições requeridas.",
"micUnknownError": "Não pode usar o microfone por uma razão desconhecida.",
"micPermissionDeniedError": "Você não tem permissão para usar seu microfone. Você ainda pode entrar na conferência, mas os outros não ouvirão você. Use o botão da câmera na barra de endereço para fixar isto.",
"micNotFoundError": "O microfone solicitado não foi encontrado.",
"micConstraintFailedError": "Seu microfone não satisfaz algumas condições requeridas."
},
"email": {
"sharedKey": [
"Esta conferência está protegida com senha. Use o seguinte código quando entrar:",
"",
"",
"__sharedKey__",
"",
""
],
"subject": "Convite para __appName__ (__conferenceName__)",
"body": [
"Olá, gostaria de convidá-lo para uma conferência do __appName__ na qual eu estou participando.",
"",
"Por favor clique no endereço a seguir para participar:",
"",
"__roomUrl__",
"",
"__sharedKeyText__",
" Note que o __appName__ atualmente só funciona nos navegadores __supportedBrowsers__, assim é preciso abrir o link com um deles para poder participar.",
"",
"Aguardo sua presença!"
],
"and": "e"
},
"connection": {
"ERROR": "Erro",
"CONNECTING": "Conectando",
"RECONNECTING": "Ocorreu um problema de rede. Reconectando...",
"CONNFAIL": "Falha de conexão",
"AUTHENTICATING": "Autenticando",
"AUTHFAIL": "Falha de autenticação",
"CONNECTED": "Conectado",
"DISCONNECTED": "Desconectado",
"DISCONNECTING": "Desconectando",
"ATTACHED": "Anexado"
},
"recording": {
"pending": "Aguardando um participante para iniciar a gravação...",
"on": "Gravando",
"off": "Gravação parada",
"failedToStart": "Falha ao iniciar a gravação",
"buttonTooltip": "Iniciar / parar gravação",
"error": "A gravação falhou. Tente novamente.",
"unavailable": "O serviço de gravação está indisponível. Por favor, tente mais tarde."
},
"liveStreaming": {
"pending": "Iniciando Transmissão Ao Vivo...",
"on": "Live Streaming",
"off": "Transmissão ao vivo encerrada",
"unavailable": "O serviço de transmissão ao vivo está indisponível no momento.Por favor, tente mais tarde.",
"failedToStart": "Falha ao iniciar a transmissão ao vivo",
"buttonTooltip": "Iniciar / parar live stream",
"streamIdRequired": "Por favor digite o id da transmissão ao vivo para começar a transmitir.",
"error": "Falha na transmissão ao vivo. Tente novamente",
"busy": "Todos os gravadores estão ocupados no momento. Por favor, tente mais tarde."
}
}

301
lang/main-ru.json Normal file
View File

@@ -0,0 +1,301 @@
{
"contactlist": "",
"connectionsettings": "",
"poweredby": "",
"downloadlogs": "",
"feedback": "",
"roomUrlDefaultMsg": "",
"participant": "",
"me": "",
"speaker": "",
"raisedHand": "",
"defaultNickname": "",
"defaultLink": "",
"calling": "",
"userMedia": {
"react-nativeGrantPermissions": "",
"chromeGrantPermissions": "",
"androidGrantPermissions": "",
"firefoxGrantPermissions": "",
"operaGrantPermissions": "",
"iexplorerGrantPermissions": "",
"safariGrantPermissions": "",
"nwjsGrantPermissions": ""
},
"keyboardShortcuts": {
"keyboardShortcuts": "",
"raiseHand": "",
"pushToTalk": "",
"toggleScreensharing": "",
"toggleFilmstrip": "",
"toggleShortcuts": "",
"focusLocal": "",
"focusRemote": "",
"toggleChat": "",
"mute": "",
"videoMute": ""
},
"welcomepage": {
"go": "",
"roomname": "",
"disable": "",
"feature1": {
"title": "",
"content": ""
},
"feature2": {
"title": "",
"content": ""
},
"feature3": {
"title": "",
"content": ""
},
"feature4": {
"title": "",
"content": ""
},
"feature5": {
"title": "",
"content": ""
},
"feature6": {
"title": "",
"content": ""
},
"feature7": {
"title": "",
"content": ""
},
"feature8": {
"title": "",
"content": ""
}
},
"toolbar": {
"mute": "",
"videomute": "",
"authenticate": "",
"lock": "",
"invite": "",
"chat": "",
"etherpad": "",
"sharedvideo": "",
"sharescreen": "",
"fullscreen": "",
"sip": "",
"Settings": "",
"hangup": "",
"login": "",
"logout": "",
"dialpad": "",
"sharedVideoMutedPopup": "",
"micMutedPopup": "",
"unableToUnmutePopup": "",
"cameraDisabled": "",
"micDisabled": ""
},
"bottomtoolbar": {
"chat": "",
"filmstrip": "",
"contactlist": ""
},
"chat": {
"nickname": {
"title": "",
"popover": ""
},
"messagebox": ""
},
"settings": {
"title": "",
"update": "",
"name": "",
"startAudioMuted": "",
"startVideoMuted": "",
"selectCamera": "",
"selectMic": "",
"selectAudioOutput": "",
"followMe": "",
"noDevice": "",
"noPermission": "",
"avatarUrl": ""
},
"videothumbnail": {
"editnickname": "",
"moderator": "",
"videomute": "",
"mute": "",
"kick": "",
"muted": "",
"domute": "",
"flip": ""
},
"connectionindicator": {
"bitrate": "",
"packetloss": "",
"resolution": "",
"less": "",
"more": "",
"address": "",
"remoteport": "",
"remoteport_plural_2": "",
"localport": "",
"localport_plural_2": "",
"localaddress": "",
"localaddress_plural_2": "",
"remoteaddress": "",
"remoteaddress_plural_2": "",
"transport": "",
"bandwidth": "",
"na": ""
},
"notify": {
"disconnected": "",
"moderator": "",
"connected": "",
"somebody": "",
"me": "",
"focus": "",
"focusFail": "",
"grantedTo": "",
"grantedToUnknown": "",
"muted": "",
"mutedTitle": "",
"raisedHand": ""
},
"dialog": {
"kickMessage": "",
"popupError": "",
"passwordError": "",
"passwordError2": "",
"connectError": "",
"connectErrorWithMsg": "",
"connecting": "",
"error": "",
"detectext": "",
"failtoinstall": "",
"failedpermissions": "",
"bridgeUnavailable": "",
"jicofoUnavailable": "",
"maxUsersLimitReached": "",
"lockTitle": "",
"lockMessage": "",
"warning": "",
"passwordNotSupported": "",
"sorry": "",
"internalError": "",
"unableToSwitch": "",
"SLDFailure": "",
"SRDFailure": "",
"oops": "",
"defaultError": "",
"passwordRequired": "",
"Ok": "",
"Remove": "",
"shareVideoTitle": "",
"shareVideoLinkError": "",
"removeSharedVideoTitle": "",
"removeSharedVideoMsg": "",
"alreadySharedVideoMsg": "",
"WaitingForHost": "",
"WaitForHostMsg": "",
"IamHost": "",
"Cancel": "",
"retry": "",
"logoutTitle": "",
"logoutQuestion": "",
"sessTerminated": "",
"hungUp": "",
"joinAgain": "",
"Share": "",
"Save": "",
"recording": "",
"recordingToken": "",
"Dial": "",
"sipMsg": "",
"passwordCheck": "",
"passwordMsg": "",
"Invite": "",
"shareLink": "",
"settings1": "",
"settings2": "",
"settings3": "",
"yourPassword": "",
"Back": "",
"serviceUnavailable": "",
"gracefulShutdown": "",
"Yes": "",
"reservationError": "",
"reservationErrorMsg": "",
"password": "",
"userPassword": "",
"token": "",
"tokenAuthFailed": "",
"displayNameRequired": "",
"extensionRequired": "",
"firefoxExtensionPrompt": "",
"feedbackQuestion": "",
"thankYou": "",
"sorryFeedback": "",
"liveStreaming": "",
"streamKey": "",
"startLiveStreaming": "",
"stopStreamingWarning": "",
"stopRecordingWarning": "",
"stopLiveStreaming": "",
"stopRecording": "",
"doNotShowWarningAgain": "",
"permissionDenied": "",
"screenSharingPermissionDeniedError": "",
"micErrorPresent": "",
"cameraErrorPresent": "",
"cameraUnsupportedResolutionError": "",
"cameraUnknownError": "",
"cameraPermissionDeniedError": "",
"cameraNotFoundError": "",
"cameraConstraintFailedError": "",
"micUnknownError": "",
"micPermissionDeniedError": "",
"micNotFoundError": "",
"micConstraintFailedError": ""
},
"email": {
"sharedKey": "",
"subject": "",
"body": "",
"and": ""
},
"connection": {
"ERROR": "",
"CONNECTING": "",
"RECONNECTING": "",
"CONNFAIL": "",
"AUTHENTICATING": "",
"AUTHFAIL": "",
"CONNECTED": "",
"DISCONNECTED": "",
"DISCONNECTING": "",
"ATTACHED": ""
},
"recording": {
"pending": "",
"on": "",
"off": "",
"failedToStart": "",
"buttonTooltip": "",
"error": "",
"unavailable": ""
},
"liveStreaming": {
"pending": "",
"on": "",
"off": "",
"unavailable": "",
"failedToStart": "",
"buttonTooltip": "",
"streamIdRequired": "",
"error": "",
"busy": ""
}
}

View File

@@ -3,16 +3,42 @@
"connectionsettings": "Nastavenie spojenia",
"poweredby": "založené na",
"downloadlogs": "Stiahnúť logy",
"feedback": "",
"roomUrlDefaultMsg": "Vaša konferencia bola práve vytvorená...",
"participant": "Účastník",
"me": "ja",
"speaker": "Rečník",
"defaultNickname": "napr. __name__",
"defaultPreziLink": "napr. __url__",
"raisedHand": "",
"defaultNickname": "",
"defaultLink": "napr. __url__",
"calling": "",
"userMedia": {
"react-nativeGrantPermissions": "",
"chromeGrantPermissions": "",
"androidGrantPermissions": "",
"firefoxGrantPermissions": "",
"operaGrantPermissions": "",
"iexplorerGrantPermissions": "",
"safariGrantPermissions": "",
"nwjsGrantPermissions": ""
},
"keyboardShortcuts": {
"keyboardShortcuts": "",
"raiseHand": "",
"pushToTalk": "",
"toggleScreensharing": "",
"toggleFilmstrip": "",
"toggleShortcuts": "",
"focusLocal": "",
"focusRemote": "",
"toggleChat": "",
"mute": "",
"videoMute": ""
},
"welcomepage": {
"go": "Pripojiť",
"roomname": "Zadajte názov miestnosti",
"disable": "Nezobrazovať túto stranku pri ďalšej návšteve",
"disable": "",
"feature1": {
"title": "Jednoduché na používanie",
"content": "Nie je potrebne nič sťahovať. __app_ funguje priamo vo Vašom prehliadači. Jednoducho zdieľajte URL adresu konferenčnej miestnosti a možete začať."
@@ -50,20 +76,24 @@
"mute": "Vypnúť / Zapnúť mikrofón",
"videomute": "Vypnúť / Zapnúť kameru",
"authenticate": "Overiť",
"record": "Uložiť záznam",
"lock": "Zamknúť / Odomknúť miestnosť",
"invite": "Pozvať ďalšich",
"chat": "",
"prezi": "Zdieľať Prezi",
"chat": "Otvoriť / zatvoriť chat",
"etherpad": "Zdieľať dokument",
"sharedvideo": "",
"sharescreen": "Zdieľať prac. plochu",
"fullscreen": "Zapnúť / Vypnúť plnú obrazovku",
"sip": "Zavolať SIP číslo",
"Settings": "Nastavenia",
"hangup": "Zložiť",
"login": "Prihlásiť",
"logout": "",
"dialpad": "Zobraziť číselník"
"logout": "Odhlásiť",
"dialpad": "Zobraziť číselník",
"sharedVideoMutedPopup": "",
"micMutedPopup": "",
"unableToUnmutePopup": "",
"cameraDisabled": "",
"micDisabled": ""
},
"bottomtoolbar": {
"chat": "Otvoriť / zatvoriť chat",
@@ -81,8 +111,15 @@
"title": "NASTAVENIA",
"update": "Nastaviť",
"name": "Meno",
"startAudioMuted": "začat s vypnutým mikrofónom",
"startVideoMuted": "začať s vypnutou kamerou"
"startAudioMuted": "",
"startVideoMuted": "",
"selectCamera": "",
"selectMic": "",
"selectAudioOutput": "",
"followMe": "",
"noDevice": "",
"noPermission": "",
"avatarUrl": ""
},
"videothumbnail": {
"editnickname": "Kliknite pre zmenu<br/>Vášho mena",
@@ -91,7 +128,8 @@
"mute": "Učastník s<br/>vypnutým mikrofónom",
"kick": "Vyhodiť",
"muted": "Vypnutý mikrofón",
"domute": "Vypnút mikrofón"
"domute": "Vypnút mikrofón",
"flip": ""
},
"connectionindicator": {
"bitrate": "Prenos. rýchlosť",
@@ -127,7 +165,8 @@
"grantedTo": "Práva moderátora boli udelené __to__!",
"grantedToUnknown": "Práva moderátora boli udelené $t(somebody)!",
"muted": "Začali ste rozhovor s vypnutým mikrofónom.",
"mutedTitle": "Boli ste stíšený!"
"mutedTitle": "Boli ste stíšený!",
"raisedHand": ""
},
"dialog": {
"kickMessage": "Boli ste vyhodený z konferencie!",
@@ -136,12 +175,14 @@
"passwordError2": "Táto diskusia nie je momentálne zabezpečená heslom. Iba majiteľ tejto konferencie može nastaviť heslo.",
"connectError": "Oops! Niečo je zle a nemožem sa pripojiť do konferencie.",
"connectErrorWithMsg": "Oops! Niečo je zle a nemožem sa pripojiť do konferencie. Správa: __msg__",
"connecting": "",
"error": "",
"connecting": "Pripájam",
"error": "Chyba",
"detectext": "Chyba pri pokuse najsť rozšírenie pre zdieľanie prac. plochy",
"failtoinstall": "Zlyhanie pri inštalácií rozšírenia pre zdieľanie prac. plochy",
"failedpermissions": "Zlyhanie pri pokuse získať prístup k lokálnemu mikrofonu alebo kamere.",
"bridgeUnavailable": "Jitsi Videobridge je momentálne nedostupné. Prosím, skúste neskor!",
"jicofoUnavailable": "",
"maxUsersLimitReached": "",
"lockTitle": "Zabezpečenie zlyhalo",
"lockMessage": "Zlyhanie pri pokuse o zabezpečenie konferencie.",
"warning": "Upozornenie",
@@ -155,11 +196,12 @@
"defaultError": "Nastala neznáma chyba",
"passwordRequired": "Je potrebné heslo",
"Ok": "Ok",
"removePreziTitle": "Odstrániť Prezi",
"removePreziMsg": "Ste si naozaj istý pre odstránenie Vášho Prezi?",
"sharePreziTitle": "Zdieľať Prezi",
"sharePreziMsg": "Iný účastník už zdieľa Prezi. Je možne zdieľať iba jeden Prezi.",
"Remove": "Odstrániť",
"shareVideoTitle": "",
"shareVideoLinkError": "",
"removeSharedVideoTitle": "",
"removeSharedVideoMsg": "",
"alreadySharedVideoMsg": "",
"WaitingForHost": "Čakám na hostiteľa ...",
"WaitForHostMsg": "Konferencia <b>__room__ </b> ešte nezačala. Ak ste hostiteľ Vy, overte sa. Inak čakajte kým sa prihlási hostiteľ.",
"IamHost": "Ja som hostiteľ",
@@ -171,8 +213,8 @@
"hungUp": "Ste odpojený",
"joinAgain": "Znova prihlásiť",
"Share": "Zdieľať",
"preziLinkError": "Prosím, zadajte správny Prezi odkaz.",
"Save": "Uložiť",
"recording": "",
"recordingToken": "Zadajte názov nahrávky",
"Dial": "Volať",
"sipMsg": "Vložte SIP číslo",
@@ -193,9 +235,34 @@
"password": "heslo",
"userPassword": "uživateľské heslo",
"token": "token",
"displayNameRequired": "Prosím, vložte Vaše meno:",
"tokenAuthFailed": "",
"displayNameRequired": "",
"extensionRequired": "Potrebné rozšírenie:",
"firefoxExtensionPrompt": "Potrebujete nainštalovať rozšírenie do Firefoxu pre možnosť zdieľať prac. plochu. Prosím, skúste znovu po nainštalovaní z: <a href='__url__'>"
"firefoxExtensionPrompt": "Potrebujete nainštalovať rozšírenie do Firefoxu pre možnosť zdieľať prac. plochu. Prosím, skúste znovu po nainštalovaní z: <a href='__url__'>",
"feedbackQuestion": "",
"thankYou": "",
"sorryFeedback": "",
"liveStreaming": "",
"streamKey": "",
"startLiveStreaming": "",
"stopStreamingWarning": "",
"stopRecordingWarning": "",
"stopLiveStreaming": "",
"stopRecording": "",
"doNotShowWarningAgain": "",
"permissionDenied": "",
"screenSharingPermissionDeniedError": "",
"micErrorPresent": "",
"cameraErrorPresent": "",
"cameraUnsupportedResolutionError": "",
"cameraUnknownError": "",
"cameraPermissionDeniedError": "",
"cameraNotFoundError": "",
"cameraConstraintFailedError": "",
"micUnknownError": "",
"micPermissionDeniedError": "",
"micNotFoundError": "",
"micConstraintFailedError": ""
},
"email": {
"sharedKey": [
@@ -242,8 +309,23 @@
"ATTACHED": "Priložený"
},
"recording": {
"toaster": "Momentálne nahrávam!",
"pending": "Ukladanie začne hneď ako sa další účastník prihlási",
"on": "Nahrávanie sa začalo"
"pending": "",
"on": "",
"off": "",
"failedToStart": "",
"buttonTooltip": "",
"error": "",
"unavailable": ""
},
"liveStreaming": {
"pending": "",
"on": "",
"off": "",
"unavailable": "",
"failedToStart": "",
"buttonTooltip": "",
"streamIdRequired": "",
"error": "",
"busy": ""
}
}

View File

@@ -3,16 +3,42 @@
"connectionsettings": "Nastavitve povezave",
"poweredby": "poganja",
"downloadlogs": "Shrani zapis",
"feedback": "",
"roomUrlDefaultMsg": "Ustvarjanje vaše konference ...",
"participant": "Udeleženec",
"me": "jaz",
"speaker": "Govornik",
"defaultNickname": "npr. __name__",
"defaultPreziLink": "npr. __url__",
"raisedHand": "",
"defaultNickname": "",
"defaultLink": "npr. __url__",
"calling": "",
"userMedia": {
"react-nativeGrantPermissions": "",
"chromeGrantPermissions": "",
"androidGrantPermissions": "",
"firefoxGrantPermissions": "",
"operaGrantPermissions": "",
"iexplorerGrantPermissions": "",
"safariGrantPermissions": "",
"nwjsGrantPermissions": ""
},
"keyboardShortcuts": {
"keyboardShortcuts": "",
"raiseHand": "",
"pushToTalk": "",
"toggleScreensharing": "",
"toggleFilmstrip": "",
"toggleShortcuts": "",
"focusLocal": "",
"focusRemote": "",
"toggleChat": "",
"mute": "",
"videoMute": ""
},
"welcomepage": {
"go": "POJDI",
"roomname": "Vpišite ime sobe",
"disable": "Prihodnjič ne prikaži te strani",
"disable": "",
"feature1": {
"title": "Enostavna uporaba",
"content": "Nič ni treba namestiti. __app__ deluje direktno v vašem brskalniku. Enostavno sporočite ostalim udeležencem URL svoje konference in začnite."
@@ -23,7 +49,7 @@
},
"feature3": {
"title": "Odprta koda",
"content": "__app__ je objavljen po licenci MIT. Pod pogoji te licence lahko prosto snamete, uporabljate, spreminjate in delite."
"content": ""
},
"feature4": {
"title": "Neomejeno število uporabnikov",
@@ -50,12 +76,11 @@
"mute": "Utišaj / Povrni glasnost",
"videomute": "Zaženi / Ustavi kamero",
"authenticate": "Overi",
"record": "Snemaj",
"lock": "Zakleni / Odkleni sobo",
"invite": "Povabite ostale",
"chat": "Odpri / zapri klepetalnico",
"prezi": "Skupna raba Prezi",
"etherpad": "Dokument v skupni rabi",
"sharedvideo": "",
"sharescreen": "Zaslon v souporabi",
"fullscreen": "Vklopi / Izklopi celozaslonski način",
"sip": "Pokliči številko SIP",
@@ -63,7 +88,12 @@
"hangup": "Odloži",
"login": "Prijava",
"logout": "Odjava",
"dialpad": "Pokaži številčnico"
"dialpad": "Pokaži številčnico",
"sharedVideoMutedPopup": "",
"micMutedPopup": "",
"unableToUnmutePopup": "",
"cameraDisabled": "",
"micDisabled": ""
},
"bottomtoolbar": {
"chat": "Odpri / zapri klepetalnico",
@@ -81,8 +111,15 @@
"title": "NASTAVITVE",
"update": "Posodobi",
"name": "Ime",
"startAudioMuted": "začni brez zvoka",
"startVideoMuted": "začni brez slike"
"startAudioMuted": "",
"startVideoMuted": "",
"selectCamera": "",
"selectMic": "",
"selectAudioOutput": "",
"followMe": "",
"noDevice": "",
"noPermission": "",
"avatarUrl": ""
},
"videothumbnail": {
"editnickname": "Kliknite, da spremenite<br/>svoje ime",
@@ -91,7 +128,8 @@
"mute": "Udeleženec je utišan",
"kick": "Izženi",
"muted": "Utišan",
"domute": "Utišaj"
"domute": "Utišaj",
"flip": ""
},
"connectionindicator": {
"bitrate": "Bitna hitrost:",
@@ -131,14 +169,14 @@
"grantedTo": "Moderatorske pravice dodeljene uporabniku __to__!",
"grantedToUnknown": "Moderatorske pravice dodeljene uporabniku $t(somebody)!",
"muted": "Pogovor ste začeli utišano.",
"mutedTitle": "Utišani ste!"
"mutedTitle": "Utišani ste!",
"raisedHand": ""
},
"dialog": {
"kickMessage": "Ojej! Izgnali so vas iz srečanja!",
"popupError": "Vaš brskalnik ne dovoli pojavnih oken iz te spletne strani. Omogočite prosim pojavna okna v varnostnih nastavitvah svojega brskalnika in ponovno poskusite.",
"passwordError": "Ta pogovor je zaščiten z geslom. Samo lastnik konference lahko nastavi geslo.",
"passwordError2": "Ta pogovor ni zaščiten z geslom. Samo lastnik konference lahko nastavi geslo.",
"joinError": "Ups! Ni se bilo mogoče pridružiti konferenci. Mogoče je kakšna težava z varnostnimi nastavitvami. Pišite prosim administratorju storitve.",
"popupError": "",
"passwordError": "",
"passwordError2": "",
"connectError": "Ups! Nekaj je narobe in se ni bilo mogoče povezati s konferenco.",
"connectErrorWithMsg": "Ups! Nekaj je narobe in se ni bilo mogoče povezati s konferenco: __msg__",
"connecting": "Povezovanje",
@@ -147,8 +185,10 @@
"failtoinstall": "Razširitve za skupno uporabo namizja ni bilo mogoče namestiti",
"failedpermissions": "Ni bilo mogoče pridobiti dovoljenja za uporabo lokalnega mikrofona ali kamere.",
"bridgeUnavailable": "Jitsi Videobridge trenutno ni na razpolago. Prosim poskusite kasneje!",
"jicofoUnavailable": "",
"maxUsersLimitReached": "",
"lockTitle": "Zaklepanje ni uspelo",
"lockMessage": "Konference ni bilo mogoče zakleniti.",
"lockMessage": "",
"warning": "Opozorilo",
"passwordNotSupported": "Trenutno ni mogoče zakleniti sobe z geslom.",
"sorry": "Oprostite",
@@ -160,11 +200,12 @@
"defaultError": "Prišlo je do neke napake",
"passwordRequired": "Potrebno je geslo",
"Ok": "V redu",
"removePreziTitle": "Odstrani Prezi",
"removePreziMsg": "Ali res želite odstraniti Prezi?",
"sharePreziTitle": "Dajte Prezi v skupno rabo",
"sharePreziMsg": "Drug uporabnik je že dal Prezi v skupno rabo. Ta konferenca podpira samo en Prezi naenkrat.",
"Remove": "Odstrani",
"shareVideoTitle": "",
"shareVideoLinkError": "",
"removeSharedVideoTitle": "",
"removeSharedVideoMsg": "",
"alreadySharedVideoMsg": "",
"WaitingForHost": "Čakanje na gostitelja ...",
"WaitForHostMsg": "Ta konferenca <b>__room__ </b> se še ni začela. V primeru, da ste vi gostitelj se prosim overite. Drugače počakajte prosim na prihod gostitelja.",
"IamHost": "Jaz sem gostitelj",
@@ -173,11 +214,11 @@
"logoutTitle": "Odjava",
"logoutQuestion": "Ali se res želite odjaviti in prekiniti konferenco?",
"sessTerminated": "Seja je končana",
"hungUp": "Prekinili ste klic",
"hungUp": "",
"joinAgain": "Ponovno se pridruži",
"Share": "Souporaba",
"preziLinkError": "Prosim, pravilno vpišite povezavo Prezi.",
"Save": "Shrani",
"recording": "",
"recordingToken": "Vnesite žeton za registracijo",
"Dial": "Pokliči",
"sipMsg": "Vnesite številko SIP",
@@ -198,17 +239,37 @@
"password": "geslo",
"userPassword": "uporabniško geslo",
"token": "žeton",
"displayNameRequired": "Vpišite svoje ime:"
"tokenAuthFailed": "",
"displayNameRequired": "",
"extensionRequired": "",
"firefoxExtensionPrompt": "",
"feedbackQuestion": "",
"thankYou": "",
"sorryFeedback": "",
"liveStreaming": "",
"streamKey": "",
"startLiveStreaming": "",
"stopStreamingWarning": "",
"stopRecordingWarning": "",
"stopLiveStreaming": "",
"stopRecording": "",
"doNotShowWarningAgain": "",
"permissionDenied": "",
"screenSharingPermissionDeniedError": "",
"micErrorPresent": "",
"cameraErrorPresent": "",
"cameraUnsupportedResolutionError": "",
"cameraUnknownError": "",
"cameraPermissionDeniedError": "",
"cameraNotFoundError": "",
"cameraConstraintFailedError": "",
"micUnknownError": "",
"micPermissionDeniedError": "",
"micNotFoundError": "",
"micConstraintFailedError": ""
},
"email": {
"sharedKey": [
"Ta konferenca je zaklenjena z geslom. Uporabite sledeči PIN ko se pridružite:",
"",
"",
"__sharedKey__",
"",
""
],
"sharedKey": "",
"subject": "Povabilo na __appName__ (__conferenceName__)",
"body": [
"Pozdravljeni,",
@@ -242,8 +303,23 @@
"ATTACHED": "Priključeno"
},
"recording": {
"toaster": "Trenutno poteka snemanje!",
"pending": "Snemanje se bo začelo takoj, ko se bo pridružil drugi udeleženec",
"on": "Snemanje se je začelo"
"pending": "",
"on": "",
"off": "",
"failedToStart": "",
"buttonTooltip": "",
"error": "",
"unavailable": ""
},
"liveStreaming": {
"pending": "",
"on": "",
"off": "",
"unavailable": "",
"failedToStart": "",
"buttonTooltip": "",
"streamIdRequired": "",
"error": "",
"busy": ""
}
}

View File

@@ -3,17 +3,42 @@
"connectionsettings": "Anslutningsinställningar",
"poweredby": "drivs av",
"downloadlogs": "Hämta loggar",
"feedback": "",
"feedback": "Ge oss din feedback",
"roomUrlDefaultMsg": "Din konferens håller på att skapas...",
"participant": "Deltagare",
"me": "jag",
"speaker": "Talare",
"defaultNickname": "t ex. __namn__",
"defaultPreziLink": "t ex. __url__",
"raisedHand": "",
"defaultNickname": "",
"defaultLink": "t ex. __url__",
"calling": "",
"userMedia": {
"react-nativeGrantPermissions": "",
"chromeGrantPermissions": "",
"androidGrantPermissions": "",
"firefoxGrantPermissions": "",
"operaGrantPermissions": "",
"iexplorerGrantPermissions": "",
"safariGrantPermissions": "",
"nwjsGrantPermissions": ""
},
"keyboardShortcuts": {
"keyboardShortcuts": "",
"raiseHand": "",
"pushToTalk": "",
"toggleScreensharing": "",
"toggleFilmstrip": "",
"toggleShortcuts": "",
"focusLocal": "",
"focusRemote": "",
"toggleChat": "",
"mute": "",
"videoMute": ""
},
"welcomepage": {
"go": "KÖR",
"roomname": "Skriv in rumsnamn",
"disable": "Visa inte den här sidan nästa gång jag kommer hit",
"disable": "",
"feature1": {
"title": "Enkelt att använda",
"content": "Ingen nedladdning behövs. __app__ fungerar direkt inuti din webbläsare. Dela bara din konferens-URL med andra för att börja."
@@ -51,12 +76,11 @@
"mute": "Slå av/på ljud",
"videomute": "Starta / stoppa kamera",
"authenticate": "Autentisera",
"record": "Spela in",
"lock": "Lås / lås upp rum",
"invite": "Bjud in andra",
"chat": "Öppna / stäng chat",
"prezi": "Dela Prezi",
"etherpad": "Delat dokument",
"sharedvideo": "",
"sharescreen": "Dela skärm",
"fullscreen": "Aktivera / avaktivera helskärm",
"sip": "Ring SIP-nummer",
@@ -64,7 +88,12 @@
"hangup": "Lägg på",
"login": "Logga in",
"logout": "Logga ut",
"dialpad": "Visa knappsats"
"dialpad": "Visa knappsats",
"sharedVideoMutedPopup": "",
"micMutedPopup": "",
"unableToUnmutePopup": "",
"cameraDisabled": "",
"micDisabled": ""
},
"bottomtoolbar": {
"chat": "Öppna / stäng chat",
@@ -82,8 +111,15 @@
"title": "INSTÄLLNINGAR",
"update": "Uppdatera",
"name": "Namn",
"startAudioMuted": "starta utan ljud",
"startVideoMuted": "starta utan video"
"startAudioMuted": "",
"startVideoMuted": "",
"selectCamera": "",
"selectMic": "",
"selectAudioOutput": "",
"followMe": "",
"noDevice": "",
"noPermission": "",
"avatarUrl": ""
},
"videothumbnail": {
"editnickname": "Klicka här för att <br/>redigera namn",
@@ -92,7 +128,8 @@
"mute": "Deltagaren har avstängd mikrofon",
"kick": "Sparka ut",
"muted": "Tystad",
"domute": "Tysta"
"domute": "Tysta",
"flip": ""
},
"connectionindicator": {
"bitrate": "Bithastighet:",
@@ -124,7 +161,8 @@
"grantedTo": "Moderatorsrättigheter tilldelat till __to__!",
"grantedToUnknown": "Moderatorsrättigheter tilldelat till $t(somebody)!",
"muted": "Du har startat konversationen utan mikrofon.",
"mutedTitle": "Du har mikrofonen avstängd!"
"mutedTitle": "Du har mikrofonen avstängd!",
"raisedHand": ""
},
"dialog": {
"kickMessage": "Aj! Du har sparkats ur mötet!",
@@ -139,6 +177,8 @@
"failtoinstall": "Misslyckades att installera skrivbordsdelnings-tillägget",
"failedpermissions": "Misslyckades med att få tillåtelse att använda lokal mikrofon och/eller kamera.",
"bridgeUnavailable": "Jitsi Videobridge är för tillfället inte tillgänglig. Vänligen försök senare!",
"jicofoUnavailable": "",
"maxUsersLimitReached": "",
"lockTitle": "Låsning misslyckades",
"lockMessage": "Misslyckades att låsa konferensen.",
"warning": "Varning",
@@ -152,11 +192,12 @@
"defaultError": "Det uppstod någon typ av fel",
"passwordRequired": "Lösenord krävs",
"Ok": "Ok",
"removePreziTitle": "Ta bort Prezi",
"removePreziMsg": "Är du säker på att du vill ta bort din Prezi?",
"sharePreziTitle": "Dela en Prezi",
"sharePreziMsg": "En annan deltagare delar redan en Prezi. Den här konferensen tillåter bara en Prezi i taget.",
"Remove": "Ta bort",
"shareVideoTitle": "",
"shareVideoLinkError": "",
"removeSharedVideoTitle": "",
"removeSharedVideoMsg": "",
"alreadySharedVideoMsg": "",
"WaitingForHost": "Väntar på värden ...",
"WaitForHostMsg": "Konferensen <b>__room__</b> har inte startat än. Om du är värd för konferensen, vänligen logga in. Annars, vänta kvar på att konferensvärden kommer.",
"IamHost": "Jag är värd",
@@ -168,8 +209,8 @@
"hungUp": "Du lade på",
"joinAgain": "Anslut igen",
"Share": "Dela",
"preziLinkError": "Vänligen skriv in en korrekt prezi-länk.",
"Save": "Spara",
"recording": "",
"recordingToken": "Skriv in inspelnings-token",
"Dial": "Ring upp",
"sipMsg": "Skriv in SIP-nummer",
@@ -190,14 +231,36 @@
"password": "lösenord",
"userPassword": "användarlösenord",
"token": "token",
"tokenAuthFailed": "",
"displayNameRequired": "Vänligen skriv in ditt visningsnamn:",
"tokenAuthFailed": "Misslyckades att autentisera mot XMPP-server: ogiltig token",
"displayNameRequired": "",
"extensionRequired": "Tillägg krävs:",
"firefoxExtensionPrompt": "Du behöver installera ett Firefox-tillägg för att kunna använda skärmdelning. Vänligen försök igen efter att du <a href='__url__'>hämtat det här</a>!",
"feedbackQuestion": "",
"thankYou": "",
"sorryFeedback": ""
"feedbackQuestion": "Hur upplevde du samtalet?",
"thankYou": "Tack för att du använder __appName__!",
"sorryFeedback": "Tråkigt att du känner så. Vill du berätta mer?",
"liveStreaming": "",
"streamKey": "",
"startLiveStreaming": "",
"stopStreamingWarning": "",
"stopRecordingWarning": "",
"stopLiveStreaming": "",
"stopRecording": "",
"doNotShowWarningAgain": "",
"permissionDenied": "",
"screenSharingPermissionDeniedError": "",
"micErrorPresent": "",
"cameraErrorPresent": "",
"cameraUnsupportedResolutionError": "",
"cameraUnknownError": "",
"cameraPermissionDeniedError": "",
"cameraNotFoundError": "",
"cameraConstraintFailedError": "",
"micUnknownError": "",
"micPermissionDeniedError": "",
"micNotFoundError": "",
"micConstraintFailedError": ""
},
"\u0005dialog": {},
"email": {
"sharedKey": [
"Den här konferensen är lösenordsskyddad. Vänligen använd följande kod när du kopplar upp dig:",
@@ -239,8 +302,23 @@
"ATTACHED": "Ansluten"
},
"recording": {
"toaster": "Spelar nu in!",
"pending": "Din inspelning kommer att starta så snart andra deltagare ansluter",
"on": "Inspelningen har startats"
"pending": "",
"on": "",
"off": "",
"failedToStart": "",
"buttonTooltip": "",
"error": "",
"unavailable": ""
},
"liveStreaming": {
"pending": "",
"on": "",
"off": "",
"unavailable": "",
"failedToStart": "",
"buttonTooltip": "",
"streamIdRequired": "",
"error": "",
"busy": ""
}
}

View File

@@ -3,10 +3,42 @@
"connectionsettings": "Bağlantı Ayarları",
"poweredby": "Gücünün kaynağı",
"downloadlogs": "Günlükleri indir",
"feedback": "",
"roomUrlDefaultMsg": "",
"participant": "",
"me": "",
"speaker": "",
"raisedHand": "",
"defaultNickname": "",
"defaultLink": "",
"calling": "",
"userMedia": {
"react-nativeGrantPermissions": "",
"chromeGrantPermissions": "",
"androidGrantPermissions": "",
"firefoxGrantPermissions": "",
"operaGrantPermissions": "",
"iexplorerGrantPermissions": "",
"safariGrantPermissions": "",
"nwjsGrantPermissions": ""
},
"keyboardShortcuts": {
"keyboardShortcuts": "",
"raiseHand": "",
"pushToTalk": "",
"toggleScreensharing": "",
"toggleFilmstrip": "",
"toggleShortcuts": "",
"focusLocal": "",
"focusRemote": "",
"toggleChat": "",
"mute": "",
"videoMute": ""
},
"welcomepage": {
"go": "GİT",
"roomname": "Oda adı girin",
"disable": "Sonraki girişimde bu sayfayı gösterme",
"disable": "",
"feature1": {
"title": "Kullanımı kolay",
"content": "İndirmeye gerek yok. __app__ tarayıcınızda doğrudan çalışır. Başlamak için görüşme bağlantısını URL diğerleri ile paylaşın."
@@ -17,7 +49,7 @@
},
"feature3": {
"title": "Açık kaynak kodlu",
"content": "__app__ MIT ile lisanslanmıştır. Bu lisansa uygun olarak indirmek, kullanmak, değiştirmek ve paylaşmakta özgürsün."
"content": ""
},
"feature4": {
"title": "Sınırsız sayıda kullanıcı",
@@ -43,25 +75,30 @@
"toolbar": {
"mute": "Sessiz / Sesli",
"videomute": "Kamera başlat / durdur",
"authenticate": "",
"record": "Kaydet",
"authenticate": "Kimlik doğrula",
"lock": "Odayı kilitle / kilit aç",
"invite": "Arkadaşlarını davet et",
"chat": "",
"prezi": "Prezi paylaş",
"chat": "Sohbeti aç / kapa",
"etherpad": "Paylaşımlı belge",
"sharedvideo": "",
"sharescreen": "Ekran paylaş",
"fullscreen": "Tam Ekrana Gir / Çık",
"sip": "SIP numara ara",
"Settings": "Ayarlar",
"hangup": "Kapat",
"login": "Oturum aç",
"logout": ""
"logout": "Oturum kapat",
"dialpad": "",
"sharedVideoMutedPopup": "",
"micMutedPopup": "",
"unableToUnmutePopup": "",
"cameraDisabled": "",
"micDisabled": ""
},
"bottomtoolbar": {
"chat": "Sohbeti aç / kapa",
"filmstrip": "Kişi listesi aç / kapa",
"contactlist": "Film şeridini göster / gizle"
"filmstrip": "Film şeridini göster / gizle",
"contactlist": "Kişi listesi aç / kapa"
},
"chat": {
"nickname": {
@@ -73,7 +110,16 @@
"settings": {
"title": "AYARLAR",
"update": "Güncelle",
"name": "Ad"
"name": "Ad",
"startAudioMuted": "",
"startVideoMuted": "",
"selectCamera": "",
"selectMic": "",
"selectAudioOutput": "",
"followMe": "",
"noDevice": "",
"noPermission": "",
"avatarUrl": ""
},
"videothumbnail": {
"editnickname": "Görünür adınızı değiştirmek<br/>için tıkla",
@@ -82,7 +128,8 @@
"mute": "Katılımcı sessiz",
"kick": "Kovuldu",
"muted": "Sessiz",
"domute": "Sustur"
"domute": "Sustur",
"flip": ""
},
"connectionindicator": {
"bitrate": "Bit hızı:",
@@ -108,20 +155,26 @@
"focus": "Görüşme odağı",
"focusFail": "__component__ uygun değil - __ms__ saniye içinde tekrar deneyin",
"grantedTo": "__to__, görüşme yöneticisi hakları verildi!",
"grantedToUnknown": "$t(somebody), görüşme yöneticisi hakları verildi!"
"grantedToUnknown": "$t(somebody), görüşme yöneticisi hakları verildi!",
"muted": "",
"mutedTitle": "",
"raisedHand": ""
},
"dialog": {
"kickMessage": "Ahhh! Görüşmeden, kavuldun!",
"popupError": "Tarayıcınız bu siteden açılır pencereleri engelliyor. Lütfen, tarayıcınızın güvenlik ayarlarında pop-up etkinleştirin ve tekrar deneyin.",
"passwordError": "Bu görüşme şu anda bir parola ile korunmaktadır. Sadece görüşmenin sahibi bir parola ayarlayabilir.",
"passwordError2": "Bu görüşme şu anda bir parola ile korunmamaktadır. Sadece görüşmenin sahibi bir parola ayarlayabilir.",
"joinError": "Amanin boo! Görüşmeye katılamadık. Güvenlik yapılandırması ile ilgili bir sorun olabilir. Hizmet yöneticisi ile bağlantı kurun.",
"popupError": "",
"passwordError": "",
"passwordError2": "",
"connectError": "Amanin boo! Birşeyler ters gitti ve görüşmeye bağlanamadık.",
"connectErrorWithMsg": "Amanin boo! Birşeyler ters gitti ve görüşmeye bağlanamadık.",
"connecting": "",
"error": "Hata",
"detectext": "Ekran paylaşımı eklentisi tespit edilirken hata.",
"failtoinstall": "Masaüstü paylaşım eklentisi yüklenemedi",
"failedpermissions": "Yerel mikrofon ve/veya kamerayı kullanmak için izinler alınamadı.",
"bridgeUnavailable": "Jitsi Videobridge şu anda kullanılamıyor. Daha sonra tekrar deneyiniz!",
"jicofoUnavailable": "",
"maxUsersLimitReached": "",
"lockTitle": "Kilitlenemedi",
"lockMessage": "Görüşme kilitlenemedi.",
"warning": "Uyarı",
@@ -135,23 +188,25 @@
"defaultError": "Bir tür hata var",
"passwordRequired": "Parola gerekli",
"Ok": "Tamam",
"removePreziTitle": "Prezi kaldır",
"removePreziMsg": "Prezi kaldırmak istediğinizden emin misiniz?",
"sharePreziTitle": "Bir Prezi paylaşın",
"sharePreziMsg": "Diğer katılımcı hala bir Prezi paylaşıyor.Bu görüşme aynı zamanda sadece bir Prezi izin verir.",
"Remove": "Kaldır",
"Stop": "Durdur",
"AuthMsg": "Oda oluşturmak için kimlik doğrulama gerekli:<br/><b>__room__ </b></br> Oda oluşturmak için ya kimlik doğrulamalı ya da bunu yapması için bir başkasını beklemelisiniz.",
"Authenticate": "Kimlik doğrula",
"shareVideoTitle": "",
"shareVideoLinkError": "",
"removeSharedVideoTitle": "",
"removeSharedVideoMsg": "",
"alreadySharedVideoMsg": "",
"WaitingForHost": "",
"WaitForHostMsg": "",
"IamHost": "",
"Cancel": "İptal",
"retry": "",
"logoutTitle": "Oturum kapat",
"logoutQuestion": "Oturumu ve görüşmeyi sonlandırmak istediğinizden emin misiniz?",
"sessTerminated": "Oturum sonlandırıldı",
"hungUp": "Görüşmeyi bitirdiniz",
"hungUp": "",
"joinAgain": "Yeniden katıl",
"Share": "Paylaş",
"preziLinkError": "Lütfen doğru prezi bağlantısı verin.",
"Save": "Kaydet",
"recording": "",
"recordingToken": "Kayıt jetonu girin",
"Dial": "Ara",
"sipMsg": "SIP numarası gir",
@@ -168,6 +223,77 @@
"gracefulShutdown": "Hizmetimiz bakıp için durduruldu. Daha sonra tekrar deneyiniz.",
"Yes": "Evet",
"reservationError": "Rezervasyon sistemi hatası",
"reservationErrorMsg": "Hata kodu: __code__, mesaj: __msg__"
"reservationErrorMsg": "Hata kodu: __code__, mesaj: __msg__",
"password": "",
"userPassword": "parolanız",
"token": "",
"tokenAuthFailed": "",
"displayNameRequired": "",
"extensionRequired": "",
"firefoxExtensionPrompt": "",
"feedbackQuestion": "",
"thankYou": "",
"sorryFeedback": "",
"liveStreaming": "",
"streamKey": "",
"startLiveStreaming": "",
"stopStreamingWarning": "",
"stopRecordingWarning": "",
"stopLiveStreaming": "",
"stopRecording": "",
"doNotShowWarningAgain": "",
"permissionDenied": "",
"screenSharingPermissionDeniedError": "",
"micErrorPresent": "",
"cameraErrorPresent": "",
"cameraUnsupportedResolutionError": "",
"cameraUnknownError": "",
"cameraPermissionDeniedError": "",
"cameraNotFoundError": "",
"cameraConstraintFailedError": "",
"micUnknownError": "",
"micPermissionDeniedError": "",
"micNotFoundError": "",
"micConstraintFailedError": ""
},
"\u0005dialog": {},
"email": {
"sharedKey": "",
"subject": "",
"body": "",
"and": ""
},
"connection": {
"ERROR": "Hata",
"CONNECTING": "",
"RECONNECTING": "",
"CONNFAIL": "",
"AUTHENTICATING": "Kimlik doğrula",
"AUTHFAIL": "",
"CONNECTED": "bağlandı",
"DISCONNECTED": "bağlantı kesildi",
"DISCONNECTING": "bağlantı kesildi",
"ATTACHED": ""
},
"\u0005connection": {},
"recording": {
"pending": "",
"on": "",
"off": "",
"failedToStart": "",
"buttonTooltip": "",
"error": "",
"unavailable": ""
},
"liveStreaming": {
"pending": "",
"on": "",
"off": "",
"unavailable": "",
"failedToStart": "",
"buttonTooltip": "",
"streamIdRequired": "",
"error": "",
"busy": ""
}
}

View File

@@ -1,5 +1,5 @@
{
"contactlist": "CONTACT LIST",
"contactlist": "ON CALL (__participants__)",
"connectionsettings": "Connection Settings",
"poweredby": "powered by",
"downloadlogs": "Download logs",
@@ -8,12 +8,37 @@
"participant": "Participant",
"me": "me",
"speaker": "Speaker",
"defaultNickname": "ex. __name__",
"defaultPreziLink": "e.g. __url__",
"raisedHand": "Would like to speak",
"defaultNickname": "ex. Jane Pink",
"defaultLink": "e.g. __url__",
"callingName": "__name__",
"userMedia": {
"react-nativeGrantPermissions": "Please grant permissions to use your camera and microphone by pressing <b><i>Allow</i></b> button",
"chromeGrantPermissions": "Please grant permissions to use your camera and microphone by pressing <b><i>Allow</i></b> button",
"androidGrantPermissions": "Please grant permissions to use your camera and microphone by pressing <b><i>Allow</i></b> button",
"firefoxGrantPermissions": "Please grant permissions to use your camera and microphone by pressing <b><i>Share Selected Device</i></b> button",
"operaGrantPermissions": "Please grant permissions to use your camera and microphone by pressing <b><i>Allow</i></b> button",
"iexplorerGrantPermissions": "Please grant permissions to use your camera and microphone by pressing <b><i>OK</i></b> button",
"safariGrantPermissions": "Please grant permissions to use your camera and microphone by pressing <b><i>OK</i></b> button",
"nwjsGrantPermissions": "Please grant permissions to use your camera and microphone"
},
"keyboardShortcuts": {
"keyboardShortcuts": "Keyboard shortcuts:",
"raiseHand": "Raise your hand.",
"pushToTalk": "Push to talk.",
"toggleScreensharing": "Switch between camera and screensharing.",
"toggleFilmstrip": "Show or hide the videos.",
"toggleShortcuts": "Show or hide this help menu.",
"focusLocal": "Focus on the local video.",
"focusRemote": "Focus on one of the remote videos.",
"toggleChat": "Open or close the chat panel.",
"mute": "Mute or unmute the microphone.",
"videoMute": "Stop or start the local video."
},
"welcomepage":{
"go": "GO",
"roomname": "Enter room name",
"disable": "Don't show this page the next time I enter",
"disable": "Don't show this page again",
"feature1": {
"title": "Simple to use",
"content": "No downloads required. __app__ works directly within your browser. Simply share your conference URL with others to get started."
@@ -51,12 +76,11 @@
"mute": "Mute / Unmute",
"videomute": "Start / stop camera",
"authenticate": "Authenticate",
"record": "Record",
"lock": "Lock / unlock room",
"invite": "Invite others",
"chat": "Open / close chat",
"prezi": "Share Prezi",
"etherpad": "Shared document",
"sharedvideo": "Share a YouTube video",
"sharescreen": "Share screen",
"fullscreen": "Enter / Exit Full Screen",
"sip": "Call SIP number",
@@ -64,11 +88,17 @@
"hangup": "Hang Up",
"login": "Login",
"logout": "Logout",
"dialpad": "Show dialpad"
"dialpad": "Show dialpad",
"sharedVideoMutedPopup": "Your shared video has been muted so<br/>that you can talk to the other participants.",
"micMutedPopup": "Your microphone has been muted so that you<br/>would fully enjoy your shared video.",
"unableToUnmutePopup": "You cannot un-mute while the shared video is on.",
"cameraDisabled": "Camera is not available",
"micDisabled": "Microphone is not available",
"filmstrip": "Show / hide videos"
},
"bottomtoolbar": {
"chat": "Open / close chat",
"filmstrip": "Show / hide film strip",
"filmstrip": "Show / hide videos",
"contactlist": "Open / close contact list"
},
"chat":{
@@ -83,8 +113,24 @@
"title": "SETTINGS",
"update": "Update",
"name": "Name",
"startAudioMuted": "start without audio",
"startVideoMuted": "start without video"
"startAudioMuted": "Everyone starts muted",
"startVideoMuted": "Everyone starts hidden",
"selectCamera": "Select camera",
"selectMic": "Select microphone",
"selectAudioOutput": "Select audio output",
"followMe": "Everyone follows me",
"noDevice": "None",
"noPermission": "Permission to use device is not granted",
"cameraAndMic": "Camera and microphone",
"moderator": "MODERATOR",
"password": "SET PASSWORD",
"audioVideo": "AUDIO / VIDEO",
"setPasswordLabel": "Lock your room with a password."
},
"profile": {
"title": "PROFILE",
"setDisplayNameLabel": "Set your display name",
"setEmailLabel": "Set your gravatar email"
},
"videothumbnail":
{
@@ -94,7 +140,8 @@
"mute": "Participant is muted",
"kick": "Kick out",
"muted": "Muted",
"domute": "Mute"
"domute": "Mute",
"flip": "Flip"
},
"connectionindicator":
@@ -128,7 +175,8 @@
"grantedTo": "Moderator rights granted to __to__!",
"grantedToUnknown": "Moderator rights granted to $t(somebody)!",
"muted": "You have started the conversation muted.",
"mutedTitle": "You're muted!"
"mutedTitle": "You're muted!",
"raisedHand": "Would like to speak."
},
"dialog": {
"kickMessage": "Ouch! You have been kicked out of the meet!",
@@ -143,6 +191,8 @@
"failtoinstall": "Failed to install desktop sharing extension",
"failedpermissions": "Failed to obtain permissions to use the local microphone and/or camera.",
"bridgeUnavailable": "Jitsi Videobridge is currently unavailable. Please try again later!",
"jicofoUnavailable": "Jicofo is currently unavailable. Please try again later!",
"maxUsersLimitReached": "The limit for maximum number of participants in the conference has been reached. The conference is full. Please try again later!",
"lockTitle": "Lock failed",
"lockMessage": "Failed to lock the conference.",
"warning": "Warning",
@@ -156,11 +206,12 @@
"defaultError": "There was some kind of error",
"passwordRequired": "Password required",
"Ok": "Ok",
"removePreziTitle": "Remove Prezi",
"removePreziMsg": "Are you sure you would like to remove your Prezi?",
"sharePreziTitle": "Share a Prezi",
"sharePreziMsg": "Another participant is already sharing a Prezi. This conference allows only one Prezi at a time.",
"Remove": "Remove",
"shareVideoTitle": "Share a video",
"shareVideoLinkError": "Please provide a correct youtube link.",
"removeSharedVideoTitle": "Remove shared video",
"removeSharedVideoMsg": "Are you sure you would like to remove your shared video?",
"alreadySharedVideoMsg": "Another participant is already sharing video. This conference allows only one shared video at a time.",
"WaitingForHost": "Waiting for the host ...",
"WaitForHostMsg": "The conference <b>__room__ </b> has not yet started. If you are the host then please authenticate. Otherwise, please wait for the host to arrive.",
"IamHost": "I am the host",
@@ -172,8 +223,8 @@
"hungUp": "You hung up",
"joinAgain": "Join again",
"Share": "Share",
"preziLinkError": "Please provide a correct prezi link.",
"Save": "Save",
"recording": "Recording",
"recordingToken": "Enter recording token",
"Dial": "Dial",
"sipMsg": "Enter SIP number",
@@ -181,27 +232,54 @@
"Remove": "Remove",
"passwordMsg": "Set a password to lock your room",
"Invite": "Invite",
"shareLink": "Share this link with everyone you want to invite",
"shareLink": "Copy and share this link",
"settings1": "Configure your conference",
"settings2": "Participants join muted",
"settings3": "Require nicknames<br/><br/>Set a password to lock your room:",
"yourPassword": "your password",
"yourPassword": "Enter new password",
"Back": "Back",
"serviceUnavailable": "Service unavailable",
"gracefulShutdown": "Our service is currently down for maintenance. Please try again later.",
"Yes": "Yes",
"reservationError": "Reservation system error",
"reservationErrorMsg": "Error code: __code__, message: __msg__",
"password": "password",
"password": "Enter password",
"userPassword": "user password",
"token": "token",
"tokenAuthFailed": "Failed to authenticate with XMPP server: invalid token",
"displayNameRequired": "Please enter your display name:",
"displayNameRequired": "Please enter your display name",
"extensionRequired": "Extension required:",
"firefoxExtensionPrompt": "You need to install a Firefox extension in order to use screen sharing. Please try again after you <a href='__url__'>get it from here</a>!",
"rateExperience": "Please rate your meeting experience.",
"feedbackHelp": "Your feedback will help us to improve our video experience.",
"feedbackQuestion": "How was your call?",
"thankYou": "Thank you for using __appName__!",
"sorryFeedback": "We're sorry to hear that. Would you like to tell us more?"
"sorryFeedback": "We're sorry to hear that. Would you like to tell us more?",
"liveStreaming": "Live Streaming",
"streamKey": "Stream name/key",
"startLiveStreaming": "Start live streaming",
"stopStreamingWarning": "Are you sure you would like to stop the live streaming?",
"stopRecordingWarning": "Are you sure you would like to stop the recording?",
"stopLiveStreaming": "Stop live streaming",
"stopRecording": "Stop recording",
"doNotShowWarningAgain": "Don't show this warning again",
"permissionDenied": "Permission Denied",
"screenSharingPermissionDeniedError": "You have not granted permission to share your screen.",
"micErrorPresent": "There was an error connecting to your microphone.",
"cameraErrorPresent": "There was an error connecting to your camera.",
"cameraUnsupportedResolutionError": "Your camera does not support required video resolution.",
"cameraUnknownError": "Cannot use camera for a unknown reason.",
"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.",
"cameraNotFoundError": "Camera was not found.",
"cameraConstraintFailedError": "Yor camera does not satisfy some of required constraints.",
"micUnknownError": "Cannot use microphone for a unknown reason.",
"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.",
"micNotFoundError": "Microphone was not found.",
"micConstraintFailedError": "Yor microphone does not satisfy some of required constraints.",
"micNotSendingData": "We are unable to access your microphone. Please select another device from the settings menu or try to restart the application.",
"goToStore": "Go to the webstore",
"externalInstallationTitle": "Extension required",
"externalInstallationMsg": "You need to install our desktop sharing extension."
},
"email":
{
@@ -249,8 +327,24 @@
},
"recording":
{
"toaster": "Currently recording!",
"pending": "Your recording will start as soon as another participant joins",
"on": "Recording has been started"
"pending": "Recording waiting for a participant to join...",
"on": "Recording",
"off": "Recording stopped",
"failedToStart": "Recording failed to start",
"buttonTooltip": "Start / stop recording",
"error": "Recording failed. Please try again.",
"unavailable": "The recording service is currently unavailable. Please try again later."
},
"liveStreaming":
{
"pending": "Starting Live Stream...",
"on": "Live Streaming",
"off": "Live Streaming Stopped",
"unavailable": "The live streaming service is currently unavailable. Please try again later.",
"failedToStart": "Live streaming failed to start",
"buttonTooltip": "Start / stop live stream",
"streamIdRequired": "Please fill in the stream id in order to launch the live streaming.",
"error": "Live streaming failed. Please try again.",
"busy": "All recorders are currently busy. Please try again later."
}
}

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