text: const axios = require('axios');
  const conf = require('./conf');
  const logger = require('./logger');
  const api = require('./api');
  
  const DEFAULT_LANGUAGE = 'en';
  
  const { config } = conf;
  
  const fetchLocale = async (client) => {
    const { lang } = config.browser;
    logger.info(`Fetching ${lang} locale`);
    const url = `${client}/locale?locale=${lang}`;
  
    return axios.get(url);
  };
  
  const fetchLocaleJSON = async (client, locale) => {
    const json = `${client}/locales/${locale}.json`;
    let data = {};
    await axios.get(json).then(response => {
      if (response.status === 200) data = response.data;
      else logger.error(`Could not fetch ${json} data`);
    }).catch(error => {
      logger.error(error);
    });
  
    return data;
  };
  
  const fetchFallbackLocale = async (client) => {
    logger.debug(`Fetching ${DEFAULT_LANGUAGE} fallback locale`);
    const fallback = await fetchLocaleJSON(client, DEFAULT_LANGUAGE);
  
    return fallback;
  };
  
  const fetchRegionLocale = async (client, locale) => {
    let region = {};
  
    if (locale) {
      logger.debug(`Fetching ${locale} region locale`);
      region = await fetchLocaleJSON(client, locale);
    }
  
    return region;
  };
  
  const fetchNormalizedLocale = async (client, locale) => {
    let normalized = {};
  
    if (locale) {
      logger.debug(`Fetching ${locale} normalized locale`);
      normalized = await fetchLocaleJSON(client, locale);
    }
  
    return normalized;
  };
  
  const mergeLocales = (...locales) => {
    let data = {};
    for (const index in locales) {
      data = Object.assign(data, locales[index]);
    }
  
    return data;
  };
  
  module.exports = {
    get: async (options) => {
      return {
        'app.home.greeting': 'Your presentation will begin shortly ...',
        'app.chat.submitLabel': 'Send message',
        'app.chat.loading': 'Chat messages loaded: {0}%',
        'app.chat.errorMaxMessageLength': 'The message is {0} characters(s) too long',
        'app.chat.disconnected': "You are disconnected, messages can't be sent",
        'app.chat.locked': "Chat is locked, messages can't be sent",
        'app.chat.inputLabel': 'Message input for chat {0}',
        'app.chat.inputPlaceholder': 'Send message to {0}',
        'app.chat.titlePublic': 'Public Chat',
        'app.chat.titlePrivate': 'Private Chat with {0}',
        'app.chat.partnerDisconnected': '{0} has left the meeting',
        'app.chat.closeChatLabel': 'Close {0}',
        'app.chat.hideChatLabel': 'Hide {0}',
        'app.chat.moreMessages': 'More messages below',
        'app.chat.dropdown.options': 'Chat options',
        'app.chat.dropdown.clear': 'Clear',
        'app.chat.dropdown.copy': 'Copy',
        'app.chat.dropdown.save': 'Save',
        'app.chat.label': 'Chat',
        'app.chat.offline': 'Offline',
        'app.chat.pollResult': 'Poll Results',
        'app.chat.emptyLogLabel': 'Chat log empty',
        'app.chat.clearPublicChatMessage': 'The public chat history was cleared by a moderator',
        'app.chat.multi.typing': 'Multiple users are typing',
        'app.chat.one.typing': '{0} is typing',
        'app.chat.two.typing': '{0} and {1} are typing',
        'app.captions.label': 'Captions',
        'app.captions.menu.close': 'Close',
        'app.captions.menu.start': 'Start',
        'app.captions.menu.ariaStart': 'Start writing captions',
        'app.captions.menu.ariaStartDesc': 'Opens captions editor and closes the modal',
        'app.captions.menu.select': 'Select available language',
        'app.captions.menu.ariaSelect': 'Captions language',
        'app.captions.menu.subtitle': 'Please select a language and styles for closed captions within your session.',
        'app.captions.menu.title': 'Closed captions',
        'app.captions.menu.fontSize': 'Size',
        'app.captions.menu.fontColor': 'Text color',
        'app.captions.menu.fontFamily': 'Font',
        'app.captions.menu.backgroundColor': 'Background color',
        'app.captions.menu.previewLabel': 'Preview',
        'app.captions.menu.cancelLabel': 'Cancel',
        'app.captions.pad.hide': 'Hide closed captions',
        'app.captions.pad.tip': 'Press Esc to focus editor toolbar',
        'app.captions.pad.ownership': 'Take over',
        'app.captions.pad.ownershipTooltip': 'You will be assigned as the owner of {0} captions',
        'app.captions.pad.interimResult': 'Interim results',
        'app.captions.pad.dictationStart': 'Start dictation',
        'app.captions.pad.dictationStop': 'Stop dictation',
        'app.captions.pad.dictationOnDesc': 'Turns speech recognition on',
        'app.captions.pad.dictationOffDesc': 'Turns speech recognition off',
        'app.captions.pad.speechRecognitionStop': 'Speech recognition stopped due to the browser incompatibility or some time of silence',
        'app.textInput.sendLabel': 'Send',
        'app.note.title': 'Shared Notes',
        'app.note.label': 'Note',
        'app.note.hideNoteLabel': 'Hide note',
        'app.note.tipLabel': 'Press Esc to focus editor toolbar',
        'app.note.locked': 'Locked',
        'app.user.activityCheck': 'User activity check',
        'app.user.activityCheck.label': 'Check if user is still in meeting ({0})',
        'app.user.activityCheck.check': 'Check',
        'app.userList.usersTitle': 'Users',
        'app.userList.participantsTitle': 'Participants',
        'app.userList.messagesTitle': 'Messages',
        'app.userList.notesTitle': 'Notes',
        'app.userList.notesListItem.unreadContent': 'New content is available in the shared notes section',
        'app.userList.captionsTitle': 'Captions',
        'app.userList.presenter': 'Presenter',
        'app.userList.you': 'You',
        'app.userList.locked': 'Locked',
        'app.userList.byModerator': 'by (Moderator)',
        'app.userList.label': 'User list',
        'app.userList.toggleCompactView.label': 'Toggle compact view mode',
        'app.userList.moderator': 'Moderator',
        'app.userList.mobile': 'Mobile',
        'app.userList.guest': 'Guest',
        'app.userList.menuTitleContext': 'Available options',
        'app.userList.chatListItem.unreadSingular': '{0} New Message',
        'app.userList.chatListItem.unreadPlural': '{0} New Messages',
        'app.userList.menu.chat.label': 'Start a private chat',
        'app.userList.menu.clearStatus.label': 'Clear status',
        'app.userList.menu.removeUser.label': 'Remove user',
        'app.userList.menu.removeConfirmation.label': 'Remove user ({0})',
        'app.userlist.menu.removeConfirmation.desc': 'Prevent this user from rejoining the session.',
        'app.userList.menu.muteUserAudio.label': 'Mute user',
        'app.userList.menu.unmuteUserAudio.label': 'Unmute user',
        'app.userList.menu.giveWhiteboardAccess.label': 'Give whiteboard access',
        'app.userList.menu.removeWhiteboardAccess.label': 'Remove whiteboard access',
        'app.userList.userAriaLabel': '{0} {1} {2}  Status {3}',
        'app.userList.menu.promoteUser.label': 'Promote to moderator',
        'app.userList.menu.demoteUser.label': 'Demote to viewer',
        'app.userList.menu.unlockUser.label': 'Unlock {0}',
        'app.userList.menu.lockUser.label': 'Lock {0}',
        'app.userList.menu.directoryLookup.label': 'Directory Lookup',
        'app.userList.menu.makePresenter.label': 'Make presenter',
        'app.userList.userOptions.manageUsersLabel': 'Manage users',
        'app.userList.userOptions.muteAllLabel': 'Mute all users',
        'app.userList.userOptions.muteAllDesc': 'Mutes all users in the meeting',
        'app.userList.userOptions.clearAllLabel': 'Clear all status icons',
        'app.userList.userOptions.clearAllDesc': 'Clears all status icons from users',
        'app.userList.userOptions.muteAllExceptPresenterLabel': 'Mute all users except presenter',
        'app.userList.userOptions.muteAllExceptPresenterDesc': 'Mutes all users in the meeting except the presenter',
        'app.userList.userOptions.unmuteAllLabel': 'Turn off meeting mute',
        'app.userList.userOptions.unmuteAllDesc': 'Unmutes the meeting',
        'app.userList.userOptions.lockViewersLabel': 'Lock viewers',
        'app.userList.userOptions.lockViewersDesc': 'Lock certain functionalities for attendees of the meeting',
        'app.userList.userOptions.guestPolicyLabel': 'Guest policy',
        'app.userList.userOptions.guestPolicyDesc': 'Change meeting guest policy setting',
        'app.userList.userOptions.disableCam': "Viewers' webcams are disabled",
        'app.userList.userOptions.disableMic': "Viewers' microphones are disabled",
        'app.userList.userOptions.disablePrivChat': 'Private chat is disabled',
        'app.userList.userOptions.disablePubChat': 'Public chat is disabled',
        'app.userList.userOptions.disableNote': 'Shared notes are now locked',
        'app.userList.userOptions.hideUserList': 'User list is now hidden for viewers',
        'app.userList.userOptions.webcamsOnlyForModerator': "Only moderators are able to see viewers' webcams (due to lock settings)",
        'app.userList.content.participants.options.clearedStatus': 'Cleared all user status',
        'app.userList.userOptions.enableCam': "Viewers' webcams are enabled",
        'app.userList.userOptions.enableMic': "Viewers' microphones are enabled",
        'app.userList.userOptions.enablePrivChat': 'Private chat is enabled',
        'app.userList.userOptions.enablePubChat': 'Public chat is enabled',
        'app.userList.userOptions.enableNote': 'Shared notes are now enabled',
        'app.userList.userOptions.showUserList': 'User list is now shown to viewers',
        'app.userList.userOptions.enableOnlyModeratorWebcam': 'You can enable your webcam now, everyone will see you',
        'app.userList.userOptions.savedNames.title': 'List of users in meeting {0} at {1}',
        'app.userList.userOptions.sortedFirstName.heading': 'Sorted by first name:',
        'app.userList.userOptions.sortedLastName.heading': 'Sorted by last name:',
        'app.media.label': 'Media',
        'app.media.autoplayAlertDesc': 'Allow Access',
        'app.media.screenshare.start': 'Screenshare has started',
        'app.media.screenshare.end': 'Screenshare has ended',
        'app.media.screenshare.unavailable': 'Screenshare Unavailable',
        'app.media.screenshare.notSupported': 'Screensharing is not supported in this browser.',
        'app.media.screenshare.autoplayBlockedDesc': "We need your permission to show you the presenter's screen.",
        'app.media.screenshare.autoplayAllowLabel': 'View shared screen',
        'app.screenshare.screenshareFinalError': 'Code {0}. Could not share the screen.',
        'app.screenshare.screenshareRetryError': 'Code {0}. Try sharing the screen again.',
        'app.screenshare.screenshareRetryOtherEnvError': 'Code {0}. Could not share the screen. Try again using a different browser or device.',
        'app.screenshare.screenshareUnsupportedEnv': 'Code {0}. Browser is not supported. Try again using a different browser or device.',
        'app.screenshare.screensharePermissionError': 'Code {0}. Permission to capture the screen needs to be granted.',
        'app.meeting.ended': 'This session has ended',
        'app.meeting.meetingTimeRemaining': 'Meeting time remaining: {0}',
        'app.meeting.meetingTimeHasEnded': 'Time ended. Meeting will close soon',
        'app.meeting.endedByUserMessage': 'This session was ended by {0}',
        'app.meeting.endedByNoModeratorMessageSingular': 'The meeting has ended due to no moderator being present after one minute',
        'app.meeting.endedByNoModeratorMessagePlural': 'The meeting has ended due to no moderator being present after {0} minutes',
        'app.meeting.endedMessage': 'You will be forwarded back to the home screen',
        'app.meeting.alertMeetingEndsUnderMinutesSingular': 'Meeting is closing in one minute.',
        'app.meeting.alertMeetingEndsUnderMinutesPlural': 'Meeting is closing in {0} minutes.',
        'app.meeting.alertBreakoutEndsUnderMinutesPlural': 'Breakout is closing in {0} minutes.',
        'app.meeting.alertBreakoutEndsUnderMinutesSingular': 'Breakout is closing in one minute.',
        'app.presentation.hide': 'Hide presentation',
        'app.presentation.notificationLabel': 'Current presentation',
        'app.presentation.downloadLabel': 'Download',
        'app.presentation.slideContent': 'Slide Content',
        'app.presentation.startSlideContent': 'Slide content start',
        'app.presentation.endSlideContent': 'Slide content end',
        'app.presentation.emptySlideContent': 'No content for current slide',
        'app.presentation.presentationToolbar.noNextSlideDesc': 'End of presentation',
        'app.presentation.presentationToolbar.noPrevSlideDesc': 'Start of presentation',
        'app.presentation.presentationToolbar.selectLabel': 'Select slide',
        'app.presentation.presentationToolbar.prevSlideLabel': 'Previous slide',
        'app.presentation.presentationToolbar.prevSlideDesc': 'Change the presentation to the previous slide',
        'app.presentation.presentationToolbar.nextSlideLabel': 'Next slide',
        'app.presentation.presentationToolbar.nextSlideDesc': 'Change the presentation to the next slide',
        'app.presentation.presentationToolbar.skipSlideLabel': 'Skip slide',
        'app.presentation.presentationToolbar.skipSlideDesc': 'Change the presentation to a specific slide',
        'app.presentation.presentationToolbar.fitWidthLabel': 'Fit to width',
        'app.presentation.presentationToolbar.fitWidthDesc': 'Display the whole width of the slide',
        'app.presentation.presentationToolbar.fitScreenLabel': 'Fit to screen',
        'app.presentation.presentationToolbar.fitScreenDesc': 'Display the whole slide',
        'app.presentation.presentationToolbar.zoomLabel': 'Zoom',
        'app.presentation.presentationToolbar.zoomDesc': 'Change the zoom level of the presentation',
        'app.presentation.presentationToolbar.zoomInLabel': 'Zoom in',
        'app.presentation.presentationToolbar.zoomInDesc': 'Zoom in the presentation',
        'app.presentation.presentationToolbar.zoomOutLabel': 'Zoom out',
        'app.presentation.presentationToolbar.zoomOutDesc': 'Zoom out of the presentation',
        'app.presentation.presentationToolbar.zoomReset': 'Reset Zoom',
        'app.presentation.presentationToolbar.zoomIndicator': 'Current zoom percentage',
        'app.presentation.presentationToolbar.fitToWidth': 'Fit to width',
        'app.presentation.presentationToolbar.fitToPage': 'Fit to page',
        'app.presentation.presentationToolbar.goToSlide': 'Slide {0}',
        'app.presentationUploder.title': 'Presentation',
        'app.presentationUploder.message': 'As a presenter you have the ability to upload any office document or PDF file.  We recommend PDF file for best results. Please ensure that a presentation is selected using the circle checkbox on the right hand side.',
        'app.presentationUploder.uploadLabel': 'Upload',
        'app.presentationUploder.confirmLabel': 'Confirm',
        'app.presentationUploder.confirmDesc': 'Save your changes and start the presentation',
        'app.presentationUploder.dismissLabel': 'Cancel',
        'app.presentationUploder.dismissDesc': 'Close the modal window and discard your changes',
        'app.presentationUploder.dropzoneLabel': 'Drag files here to upload',
        'app.presentationUploder.dropzoneImagesLabel': 'Drag images here to upload',
        'app.presentationUploder.browseFilesLabel': 'or browse for files',
        'app.presentationUploder.browseImagesLabel': 'or browse/capture for images',
        'app.presentationUploder.fileToUpload': 'To be uploaded ...',
        'app.presentationUploder.currentBadge': 'Current',
        'app.presentationUploder.rejectedError': 'The selected file(s) have been rejected. Please check the file type(s).',
        'app.presentationUploder.upload.progress': 'Uploading ({0}%)',
        'app.presentationUploder.upload.413': 'File is too large, exceeded the maximum of {0} MB',
        'app.presentationUploder.genericError': 'Oops, Something went wrong ...',
        'app.presentationUploder.upload.408': 'Request upload token timeout.',
        'app.presentationUploder.upload.404': '404: Invalid upload token',
        'app.presentationUploder.upload.401': 'Request presentation upload token failed.',
        'app.presentationUploder.conversion.conversionProcessingSlides': 'Processing page {0} of {1}',
        'app.presentationUploder.conversion.genericConversionStatus': 'Converting file ...',
        'app.presentationUploder.conversion.generatingThumbnail': 'Generating thumbnails ...',
        'app.presentationUploder.conversion.generatedSlides': 'Slides generated ...',
        'app.presentationUploder.conversion.generatingSvg': 'Generating SVG images ...',
        'app.presentationUploder.conversion.pageCountExceeded': 'Number of pages exceeded maximum of {0}',
        'app.presentationUploder.conversion.officeDocConversionInvalid': 'Failed to process office document. Please upload a PDF instead.',
        'app.presentationUploder.conversion.officeDocConversionFailed': 'Failed to process office document. Please upload a PDF instead.',
        'app.presentationUploder.conversion.pdfHasBigPage': 'We could not convert the PDF file, please try optimizing it. Max page size {0}',
        'app.presentationUploder.conversion.timeout': 'Ops, the conversion took too long',
        'app.presentationUploder.conversion.pageCountFailed': 'Failed to determine the number of pages.',
        'app.presentationUploder.conversion.unsupportedDocument': 'File extension not supported',
        'app.presentationUploder.isDownloadableLabel': 'Presentation download is not allowed - click to allow presentation to be downloaded',
        'app.presentationUploder.isNotDownloadableLabel': 'Presentation download is allowed - click to disallow presentation to be downloaded',
        'app.presentationUploder.removePresentationLabel': 'Remove presentation',
        'app.presentationUploder.setAsCurrentPresentation': 'Set presentation as current',
        'app.presentationUploder.tableHeading.filename': 'File name',
        'app.presentationUploder.tableHeading.options': 'Options',
        'app.presentationUploder.tableHeading.status': 'Status',
        'app.presentationUploder.uploading': 'Uploading {0} {1}',
        'app.presentationUploder.uploadStatus': '{0} of {1} uploads complete',
        'app.presentationUploder.completed': '{0} uploads complete',
        'app.presentationUploder.item': 'item',
        'app.presentationUploder.itemPlural': 'items',
        'app.presentationUploder.clearErrors': 'Clear errors',
        'app.presentationUploder.clearErrorsDesc': 'Clears failed presentation uploads',
        'app.poll.pollPaneTitle': 'Polling',
        'app.poll.quickPollTitle': 'Quick Poll',
        'app.poll.hidePollDesc': 'Hides the poll menu pane',
        'app.poll.quickPollInstruction': 'Select an option below to start your poll.',
        'app.poll.activePollInstruction': "Leave this panel open to see live responses to your poll. When you are ready, select 'Publish polling results' to publish the results and end the poll.",
        'app.poll.dragDropPollInstruction': 'To fill the poll values, drag a text file with the poll values onto the highlighted field',
        'app.poll.customPollTextArea': 'Fill poll values',
        'app.poll.publishLabel': 'Publish polling results',
        'app.poll.backLabel': 'Start A Poll',
        'app.poll.closeLabel': 'Close',
        'app.poll.waitingLabel': 'Waiting for responses ({0}/{1})',
        'app.poll.ariaInputCount': 'Custom poll option {0} of {1}',
        'app.poll.customPlaceholder': 'Add poll option',
        'app.poll.noPresentationSelected': 'No presentation selected! Please select one.',
        'app.poll.clickHereToSelect': 'Click here to select',
        'app.poll.panel.desc': 'Fill out your polling details below.',
        'app.poll.question.label': 'Write your question.',
        'app.poll.userResponse.label': 'User Response',
        'app.poll.responseTypes.label': 'Response Types',
        'app.poll.optionDelete.label': 'Delete',
        'app.poll.responseChoices.label': 'Response Choices',
        'app.poll.typedResponse.desc': 'Users will be presented with a text box to fill in their response.',
        'app.poll.addItem.label': 'Add item',
        'app.poll.question.title': 'Ask a question',
        'app.poll.start.label': 'Start Poll',
        'app.poll.questionErr': 'Enter a question',
        'app.poll.optionErr': 'Enter a Poll option',
        'app.poll.t': 'True',
        'app.poll.f': 'False',
        'app.poll.tf': 'True / False',
        'app.poll.y': 'Yes',
        'app.poll.n': 'No',
        'app.poll.abstention': 'Abstention',
        'app.poll.yna': 'Yes / No / Abstention',
        'app.poll.a2': 'A / B',
        'app.poll.a3': 'A / B / C',
        'app.poll.a4': 'A / B / C / D',
        'app.poll.a5': 'A / B / C / D / E',
        'app.poll.answer.true': 'True',
        'app.poll.answer.false': 'False',
        'app.poll.answer.yes': 'Yes',
        'app.poll.answer.no': 'No',
        'app.poll.answer.abstention': 'Abstention',
        'app.poll.answer.a': 'A',
        'app.poll.answer.b': 'B',
        'app.poll.answer.c': 'C',
        'app.poll.answer.d': 'D',
        'app.poll.answer.e': 'E',
        'app.poll.liveResult.usersTitle': 'Users',
        'app.poll.liveResult.responsesTitle': 'Response',
        'app.polling.pollingTitle': 'Polling options',
        'app.polling.pollQuestionTitle': 'Polling Question',
        'app.polling.submitLabel': 'Submit',
        'app.polling.submitAriaLabel': 'Submit poll response',
        'app.polling.responsePlaceholder': 'Enter answer',
        'app.polling.pollAnswerLabel': 'Poll answer {0}',
        'app.polling.pollAnswerDesc': 'Select this option to vote for {0}',
        'app.failedMessage': 'Apologies, trouble connecting to the server.',
        'app.downloadPresentationButton.label': 'Download the original presentation',
        'app.connectingMessage': 'Connecting ...',
        'app.waitingMessage': 'Disconnected. Trying to reconnect in {0} seconds ...',
        'app.retryNow': 'Retry now',
        'app.muteWarning.label': 'Click {0} to unmute yourself.',
        'app.muteWarning.disableMessage': 'Mute alerts disabled until unmute',
        'app.muteWarning.tooltip': 'Click to close and disable warning until next unmute',
        'app.navBar.settingsDropdown.optionsLabel': 'Options',
        'app.navBar.settingsDropdown.fullscreenLabel': 'Make fullscreen',
        'app.navBar.settingsDropdown.settingsLabel': 'Settings',
        'app.navBar.settingsDropdown.aboutLabel': 'About',
        'app.navBar.settingsDropdown.leaveSessionLabel': 'Leave meeting',
        'app.navBar.settingsDropdown.exitFullscreenLabel': 'Exit fullscreen',
        'app.navBar.settingsDropdown.fullscreenDesc': 'Make the settings menu fullscreen',
        'app.navBar.settingsDropdown.settingsDesc': 'Change the general settings',
        'app.navBar.settingsDropdown.aboutDesc': 'Show information about the client',
        'app.navBar.settingsDropdown.leaveSessionDesc': 'Leave the meeting',
        'app.navBar.settingsDropdown.exitFullscreenDesc': 'Exit fullscreen mode',
        'app.navBar.settingsDropdown.hotkeysLabel': 'Keyboard shortcuts',
        'app.navBar.settingsDropdown.hotkeysDesc': 'Listing of available keyboard shortcuts',
        'app.navBar.settingsDropdown.helpLabel': 'Help',
        'app.navBar.settingsDropdown.helpDesc': 'Links user to video tutorials (opens new tab)',
        'app.navBar.settingsDropdown.endMeetingDesc': 'Terminates the current meeting',
        'app.navBar.settingsDropdown.endMeetingLabel': 'End meeting',
        'app.navBar.userListToggleBtnLabel': 'User list toggle',
        'app.navBar.toggleUserList.ariaLabel': 'Users and messages toggle',
        'app.navBar.toggleUserList.newMessages': 'with new message notification',
        'app.navBar.recording': 'This session is being recorded',
        'app.navBar.recording.on': 'Recording',
        'app.navBar.recording.off': 'Not recording',
        'app.navBar.emptyAudioBrdige': 'No active microphone. Share your microphone to add audio to this recording.',
        'app.leaveConfirmation.confirmLabel': 'Leave',
        'app.leaveConfirmation.confirmDesc': 'Logs you out of the meeting',
        'app.endMeeting.title': 'End {0}',
        'app.endMeeting.description': 'This action will end the session for {0} active user(s). Are you sure you want to end this session?',
        'app.endMeeting.noUserDescription': 'Are you sure you want to end this session?',
        'app.endMeeting.contentWarning': 'Chat messages, shared notes, whiteboard content and shared documents for this session will no longer be directly accessible',
        'app.endMeeting.yesLabel': 'Yes',
        'app.endMeeting.noLabel': 'No',
        'app.about.title': 'About',
        'app.about.version': 'Client build:',
        'app.about.copyright': 'Copyright:',
        'app.about.confirmLabel': 'OK',
        'app.about.confirmDesc': 'OK',
        'app.about.dismissLabel': 'Cancel',
        'app.about.dismissDesc': 'Close about client information',
        'app.actionsBar.changeStatusLabel': 'Change status',
        'app.actionsBar.muteLabel': 'Mute',
        'app.actionsBar.unmuteLabel': 'Unmute',
        'app.actionsBar.camOffLabel': 'Camera off',
        'app.actionsBar.raiseLabel': 'Raise',
        'app.actionsBar.label': 'Actions bar',
        'app.actionsBar.actionsDropdown.restorePresentationLabel': 'Restore presentation',
        'app.actionsBar.actionsDropdown.restorePresentationDesc': 'Button to restore presentation after it has been closed',
        'app.screenshare.screenShareLabel': 'Screen share',
        'app.submenu.application.applicationSectionTitle': 'Application',
        'app.submenu.application.animationsLabel': 'Animations',
        'app.submenu.application.audioFilterLabel': 'Audio Filters for Microphone',
        'app.submenu.application.fontSizeControlLabel': 'Font size',
        'app.submenu.application.increaseFontBtnLabel': 'Increase application font size',
        'app.submenu.application.decreaseFontBtnLabel': 'Decrease application font size',
        'app.submenu.application.currentSize': 'currently {0}',
        'app.submenu.application.languageLabel': 'Application Language',
        'app.submenu.application.languageOptionLabel': 'Choose language',
        'app.submenu.application.noLocaleOptionLabel': 'No active locales',
        'app.submenu.application.paginationEnabledLabel': 'Video pagination',
        'app.submenu.notification.SectionTitle': 'Notifications',
        'app.submenu.notification.Desc': 'Define how and what you will be notified.',
        'app.submenu.notification.audioAlertLabel': 'Audio Alerts',
        'app.submenu.notification.pushAlertLabel': 'Popup Alerts',
        'app.submenu.notification.messagesLabel': 'Chat Message',
        'app.submenu.notification.userJoinLabel': 'User Join',
        'app.submenu.notification.guestWaitingLabel': 'Guest Waiting Approval',
        'app.submenu.audio.micSourceLabel': 'Microphone source',
        'app.submenu.audio.speakerSourceLabel': 'Speaker source',
        'app.submenu.audio.streamVolumeLabel': 'Your audio stream volume',
        'app.submenu.video.title': 'Video',
        'app.submenu.video.videoSourceLabel': 'View source',
        'app.submenu.video.videoOptionLabel': 'Choose view source',
        'app.submenu.video.videoQualityLabel': 'Video quality',
        'app.submenu.video.qualityOptionLabel': 'Choose the video quality',
        'app.submenu.video.participantsCamLabel': 'Viewing participants webcams',
        'app.settings.applicationTab.label': 'Application',
        'app.settings.audioTab.label': 'Audio',
        'app.settings.videoTab.label': 'Video',
        'app.settings.usersTab.label': 'Participants',
        'app.settings.main.label': 'Settings',
        'app.settings.main.cancel.label': 'Cancel',
        'app.settings.main.cancel.label.description': 'Discards the changes and closes the settings menu',
        'app.settings.main.save.label': 'Save',
        'app.settings.main.save.label.description': 'Saves the changes and closes the settings menu',
        'app.settings.dataSavingTab.label': 'Data savings',
        'app.settings.dataSavingTab.webcam': 'Enable webcams',
        'app.settings.dataSavingTab.screenShare': 'Enable desktop sharing',
        'app.settings.dataSavingTab.description': "To save your bandwidth adjust what's currently being displayed.",
        'app.settings.save-notification.label': 'Settings have been saved',
        'app.statusNotifier.lowerHands': 'Lower Hands',
        'app.statusNotifier.raisedHandsTitle': 'Raised Hands',
        'app.statusNotifier.raisedHandDesc': '{0} raised their hands',
        'app.statusNotifier.raisedHandDescOneUser': '{0} raised hand',
        'app.statusNotifier.and': 'and',
        'app.switch.onLabel': 'ON',
        'app.switch.offLabel': 'OFF',
        'app.talkingIndicator.ariaMuteDesc': 'Select to mute user',
        'app.talkingIndicator.isTalking': '{0} is talking',
        'app.talkingIndicator.wasTalking': '{0} stopped talking',
        'app.actionsBar.actionsDropdown.actionsLabel': 'Actions',
        'app.actionsBar.actionsDropdown.presentationLabel': 'Manage presentations',
        'app.actionsBar.actionsDropdown.initPollLabel': 'Initiate a poll',
        'app.actionsBar.actionsDropdown.desktopShareLabel': 'Share your screen',
        'app.actionsBar.actionsDropdown.lockedDesktopShareLabel': 'Screenshare locked',
        'app.actionsBar.actionsDropdown.stopDesktopShareLabel': 'Stop sharing your screen',
        'app.actionsBar.actionsDropdown.presentationDesc': 'Upload your presentation',
        'app.actionsBar.actionsDropdown.initPollDesc': 'Initiate a poll',
        'app.actionsBar.actionsDropdown.desktopShareDesc': 'Share your screen with others',
        'app.actionsBar.actionsDropdown.stopDesktopShareDesc': 'Stop sharing your screen with',
        'app.actionsBar.actionsDropdown.pollBtnLabel': 'Start a poll',
        'app.actionsBar.actionsDropdown.pollBtnDesc': 'Toggles poll pane',
        'app.actionsBar.actionsDropdown.saveUserNames': 'Save user names',
        'app.actionsBar.actionsDropdown.createBreakoutRoom': 'Create breakout rooms',
        'app.actionsBar.actionsDropdown.createBreakoutRoomDesc': 'create breakouts for split the current meeting ',
        'app.actionsBar.actionsDropdown.captionsLabel': 'Write closed captions',
        'app.actionsBar.actionsDropdown.captionsDesc': 'Toggles captions pane',
        'app.actionsBar.actionsDropdown.takePresenter': 'Take presenter',
        'app.actionsBar.actionsDropdown.takePresenterDesc': 'Assign yourself as the new presenter',
        'app.actionsBar.actionsDropdown.selectRandUserLabel': 'Select random user',
        'app.actionsBar.actionsDropdown.selectRandUserDesc': 'Chooses a user from available viewers at random',
        'app.actionsBar.emojiMenu.statusTriggerLabel': 'Set status',
        'app.actionsBar.emojiMenu.awayLabel': 'Away',
        'app.actionsBar.emojiMenu.awayDesc': 'Change your status to away',
        'app.actionsBar.emojiMenu.raiseHandLabel': 'Raise hand',
        'app.actionsBar.emojiMenu.lowerHandLabel': 'Lower hand',
        'app.actionsBar.emojiMenu.raiseHandDesc': 'Raise your hand to ask a question',
        'app.actionsBar.emojiMenu.neutralLabel': 'Undecided',
        'app.actionsBar.emojiMenu.neutralDesc': 'Change your status to undecided',
        'app.actionsBar.emojiMenu.confusedLabel': 'Confused',
        'app.actionsBar.emojiMenu.confusedDesc': 'Change your status to confused',
        'app.actionsBar.emojiMenu.sadLabel': 'Sad',
        'app.actionsBar.emojiMenu.sadDesc': 'Change your status to sad',
        'app.actionsBar.emojiMenu.happyLabel': 'Happy',
        'app.actionsBar.emojiMenu.happyDesc': 'Change your status to happy',
        'app.actionsBar.emojiMenu.noneLabel': 'Clear Status',
        'app.actionsBar.emojiMenu.noneDesc': 'Clear your status',
        'app.actionsBar.emojiMenu.applauseLabel': 'Applaud',
        'app.actionsBar.emojiMenu.applauseDesc': 'Change your status to applause',
        'app.actionsBar.emojiMenu.thumbsUpLabel': 'Thumbs up',
        'app.actionsBar.emojiMenu.thumbsUpDesc': 'Change your status to thumbs up',
        'app.actionsBar.emojiMenu.thumbsDownLabel': 'Thumbs down',
        'app.actionsBar.emojiMenu.thumbsDownDesc': 'Change your status to thumbs down',
        'app.actionsBar.currentStatusDesc': 'current status {0}',
        'app.actionsBar.captions.start': 'Start viewing closed captions',
        'app.actionsBar.captions.stop': 'Stop viewing closed captions',
        'app.audioNotification.audioFailedError1001': 'WebSocket disconnected (error 1001)',
        'app.audioNotification.audioFailedError1002': 'Could not make a WebSocket connection (error 1002)',
        'app.audioNotification.audioFailedError1003': 'Browser version not supported (error 1003)',
        'app.audioNotification.audioFailedError1004': 'Failure on call (reason={0}) (error 1004)',
        'app.audioNotification.audioFailedError1005': 'Call ended unexpectedly (error 1005)',
        'app.audioNotification.audioFailedError1006': 'Call timed out (error 1006)',
        'app.audioNotification.audioFailedError1007': 'Connection failure (ICE error 1007)',
        'app.audioNotification.audioFailedError1008': 'Transfer failed (error 1008)',
        'app.audioNotification.audioFailedError1009': 'Could not fetch STUN/TURN server information (error 1009)',
        'app.audioNotification.audioFailedError1010': 'Connection negotiation timeout (ICE error 1010)',
        'app.audioNotification.audioFailedError1011': 'Connection timeout (ICE error 1011)',
        'app.audioNotification.audioFailedError1012': 'Connection closed (ICE error 1012)',
        'app.audioNotification.audioFailedMessage': 'Your audio connection failed to connect',
        'app.audioNotification.mediaFailedMessage': 'getUserMicMedia failed as only secure origins are allowed',
        'app.audioNotification.closeLabel': 'Close',
        'app.audioNotificaion.reconnectingAsListenOnly': 'Microphone has been locked for viewers, you are being connected as listen only',
        'app.breakoutJoinConfirmation.title': 'Join breakout room',
        'app.breakoutJoinConfirmation.message': 'Do you want to join',
        'app.breakoutJoinConfirmation.confirmDesc': 'Join you to the breakout room',
        'app.breakoutJoinConfirmation.dismissLabel': 'Cancel',
        'app.breakoutJoinConfirmation.dismissDesc': 'Closes and rejects joining the breakout room',
        'app.breakoutJoinConfirmation.freeJoinMessage': 'Choose a breakout room to join',
        'app.breakoutTimeRemainingMessage': 'Breakout room time remaining: {0}',
        'app.breakoutWillCloseMessage': 'Time ended. Breakout room will close soon',
        'app.calculatingBreakoutTimeRemaining': 'Calculating remaining time ...',
        'app.audioModal.ariaTitle': 'Join audio modal',
        'app.audioModal.microphoneLabel': 'Microphone',
        'app.audioModal.listenOnlyLabel': 'Listen only',
        'app.audioModal.audioChoiceLabel': 'How would you like to join the audio?',
        'app.audioModal.iOSBrowser': 'Audio/Video not supported',
        'app.audioModal.iOSErrorDescription': 'At this time audio and video are not supported on Chrome for iOS.',
        'app.audioModal.iOSErrorRecommendation': 'We recommend using Safari iOS.',
        'app.audioModal.audioChoiceDesc': 'Select how to join the audio in this meeting',
        'app.audioModal.unsupportedBrowserLabel': "It looks like you're using a browser that is not fully supported. Please use either {0} or {1} for full support.",
        'app.audioModal.closeLabel': 'Close',
        'app.audioModal.yes': 'Yes',
        'app.audioModal.no': 'No',
        'app.audioModal.yes.arialabel': 'Echo is audible',
        'app.audioModal.no.arialabel': 'Echo is inaudible',
        'app.audioModal.echoTestTitle': 'This is a private echo test.  Speak a few words.  Did you hear audio?',
        'app.audioModal.settingsTitle': 'Change your audio settings',
        'app.audioModal.helpTitle': 'There was an issue with your media devices',
        'app.audioModal.helpText': "Did you give permission for access to your microphone?  Note that a dialog should appear when you try to join audio, asking for your media device permissions, please accept that in order to join the audio conference.  If that is not the case, try changing your microphone permissions in your browser's settings.",
        'app.audioModal.help.noSSL': 'This page is unsecured. For microphone access to be allowed the page must be served over HTTPS. Please contact the server administrator.',
        'app.audioModal.help.macNotAllowed': "It looks like your Mac System Preferences are blocking access to your microphone. Open System Preferences > Security & Privacy > Privacy > Microphone, and verify that the browser you're using is checked.",
        'app.audioModal.audioDialTitle': 'Join using your phone',
        'app.audioDial.audioDialDescription': 'Dial',
        'app.audioDial.audioDialConfrenceText': 'and enter the conference PIN number:',
        'app.audioModal.autoplayBlockedDesc': 'We need your permission to play audio.',
        'app.audioModal.playAudio': 'Play audio',
        'app.audioModal.playAudio.arialabel': 'Play audio',
        'app.audioDial.tipIndicator': 'Tip',
        'app.audioDial.tipMessage': "Press the '0' key on your phone to mute/unmute yourself.",
        'app.audioModal.connecting': 'Connecting',
        'app.audioModal.connectingEchoTest': 'Connecting to echo test',
        'app.audioManager.joinedAudio': 'You have joined the audio conference',
        'app.audioManager.joinedEcho': 'You have joined the echo test',
        'app.audioManager.leftAudio': 'You have left the audio conference',
        'app.audioManager.reconnectingAudio': 'Attempting to reconnect audio',
        'app.audioManager.genericError': 'Error: An error has occurred, please try again',
        'app.audioManager.connectionError': 'Error: Connection error',
        'app.audioManager.requestTimeout': 'Error: There was a timeout in the request',
        'app.audioManager.invalidTarget': 'Error: Tried to request something to an invalid target',
        'app.audioManager.mediaError': 'Error: There was an issue getting your media devices',
        'app.audio.joinAudio': 'Join audio',
        'app.audio.leaveAudio': 'Leave audio',
        'app.audio.changeLeaveAudio': 'Change/Leave audio',
        'app.audio.enterSessionLabel': 'Enter session',
        'app.audio.playSoundLabel': 'Play sound',
        'app.audio.backLabel': 'Back',
        'app.audio.loading': 'Loading',
        'app.audio.microphones': 'Microphones',
        'app.audio.speakers': 'Speakers',
        'app.audio.noDeviceFound': 'No device found',
        'app.audio.audioSettings.titleLabel': 'Choose your audio settings',
        'app.audio.audioSettings.descriptionLabel': 'Please note, a dialog will appear in your browser, requiring you to accept sharing your microphone.',
        'app.audio.audioSettings.microphoneSourceLabel': 'Microphone source',
        'app.audio.audioSettings.speakerSourceLabel': 'Speaker source',
        'app.audio.audioSettings.microphoneStreamLabel': 'Your audio stream volume',
        'app.audio.audioSettings.retryLabel': 'Retry',
        'app.audio.listenOnly.backLabel': 'Back',
        'app.audio.listenOnly.closeLabel': 'Close',
        'app.audio.permissionsOverlay.title': 'Allow access to your microphone',
        'app.audio.permissionsOverlay.hint': 'We need you to allow us to use your media devices in order to join you to the voice conference :)',
        'app.error.removed': 'You have been removed from the conference',
        'app.error.meeting.ended': 'You have logged out of the conference',
        'app.meeting.logout.duplicateUserEjectReason': 'Duplicate user trying to join meeting',
        'app.meeting.logout.permissionEjectReason': 'Ejected due to permission violation',
        'app.meeting.logout.ejectedFromMeeting': 'You have been removed from the meeting',
        'app.meeting.logout.validateTokenFailedEjectReason': 'Failed to validate authorization token',
        'app.meeting.logout.userInactivityEjectReason': 'User inactive for too long',
        'app.meeting-ended.rating.legendLabel': 'Feedback rating',
        'app.meeting-ended.rating.starLabel': 'Star',
        'app.modal.close': 'Close',
        'app.modal.close.description': 'Disregards changes and closes the modal',
        'app.modal.confirm': 'Done',
        'app.modal.newTab': '(opens new tab)',
        'app.modal.confirm.description': 'Saves changes and closes the modal',
        'app.modal.randomUser.noViewers.description': 'No viewers available to randomly select from',
        'app.modal.randomUser.selected.description': 'You have been randomly selected',
        'app.modal.randomUser.title': 'Randomly selected user',
        'app.modal.randomUser.who': 'Who will be selected..?',
        'app.modal.randomUser.alone': 'There is only one viewer',
        'app.modal.randomUser.reselect.label': 'Select again',
        'app.modal.randomUser.ariaLabel.title': 'Randomly selected User Modal',
        'app.dropdown.close': 'Close',
        'app.dropdown.list.item.activeLabel': 'Active',
        'app.error.400': 'Bad Request',
        'app.error.401': 'Unauthorized',
        'app.error.403': 'You have been removed from the meeting',
        'app.error.404': 'Not found',
        'app.error.410': 'Meeting has ended',
        'app.error.500': 'Ops, something went wrong',
        'app.error.userLoggedOut': 'User has an invalid sessionToken due to log out',
        'app.error.ejectedUser': 'User has an invalid sessionToken due to ejection',
        'app.error.userBanned': 'User has been banned',
        'app.error.leaveLabel': 'Log in again',
        'app.error.fallback.presentation.title': 'An error occurred',
        'app.error.fallback.presentation.description': 'It has been logged. Please try reloading the page.',
        'app.error.fallback.presentation.reloadButton': 'Reload',
        'app.guest.waiting': 'Waiting for approval to join',
        'app.guest.errorSeeConsole': 'Error: more details in the console.',
        'app.guest.noModeratorResponse': 'No response from Moderator.',
        'app.guest.noSessionToken': 'No session Token received.',
        'app.guest.windowTitle': 'Guest Lobby',
        'app.guest.missingToken': 'Guest missing session token.',
        'app.guest.missingSession': 'Guest missing session.',
        'app.guest.missingMeeting': 'Meeting does not exist.',
        'app.guest.meetingEnded': 'Meeting ended.',
        'app.guest.guestWait': 'Please wait for a moderator to approve you joining the meeting.',
        'app.guest.guestDeny': 'Guest denied of joining the meeting.',
        'app.guest.seatWait': 'Guest waiting for a seat in the meeting.',
        'app.userList.guest.waitingUsers': 'Waiting Users',
        'app.userList.guest.waitingUsersTitle': 'User Management',
        'app.userList.guest.optionTitle': 'Review Pending Users',
        'app.userList.guest.allowAllAuthenticated': 'Allow all authenticated',
        'app.userList.guest.allowAllGuests': 'Allow all guests',
        'app.userList.guest.allowEveryone': 'Allow everyone',
        'app.userList.guest.denyEveryone': 'Deny everyone',
        'app.userList.guest.pendingUsers': '{0} Pending Users',
        'app.userList.guest.pendingGuestUsers': '{0} Pending Guest Users',
        'app.userList.guest.pendingGuestAlert': 'Has joined the session and is waiting for your approval.',
        'app.userList.guest.rememberChoice': 'Remember choice',
        'app.userList.guest.emptyMessage': 'There is currently no message',
        'app.userList.guest.inputPlaceholder': "Message to the guests' lobby",
        'app.userList.guest.acceptLabel': 'Accept',
        'app.userList.guest.denyLabel': 'Deny',
        'app.user-info.title': 'Directory Lookup',
        'app.toast.breakoutRoomEnded': 'The breakout room ended.  Please rejoin in the audio.',
        'app.toast.chat.public': 'New Public Chat message',
        'app.toast.chat.private': 'New Private Chat message',
        'app.toast.chat.system': 'System',
        'app.toast.clearedEmoji.label': 'Emoji status cleared',
        'app.toast.setEmoji.label': 'Emoji status set to {0}',
        'app.toast.meetingMuteOn.label': 'All users have been muted',
        'app.toast.meetingMuteOff.label': 'Meeting mute turned off',
        'app.toast.setEmoji.raiseHand': 'You have raised your hand',
        'app.toast.setEmoji.lowerHand': 'You have lowered your hand',
        'app.notification.recordingStart': 'This session is now being recorded',
        'app.notification.recordingStop': 'This session is not being recorded',
        'app.notification.recordingPaused': 'This session is not being recorded anymore',
        'app.notification.recordingAriaLabel': 'Recorded time ',
        'app.notification.userJoinPushAlert': '{0} joined the session',
        'app.submenu.notification.raiseHandLabel': 'Raise hand',
        'app.shortcut-help.title': 'Keyboard shortcuts',
        'app.shortcut-help.accessKeyNotAvailable': 'Access keys not available',
        'app.shortcut-help.comboLabel': 'Combo',
        'app.shortcut-help.functionLabel': 'Function',
        'app.shortcut-help.closeLabel': 'Close',
        'app.shortcut-help.closeDesc': 'Closes keyboard shortcuts modal',
        'app.shortcut-help.openOptions': 'Open Options',
        'app.shortcut-help.toggleUserList': 'Toggle UserList',
        'app.shortcut-help.toggleMute': 'Mute / Unmute',
        'app.shortcut-help.togglePublicChat': 'Toggle Public Chat (User list must be open)',
        'app.shortcut-help.hidePrivateChat': 'Hide private chat',
        'app.shortcut-help.closePrivateChat': 'Close private chat',
        'app.shortcut-help.openActions': 'Open actions menu',
        'app.shortcut-help.raiseHand': 'Toggle Raise Hand',
        'app.shortcut-help.openDebugWindow': 'Open debug window',
        'app.shortcut-help.openStatus': 'Open status menu',
        'app.shortcut-help.togglePan': 'Activate Pan tool (Presenter)',
        'app.shortcut-help.toggleFullscreen': 'Toggle Full-screen (Presenter)',
        'app.shortcut-help.nextSlideDesc': 'Next slide (Presenter)',
        'app.shortcut-help.previousSlideDesc': 'Previous slide (Presenter)',
        'app.lock-viewers.title': 'Lock viewers',
        'app.lock-viewers.description': 'These options enable you to restrict viewers from using specific features.',
        'app.lock-viewers.featuresLable': 'Feature',
        'app.lock-viewers.lockStatusLabel': 'Status',
        'app.lock-viewers.webcamLabel': 'Share webcam',
        'app.lock-viewers.otherViewersWebcamLabel': 'See other viewers webcams',
        'app.lock-viewers.microphoneLable': 'Share microphone',
        'app.lock-viewers.PublicChatLabel': 'Send Public chat messages',
        'app.lock-viewers.PrivateChatLable': 'Send Private chat messages',
        'app.lock-viewers.notesLabel': 'Edit Shared Notes',
        'app.lock-viewers.userListLabel': 'See other viewers in the Users list',
        'app.lock-viewers.ariaTitle': 'Lock viewers settings modal',
        'app.lock-viewers.button.apply': 'Apply',
        'app.lock-viewers.button.cancel': 'Cancel',
        'app.lock-viewers.locked': 'Locked',
        'app.lock-viewers.unlocked': 'Unlocked',
        'app.guest-policy.ariaTitle': 'Guest policy settings modal',
        'app.guest-policy.title': 'Guest policy',
        'app.guest-policy.description': 'Change meeting guest policy setting',
        'app.guest-policy.button.askModerator': 'Ask moderator',
        'app.guest-policy.button.alwaysAccept': 'Always accept',
        'app.guest-policy.button.alwaysDeny': 'Always deny',
        'app.connection-status.ariaTitle': 'Connection status modal',
        'app.connection-status.title': 'Connection status',
        'app.connection-status.description': "View users' connection status",
        'app.connection-status.empty': 'There are currently no reported connection issues',
        'app.connection-status.more': 'more',
        'app.connection-status.label': 'Connection status',
        'app.connection-status.notification': 'Loss in your connection was detected',
        'app.connection-status.offline': 'offline',
        'app.recording.startTitle': 'Start recording',
        'app.recording.stopTitle': 'Pause recording',
        'app.recording.resumeTitle': 'Resume recording',
        'app.recording.startDescription': 'You can select the record button again later to pause the recording.',
        'app.recording.stopDescription': 'Are you sure you want to pause the recording? You can resume by selecting the record button again.',
        'app.videoPreview.cameraLabel': 'Camera',
        'app.videoPreview.profileLabel': 'Quality',
        'app.videoPreview.quality.low': 'Low',
        'app.videoPreview.quality.medium': 'Medium',
        'app.videoPreview.quality.high': 'High',
        'app.videoPreview.quality.hd': 'High definition',
        'app.videoPreview.cancelLabel': 'Cancel',
        'app.videoPreview.closeLabel': 'Close',
        'app.videoPreview.findingWebcamsLabel': 'Finding webcams',
        'app.videoPreview.startSharingLabel': 'Start sharing',
        'app.videoPreview.stopSharingLabel': 'Stop sharing',
        'app.videoPreview.stopSharingAllLabel': 'Stop all',
        'app.videoPreview.sharedCameraLabel': 'This camera is already being shared',
        'app.videoPreview.webcamOptionLabel': 'Choose webcam',
        'app.videoPreview.webcamPreviewLabel': 'Webcam preview',
        'app.videoPreview.webcamSettingsTitle': 'Webcam settings',
        'app.videoPreview.webcamNotFoundLabel': 'Webcam not found',
        'app.videoPreview.profileNotFoundLabel': 'No supported camera profile',
        'app.video.joinVideo': 'Share webcam',
        'app.video.connecting': 'Webcam sharing is starting ...',
        'app.video.dataSaving': 'Webcam sharing is disabled in Data Saving',
        'app.video.leaveVideo': 'Stop sharing webcam',
        'app.video.iceCandidateError': 'Error on adding ICE candidate',
        'app.video.iceConnectionStateError': 'Connection failure (ICE error 1107)',
        'app.video.permissionError': 'Error on sharing webcam.  Please check permissions',
        'app.video.sharingError': 'Error on sharing webcam',
        'app.video.abortError': 'Some problem occurred which prevented the device from being used',
        'app.video.overconstrainedError': 'No candidate devices which met the criteria requested',
        'app.video.securityError': 'Media support is disabled on the Document',
        'app.video.typeError': 'List of constraints specified is empty, or has all constraints set to false',
        'app.video.notFoundError': "Could not find webcam. Please make sure it's connected",
        'app.video.notAllowed': 'Missing permission for share webcam, please make sure your browser permissions',
        'app.video.notSupportedError': 'Can share webcam video only with safe sources, make sure your SSL certificate is valid',
        'app.video.notReadableError': 'Could not get webcam video. Please make sure another program is not using the webcam ',
        'app.video.timeoutError': 'Browser did not respond in time.',
        'app.video.genericError': 'An unknown error has occurred with the device (Error {0})',
        'app.video.mediaFlowTimeout1020': 'Media could not reach the server (error 1020)',
        'app.video.suggestWebcamLock': 'Enforce lock setting to viewers webcams?',
        'app.video.suggestWebcamLockReason': '(this will improve the stability of the meeting)',
        'app.video.enable': 'Enable',
        'app.video.cancel': 'Cancel',
        'app.video.swapCam': 'Swap',
        'app.video.swapCamDesc': 'swap the direction of webcams',
        'app.video.videoLocked': 'Webcam sharing locked',
        'app.video.videoButtonDesc': 'Share webcam',
        'app.video.videoMenu': 'Video menu',
        'app.video.videoMenuDisabled': 'Video menu Webcam is disabled in settings',
        'app.video.videoMenuDesc': 'Open video menu dropdown',
        'app.video.pagination.prevPage': 'See previous videos',
        'app.video.pagination.nextPage': 'See next videos',
        'app.video.clientDisconnected': 'Webcam cannot be shared due to connection issues',
        'app.fullscreenButton.label': 'Make {0} fullscreen',
        'app.fullscreenUndoButton.label': 'Undo {0} fullscreen',
        'app.sfu.mediaServerConnectionError2000': 'Unable to connect to media server (error 2000)',
        'app.sfu.mediaServerOffline2001': 'Media server is offline. Please try again later (error 2001)',
        'app.sfu.mediaServerNoResources2002': 'Media server has no available resources (error 2002)',
        'app.sfu.mediaServerRequestTimeout2003': 'Media server requests are timing out (error 2003)',
        'app.sfu.serverIceGatheringFailed2021': 'Media server cannot gather connection candidates (ICE error 2021)',
        'app.sfu.serverIceGatheringFailed2022': 'Media server connection failed (ICE error 2022)',
        'app.sfu.mediaGenericError2200': 'Media server failed to process request (error 2200)',
        'app.sfu.invalidSdp2202': 'Client generated an invalid media request (SDP error 2202)',
        'app.sfu.noAvailableCodec2203': 'Server could not find an appropriate codec (error 2203)',
        'app.meeting.endNotification.ok.label': 'OK',
        'app.whiteboard.annotations.poll': 'Poll results were published',
        'app.whiteboard.annotations.pollResult': 'Poll Result',
        'app.whiteboard.toolbar.tools': 'Tools',
        'app.whiteboard.toolbar.tools.hand': 'Pan',
        'app.whiteboard.toolbar.tools.pencil': 'Pencil',
        'app.whiteboard.toolbar.tools.rectangle': 'Rectangle',
        'app.whiteboard.toolbar.tools.triangle': 'Triangle',
        'app.whiteboard.toolbar.tools.ellipse': 'Ellipse',
        'app.whiteboard.toolbar.tools.line': 'Line',
        'app.whiteboard.toolbar.tools.text': 'Text',
        'app.whiteboard.toolbar.thickness': 'Drawing thickness',
        'app.whiteboard.toolbar.thicknessDisabled': 'Drawing thickness is disabled',
        'app.whiteboard.toolbar.color': 'Colors',
        'app.whiteboard.toolbar.colorDisabled': 'Colors is disabled',
        'app.whiteboard.toolbar.color.black': 'Black',
        'app.whiteboard.toolbar.color.white': 'White',
        'app.whiteboard.toolbar.color.red': 'Red',
        'app.whiteboard.toolbar.color.orange': 'Orange',
        'app.whiteboard.toolbar.color.eletricLime': 'Electric lime',
        'app.whiteboard.toolbar.color.lime': 'Lime',
        'app.whiteboard.toolbar.color.cyan': 'Cyan',
        'app.whiteboard.toolbar.color.dodgerBlue': 'Dodger blue',
        'app.whiteboard.toolbar.color.blue': 'Blue',
        'app.whiteboard.toolbar.color.violet': 'Violet',
        'app.whiteboard.toolbar.color.magenta': 'Magenta',
        'app.whiteboard.toolbar.color.silver': 'Silver',
        'app.whiteboard.toolbar.undo': 'Undo annotation',
        'app.whiteboard.toolbar.clear': 'Clear all annotations',
        'app.whiteboard.toolbar.multiUserOn': 'Turn multi-user whiteboard on',
        'app.whiteboard.toolbar.multiUserOff': 'Turn multi-user whiteboard off',
        'app.whiteboard.toolbar.palmRejectionOn': 'Turn palm rejection on',
        'app.whiteboard.toolbar.palmRejectionOff': 'Turn palm rejection off',
        'app.whiteboard.toolbar.fontSize': 'Font size list',
        'app.feedback.title': 'You have logged out of the conference',
        'app.feedback.subtitle': "We'd love to hear about your experience with BigBlueButton (optional)",
        'app.feedback.textarea': 'How can we make BigBlueButton better?',
        'app.feedback.sendFeedback': 'Send Feedback',
        'app.feedback.sendFeedbackDesc': 'Send a feedback and leave the meeting',
        'app.videoDock.webcamMirrorLabel': 'Mirror',
        'app.videoDock.webcamMirrorDesc': 'Mirror the selected webcam',
        'app.videoDock.webcamFocusLabel': 'Focus',
        'app.videoDock.webcamFocusDesc': 'Focus the selected webcam',
        'app.videoDock.webcamUnfocusLabel': 'Unfocus',
        'app.videoDock.webcamUnfocusDesc': 'Unfocus the selected webcam',
        'app.videoDock.autoplayBlockedDesc': "We need your permission to show you other users' webcams.",
        'app.videoDock.autoplayAllowLabel': 'View webcams',
        'app.invitation.title': 'Breakout room invitation',
        'app.invitation.confirm': 'Invite',
        'app.createBreakoutRoom.title': 'Breakout Rooms',
        'app.createBreakoutRoom.ariaTitle': 'Hide Breakout Rooms',
        'app.createBreakoutRoom.breakoutRoomLabel': 'Breakout Rooms {0}',
        'app.createBreakoutRoom.generatingURL': 'Generating URL',
        'app.createBreakoutRoom.generatingURLMessage': 'We are generating a join URL for the selected breakout room. It may take a few seconds...',
        'app.createBreakoutRoom.generatedURL': 'Generated',
        'app.createBreakoutRoom.duration': 'Duration {0}',
        'app.createBreakoutRoom.room': 'Room {0}',
        'app.createBreakoutRoom.notAssigned': 'Not assigned ({0})',
        'app.createBreakoutRoom.join': 'Join room',
        'app.createBreakoutRoom.joinAudio': 'Join audio',
        'app.createBreakoutRoom.returnAudio': 'Return audio',
        'app.createBreakoutRoom.alreadyConnected': 'Already in room',
        'app.createBreakoutRoom.confirm': 'Create',
        'app.createBreakoutRoom.record': 'Record',
        'app.createBreakoutRoom.numberOfRooms': 'Number of rooms',
        'app.createBreakoutRoom.durationInMinutes': 'Duration (minutes)',
        'app.createBreakoutRoom.randomlyAssign': 'Randomly assign',
        'app.createBreakoutRoom.endAllBreakouts': 'End all breakout rooms',
        'app.createBreakoutRoom.roomName': '{0} (Room - {1})',
        'app.createBreakoutRoom.doneLabel': 'Done',
        'app.createBreakoutRoom.nextLabel': 'Next',
        'app.createBreakoutRoom.minusRoomTime': 'Decrease breakout room time to',
        'app.createBreakoutRoom.addRoomTime': 'Increase breakout room time to',
        'app.createBreakoutRoom.addParticipantLabel': '+ Add participant',
        'app.createBreakoutRoom.freeJoin': 'Allow users to choose a breakout room to join',
        'app.createBreakoutRoom.leastOneWarnBreakout': 'You must place at least one user in a breakout room.',
        'app.createBreakoutRoom.minimumDurationWarnBreakout': 'Minimum duration for a breakout room is {0} minutes.',
        'app.createBreakoutRoom.modalDesc': "Tip: You can drag-and-drop a user's name to assign them to a specific breakout room.",
        'app.createBreakoutRoom.roomTime': '{0} minutes',
        'app.createBreakoutRoom.numberOfRoomsError': 'The number of rooms is invalid.',
        'app.externalVideo.start': 'Share a new video',
        'app.externalVideo.title': 'Share an external video',
        'app.externalVideo.input': 'External Video URL',
        'app.externalVideo.urlInput': 'Add Video URL',
        'app.externalVideo.urlError': "This video URL isn't supported",
        'app.externalVideo.close': 'Close',
        'app.externalVideo.autoPlayWarning': 'Play the video to enable media synchronization',
        'app.network.connection.effective.slow': "We're noticing connectivity issues.",
        'app.network.connection.effective.slow.help': 'More information',
        'app.externalVideo.noteLabel': 'Note: Shared external videos will not appear in the recording. YouTube, Vimeo, Instructure Media, Twitch, Dailymotion and media file URLs (e.g. https://example.com/xy.mp4) are supported.',
        'app.actionsBar.actionsDropdown.shareExternalVideo': 'Share an external video',
        'app.actionsBar.actionsDropdown.stopShareExternalVideo': 'Stop sharing external video',
        'app.iOSWarning.label': 'Please upgrade to iOS 12.2 or higher',
        'app.legacy.unsupportedBrowser': "It looks like you're using a browser that is not supported. Please use either {0} or {1} for full support.",
        'app.legacy.upgradeBrowser': "It looks like you're using an older version of a supported browser. Please upgrade your browser for full support.",
        'app.legacy.criosBrowser': 'On iOS please use Safari for full support.',
        'app.debugWindow.windowTitle': 'Debug',
        'app.debugWindow.form.userAgentLabel': 'User Agent',
        'app.debugWindow.form.button.copy': 'Copy',
        'app.debugWindow.form.enableAutoarrangeLayoutLabel': 'Enable Auto Arrange Layout',
        'app.debugWindow.form.enableAutoarrangeLayoutDescription': '(it will be disabled if you drag or resize the webcams area)',
        'app.debugWindow.form.chatLoggerLabel': 'Test Chat Logger Levels',
        'app.debugWindow.form.button.apply': 'Apply'
      }
    },
  };
  