diff --git a/src/resources/js/meet/app.js b/src/resources/js/meet/app.js --- a/src/resources/js/meet/app.js +++ b/src/resources/js/meet/app.js @@ -42,6 +42,7 @@ let publishersContainer let subscribersContainer let scrollStop + let $t OV = ovInit() @@ -105,6 +106,7 @@ * onConnectionChange - Callback for participant changes, e.g. role update, * onSessionDataUpdate - Callback for current user connection update, * onMediaSetup - Called when user clicks the Media setup button + * translate - Translation function */ function joinRoom(data) { // Create a container for subscribers and publishers @@ -119,6 +121,8 @@ // avatar: undefined // avatar image } + $t = data.translate + // Make sure all supported callbacks exist, so we don't have to check // their existence everywhere anymore let events = ['Success', 'Error', 'Destroy', 'Dismiss', 'JoinRequest', 'ConnectionChange', @@ -999,10 +1003,10 @@ '
' + svgIcon('user', 'fas', 'watermark') + '
' - + '' - + '' - + '' - + '' + + '' + + '' + + '' + + '' + '
' + '
' + '' @@ -1214,7 +1218,7 @@ // Append languages selection options Object.keys(sessionData.languages).forEach(code => { - languages.push(``) + languages.push(``) }) // Create the element @@ -1233,21 +1237,21 @@ + 'Dismiss' + '' + '
' - + '' + + '' + '' + '' + '
' + '' + '
' - + '' + + '' + '
' + '
' @@ -1257,7 +1261,7 @@ let nickname = element.find('.meet-nickname') .addClass('btn btn-outline-' + (params.isSelf ? 'primary' : 'secondary')) - .attr({title: 'Options', 'data-toggle': 'dropdown'}) + .attr({title: $t('meet.menu-options'), 'data-toggle': 'dropdown'}) .dropdown({boundary: container.parentNode}) if (params.isSelf) { diff --git a/src/resources/lang/de/ui.php b/src/resources/lang/de/ui.php --- a/src/resources/lang/de/ui.php +++ b/src/resources/lang/de/ui.php @@ -2,19 +2,11 @@ return [ - 'buttons' => [ + 'button' => [ 'cancel' => "Stornieren", 'save' => "Speichern", ], - 'menu' => [ - 'cockpit' => "Cockpit", - 'login' => "Einloggen", - 'logout' => "Ausloggen", - 'signup' => "Signup", - 'toggle' => "Navigation umschalten", - ], - 'lang' => [ 'en' => "Englisch", 'de' => "Deutsch", @@ -27,4 +19,12 @@ 'webmail' => "Webmail", ], + 'menu' => [ + 'cockpit' => "Cockpit", + 'login' => "Einloggen", + 'logout' => "Ausloggen", + 'signup' => "Signup", + 'toggle' => "Navigation umschalten", + ], + ]; diff --git a/src/resources/lang/en/ui.php b/src/resources/lang/en/ui.php --- a/src/resources/lang/en/ui.php +++ b/src/resources/lang/en/ui.php @@ -8,34 +8,171 @@ return [ - 'buttons' => [ + 'button' => [ + 'accept' => "Accept", + 'back' => "Back", 'cancel' => "Cancel", - 'save' => "Save" + 'close' => "Close", + 'continue' => "Continue", + 'deny' => "Deny", + 'save' => "Save", + 'submit' => "Submit", ], - 'menu' => [ - 'cockpit' => "Cockpit", - 'login' => "Login", - 'logout' => "Logout", - 'signup' => "Signup", - 'toggle' => "Toggle navigation" + 'dashboard' => [ + 'beta' => "beta", + ], + + 'distlist' => [ + 'list-title' => "Distribution list | Distribution lists", + 'create' => "Create list", + 'delete' => "Delete list", + 'email' => "Email", + 'list-empty' => "There are no distribution lists in this account.", + 'new' => "New distribution list", + 'recipients' => "Recipients", + ], + + 'form' => [ + 'code' => "Confirmation Code", + 'email' => "Email Address", + 'none' => "none", + 'password' => "Password", + 'password-confirm' => "Confirm Password", + 'status' => "Status", ], 'lang' => [ 'en' => "English", 'de' => "German", - 'fr' => "French" + 'fr' => "French", + 'it' => "Italian", ], 'login' => [ '2fa' => "Second factor code", '2fa_desc' => "Second factor code is optional for users with no 2-Factor Authentication setup.", - 'email' => "Email address", 'forgot_password' => "Forgot password?", 'header' => "Please sign in", - 'password' => "Password", 'sign_in' => "Sign in", 'webmail' => "Webmail" ], + 'meet' => [ + 'title' => "Voice & Video Conferencing", + 'welcome' => "Welcome to our beta program for Voice & Video Conferencing.", + 'url' => "You have a room of your own at the URL below. This room is only open when you yourself are in attendance. Use this URL to invite people to join you.", + 'notice' => "This is a work in progress and more features will be added over time. Current features include:", + 'sharing' => "Screen Sharing", + 'sharing-text' => "Share your screen for presentations or show-and-tell.", + 'security' => "Room Security", + 'security-text' => "Increase the room security by setting a password that attendees will need to know" + . " before they can enter, or lock the door so attendees will have to knock, and a moderator can accept or deny those requests.", + 'qa' => "Raise Hand (Q&A)", + 'qa-text' => "Silent audience members can raise their hand to facilitate a Question & Answer session with the panel members.", + 'moderation' => "Moderator Delegation", + 'moderation-text' => "Delegate moderator authority for the session, so that a speaker is not needlessly" + . " interrupted with attendees knocking and other moderator duties.", + 'eject' => "Eject Attendees", + 'eject-text' => "Eject attendees from the session in order to force them to reconnect, or address policy" + . " violations. Click the user icon for effective dismissal.", + 'silent' => "Silent Audience Members", + 'silent-text' => "For a webinar-style session, configure the room to force all new attendees to be silent audience members.", + 'interpreters' => "Language Specific Audio Channels", + 'interpreters-text' => "Designate a participant to interpret the original audio to a target language, for sessions" + . " with multi-lingual attendees. The interpreter is expected to be able to relay the original audio, and override it.", + 'beta-notice' => "Keep in mind that this is still in beta and might come with some issues." + . " Should you encounter any on your way, let us know by contacting support.", + + // Room options dialog + 'options' => "Room options", + 'password' => "Password", + 'password-none' => "none", + 'password-clear' => "Clear password", + 'password-set' => "Set password", + 'password-text' => "You can add a password to your meeting. Participants will have to provide the password before they are allowed to join the meeting.", + 'lock' => "Locked room", + 'lock-text' => "When the room is locked participants have to be approved by a moderator before they could join the meeting.", + 'nomedia' => "Subscribers only", + 'nomedia-text' => "Forces all participants to join as subscribers (with camera and microphone turned off)." + . " Moderators will be able to promote them to publishers throughout the session.", + + // Room menu + 'partcnt' => "Number of participants", + 'menu-audio-mute' => "Mute audio", + 'menu-audio-unmute' => "Unmute audio", + 'menu-video-mute' => "Mute video", + 'menu-video-unmute' => "Unmute video", + 'menu-screen' => "Share screen", + 'menu-hand-lower' => "Lower hand", + 'menu-hand-raise' => "Raise hand", + 'menu-channel' => "Interpreted language channel", + 'menu-chat' => "Chat", + 'menu-fullscreen' => "Full screen", + 'menu-fullscreen-exit' => "Exit full screen", + 'menu-leave' => "Leave session", + + // Room setup screen + 'setup-title' => "Set up your session", + 'mic' => "Microphone", + 'cam' => "Camera", + 'nick' => "Nickname", + 'nick-placeholder' => "Your name", + 'join' => "JOIN", + 'joinnow' => "JOIN NOW", + 'imaowner' => "I'm the owner", + + // Room + 'qa' => "Q & A", + 'leave-title' => "Room closed", + 'leave-body' => "The session has been closed by the room owner.", + 'media-title' => "Media setup", + 'join-request' => "Join request", + 'join-requested' => "{user} requested to join.", + + // Status messages + 'status-init' => "Checking the room...", + 'status-323' => "The room is closed. Please, wait for the owner to start the session.", + 'status-324' => "The room is closed. It will be open for others after you join.", + 'status-325' => "The room is ready. Please, provide a valid password.", + 'status-326' => "The room is locked. Please, enter your name and try again.", + 'status-327' => "Waiting for permission to join the room.", + 'status-404' => "The room does not exist.", + 'status-429' => "Too many requests. Please, wait.", + 'status-500' => "Failed to connect to the room. Server error.", + + // Other menus + 'media-setup' => "Media setup", + 'perm' => "Permissions", + 'perm-av' => "Audio & Video publishing", + 'perm-mod' => "Moderation", + 'lang-int' => "Language interpreter", + 'menu-options' => "Options", + ], + + 'menu' => [ + 'cockpit' => "Cockpit", + 'login' => "Login", + 'logout' => "Logout", + 'signup' => "Signup", + 'toggle' => "Toggle navigation", + ], + + 'msg' => [ + 'loading' => "Loading...", + 'notfound' => "Resource not found.", + ], + + 'nav' => [ + 'step' => "Step {i}/{n}", + ], + + 'password' => [ + 'reset' => "Password Reset", + 'reset-step1' => "Enter your email address to reset your password.", + 'reset-step1-hint' => "You may need to check your spam folder or unblock {email}.", + 'reset-step2' => "We sent out a confirmation code to your external email address." + . " Enter the code we sent you, or click the link in the message.", + ], + ]; diff --git a/src/resources/views/layouts/app.blade.php b/src/resources/views/layouts/app.blade.php --- a/src/resources/views/layouts/app.blade.php +++ b/src/resources/views/layouts/app.blade.php @@ -6,7 +6,7 @@ - {{ config('app.name') }} -- @yield('title') + {{ config('app.name') }} {{-- TODO: PWA disabled for now: @laravelPWA --}} diff --git a/src/resources/views/root.blade.php b/src/resources/views/root.blade.php --- a/src/resources/views/root.blade.php +++ b/src/resources/views/root.blade.php @@ -1,5 +1,4 @@ @extends('layouts.app') -@section('title', "Home") @section('content')
diff --git a/src/resources/vue/Distlist/Info.vue b/src/resources/vue/Distlist/Info.vue --- a/src/resources/vue/Distlist/Info.vue +++ b/src/resources/vue/Distlist/Info.vue @@ -5,33 +5,33 @@
- Distribution list + {{ $tc('distlist.list-title', 1) }}
-
New distribution list
+
{{ $t('distlist.new') }}
- +
{{ $root.distlistStatusText(list) }}
- +
- +
- +
diff --git a/src/resources/vue/Distlist/List.vue b/src/resources/vue/Distlist/List.vue --- a/src/resources/vue/Distlist/List.vue +++ b/src/resources/vue/Distlist/List.vue @@ -3,16 +3,16 @@
- Distribution lists + {{ $tc('distlist.list-title', 2) }} - Create list + {{ $t('distlist.create') }}
- + @@ -25,7 +25,7 @@ - +
Email{{ $t('distlist.email') }}
There are no distribution lists in this account.{{ $t('distlist.list-empty') }}
diff --git a/src/resources/vue/Login.vue b/src/resources/vue/Login.vue --- a/src/resources/vue/Login.vue +++ b/src/resources/vue/Login.vue @@ -6,21 +6,21 @@