Merge branch 'develop' of https://github.com/bigbluebutton/bigbluebutton into develop-bbb

This commit is contained in:
Lucas Zawacki 2022-04-14 18:48:02 +00:00
commit 378d0f18a0
154 changed files with 8696 additions and 2487 deletions

View File

@ -1,2 +0,0 @@
Dockerfile

View File

@ -1,24 +0,0 @@
FROM bbb-common-message AS builder
ARG COMMON_VERSION=0.0.1-SNAPSHOT
COPY . /source
RUN cd /source \
&& find -name build.sbt -exec sed -i "s|\(.*org.bigbluebutton.*bbb-common-message[^\"]*\"[ ]*%[ ]*\)\"[^\"]*\"\(.*\)|\1\"$COMMON_VERSION\"\2|g" {} \; \
&& sbt compile
RUN apt-get update \
&& apt-get -y install fakeroot
RUN cd /source \
&& sbt debian:packageBin
# FROM ubuntu:16.04
FROM openjdk:8-jre-slim-stretch
COPY --from=builder /source/target/*.deb /root/
RUN dpkg -i /root/*.deb
CMD ["/usr/share/bbb-apps-akka/bin/bbb-apps-akka"]

View File

@ -11,6 +11,7 @@ trait BreakoutApp2x extends BreakoutRoomCreatedMsgHdlr
with CreateBreakoutRoomsCmdMsgHdlr
with EndAllBreakoutRoomsMsgHdlr
with UpdateBreakoutRoomsTimeMsgHdlr
with ChangeUserBreakoutReqMsgHdlr
with SendMessageToAllBreakoutRoomsMsgHdlr
with SendMessageToBreakoutRoomInternalMsgHdlr
with RequestBreakoutJoinURLReqMsgHdlr

View File

@ -82,6 +82,29 @@ object BreakoutHdlrHelpers extends SystemConfiguration {
}
def sendChangeUserBreakoutMsg(
outGW: OutMsgRouter,
meetingId: String,
userId: String,
fromBreakoutId: String,
toBreakoutId: String,
redirectToHtml5JoinURL: String
): Unit = {
def build(meetingId: String, userId: String, fromBreakoutId: String, toBreakoutId: String, redirectToHtml5JoinURL: String): BbbCommonEnvCoreMsg = {
val routing = Routing.addMsgToClientRouting(MessageTypes.DIRECT, meetingId, userId)
val envelope = BbbCoreEnvelope(ChangeUserBreakoutEvtMsg.NAME, routing)
val header = BbbClientMsgHeader(ChangeUserBreakoutEvtMsg.NAME, meetingId, userId)
val body = ChangeUserBreakoutEvtMsgBody(meetingId, userId, fromBreakoutId, toBreakoutId, redirectToHtml5JoinURL)
val event = ChangeUserBreakoutEvtMsg(header, body)
BbbCommonEnvCoreMsg(envelope, event)
}
val msgEvent = build(meetingId, userId, fromBreakoutId, toBreakoutId, redirectToHtml5JoinURL)
outGW.send(msgEvent)
}
def updateParentMeetingWithUsers(
liveMeeting: LiveMeeting,
eventBus: InternalEventBus

View File

@ -0,0 +1,81 @@
package org.bigbluebutton.core.apps.breakout
import org.bigbluebutton.common2.msgs._
import org.bigbluebutton.core.api.EjectUserFromBreakoutInternalMsg
import org.bigbluebutton.core.apps.breakout.BreakoutHdlrHelpers.{ getRedirectUrls }
import org.bigbluebutton.core.apps.{ PermissionCheck, RightsManagementTrait }
import org.bigbluebutton.core.bus.BigBlueButtonEvent
import org.bigbluebutton.core.domain.MeetingState2x
import org.bigbluebutton.core.models.{ EjectReasonCode }
import org.bigbluebutton.core.running.{ MeetingActor, OutMsgRouter }
import org.bigbluebutton.core2.message.senders.{ MsgBuilder }
trait ChangeUserBreakoutReqMsgHdlr extends RightsManagementTrait {
this: MeetingActor =>
val outGW: OutMsgRouter
def handleChangeUserBreakoutReqMsg(msg: ChangeUserBreakoutReqMsg, state: MeetingState2x): MeetingState2x = {
if (permissionFailed(PermissionCheck.MOD_LEVEL, PermissionCheck.VIEWER_LEVEL, liveMeeting.users2x, msg.header.userId)) {
val meetingId = liveMeeting.props.meetingProp.intId
val reason = "No permission to move user among breakout rooms."
PermissionCheck.ejectUserForFailedPermission(meetingId, msg.header.userId, reason, outGW, liveMeeting)
state
} else {
val meetingId = liveMeeting.props.meetingProp.intId
for {
breakoutModel <- state.breakout
} yield {
//Eject user from room From
for {
roomFrom <- breakoutModel.rooms.get(msg.body.fromBreakoutId)
} yield {
roomFrom.users.filter(u => u.id == msg.body.userId + "-" + roomFrom.sequence).foreach(user => {
eventBus.publish(BigBlueButtonEvent(roomFrom.id, EjectUserFromBreakoutInternalMsg(meetingId, roomFrom.id, user.id, msg.header.userId, "User moved to another room", EjectReasonCode.EJECT_USER, false)))
})
}
//Get join URL for room To
val redirectToHtml5JoinURL = (
for {
roomTo <- breakoutModel.rooms.get(msg.body.toBreakoutId)
(redirectToHtml5JoinURL, redirectJoinURL) <- getRedirectUrls(liveMeeting, msg.body.userId, roomTo.externalId, roomTo.sequence.toString())
} yield redirectToHtml5JoinURL
).getOrElse("")
BreakoutHdlrHelpers.sendChangeUserBreakoutMsg(
outGW,
meetingId,
msg.body.userId,
msg.body.fromBreakoutId,
msg.body.toBreakoutId,
redirectToHtml5JoinURL,
)
//Send notification to moved User
for {
roomFrom <- breakoutModel.rooms.get(msg.body.fromBreakoutId)
roomTo <- breakoutModel.rooms.get(msg.body.toBreakoutId)
} yield {
val notifyUserEvent = MsgBuilder.buildNotifyUserInMeetingEvtMsg(
msg.body.userId,
liveMeeting.props.meetingProp.intId,
"info",
"promote",
"app.updateBreakoutRoom.userChangeRoomNotification",
"Notification to warn user was moved to another room",
Vector(roomTo.shortName)
)
outGW.send(notifyUserEvent)
}
}
state
}
}
}

View File

@ -30,6 +30,9 @@ trait EjectUserFromBreakoutInternalMsgHdlr {
// send a system message to force disconnection
Sender.sendDisconnectClientSysMsg(msg.breakoutId, registeredUser.id, msg.ejectedBy, msg.reasonCode, outGW)
//send users update to parent meeting
BreakoutHdlrHelpers.updateParentMeetingWithUsers(liveMeeting, eventBus)
log.info("Eject user {} id={} in breakoutId {}", registeredUser.name, registeredUser.id, msg.breakoutId)
}

View File

@ -3,8 +3,8 @@ package org.bigbluebutton.core.apps.users
import org.bigbluebutton.common2.msgs.UserJoinMeetingReqMsg
import org.bigbluebutton.core.apps.breakout.BreakoutHdlrHelpers
import org.bigbluebutton.core.domain.MeetingState2x
import org.bigbluebutton.core.models.{Users2x, VoiceUsers}
import org.bigbluebutton.core.running.{HandlerHelpers, LiveMeeting, MeetingActor, OutMsgRouter}
import org.bigbluebutton.core.models.{ Users2x, VoiceUsers }
import org.bigbluebutton.core.running.{ HandlerHelpers, LiveMeeting, MeetingActor, OutMsgRouter }
trait UserJoinMeetingReqMsgHdlr extends HandlerHelpers {
this: MeetingActor =>

View File

@ -231,6 +231,8 @@ class ReceivedJsonMsgHandlerActor(
routeGenericMsg[UpdateBreakoutRoomsTimeReqMsg](envelope, jsonNode)
case SendMessageToAllBreakoutRoomsReqMsg.NAME =>
routeGenericMsg[SendMessageToAllBreakoutRoomsReqMsg](envelope, jsonNode)
case ChangeUserBreakoutReqMsg.NAME =>
routeGenericMsg[ChangeUserBreakoutReqMsg](envelope, jsonNode)
// Layout
case GetCurrentLayoutReqMsg.NAME =>

View File

@ -437,6 +437,7 @@ class MeetingActor(
case m: TransferUserToMeetingRequestMsg => state = handleTransferUserToMeetingRequestMsg(m, state)
case m: UpdateBreakoutRoomsTimeReqMsg => state = handleUpdateBreakoutRoomsTimeMsg(m, state)
case m: SendMessageToAllBreakoutRoomsReqMsg => state = handleSendMessageToAllBreakoutRoomsMsg(m, state)
case m: ChangeUserBreakoutReqMsg => state = handleChangeUserBreakoutReqMsg(m, state)
// Voice
case m: UserLeftVoiceConfEvtMsg => handleUserLeftVoiceConfEvtMsg(m)

View File

@ -1,26 +0,0 @@
FROM bbb-fsesl-client AS builder
ARG COMMON_VERSION=0.0.1-SNAPSHOT
COPY . /source
RUN cd /source \
&& find -name build.sbt -exec sed -i "s|\(.*org.bigbluebutton.*bbb-common-message[^\"]*\"[ ]*%[ ]*\)\"[^\"]*\"\(.*\)|\1\"$COMMON_VERSION\"\2|g" {} \; \
&& find -name build.sbt -exec sed -i "s|\(.*org.bigbluebutton.*bbb-fsesl-client[^\"]*\"[ ]*%[ ]*\)\"[^\"]*\"\(.*\)|\1\"$COMMON_VERSION\"\2|g" {} \; \
&& sbt compile
RUN apt-get update \
&& apt-get -y install fakeroot
RUN cd /source \
&& sbt debian:packageBin
FROM openjdk:8-jre-slim-stretch
COPY --from=builder /source/target/*.deb /root/
RUN dpkg -i /root/*.deb
COPY wait-for-it.sh /usr/local/bin/
CMD ["/usr/share/bbb-fsesl-akka/bin/bbb-fsesl-akka"]

View File

@ -1,13 +0,0 @@
FROM sbt:0.13.8
ARG COMMON_VERSION
COPY . /bbb-common-message
RUN cd /bbb-common-message \
&& sed -i "s|\(version := \)\".*|\1\"$COMMON_VERSION\"|g" build.sbt \
&& echo 'publishTo := Some(Resolver.file("file", new File(Path.userHome.absolutePath+"/.m2/repository")))' | tee -a build.sbt \
&& sbt compile \
&& sbt publish \
&& sbt publishLocal

View File

@ -110,6 +110,14 @@ object SendMessageToAllBreakoutRoomsEvtMsg { val NAME = "SendMessageToAllBreakou
case class SendMessageToAllBreakoutRoomsEvtMsg(header: BbbClientMsgHeader, body: SendMessageToAllBreakoutRoomsEvtMsgBody) extends BbbCoreMsg
case class SendMessageToAllBreakoutRoomsEvtMsgBody(meetingId: String, senderId: String, msg: String, totalOfRooms: Int)
object ChangeUserBreakoutReqMsg { val NAME = "ChangeUserBreakoutReqMsg" }
case class ChangeUserBreakoutReqMsg(header: BbbClientMsgHeader, body: ChangeUserBreakoutReqMsgBody) extends StandardMsg
case class ChangeUserBreakoutReqMsgBody(meetingId: String, userId: String, fromBreakoutId: String, toBreakoutId: String)
object ChangeUserBreakoutEvtMsg { val NAME = "ChangeUserBreakoutEvtMsg" }
case class ChangeUserBreakoutEvtMsg(header: BbbClientMsgHeader, body: ChangeUserBreakoutEvtMsgBody) extends BbbCoreMsg
case class ChangeUserBreakoutEvtMsgBody(meetingId: String, userId: String, fromBreakoutId: String, toBreakoutId: String, redirectToHtml5JoinURL: String)
// Common Value objects
case class BreakoutUserVO(id: String, name: String)

View File

@ -1,13 +0,0 @@
FROM bbb-common-message
ARG COMMON_VERSION
COPY . /bbb-common-web
RUN cd /bbb-common-web \
&& sed -i "s|\(version := \)\".*|\1\"$COMMON_VERSION\"|g" build.sbt \
&& find -name build.sbt -exec sed -i "s|\(.*org.bigbluebutton.*bbb-common-message[^\"]*\"[ ]*%[ ]*\)\"[^\"]*\"\(.*\)|\1\"$COMMON_VERSION\"\2|g" {} \; \
&& echo 'publishTo := Some(Resolver.file("file", new File(Path.userHome.absolutePath+"/.m2/repository")))' | tee -a build.sbt \
&& sbt compile \
&& sbt publish \
&& sbt publishLocal

View File

@ -1,13 +0,0 @@
FROM bbb-common-message
ARG COMMON_VERSION
COPY . /bbb-fsesl-client
RUN cd /bbb-fsesl-client \
&& sed -i "s|\(version := \)\".*|\1\"$COMMON_VERSION\"|g" build.sbt \
&& find -name build.sbt -exec sed -i "s|\(.*org.bigbluebutton.*bbb-common-message[^\"]*\"[ ]*%[ ]*\)\"[^\"]*\"\(.*\)|\1\"$COMMON_VERSION\"\2|g" {} \; \
&& echo 'publishTo := Some(Resolver.file("file", new File(Path.userHome.absolutePath+"/.m2/repository")))' | tee -a build.sbt \
&& sbt compile \
&& sbt publish \
&& sbt publishLocal

View File

@ -1 +1 @@
git clone --branch v3.4.0 --depth 1 https://github.com/bigbluebutton/bbb-playback bbb-playback
git clone --branch v3.4.1 --depth 1 https://github.com/bigbluebutton/bbb-playback bbb-playback

View File

@ -658,8 +658,10 @@ fi
if [[ $SECRET ]]; then
need_root
if get_properties_value securitySalt "$BBB_WEB_ETC_CONFIG" > /dev/null ; then
change_var_salt "$BBB_WEB_ETC_CONFIG" securitySalt "$SECRET"
echo "Assigning secret in $BBB_WEB_ETC_CONFIG"
if [ -f "$BBB_WEB_ETC_CONFIG" ] && grep "^securitySalt" "$BBB_WEB_ETC_CONFIG" > /dev/null ; then
change_var_value "$BBB_WEB_ETC_CONFIG" securitySalt "$SECRET"
else
echo "securitySalt=$SECRET" >> "$BBB_WEB_ETC_CONFIG"
fi
@ -1612,7 +1614,7 @@ if [ -n "$HOST" ]; then
if [ -f "$BBB_WEB_ETC_CONFIG" ] && grep "bigbluebutton.web.serverURL" "$BBB_WEB_ETC_CONFIG" > /dev/null ; then
change_var_value "$BBB_WEB_ETC_CONFIG" bigbluebutton.web.serverURL "$PROTOCOL://$HOST"
else
echo "bigbluebutton.web.serverURL=$PROTOCOL://$HOST" > "$BBB_WEB_ETC_CONFIG"
echo "bigbluebutton.web.serverURL=$PROTOCOL://$HOST" >> "$BBB_WEB_ETC_CONFIG"
fi

View File

@ -1,2 +0,0 @@
Dockerfile
Dockerfile.dev

View File

@ -1,38 +0,0 @@
FROM node:8
RUN set -x \
&& curl -sL https://install.meteor.com | sed s/--progress-bar/-sL/g | /bin/sh \
&& useradd -m -G users -s /bin/bash meteor
RUN apt-get update && apt-get -y install jq
COPY . /source
RUN cd /source \
&& mv docker-entrypoint.sh /usr/local/bin/ \
&& chown -R meteor:meteor . \
&& mkdir /app \
&& chown -R meteor:meteor /app
USER meteor
RUN cd /source \
&& meteor npm install \
&& meteor build --directory /app
ENV NODE_ENV production
RUN cd /app/bundle/programs/server \
&& npm install \
&& npm cache clear --force
WORKDIR /app/bundle
ENV MONGO_URL=mongodb://mongo:27017/html5client \
PORT=3000 \
ROOT_URL=http://localhost:3000 \
METEOR_SETTINGS_MODIFIER=.
EXPOSE 3000
CMD ["docker-entrypoint.sh"]

View File

@ -1,24 +0,0 @@
FROM node:8
COPY . /source
RUN set -x \
&& curl -sL https://install.meteor.com | sed s/--progress-bar/-sL/g | /bin/sh \
&& useradd -m -G users -s /bin/bash meteor \
&& chown -R meteor:meteor /source
USER meteor
RUN cd /source \
&& meteor npm install
WORKDIR /source
ENV MONGO_URL=mongodb://mongo:27017/html5client \
PORT=3000 \
ROOT_URL=http://localhost:3000
EXPOSE 3000
CMD ["npm", "start"]

View File

@ -1,5 +0,0 @@
#!/bin/bash -e
export METEOR_SETTINGS=` jq "${METEOR_SETTINGS_MODIFIER}" ./programs/server/assets/app/config/settings.yml `
exec node main.js

View File

@ -4,9 +4,11 @@ import handleBreakoutRoomsList from './handlers/breakoutList';
import handleUpdateTimeRemaining from './handlers/updateTimeRemaining';
import handleBreakoutClosed from './handlers/breakoutClosed';
import joinedUsersChanged from './handlers/joinedUsersChanged';
import userBreakoutChanged from '/imports/api/breakouts/server/handlers/userBreakoutChanged';
RedisPubSub.on('BreakoutRoomsListEvtMsg', handleBreakoutRoomsList);
RedisPubSub.on('BreakoutRoomJoinURLEvtMsg', handleBreakoutJoinURL);
RedisPubSub.on('BreakoutRoomsTimeRemainingUpdateEvtMsg', handleUpdateTimeRemaining);
RedisPubSub.on('BreakoutRoomEndedEvtMsg', handleBreakoutClosed);
RedisPubSub.on('UpdateBreakoutUsersEvtMsg', joinedUsersChanged);
RedisPubSub.on('ChangeUserBreakoutEvtMsg', userBreakoutChanged);

View File

@ -0,0 +1,65 @@
import Breakouts from '/imports/api/breakouts';
import Logger from '/imports/startup/server/logger';
import { check } from 'meteor/check';
export default function userBreakoutChanged({ body }) {
check(body, Object);
const {
meetingId,
userId,
fromBreakoutId,
toBreakoutId,
redirectToHtml5JoinURL,
} = body;
check(meetingId, String);
check(userId, String);
check(fromBreakoutId, String);
check(toBreakoutId, String);
check(redirectToHtml5JoinURL, String);
const oldBreakoutSelector = {
parentMeetingId: meetingId,
breakoutId: fromBreakoutId,
freeJoin: false,
};
const newBreakoutSelector = {
parentMeetingId: meetingId,
breakoutId: toBreakoutId,
};
const oldModifier = {
$unset: {
[`url_${userId}`]: '',
},
};
const newModifier = {
$set: {
[`url_${userId}`]: {
redirectToHtml5JoinURL,
insertedTime: new Date().getTime(),
},
},
};
try {
let numberAffectedRows = 0;
if (oldBreakoutSelector.breakoutId !== '') {
numberAffectedRows += Breakouts.update(oldBreakoutSelector, oldModifier);
}
if (newBreakoutSelector.breakoutId !== '') {
numberAffectedRows += Breakouts.update(newBreakoutSelector, newModifier);
}
if (numberAffectedRows > 0) {
Logger.info(`Updated user breakout for userId=${userId}`);
}
} catch (err) {
Logger.error(`Updating user breakout: ${err}`);
}
}

View File

@ -4,6 +4,7 @@ import requestJoinURL from './methods/requestJoinURL';
import endAllBreakouts from './methods/endAllBreakouts';
import setBreakoutsTime from '/imports/api/breakouts/server/methods/setBreakoutsTime';
import sendMessageToAllBreakouts from './methods/sendMessageToAllBreakouts';
import moveUser from '/imports/api/breakouts/server/methods/moveUser';
Meteor.methods({
requestJoinURL,
@ -11,4 +12,5 @@ Meteor.methods({
endAllBreakouts,
setBreakoutsTime,
sendMessageToAllBreakouts,
moveUser,
});

View File

@ -0,0 +1,32 @@
import { Meteor } from 'meteor/meteor';
import RedisPubSub from '/imports/startup/server/redis';
import { extractCredentials } from '/imports/api/common/server/helpers';
import { check } from 'meteor/check';
import Logger from '/imports/startup/server/logger';
export default function moveUser(fromBreakoutId, toBreakoutId, userIdToMove) {
const REDIS_CONFIG = Meteor.settings.private.redis;
const CHANNEL = REDIS_CONFIG.channels.toAkkaApps;
const EVENT_NAME = 'ChangeUserBreakoutReqMsg';
try {
const { meetingId, requesterUserId } = extractCredentials(this.userId);
check(meetingId, String);
check(requesterUserId, String);
const userId = userIdToMove || requesterUserId;
return RedisPubSub.publishUserMessage(
CHANNEL, EVENT_NAME, meetingId, requesterUserId,
{
meetingId,
fromBreakoutId,
toBreakoutId,
userId,
},
);
} catch (err) {
Logger.error(`Exception while invoking method moveUser ${err.stack}`);
}
}

View File

@ -167,10 +167,13 @@ export default function addMeeting(meeting) {
const sanitizeTextInChat = original => SanitizeHTML(original, {
allowedTags: ['a', 'b', 'br', 'i', 'img', 'li', 'small', 'span', 'strong', 'u', 'ul'],
allowedAttributes: {
a: ['href', 'name', 'target'],
a: ['href', 'target'],
img: ['src', 'width', 'height'],
},
allowedSchemes: ['https'],
allowedSchemesByTag: {
a: ['https', 'mailto', 'tel']
}
});
const sanitizedWelcomeText = sanitizeTextInChat(welcomeMsg);
@ -181,14 +184,18 @@ export default function addMeeting(meeting) {
const insertBlankTarget = (s, i) => `${s.substr(0, i)} target="_blank"${s.substr(i)}`;
const linkWithoutTarget = new RegExp('<a href="(.*?)">', 'g');
linkWithoutTarget.test(welcomeMsg);
if (linkWithoutTarget.lastIndex > 0) {
welcomeMsg = insertBlankTarget(
welcomeMsg,
linkWithoutTarget.lastIndex - 1,
);
}
do {
linkWithoutTarget.test(welcomeMsg);
if (linkWithoutTarget.lastIndex > 0) {
welcomeMsg = insertBlankTarget(
welcomeMsg,
linkWithoutTarget.lastIndex - 1,
);
linkWithoutTarget.lastIndex = linkWithoutTarget.lastIndex - 1;
}
} while (linkWithoutTarget.lastIndex > 0);
newMeeting.welcomeProp.welcomeMsg = welcomeMsg;

View File

@ -160,7 +160,7 @@ Meteor.publish('meeting-time-remaining', timeRemainingPublish);
function notifications() {
const tokenValidation = AuthTokenValidation.findOne({ connectionId: this.connection.id });
if (tokenValidation || tokenValidation.validationStatus === ValidationStates.VALIDATED) {
if (tokenValidation && tokenValidation.validationStatus === ValidationStates.VALIDATED) {
notificationEmitter.on('notification', (notification) => {
const { meetingId, userId } = tokenValidation;
switch (notification.type) {

View File

@ -257,6 +257,11 @@ class Base extends Component {
}
if (ejected) {
if (meetingIsBreakout) {
window.close();
return null;
}
return (<MeetingEnded code="403" ejectedReason={ejectedReason} />);
}

View File

@ -9,6 +9,7 @@ import Modal from '/imports/ui/components/common/modal/fullscreen/component';
import { withModalMounter } from '/imports/ui/components/common/modal/service';
import SortList from './sort-user-list/component';
import Styled from './styles';
import Icon from '/imports/ui/components/common/icon/component.jsx';
const ROLE_MODERATOR = Meteor.settings.public.user.role_moderator;
@ -21,6 +22,26 @@ const intlMessages = defineMessages({
id: 'app.createBreakoutRoom.modalDesc',
description: 'modal description',
},
breakoutRoomUpdateDesc: {
id: 'app.updateBreakoutRoom.modalDesc',
description: 'update modal description',
},
cancelLabel: {
id: 'app.updateBreakoutRoom.cancelLabel',
description: 'used in the button that close update modal',
},
updateTitle: {
id: 'app.updateBreakoutRoom.title',
description: 'update breakout title',
},
updateConfirm: {
id: 'app.updateBreakoutRoom.confirm',
description: 'Update to breakout confirm button label',
},
resetUserRoom: {
id: 'app.update.resetRoom',
description: 'Reset user room button label',
},
confirmButton: {
id: 'app.createBreakoutRoom.confirm',
description: 'confirm button label',
@ -153,7 +174,7 @@ const propTypes = {
meetingName: PropTypes.string.isRequired,
users: PropTypes.arrayOf(PropTypes.object).isRequired,
createBreakoutRoom: PropTypes.func.isRequired,
getUsersNotAssigned: PropTypes.func.isRequired,
getUsersNotJoined: PropTypes.func.isRequired,
getBreakouts: PropTypes.func.isRequired,
sendInvitation: PropTypes.func.isRequired,
mountModal: PropTypes.func.isRequired,
@ -192,10 +213,11 @@ class BreakoutRoom extends PureComponent {
this.removeRoomUsers = this.removeRoomUsers.bind(this);
this.renderErrorMessages = this.renderErrorMessages.bind(this);
this.renderJoinedUsers = this.renderJoinedUsers.bind(this);
this.onUpdateBreakouts = this.onUpdateBreakouts.bind(this);
this.state = {
numberOfRooms: MIN_BREAKOUT_ROOMS,
seletedId: '',
selectedId: '',
users: [],
durationTime: 15,
freeJoin: false,
@ -220,7 +242,7 @@ class BreakoutRoom extends PureComponent {
componentDidMount() {
const {
isInvitation, breakoutJoinedUsers, getLastBreakouts, groups,
isInvitation, breakoutJoinedUsers, getLastBreakouts, groups, isUpdate,
} = this.props;
this.setRoomUsers();
if (isInvitation) {
@ -231,6 +253,30 @@ class BreakoutRoom extends PureComponent {
});
}
if (isUpdate) {
const usersToMerge = []
breakoutJoinedUsers.forEach((breakout) => {
breakout.joinedUsers.forEach((user) => {
usersToMerge.push({
userId: user.userId,
userName: user.name,
from: breakout.sequence,
room: breakout.sequence,
isModerator: user.role === ROLE_MODERATOR,
joined: true,
});
});
});
this.setState((prevState) => {
return {
users: [
...prevState.users,
...usersToMerge,
],
};
});
}
const lastBreakouts = getLastBreakouts();
if (lastBreakouts.length > 0) {
this.populateWithLastBreakouts(lastBreakouts);
@ -424,6 +470,52 @@ class BreakoutRoom extends PureComponent {
this.handleDismiss();
}
getBreakoutBySequence(sequence) {
const { getBreakouts } = this.props;
const breakouts = getBreakouts();
return breakouts.find((breakout) => breakout.sequence === sequence);
}
changeUserBreakout(fromBreakoutId, toBreakoutId, userId) {
const { moveUser } = this.props;
moveUser(fromBreakoutId, toBreakoutId, userId);
}
onUpdateBreakouts() {
const { users } = this.state;
const leastOneUserIsValid = users.some((user) => user.from !== user.room);
if (!leastOneUserIsValid) {
this.setState({ leastOneUserIsValid });
}
users.forEach((user) => {
const { from, room } = user;
let { userId } = user;
if (from === room) return;
let toBreakoutId = '';
if (room !== 0) {
const toBreakout = this.getBreakoutBySequence(room);
toBreakoutId = toBreakout.breakoutId;
}
let fromBreakoutId = '';
if (from !== 0) {
[userId] = userId.split('-');
const fromBreakout = this.getBreakoutBySequence(from);
fromBreakoutId = fromBreakout.breakoutId;
}
this.changeUserBreakout(fromBreakoutId, toBreakoutId, userId);
});
this.handleDismiss();
}
onAssignRandomly() {
const { numberOfRooms } = this.state;
const { users } = this.state;
@ -463,16 +555,17 @@ class BreakoutRoom extends PureComponent {
}
setRoomUsers() {
const { users, getUsersNotAssigned } = this.props;
const { users, getUsersNotJoined } = this.props;
const { users: stateUsers } = this.state;
const stateUsersId = stateUsers.map((user) => user.userId);
const roomUsers = getUsersNotAssigned(users)
const roomUsers = getUsersNotJoined(users)
.filter((user) => !stateUsersId.includes(user.userId))
.map((user) => ({
userId: user.userId,
extId: user.extId,
userName: user.name,
isModerator: user.role === ROLE_MODERATOR,
from: 0,
room: 0,
}));
@ -533,7 +626,7 @@ class BreakoutRoom extends PureComponent {
const usersCopy = [...users];
usersCopy[idxUser].room = room;
if (idxUser >= 0) usersCopy[idxUser].room = room;
this.setState({
users: usersCopy,
@ -693,7 +786,7 @@ class BreakoutRoom extends PureComponent {
ev.preventDefault();
const data = ev.dataTransfer.getData('text');
this.changeUserRoom(data, room);
this.setState({ seletedId: '' });
this.setState({ selectedId: '' });
};
const changeRoomName = (position) => (ev) => {
@ -769,6 +862,7 @@ class BreakoutRoom extends PureComponent {
const {
intl,
isInvitation,
isUpdate,
} = this.props;
const {
numberOfRooms,
@ -776,7 +870,7 @@ class BreakoutRoom extends PureComponent {
numberOfRoomsIsValid,
durationIsValid,
} = this.state;
if (isInvitation) return null;
if (isInvitation || isUpdate) return null;
return (
<React.Fragment key="breakout-form">
@ -907,8 +1001,8 @@ class BreakoutRoom extends PureComponent {
}
renderCheckboxes() {
const { intl, isInvitation, isBreakoutRecordable } = this.props;
if (isInvitation) return null;
const { intl, isInvitation, isUpdate, isBreakoutRecordable } = this.props;
if (isInvitation || isUpdate) return null;
const {
freeJoin,
record,
@ -948,14 +1042,14 @@ class BreakoutRoom extends PureComponent {
renderUserItemByRoom(room) {
const {
leastOneUserIsValid,
seletedId,
selectedId,
} = this.state;
const { intl, isMe } = this.props;
const dragStart = (ev) => {
ev.dataTransfer.setData('text', ev.target.id);
this.setState({ seletedId: ev.target.id });
this.setState({ selectedId: ev.target.id });
if (!leastOneUserIsValid) {
this.setState({ leastOneUserIsValid: true });
@ -963,7 +1057,7 @@ class BreakoutRoom extends PureComponent {
};
const dragEnd = () => {
this.setState({ seletedId: '' });
this.setState({ selectedId: '' });
};
return this.getUserByRoom(room)
@ -972,14 +1066,27 @@ class BreakoutRoom extends PureComponent {
tabIndex={-1}
id={`roomUserItem-${user.userId}`}
key={user.userId}
selected={seletedId === user.userId}
selected={selectedId.replace('roomUserItem-', '') === user.userId.replace('roomUserItem-', '')}
disabled={false}
highlight={room !== user.from}
draggable
onDragStart={dragStart}
onDragEnd={dragEnd}
>
{user.userName}
<i>{(isMe(user.userId)) ? ` (${intl.formatMessage(intlMessages.you)})` : ''}</i>
<span>
<span>{user.userName}</span>
<i>{(isMe(user.userId)) ? ` (${intl.formatMessage(intlMessages.you)})` : ''}</i>
</span>
{ room !== user.from ? (
<span
className="close"
role="button"
aria-label={intl.formatMessage(intlMessages.resetUserRoom)}
onClick={() => this.changeUserRoom(user.userId, user.from)}
>
<Icon iconName="close" />
</span>
) : null }
</Styled.RoomUserItem>
));
}
@ -1114,16 +1221,18 @@ class BreakoutRoom extends PureComponent {
}
renderTitle() {
const { intl } = this.props;
const { intl, isUpdate } = this.props;
return (
<Styled.SubTitle>
{intl.formatMessage(intlMessages.breakoutRoomDesc)}
{ isUpdate
? intl.formatMessage(intlMessages.breakoutRoomUpdateDesc)
: intl.formatMessage(intlMessages.breakoutRoomDesc) }
</Styled.SubTitle>
);
}
render() {
const { intl, isInvitation } = this.props;
const { intl, isInvitation, isUpdate } = this.props;
const {
preventClosing,
leastOneUserIsValid,
@ -1140,14 +1249,18 @@ class BreakoutRoom extends PureComponent {
title={
isInvitation
? intl.formatMessage(intlMessages.invitationTitle)
: isUpdate
? intl.formatMessage(intlMessages.updateTitle)
: intl.formatMessage(intlMessages.breakoutRoomTitle)
}
confirm={
{
label: isInvitation
? intl.formatMessage(intlMessages.invitationConfirm)
: isUpdate
? intl.formatMessage(intlMessages.updateConfirm)
: intl.formatMessage(intlMessages.confirmButton),
callback: isInvitation ? this.onInviteBreakout : this.onCreateBreakouts,
callback: isInvitation ? this.onInviteBreakout : isUpdate ? this.onUpdateBreakouts : this.onCreateBreakouts,
disabled: !leastOneUserIsValid
|| !numberOfRoomsIsValid
|| !roomNameDuplicatedIsValid
@ -1158,7 +1271,9 @@ class BreakoutRoom extends PureComponent {
}
dismiss={{
callback: this.handleDismiss,
label: intl.formatMessage(intlMessages.dismissLabel),
label: isUpdate
? intl.formatMessage(intlMessages.cancelLabel)
: intl.formatMessage(intlMessages.dismissLabel),
}}
preventClosing={preventClosing}
>

View File

@ -20,7 +20,7 @@ export default withTracker(() => ({
getBreakouts: ActionsBarService.getBreakouts,
getLastBreakouts: ActionsBarService.getLastBreakouts,
getBreakoutUserWasIn: BreakoutRoomService.getBreakoutUserWasIn,
getUsersNotAssigned: ActionsBarService.getUsersNotAssigned,
getUsersNotJoined: ActionsBarService.getUsersNotJoined,
sendInvitation: ActionsBarService.sendInvitation,
breakoutJoinedUsers: ActionsBarService.breakoutJoinedUsers(),
users: ActionsBarService.users(),
@ -28,4 +28,5 @@ export default withTracker(() => ({
isMe: ActionsBarService.isMe,
meetingName: ActionsBarService.meetingName(),
amIModerator: ActionsBarService.amIModerator(),
moveUser: ActionsBarService.moveUser,
}))(CreateBreakoutRoomContainer);

View File

@ -12,12 +12,15 @@ import {
colorWhite,
colorPrimary,
colorBlueLight,
colorBlueLightest,
colorGrayLightest,
} from '/imports/ui/stylesheets/styled-components/palette';
import { fontSizeSmall, fontSizeBase } from '/imports/ui/stylesheets/styled-components/typography';
import { fontSizeSmall, fontSizeBase, fontSizeSmaller } from '/imports/ui/stylesheets/styled-components/typography';
import {
borderRadius,
borderSize,
lgPaddingX,
lgPaddingY,
} from '/imports/ui/stylesheets/styled-components/general';
const BoxContainer = styled.div`
@ -66,9 +69,10 @@ const FreeJoinLabel = styled.label`
const BreakoutNameInput = styled.input`
width: 100%;
text-align: left;
font-weight: normal;
padding: .25rem;
font-weight: 600;
padding: .25rem .25rem .25rem 0;
margin: 0;
border: none;
&::placeholder {
color: ${colorGray};
opacity: 1;
@ -79,8 +83,9 @@ const BreakoutBox = styled(ScrollboxVertical)`
width: 100%;
min-height: 6rem;
max-height: 8rem;
border: 1px solid ${colorGrayLighter};
border-radius: ${borderRadius};
border: 1px solid ${colorGrayLightest};
border-radius: ${borderRadius};
padding: ${lgPaddingY} 0;
`;
const SpanWarn = styled.span`
@ -228,12 +233,21 @@ const RoomUserItem = styled.p`
text-overflow: ellipsis;
white-space: nowrap;
cursor: pointer;
border-bottom: solid .5px ${colorGrayLighter};
display: flex;
justify-content: space-between;
[dir="rtl"] & {
padding: .25rem .25rem .25rem 0;
}
span.close {
display: flex;
flex-direction: column;
justify-content: center;
margin-right: 5px;
font-size: ${fontSizeSmaller};
}
${({ selected }) => selected && `
background-color: ${colorPrimary};
color: ${colorWhite};
@ -243,6 +257,10 @@ const RoomUserItem = styled.p`
cursor: not-allowed;
color: ${colorGrayLighter};
`}
${({ highlight }) => highlight && `
background-color: ${colorBlueLightest};
`}
`;
const LockIcon = styled.span`

View File

@ -30,7 +30,7 @@ const currentBreakoutUsers = (user) => !Breakouts.findOne({
const filterBreakoutUsers = (filter) => (users) => users.filter(filter);
const getUsersNotAssigned = filterBreakoutUsers(currentBreakoutUsers);
const getUsersNotJoined = filterBreakoutUsers(currentBreakoutUsers);
const takePresenterRole = () => makeCall('assignPresenter', Auth.userID);
@ -68,9 +68,10 @@ export default {
breakoutJoinedUsers: () => Breakouts.find({
joinedUsers: { $exists: true },
}, { fields: { joinedUsers: 1, breakoutId: 1, sequence: 1 }, sort: { sequence: 1 } }).fetch(),
moveUser: (fromBreakoutId, toBreakoutId, userId) => makeCall('moveUser', fromBreakoutId, toBreakoutId, userId),
getBreakouts,
getLastBreakouts,
getUsersNotAssigned,
getUsersNotJoined,
takePresenterRole,
isSharingVideo: () => getVideoUrl(),
};

View File

@ -171,6 +171,8 @@ class App extends Component {
layoutRate,
horizontalPosition,
isRTL,
shouldShowScreenshare,
shouldShowExternalVideo,
} = this.props;
const { browserName } = browserInfo;
const { osName } = deviceInfo;
@ -205,7 +207,7 @@ class App extends Component {
}
Settings.save();
const initialPresentation = !getFromUserSettings('bbb_hide_presentation', HIDE_PRESENTATION || !layoutPresOpen);
const initialPresentation = !getFromUserSettings('bbb_hide_presentation', HIDE_PRESENTATION || !layoutPresOpen) || shouldShowScreenshare || shouldShowExternalVideo;
MediaService.setPresentationIsOpen(layoutContextDispatch, initialPresentation);
if (selectedLayout === 'custom') {

View File

@ -8,6 +8,7 @@ import AudioService from '../audio/service';
import VideoService from '../video-provider/service';
import { screenshareHasEnded } from '/imports/ui/components/screenshare/service';
import Styled from './styles';
import { Session } from 'meteor/session';
const intlMessages = defineMessages({
title: {
@ -129,6 +130,8 @@ class BreakoutJoinConfirmation extends Component {
extraInfo: { breakoutURL, isFreeJoin },
}, 'joining breakout room but redirected to about://blank');
}
Session.set('lastBreakoutIdOpened', selectValue);
window.open(url);
mountModal(null);
}

View File

@ -1,7 +1,9 @@
import React, { PureComponent } from 'react';
import { defineMessages, injectIntl } from 'react-intl';
import { withModalMounter } from '/imports/ui/components/common/modal/service';
import BBBMenu from "/imports/ui/components/common/menu/component";
import Button from '/imports/ui/components/common/button/component';
import CreateBreakoutRoomModal from '/imports/ui/components/actions-bar/create-breakout-room/container';
const intlMessages = defineMessages({
options: {
@ -12,6 +14,11 @@ const intlMessages = defineMessages({
id: 'app.breakout.dropdown.manageDuration',
description: 'Manage duration label',
},
manageUsers: {
id: 'app.breakout.dropdown.manageUsers',
description: 'Manage users label',
defaultMessage: 'Manage Users',
},
destroy: {
id: 'app.breakout.dropdown.destroyAll',
description: 'Destroy breakouts label',
@ -30,6 +37,7 @@ class BreakoutDropdown extends PureComponent {
endAllBreakouts,
isMeteorConnected,
amIModerator,
mountModal,
} = this.props;
this.menuItems = [];
@ -45,6 +53,19 @@ class BreakoutDropdown extends PureComponent {
}
);
this.menuItems.push(
{
key: 'updateBreakoutUsers',
dataTest: 'openUpdateBreakoutUsersModal',
label: intl.formatMessage(intlMessages.manageUsers),
onClick: () => {
mountModal(
<CreateBreakoutRoomModal isUpdate />
);
}
}
);
if (amIModerator) {
this.menuItems.push(
{
@ -101,4 +122,4 @@ class BreakoutDropdown extends PureComponent {
}
}
export default injectIntl(BreakoutDropdown);
export default withModalMounter(injectIntl(BreakoutDropdown));

View File

@ -155,6 +155,8 @@ class BreakoutRoom extends PureComponent {
if (breakoutUrlData.redirectToHtml5JoinURL !== ''
&& breakoutUrlData.redirectToHtml5JoinURL !== prevBreakoutData.redirectToHtml5JoinURL) {
prevBreakoutData = breakoutUrlData;
Session.set('lastBreakoutIdOpened', requestedBreakoutId);
window.open(breakoutUrlData.redirectToHtml5JoinURL, '_blank');
_.delay(() => this.setState({ generated: true, waiting: false }), 1000);
}
@ -171,7 +173,6 @@ class BreakoutRoom extends PureComponent {
}
getBreakoutURL(breakoutId) {
Session.set('lastBreakoutOpened', breakoutId);
const { requestJoinURL, getBreakoutRoomUrl } = this.props;
const { waiting } = this.state;
const breakoutRoomUrlData = getBreakoutRoomUrl(breakoutId);
@ -187,6 +188,8 @@ class BreakoutRoom extends PureComponent {
}
if (breakoutRoomUrlData) {
Session.set('lastBreakoutIdOpened', breakoutId);
window.open(breakoutRoomUrlData.redirectToHtml5JoinURL, '_blank');
this.setState({ waiting: false, generated: false });
}

View File

@ -9,10 +9,10 @@ const BREAKOUT_MODAL_DELAY = 200;
const propTypes = {
mountModal: PropTypes.func.isRequired,
currentBreakoutUrlData: PropTypes.shape({
insertedTime: PropTypes.number.isRequired,
lastBreakoutReceived: PropTypes.shape({
breakoutUrlData: PropTypes.func.isRequired,
}),
breakoutUserIsIn: PropTypes.shape({
breakoutRoomsUserIsIn: PropTypes.shape({
sequence: PropTypes.number.isRequired,
}),
breakouts: PropTypes.arrayOf(PropTypes.shape({
@ -21,8 +21,8 @@ const propTypes = {
};
const defaultProps = {
currentBreakoutUrlData: undefined,
breakoutUserIsIn: undefined,
lastBreakoutReceived: undefined,
breakoutRoomsUserIsIn: undefined,
breakouts: [],
};
@ -54,30 +54,34 @@ class BreakoutRoomInvitation extends Component {
checkBreakouts(oldProps) {
const {
breakouts,
currentBreakoutUrlData,
getBreakoutByUrlData,
breakoutUserIsIn,
lastBreakoutReceived,
breakoutRoomsUserIsIn,
} = this.props;
const {
didSendBreakoutInvite,
} = this.state;
const hasBreakouts = breakouts.length > 0;
const hasBreakoutsAvailable = breakouts.length > 0;
if (hasBreakouts && !breakoutUserIsIn && BreakoutService.checkInviteModerators()) {
if (hasBreakoutsAvailable
&& !breakoutRoomsUserIsIn
&& BreakoutService.checkInviteModerators()) {
const freeJoinRooms = breakouts.filter((breakout) => breakout.freeJoin);
if (currentBreakoutUrlData) {
const breakoutRoom = getBreakoutByUrlData(currentBreakoutUrlData);
const currentInsertedTime = currentBreakoutUrlData.insertedTime;
const oldCurrentUrlData = oldProps.currentBreakoutUrlData || {};
const oldInsertedTime = oldCurrentUrlData.insertedTime;
if (currentInsertedTime !== oldInsertedTime) {
const lastBreakoutId = Session.get('lastBreakoutOpened');
if (breakoutRoom.breakoutId !== lastBreakoutId) {
this.inviteUserToBreakout(breakoutRoom);
}
if (lastBreakoutReceived) {
const lastBreakoutIdOpened = Session.get('lastBreakoutIdOpened');
const oldLastBktReceivedInsertedTime = (typeof oldProps.lastBreakoutReceived === 'object') ? oldProps.lastBreakoutReceived.breakoutUrlData.insertedTime : 0;
// check if user has a new invitation
if (lastBreakoutReceived.breakoutUrlData.insertedTime !== oldLastBktReceivedInsertedTime
// or check if user just left a room and was invited to another room in last 15 secs
|| (typeof oldProps.breakoutRoomsUserIsIn === 'object'
&& !breakoutRoomsUserIsIn
&& lastBreakoutReceived.breakoutId !== lastBreakoutIdOpened
&& lastBreakoutReceived.breakoutUrlData.insertedTime > (new Date().getTime()) - 15000)
) {
this.inviteUserToBreakout(lastBreakoutReceived);
}
} else if (freeJoinRooms.length > 0 && !didSendBreakoutInvite) {
const maxSeq = Math.max(...freeJoinRooms.map(((room) => room.sequence)));
@ -90,12 +94,13 @@ class BreakoutRoomInvitation extends Component {
}
}
if (!hasBreakouts && didSendBreakoutInvite) {
if (!hasBreakoutsAvailable && didSendBreakoutInvite) {
this.setState({ didSendBreakoutInvite: false });
}
}
inviteUserToBreakout(breakout) {
Session.set('lastBreakoutIdInvited', breakout.breakoutId);
const {
mountModal,
} = this.props;

View File

@ -15,7 +15,6 @@ const BreakoutRoomInvitationContainer = ({ isMeetingBreakout, ...props }) => {
export default withTracker(() => ({
isMeetingBreakout: AppService.meetingIsBreakout(),
breakouts: BreakoutService.getBreakoutsNoTime(),
getBreakoutByUrlData: BreakoutService.getBreakoutByUrlData,
currentBreakoutUrlData: BreakoutService.getBreakoutUrlByUserId(Auth.userID),
breakoutUserIsIn: BreakoutService.getBreakoutUserIsIn(Auth.userID),
lastBreakoutReceived: BreakoutService.getLastBreakoutByUserId(Auth.userID),
breakoutRoomsUserIsIn: BreakoutService.getBreakoutUserIsIn(Auth.userID),
}))(BreakoutRoomInvitationContainer);

View File

@ -122,26 +122,27 @@ const checkInviteModerators = () => {
const getBreakoutByUserId = (userId) =>
Breakouts.find(
{ [`url_${userId}`]: { $exists: true } },
{ fields: { timeRemaining: 0 } }
{ fields: { timeRemaining: 0 } },
).fetch();
const getBreakoutByUrlData = (breakoutUrlData) =>
Breakouts.findOne({ [`url_${Auth.userID}`]: breakoutUrlData });
const getWithBreakoutUrlData = (userId) => (breakoutsArray) => breakoutsArray
.map((breakout) => {
if (typeof breakout[`url_${userId}`] === 'object') {
return Object.assign(breakout, { breakoutUrlData: breakout[`url_${userId}`] });
}
return Object.assign(breakout, { breakoutUrlData: { insertedTime: 0 } });
})
.reduce((acc, urlDataArray) => acc.concat(urlDataArray), []);
const getUrlFromBreakouts = (userId) => (breakoutsArray) =>
breakoutsArray
.map((breakout) => breakout[`url_${userId}`])
.reduce((acc, urlDataArray) => acc.concat(urlDataArray), []);
const getLastBreakoutInserted = (breakoutURLArray) => breakoutURLArray.sort((a, b) => {
return a.breakoutUrlData.insertedTime - b.breakoutUrlData.insertedTime;
}).pop();
const getLastURLInserted = (breakoutURLArray) =>
breakoutURLArray.sort((a, b) => a.insertedTime - b.insertedTime).pop();
const getBreakoutUrlByUserId = (userId) =>
fp.pipe(
getBreakoutByUserId,
getUrlFromBreakouts(userId),
getLastURLInserted
)(userId);
const getLastBreakoutByUserId = (userId) => fp.pipe(
getBreakoutByUserId,
getWithBreakoutUrlData(userId),
getLastBreakoutInserted,
)(userId);
const getBreakouts = () =>
Breakouts.find({}, { sort: { sequence: 1 } }).fetch();
@ -205,8 +206,7 @@ export default {
transferToBreakout,
meetingId: () => Auth.meetingID,
amIModerator,
getBreakoutUrlByUserId,
getBreakoutByUrlData,
getLastBreakoutByUserId,
getBreakouts,
getBreakoutsNoTime,
getBreakoutUserIsIn,

View File

@ -101,6 +101,7 @@ const Meta = styled.div`
flex: 1;
flex-flow: row;
line-height: 1.35;
align-items: baseline;
`;
const Name = styled.div`

View File

@ -2,16 +2,17 @@ import styled from 'styled-components';
import Styled from '../base/styles';
import { smallOnly } from '/imports/ui/stylesheets/styled-components/breakpoints';
import Button from '/imports/ui/components/common/button/component';
import { borderSize, smPaddingX } from '/imports/ui/stylesheets/styled-components/general';
import { borderSize, smPaddingX, borderRadius } from '/imports/ui/stylesheets/styled-components/general';
import {
lineHeightComputed,
modalTitleFw,
} from '/imports/ui/stylesheets/styled-components/typography';
import {
colorGrayLighter,
colorGrayLightest,
colorText,
colorWhite,
colorLink,
colorBlueLight,
} from '/imports/ui/stylesheets/styled-components/palette';
const FullscreenModal = styled(Styled.BaseModal)`
@ -32,7 +33,7 @@ const FullscreenModal = styled(Styled.BaseModal)`
const Header = styled.header`
display: flex;
padding: ${lineHeightComputed} 0;
border-bottom: ${borderSize} solid ${colorGrayLighter};
border-bottom: ${borderSize} solid ${colorGrayLightest};
`;
const Title = styled.h1`
@ -61,12 +62,26 @@ const Content = styled.div`
const DismissButton = styled(Button)`
flex: 0 1 48%;
border: 1px solid ${colorBlueLight};
border-radius: ${borderRadius};
color: ${colorBlueLight};
&:focus,
.buttonWrapper:focus:not([aria-disabled="true"]) & {
color: ${colorBlueLight};
}
&:hover,
.buttonWrapper:hover & {
color: ${colorBlueLight};
}
`;
const ConfirmButton = styled(Button)`
flex: 0 1 48%;
color: ${colorWhite} !important;
background-color: ${colorLink} !important;
border-width: 1px;
${({ popout }) => popout === 'popout' && `
& > i {

View File

@ -17,6 +17,7 @@ color: ${colorGray};
bottom: 0;
box-sizing: border-box;
display: flex;
flex-direction: column;
overflow-x: hidden;
overflow-wrap: break-word;
word-break: break-all;

View File

@ -301,14 +301,23 @@ class PresentationUploader extends Component {
}
});
if (!_.isEqual(prevProps.presentations, propPresentations) || presentations.length === 0) {
this.setState({
presentations: Object.values({
...presentations,
...propPresentations,
}),
});
}
const presState = Object.values({
...propPresentations,
...presentations,
});
const presStateMapped = presState.map((presentation) => {
propPresentations.forEach((propPres) => {
if (propPres.id == presentation.id){
presentation.isCurrent = propPres.isCurrent;
}
})
return presentation;
})
this.setState({
presentations: presStateMapped,
})
}
if (presentations.length > 0) {
@ -857,7 +866,6 @@ class PresentationUploader extends Component {
keyValue={item.id}
onChange={() => this.handleCurrentChange(item.id)}
disabled={disableActions}
animations={animations}
/>
</Styled.ItemAction>
{isRemovable ? (

View File

@ -5,6 +5,7 @@ import Poll from '/imports/api/polls/';
import { makeCall } from '/imports/ui/services/api';
import logger from '/imports/startup/client/logger';
import _ from 'lodash';
import { Random } from 'meteor/random'
const CONVERSION_TIMEOUT = 300000;
const TOKEN_TIMEOUT = 5000;
@ -155,7 +156,6 @@ const requestPresentationUploadToken = (
});
const uploadAndConvertPresentation = (
tmpPresId,
file,
downloadable,
podId,
@ -165,9 +165,9 @@ const uploadAndConvertPresentation = (
onProgress,
onConversion,
) => {
const tmpPresId = _.uniqueId(Random.id(20))
const data = new FormData();
data.append('presentation_name', file.name);
data.append('Filename', file.name);
data.append('fileUpload', file);
data.append('conference', meetingId);
data.append('room', meetingId);
@ -209,7 +209,7 @@ const uploadAndConvertPresentations = (
podId,
uploadEndpoint,
) => Promise.all(presentationsToUpload.map((p) => uploadAndConvertPresentation(
p.id, p.file, p.isDownloadable, podId, meetingId, uploadEndpoint,
p.file, p.isDownloadable, podId, meetingId, uploadEndpoint,
p.onUpload, p.onProgress, p.onConversion,
)));

View File

@ -98,6 +98,22 @@ const intlMessages = defineMessages({
id: 'app.shortcut-help.previousSlideDesc',
description: 'describes the previous slide shortcut',
},
togglePanKey: {
id: 'app.shortcut-help.togglePanKey',
description: 'describes the toggle pan shortcut key',
},
toggleFullscreenKey: {
id: 'app.shortcut-help.toggleFullscreenKey',
description: 'describes the toggle full-screen shortcut key',
},
nextSlideKey: {
id: 'app.shortcut-help.nextSlideKey',
description: 'describes the next slide shortcut key',
},
previousSlideKey: {
id: 'app.shortcut-help.previousSlideKey',
description: 'describes the previous slide shortcut key',
},
});
const ShortcutHelpComponent = (props) => {
@ -143,28 +159,28 @@ const ShortcutHelpComponent = (props) => {
shortcutItems.push((
<tr key={_.uniqueId('hotkey-item-')}>
<Styled.KeyCell>Spacebar</Styled.KeyCell>
<Styled.KeyCell>{intl.formatMessage(intlMessages.togglePanKey)}</Styled.KeyCell>
<Styled.DescCell>{intl.formatMessage(intlMessages.togglePan)}</Styled.DescCell>
</tr>
));
shortcutItems.push((
<tr key={_.uniqueId('hotkey-item-')}>
<Styled.KeyCell>Enter</Styled.KeyCell>
<Styled.KeyCell>{intl.formatMessage(intlMessages.toggleFullscreenKey)}</Styled.KeyCell>
<Styled.DescCell>{intl.formatMessage(intlMessages.toggleFullscreen)}</Styled.DescCell>
</tr>
));
shortcutItems.push((
<tr key={_.uniqueId('hotkey-item-')}>
<Styled.KeyCell>Right Arrow</Styled.KeyCell>
<Styled.KeyCell>{intl.formatMessage(intlMessages.nextSlideKey)}</Styled.KeyCell>
<Styled.DescCell>{intl.formatMessage(intlMessages.nextSlideDesc)}</Styled.DescCell>
</tr>
));
shortcutItems.push((
<tr key={_.uniqueId('hotkey-item-')}>
<Styled.KeyCell>Left Arrow</Styled.KeyCell>
<Styled.KeyCell>{intl.formatMessage(intlMessages.previousSlideKey)}</Styled.KeyCell>
<Styled.DescCell>{intl.formatMessage(intlMessages.previousSlideDesc)}</Styled.DescCell>
</tr>
));

View File

@ -123,6 +123,10 @@ const SidebarContent = (props) => {
width,
height,
}}
handleStyles={{
left: { height: '100vh' },
right: { height: '100vh' },
}}
>
{sidebarContentPanel === PANELS.CHAT
&& (

View File

@ -211,7 +211,7 @@ class UserOptions extends PureComponent {
toggleMuteAllUsersExceptPresenter,
meetingIsBreakout,
hasBreakoutRoom,
getUsersNotAssigned,
getUsersNotJoined,
openLearningDashboardUrl,
amIModerator,
users,
@ -227,7 +227,7 @@ class UserOptions extends PureComponent {
const canInviteUsers = amIModerator
&& !meetingIsBreakout
&& hasBreakoutRoom
&& getUsersNotAssigned(users).length;
&& getUsersNotJoined(users).length;
const { locale } = intl;

View File

@ -84,7 +84,7 @@ const UserOptionsContainer = withTracker((props) => {
toggleStatus,
isMeetingMuted: isMeetingMuteOnStart(),
amIModerator: ActionsBarService.amIModerator(),
getUsersNotAssigned: ActionsBarService.getUsersNotAssigned,
getUsersNotJoined: ActionsBarService.getUsersNotJoined,
hasBreakoutRoom: UserListService.hasBreakoutRoom(),
isBreakoutRecordable: ActionsBarService.isBreakoutRecordable(),
guestPolicy: WaitingUsersService.getGuestPolicy(),

View File

@ -730,10 +730,15 @@ class VideoService {
this.exitVideo();
}
getStatus() {
if (this.isConnecting) return 'videoConnecting';
if (this.isConnected) return 'connected';
return 'disconnected';
}
disableReason() {
const locks = {
videoLocked: this.isUserLocked(),
videoConnecting: this.isConnecting,
camCapReached: this.hasCapReached() && !this.hasVideoStream(),
meteorDisconnected: !Meteor.status().connected
};
@ -992,6 +997,7 @@ export default {
getAuthenticatedURL: () => videoService.getAuthenticatedURL(),
isLocalStream: cameraId => videoService.isLocalStream(cameraId),
hasVideoStream: () => videoService.hasVideoStream(),
getStatus: () => videoService.getStatus(),
disableReason: () => videoService.disableReason(),
playStart: cameraId => videoService.playStart(cameraId),
getCameraProfile: () => videoService.getCameraProfile(),

View File

@ -50,50 +50,62 @@ const JOIN_VIDEO_DELAY_MILLISECONDS = 500;
const propTypes = {
intl: PropTypes.object.isRequired,
hasVideoStream: PropTypes.bool.isRequired,
status: PropTypes.string.isRequired,
mountVideoPreview: PropTypes.func.isRequired,
forceMountVideoPreview: PropTypes.func.isRequired,
};
const JoinVideoButton = ({
intl,
hasVideoStream,
status,
disableReason,
mountVideoPreview,
forceMountVideoPreview,
}) => {
const { isMobile } = deviceInfo;
const shouldEnableWebcamSelectorButton = ENABLE_WEBCAM_SELECTOR_BUTTON
&& hasVideoStream
&& !isMobile;
const exitVideo = () => hasVideoStream
&& !isMobile
&& (!VideoService.isMultipleCamerasEnabled() || shouldEnableWebcamSelectorButton);
const isMobileSharingCamera = hasVideoStream && isMobile;
const isDesktopSharingCamera = hasVideoStream && !isMobile;
const shouldEnableWebcamSelectorButton = ENABLE_WEBCAM_SELECTOR_BUTTON
&& isDesktopSharingCamera;
const exitVideo = () => isDesktopSharingCamera && (!VideoService.isMultipleCamerasEnabled()
|| shouldEnableWebcamSelectorButton);
const handleOnClick = debounce(() => {
if (!validIOSVersion()) {
return VideoService.notify(intl.formatMessage(intlMessages.iOSWarning));
}
if (exitVideo()) {
VideoService.exitVideo();
} else if (isMobileSharingCamera) {
forceMountVideoPreview();
} else {
mountVideoPreview();
switch (status) {
case 'videoConnecting':
VideoService.stopVideo();
break;
case 'connected':
default:
if (exitVideo()) {
VideoService.exitVideo();
} else {
mountVideoPreview(isMobileSharingCamera);
}
}
}, JOIN_VIDEO_DELAY_MILLISECONDS);
const handleOpenAdvancedOptions = (e) => {
e.stopPropagation();
forceMountVideoPreview();
mountVideoPreview(isMobileSharingCamera);
};
let label = exitVideo()
? intl.formatMessage(intlMessages.leaveVideo)
: intl.formatMessage(intlMessages.joinVideo);
const getMessageFromStatus = () => {
let statusMessage = status;
if (status !== 'videoConnecting') {
statusMessage = exitVideo() ? 'leaveVideo' : 'joinVideo';
}
return statusMessage;
};
if (disableReason) label = intl.formatMessage(intlMessages[disableReason]);
const label = disableReason
? intl.formatMessage(intlMessages[disableReason])
: intl.formatMessage(intlMessages[getMessageFromStatus()]);
const isSharing = hasVideoStream || status === 'videoConnecting';
const renderEmojiButton = () => (
shouldEnableWebcamSelectorButton
@ -114,9 +126,9 @@ const JoinVideoButton = ({
data-test={hasVideoStream ? 'leaveVideo' : 'joinVideo'}
onClick={handleOnClick}
hideLabel
color={hasVideoStream ? 'primary' : 'default'}
icon={hasVideoStream ? 'video' : 'video_off'}
ghost={!hasVideoStream}
color={isSharing ? 'primary' : 'default'}
icon={isSharing ? 'video' : 'video_off'}
ghost={!isSharing}
size="lg"
circle
disabled={!!disableReason}

View File

@ -10,17 +10,17 @@ const JoinVideoOptionsContainer = (props) => {
const {
hasVideoStream,
disableReason,
status,
intl,
mountModal,
...restProps
} = props;
const mountVideoPreview = () => { mountModal(<VideoPreviewContainer forceOpen={false} />); };
const forceMountVideoPreview = () => { mountModal(<VideoPreviewContainer forceOpen />); };
const mountVideoPreview = (force) => { mountModal(<VideoPreviewContainer forceOpen={force} />); };
return (
<JoinVideoButton {...{
mountVideoPreview, forceMountVideoPreview, hasVideoStream, disableReason, ...restProps,
mountVideoPreview, hasVideoStream, disableReason, status, ...restProps,
}}
/>
);
@ -29,4 +29,5 @@ const JoinVideoOptionsContainer = (props) => {
export default withModalMounter(injectIntl(withTracker(() => ({
hasVideoStream: VideoService.hasVideoStream(),
disableReason: VideoService.disableReason(),
status: VideoService.getStatus(),
}))(JoinVideoOptionsContainer)));

File diff suppressed because it is too large Load Diff

View File

@ -589,7 +589,6 @@
"app.lock-viewers.button.apply": "Pas toe",
"app.lock-viewers.button.cancel": "Kanselleer",
"app.lock-viewers.locked": "Gesluit",
"app.lock-viewers.unlocked": "Ontsluit",
"app.guest-policy.ariaTitle": "Gasbeleid instellings modaal",
"app.guest-policy.title": "Gasbeleid",
"app.guest-policy.description": "Verander vergadering gasbeleid instellings",

View File

@ -132,6 +132,8 @@
"app.userList.userOptions.savedNames.title": "قائمة المستخدمين في الاجتماع {0} في {1}",
"app.userList.userOptions.sortedFirstName.heading": "مرتبة حسب الاسم الأول:",
"app.userList.userOptions.sortedLastName.heading": "مرتبة حسب الاسم الأخير:",
"app.userList.userOptions.hideViewersCursor": "مؤشرات المشاهد مقفلة",
"app.userList.userOptions.showViewersCursor": "مؤشرات المشاهد متاحة",
"app.media.label": "الوسائط",
"app.media.autoplayAlertDesc": "تمكين إستخدام",
"app.media.screenshare.start": "بدأت مشاركة الشاشة",
@ -169,7 +171,7 @@
"app.presentation.changedSlideContent": "تغيير العرض إلى الشريحة: {0}",
"app.presentation.emptySlideContent": "لا يوجد محتوى للشريحة الحالية",
"app.presentation.options.fullscreen": "ملء الشاشة",
"app.presentation.options.exitFullscreen": "الخروج من وضع ملئ للشاشة",
"app.presentation.options.exitFullscreen": "الخروج من شاشة كاملة",
"app.presentation.options.minimize": "تصغير",
"app.presentation.options.snapshot": "لقطة من العرض الحالي",
"app.presentation.options.downloading": "جارى التحميل...",
@ -327,16 +329,16 @@
"app.muteWarning.disableMessage": "كتم التنبيهات معطلة حتى إعادة الصوت",
"app.muteWarning.tooltip": "انقر لإغلاق وتعطيل التحذير حتى إلغاء كتم الصوت التالي",
"app.navBar.settingsDropdown.optionsLabel": "خيارات",
"app.navBar.settingsDropdown.fullscreenLabel": "جعل الشاشة الكاملة",
"app.navBar.settingsDropdown.fullscreenLabel": "جعل شاشة كاملة",
"app.navBar.settingsDropdown.settingsLabel": "الإعدادات",
"app.navBar.settingsDropdown.aboutLabel": "حول",
"app.navBar.settingsDropdown.leaveSessionLabel": "اترك الاجتماع",
"app.navBar.settingsDropdown.exitFullscreenLabel": "الخروج من الشاشة الكاملة",
"app.navBar.settingsDropdown.fullscreenDesc": "جعل قائمة الاعدادات على الشاشة الكاملة",
"app.navBar.settingsDropdown.exitFullscreenLabel": "الخروج من شاشة كاملة",
"app.navBar.settingsDropdown.fullscreenDesc": "جعل قائمة الإعدادات على شاشة كاملة",
"app.navBar.settingsDropdown.settingsDesc": "تغيير الإعدادات العامة",
"app.navBar.settingsDropdown.aboutDesc": "مزيد من المعلومات عن التطبيق",
"app.navBar.settingsDropdown.leaveSessionDesc": "مغادرة الإجتماع",
"app.navBar.settingsDropdown.exitFullscreenDesc": "الخروج من الشاشة الكاملة",
"app.navBar.settingsDropdown.exitFullscreenDesc": "الخروج من شاشة كاملة",
"app.navBar.settingsDropdown.hotkeysLabel": "اختصارات لوحة المفاتيح",
"app.navBar.settingsDropdown.hotkeysDesc": "قائمة اختصارات لوحة المفاتيح المتاحة",
"app.navBar.settingsDropdown.helpLabel": "مساعدة",
@ -562,6 +564,7 @@
"app.audio.audioSettings.descriptionLabel": "يرجى ملاحظة أنه سيظهر نافذة حوار في متصفحك ، مما يتطلب منك قبول مشاركة الميكروفون",
"app.audio.audioSettings.microphoneSourceLabel": "مصدر الميكروفون",
"app.audio.audioSettings.speakerSourceLabel": "مصدر مكبر الصوت",
"app.audio.audioSettings.testSpeakerLabel": "اختبر سمّاعتك",
"app.audio.audioSettings.microphoneStreamLabel": "مستوى صوتك المتدفق ",
"app.audio.audioSettings.retryLabel": "المحاولة مرة أخرى",
"app.audio.listenOnly.backLabel": "الى الخلف",
@ -677,7 +680,7 @@
"app.shortcut-help.openDebugWindow": "افتح نافذة التصحيح",
"app.shortcut-help.openStatus": "فتح قائمة الحالات",
"app.shortcut-help.togglePan": "تشغيل لوحة الأدوات (مقدم)",
"app.shortcut-help.toggleFullscreen": "تبديل مِلء الشاشة (مقدم)",
"app.shortcut-help.toggleFullscreen": "تبديل الشاشة الكاملة (مقدم)",
"app.shortcut-help.nextSlideDesc": "الشريحة التالية (مقدم)",
"app.shortcut-help.previousSlideDesc": "الشريحة السابقة (مقدم)",
"app.lock-viewers.title": "قفل المشاهدين",
@ -695,7 +698,7 @@
"app.lock-viewers.button.apply": "تطبيق",
"app.lock-viewers.button.cancel": "إلغاء",
"app.lock-viewers.locked": "مقفل",
"app.lock-viewers.unlocked": "مفتوح",
"app.lock-viewers.hideViewersCursor": "رؤية مؤشرات المشاهدين الآخرين",
"app.guest-policy.ariaTitle": "نهج إعدادات سياسة الضيف",
"app.guest-policy.title": "سياسة الضيف",
"app.guest-policy.description": "تغيير إعداد سياسة ضيف الاجتماع",
@ -801,7 +804,7 @@
"app.video.camCapReached": "لا يمكنك مشاركة المزيد من الكاميرات",
"app.video.meetingCamCapReached": "وصل الاجتماع إلى حده من الكاميرات المتزامنة",
"app.video.dropZoneLabel": "أفلت هنا",
"app.fullscreenButton.label": "جعل {0} على الشاشة الكاملة",
"app.fullscreenButton.label": "جعل {0} على شاشة كاملة",
"app.fullscreenUndoButton.label": "تراجع عن {0} شاشة كاملة",
"app.switchButton.expandLabel": "قم بتوسيع مشاركة الشاشة بالفيديو",
"app.switchButton.shrinkLabel": "تقليص مشاركة الشاشة الفيديو",
@ -947,18 +950,19 @@
"playback.button.about.aria": "حول",
"playback.button.clear.aria": "مسح البحث",
"playback.button.close.aria": "إغلاق مشروط",
"playback.button.fullscreen.aria": "محتوى ملء الشاشة",
"playback.button.fullscreen.aria": "محتوى الشاشة الكاملة",
"playback.button.restore.aria": "استعادة المحتوى",
"playback.button.search.aria": "بحث",
"playback.button.section.aria": "قسم جانبي",
"playback.button.swap.aria": "تبادل المحتوى",
"playback.button.theme.aria": "تبديل منظر الشاشة",
"playback.error.wrapper.aria": "مساحة الخطأ",
"playback.loader.wrapper.aria": "مساحة المحمّل",
"playback.player.wrapper.aria": "مساحة العرض",
"playback.player.about.modal.shortcuts.title": "الاختصارات",
"playback.player.about.modal.shortcuts.alt": "Alt",
"playback.player.about.modal.shortcuts.shift": "Shift",
"playback.player.about.modal.shortcuts.fullscreen": "تبديل ملء الشاشة",
"playback.player.about.modal.shortcuts.fullscreen": "تبديل الشاشة الكاملة",
"playback.player.about.modal.shortcuts.play": "تشغيل / وقف",
"playback.player.about.modal.shortcuts.section": "تبديل القسم الجانبي",
"playback.player.about.modal.shortcuts.seek.backward": "ما قبل",

View File

@ -543,7 +543,6 @@
"app.lock-viewers.button.apply": "Tətbiq et",
"app.lock-viewers.button.cancel": "Ləğv et",
"app.lock-viewers.locked": "Kilidlənib",
"app.lock-viewers.unlocked": "Kiliddən açılıb",
"app.connection-status.ariaTitle": "Bağlantı vəziyyəti modaldır",
"app.connection-status.title": "Bağlantı vəziyyəti",
"app.connection-status.description": "İstifadəçilərin əlaqə vəziyyətinə baxın",

View File

@ -1,7 +1,6 @@
{
"app.home.greeting": "Вашата презентация ще започне всеки момент",
"app.chat.submitLabel": "Изпрати",
"app.chat.loading": "Заредени чат съобщения: {0}%",
"app.chat.errorMaxMessageLength": "Съобщението е с {0} знак(а) по-дълго ",
"app.chat.disconnected": "Вие не сте свързан, съобщението не може да бъде изпратено",
"app.chat.locked": "Разговора е заключен, съобщението не може да бъде изпратено",
@ -24,8 +23,6 @@
"app.chat.multi.typing": "Пишат няколко потребителя",
"app.chat.one.typing": "{0} пише",
"app.chat.two.typing": "{0} и {1} пишат",
"app.chat.copySuccess": "Копиране на чата",
"app.chat.copyErr": "Проблем с копирането на чата",
"app.captions.label": "Субтитри",
"app.captions.menu.close": "Затвори",
"app.captions.menu.start": "Старт",
@ -41,23 +38,6 @@
"app.captions.menu.backgroundColor": "Цвят на фона",
"app.captions.menu.previewLabel": "Преглед",
"app.captions.menu.cancelLabel": "Отказ",
"app.captions.pad.hide": "Скрий субтитрите",
"app.captions.pad.tip": "Натиснете Esc за връщане в редактора",
"app.captions.pad.ownership": "Поемете контрол",
"app.captions.pad.ownershipTooltip": "Ще поемете контрол върху писането на субтитри на {0}",
"app.captions.pad.interimResult": "Междинен резултат",
"app.captions.pad.dictationStart": "Започни диктовка",
"app.captions.pad.dictationStop": "Спри диктовката",
"app.captions.pad.dictationOnDesc": "Включи гласово разпознаване",
"app.captions.pad.dictationOffDesc": "Изключи гласово разпознаване",
"app.captions.pad.speechRecognitionStop": "Разпознаването на реч е прекратено поради несъвместимост в браузъра или период на мълчание",
"app.textInput.sendLabel": "Изпращане",
"app.title.defaultViewLabel": "Стандартен изглед на презентацията",
"app.note.title": "Споделени бележки",
"app.note.label": "Бележка",
"app.note.hideNoteLabel": "Скрий бележката",
"app.note.tipLabel": "Натиснете Esc за връщане в редактора",
"app.note.locked": "Заключен",
"app.user.activityCheck": "Проверка на потребителската активност",
"app.user.activityCheck.label": "Проверка дали потребителя е още в срещата ({0})",
"app.user.activityCheck.check": "Провери",
@ -73,13 +53,8 @@
"app.userList.byModerator": "от (Модератор)",
"app.userList.label": "Списък на потребителите",
"app.userList.toggleCompactView.label": "Превключи към режим на компактен преглед",
"app.userList.moderator": "Модератор",
"app.userList.mobile": "Мобилен",
"app.userList.guest": "Гост",
"app.userList.sharingWebcam": "Web камера",
"app.userList.menuTitleContext": "Опции",
"app.userList.chatListItem.unreadSingular": "Едно ново съобщение",
"app.userList.chatListItem.unreadPlural": "{0} нови съобщения",
"app.userList.menu.chat.label": "Започни личен чат",
"app.userList.menu.clearStatus.label": "Изчисти статуса",
"app.userList.menu.removeUser.label": "Изключи потребителя",
@ -87,11 +62,6 @@
"app.userlist.menu.removeConfirmation.desc": "Предотврати повторно влизане на потребителя",
"app.userList.menu.muteUserAudio.label": "Заглуши",
"app.userList.menu.unmuteUserAudio.label": "включи микрофона",
"app.userList.menu.webcamPin.label": "Закачи потребителските камери",
"app.userList.menu.webcamUnpin.label": "Откачи потребителските камери",
"app.userList.menu.giveWhiteboardAccess.label" : "Предоставя достъп до дъската",
"app.userList.menu.removeWhiteboardAccess.label": "Премахва достъп до дъската",
"app.userList.menu.ejectUserCameras.label": "Затвори камерите",
"app.userList.userAriaLabel": "{0} {1} {2} Статус {3}",
"app.userList.menu.promoteUser.label": "Повиши до модератор",
"app.userList.menu.demoteUser.label": "Понижи до участник",
@ -123,44 +93,25 @@
"app.userList.userOptions.enablePubChat": "Общия чат е разрешен",
"app.userList.userOptions.showUserList": "Участниците виждат списъка с потребителите",
"app.userList.userOptions.enableOnlyModeratorWebcam": "Вече можете да включите камерата си, всички ще ви виждат",
"app.userList.userOptions.savedNames.title": "Списък на потребителите в срещата {0} от {1}",
"app.userList.userOptions.sortedFirstName.heading": "Сортирани по собствено име:",
"app.userList.userOptions.sortedLastName.heading": "Сортирани по фамилия:",
"app.media.label": "Медия",
"app.media.autoplayAlertDesc": "Разреши достъпа",
"app.media.screenshare.start": "Споделянето на екрана започна",
"app.media.screenshare.end": "Споделянето на екрана приключи",
"app.media.screenshare.endDueToDataSaving": "Споделянето на екран е спряно за икономия на трафик",
"app.media.screenshare.unavailable": "Споделянето на екран не е възможно",
"app.media.screenshare.notSupported": " Споделянето на екран не е възможно с този браузър.",
"app.media.screenshare.autoplayBlockedDesc": "Нуждаем се от Вашето разрешение за да Ви покажем екрана на презентатора",
"app.media.screenshare.autoplayAllowLabel": "Виж споделения екран",
"app.screenshare.presenterLoadingLabel": "Вашият споделен екран се зарежда",
"app.screenshare.viewerLoadingLabel": "Екрана на презентатора се зарежда",
"app.screenshare.presenterSharingLabel": "В момента споделяте екрана си",
"app.screenshare.screenshareFinalError": "Код {0}. Невъзможно е споделянето на екрана",
"app.screenshare.screenshareRetryError": "Код {0}. Повторен опит за споделяне на екран",
"app.screenshare.screenshareRetryOtherEnvError": "Код {0}. Невъзможно е споделянето на екрана. Опитайте да използвате друг браузър или устройство",
"app.screenshare.screenshareUnsupportedEnv": "Код {0}. Браузърът не се поддържа. Опитайте да използвате друг браузър или устройство.",
"app.screenshare.screensharePermissionError": "Код {0}. Необходимо е разрешение за заснемане на екрана.",
"app.meeting.ended": "Тази сесия приключи",
"app.meeting.meetingTimeRemaining": "Оставащо време до края на срещата: {0}",
"app.meeting.meetingTimeHasEnded": "Времето изтече: Скоро срещата ще приключи",
"app.meeting.endedByUserMessage": "Сесията е прекратена от {0}",
"app.meeting.endedByNoModeratorMessageSingular": "Срещата е прекратена поради липса на модератор за повече от една минута.",
"app.meeting.endedByNoModeratorMessagePlural": "Срещата е прекратена поради липса на модератор за повече от {0} минути.",
"app.meeting.endedMessage": "Ще бъдете пренасочени към началния екран",
"app.meeting.alertMeetingEndsUnderMinutesSingular": "Срещата ще приключи до една минута",
"app.meeting.alertMeetingEndsUnderMinutesPlural": "Срещата ще приключи до {0} минути",
"app.meeting.alertBreakoutEndsUnderMinutesPlural": "Екипната стая ще се затвори след {0} минути.",
"app.meeting.alertBreakoutEndsUnderMinutesSingular": "Екипната стая ще се затвори след една минута.",
"app.presentation.hide": "Скрий презентацията",
"app.presentation.notificationLabel": "Текуща презентация",
"app.presentation.downloadLabel": "Download",
"app.presentation.slideContent": "Съдържание на слайда",
"app.presentation.startSlideContent": "Начало на слайда",
"app.presentation.endSlideContent": "Край на слайда",
"app.presentation.changedSlideContent": "Презентацията премина към слайд: {0}",
"app.presentation.emptySlideContent": "Няма съдържание в текущия слайд",
"app.presentation.presentationToolbar.noNextSlideDesc": "Край на презентацията",
"app.presentation.presentationToolbar.noPrevSlideDesc": "Начало на презентацията",
@ -186,10 +137,8 @@
"app.presentation.presentationToolbar.fitToWidth": "Разшири максимално",
"app.presentation.presentationToolbar.fitToPage": "Запълни страницата",
"app.presentation.presentationToolbar.goToSlide": "Слайд {0}",
"app.presentation.placeholder": "Изчакване да бъде качена презентация",
"app.presentationUploder.title": "презентацията",
"app.presentationUploder.message": "Като презентатор имате възможност да качите Office документ или PDF файл. Препоръчваме PDF файл. Моля уверете се, че презентацията е избрана използвайки кръглия чек бокс от дясно.",
"app.presentationUploder.extraHint": "ВАЖНО: единичен файл не може да превишава {0} МВ и {1} страници. ",
"app.presentationUploder.uploadLabel": "Качване",
"app.presentationUploder.confirmLabel": "Потвърждаване",
"app.presentationUploder.confirmDesc": "Запазете Вашите промени и стартирайте презентацията",
@ -202,10 +151,7 @@
"app.presentationUploder.fileToUpload": "да бъде качено...",
"app.presentationUploder.currentBadge": "Текущо",
"app.presentationUploder.rejectedError": "Избрания/те файл(ове) бяха отхвърлени. Моля проверете типа на файла(овете)",
"app.presentationUploder.connectionClosedError": "Прекъсване поради лоша връзка. Моля опитайте отново.",
"app.presentationUploder.upload.progress": "Качване ({0}%)",
"app.presentationUploder.upload.413": "Файла е прекалено голям, надвишава максумума от {0} МВ",
"app.presentationUploder.genericError": "Оопс, нещо се обърка...",
"app.presentationUploder.upload.408": "Времето на заявката за upload токен изтече",
"app.presentationUploder.upload.404": "404: Невалиден токен за upload",
"app.presentationUploder.upload.401": "Неуспешна заявка за презентация",
@ -214,68 +160,31 @@
"app.presentationUploder.conversion.generatingThumbnail": "Генериране на thumbnails ...",
"app.presentationUploder.conversion.generatedSlides": "Генериране на слайдове ...",
"app.presentationUploder.conversion.generatingSvg": "Генериране на SVG изобажения ...",
"app.presentationUploder.conversion.pageCountExceeded": "Страниците надвишават максумума от {0}",
"app.presentationUploder.conversion.officeDocConversionInvalid": "Грешка при обработка на office документа. Моля, по възможност качете PDF файл.",
"app.presentationUploder.conversion.officeDocConversionFailed": "Грешка при обработка на office документа. Моля, по възможност качете PDF файл.",
"app.presentationUploder.conversion.pdfHasBigPage": "Проблем с конвертирането на PDF файла, моля опитайте да го оптимизирате. Максимален брой страници {0}",
"app.presentationUploder.conversion.timeout": "Опс, обработката отне много време",
"app.presentationUploder.conversion.pageCountFailed": "Проблем с установяването на броя на страниците.",
"app.presentationUploder.conversion.unsupportedDocument": "Неподържано файлово разширение",
"app.presentationUploder.isDownloadableLabel": "Свалянето на презентацията не е разрешено - кликнете за предоставяне на разрешение за сваляне ",
"app.presentationUploder.isNotDownloadableLabel": "Свалянето на презентацията е разрешено - кликнете за да забраните свалянето",
"app.presentationUploder.removePresentationLabel": "Премахни презентацията",
"app.presentationUploder.setAsCurrentPresentation": "Направи презентацията активна",
"app.presentationUploder.tableHeading.filename": "Име на файла",
"app.presentationUploder.tableHeading.options": "Опции",
"app.presentationUploder.tableHeading.status": "Статус",
"app.presentationUploder.uploading": "Качване {0} {1}",
"app.presentationUploder.uploadStatus": "{0} от {1} качвания приключиха ",
"app.presentationUploder.completed": "{0} качвания приключиха",
"app.presentationUploder.item" : "елемент",
"app.presentationUploder.itemPlural" : "елементи",
"app.presentationUploder.clearErrors": "Изчисти грешките",
"app.presentationUploder.clearErrorsDesc": "Изчиства неуспешно качените презентации",
"app.presentationUploder.uploadViewTitle": "Качи презентация",
"app.poll.pollPaneTitle": "Проучване",
"app.poll.quickPollTitle": "Бързо проучване",
"app.poll.hidePollDesc": "Скрии панела за гласуване",
"app.poll.quickPollInstruction": "Изберете вариантите по-долу за да стартирате Вашето проучване",
"app.poll.activePollInstruction": "Оставете панела отворен за да виждате в реално време отговорите на Вашето проучване. Когато сте готови, изберете 'Публикувай резултатите'",
"app.poll.dragDropPollInstruction": "За да попълните стойностите на анкетата, довлачете текстов файл със стойностите до маркираното поле",
"app.poll.customPollTextArea": "Попълнете стойностите на анкетата",
"app.poll.publishLabel": "Публикувай анкетата",
"app.poll.cancelPollLabel": "Отмяна",
"app.poll.backLabel": "Стартирай анкета",
"app.poll.closeLabel": "Затвори",
"app.poll.waitingLabel": "Очакват се отговорите ({0}/{1})",
"app.poll.ariaInputCount": "Опции в проучването {0} от {1}",
"app.poll.customPlaceholder": "Добави вариант в проучването",
"app.poll.noPresentationSelected": "Не е избрана презентация! Моля изберете.",
"app.poll.clickHereToSelect": "Щракнете туз за избор",
"app.poll.question.label" : "Напишете Вашия въпрос...",
"app.poll.optionalQuestion.label" : "Напишете Вашия въпрос (незадължително)...",
"app.poll.userResponse.label" : "Потребителски отговор",
"app.poll.responseTypes.label" : "Варианти на отговор",
"app.poll.optionDelete.label" : "Изтрий",
"app.poll.responseChoices.label" : "Изпор на отговори",
"app.poll.typedResponse.desc" : "На потребителите ще бъде показано текстово поле в което да попълнят отговора си.",
"app.poll.addItem.label" : "Добави елемент",
"app.poll.start.label" : "Стартирай анкета",
"app.poll.secretPoll.label" : "Анонимна анкета",
"app.poll.secretPoll.isSecretLabel": "Анкетата е анонимна - няма да можете да видите индивидуалните отговори.",
"app.poll.questionErr": "Въвеждането на въпрос е задължително.",
"app.poll.optionErr": "Въведете опции за анкетата",
"app.poll.startPollDesc": "Започнете анкетата",
"app.poll.showRespDesc": "Настройка на отговора",
"app.poll.addRespDesc": "Добавя възможност за въвеждане на отговр",
"app.poll.deleteRespDesc": "Премахва опция {0}",
"app.poll.t": "Вярно",
"app.poll.f": "Невярно",
"app.poll.tf": "Вярно / Невярно",
"app.poll.y": "Да",
"app.poll.n": "Не",
"app.poll.abstention": "Въздържал се",
"app.poll.yna": "Да / Не / Въздържал се",
"app.poll.a2": "A / B",
"app.poll.a3": "A / B / C",
"app.poll.a4": "A / B / C / D",
@ -284,7 +193,6 @@
"app.poll.answer.false": "Невярно",
"app.poll.answer.yes": "Да",
"app.poll.answer.no": "Не",
"app.poll.answer.abstention": "Въздържал се",
"app.poll.answer.a": "A",
"app.poll.answer.b": "B",
"app.poll.answer.c": "C",
@ -292,16 +200,7 @@
"app.poll.answer.e": "E",
"app.poll.liveResult.usersTitle": "Потребители",
"app.poll.liveResult.responsesTitle": "Отговор",
"app.poll.liveResult.secretLabel": "Това е анонимна анкета. Индивидуалните отговори няма да бъдат показани.",
"app.poll.removePollOpt": "Премахната опция {0} от анкетата",
"app.poll.emptyPollOpt": "Празно",
"app.polling.pollingTitle": "Опции за проучването",
"app.polling.pollQuestionTitle": "Въпрос за гласуване",
"app.polling.submitLabel": "Изпрати",
"app.polling.submitAriaLabel": "Изпрати отговора",
"app.polling.responsePlaceholder": "Въведи отговор",
"app.polling.responseSecret": "Анонимна анкета - презентатора няма да вижда Вашия отговор.",
"app.polling.responseNotSecret": "Нормална анкета - Презентатора ще вижда вашия отговор.",
"app.polling.pollAnswerLabel": "Отговори на проучването {0}",
"app.polling.pollAnswerDesc": "Изберете тази опция за да гласувате за {0}",
"app.failedMessage": "Съжаляваме, има проблем с връзката до сървъра",
@ -309,14 +208,10 @@
"app.connectingMessage": "Свързване...",
"app.waitingMessage": "Разкачен. Опит за свързване след {0} секунди ...",
"app.retryNow": "Опитай сега",
"app.muteWarning.label": "Кликнете {0} за премахване на заглушаването",
"app.muteWarning.disableMessage": "Съобщенията за заглушаване са изключени до премахване на заглушаването",
"app.muteWarning.tooltip": "Кликнете за да затворите и изключите предупреждението до следващото премахване на заглушаването",
"app.navBar.settingsDropdown.optionsLabel": "Опции",
"app.navBar.settingsDropdown.fullscreenLabel": "Покажи на цял екран",
"app.navBar.settingsDropdown.settingsLabel": "Настройки",
"app.navBar.settingsDropdown.aboutLabel": "Относно",
"app.navBar.settingsDropdown.leaveSessionLabel": "Непускане на срещата",
"app.navBar.settingsDropdown.exitFullscreenLabel": "Изход от цял екран",
"app.navBar.settingsDropdown.fullscreenDesc": "Покажи менюто с настройките на цял екран",
"app.navBar.settingsDropdown.settingsDesc": "Change the general settings",
@ -331,17 +226,12 @@
"app.navBar.userListToggleBtnLabel": "Показва списъка с потребители",
"app.navBar.toggleUserList.ariaLabel": "Скрий/покажи потребителите и съобщенията",
"app.navBar.toggleUserList.newMessages": "with new message notification",
"app.navBar.toggleUserList.newMsgAria": "Ново съобщение от {0} ",
"app.navBar.recording": "Тази сесия се записва",
"app.navBar.recording.on": "Запис",
"app.navBar.recording.off": "Не се записва",
"app.navBar.emptyAudioBrdige": "Няма активен микрофон. Включете микрофона за да има звук към този запис.",
"app.leaveConfirmation.confirmLabel": "Напусни",
"app.leaveConfirmation.confirmDesc": "Напускане на срещата",
"app.endMeeting.title": "Край {0}",
"app.endMeeting.description": "Ще прекратите сесията на {0} активни потребител/я. Сигурни ли сте, че желаете да прекратите сесията?",
"app.endMeeting.noUserDescription": "Сигурни ли сте че желаете да прекратите сесията?",
"app.endMeeting.contentWarning": "Съобщенията в чата, споделените бележки, съдържанието на дъската и споделените документи за тази сесия няма да бъдат директно достъпни.",
"app.endMeeting.yesLabel": "Да",
"app.endMeeting.noLabel": "Не",
"app.about.title": "Относно",
@ -356,13 +246,9 @@
"app.actionsBar.camOffLabel": "Камера изк.",
"app.actionsBar.raiseLabel": "вдигни ръка",
"app.actionsBar.actionsDropdown.restorePresentationLabel": "Покажи презентацията",
"app.actionsBar.actionsDropdown.restorePresentationDesc": "Бутон за възстановяване на презентацията след мимимизиране",
"app.actionsBar.actionsDropdown.minimizePresentationLabel": "Минимизирай презентацията",
"app.actionsBar.actionsDropdown.minimizePresentationDesc": "Бутон за минимизиране на презентацията",
"app.screenshare.screenShareLabel" : "Споделяне на екрана",
"app.submenu.application.applicationSectionTitle": "Приложение",
"app.submenu.application.animationsLabel": "Анимации",
"app.submenu.application.audioFilterLabel": "Аудио филтри за микрофона",
"app.submenu.application.fontSizeControlLabel": "Размер на шрифта",
"app.submenu.application.increaseFontBtnLabel": "Увеличи размера на шрифта",
"app.submenu.application.decreaseFontBtnLabel": "Намали размера на шрифта",
@ -370,14 +256,11 @@
"app.submenu.application.languageLabel": "Език на интерфейса",
"app.submenu.application.languageOptionLabel": "Изберете език",
"app.submenu.application.noLocaleOptionLabel": "Няма активна локализация",
"app.submenu.application.paginationEnabledLabel": "Видео страниране",
"app.submenu.application.layoutOptionLabel": "Видове изгледи",
"app.submenu.notification.SectionTitle": "Съобщения",
"app.submenu.notification.Desc": "Дефинира как и за какво ще бъдете информирани",
"app.submenu.notification.audioAlertLabel": "Звукови предупреждения",
"app.submenu.notification.pushAlertLabel": "Popup предупреждения",
"app.submenu.notification.messagesLabel": "Чат съобщение",
"app.submenu.notification.guestWaitingLabel": "Гост очаква одобрение",
"app.submenu.audio.micSourceLabel": "Микрофон - източник",
"app.submenu.audio.speakerSourceLabel": "Говорители - източник",
"app.submenu.audio.streamVolumeLabel": "Сила на звука",
@ -401,20 +284,12 @@
"app.settings.dataSavingTab.screenShare": "Разреши споделянето на екрана",
"app.settings.dataSavingTab.description": "За да ограничите използването на данни, определете какво да се показва",
"app.settings.save-notification.label": "Настройките бяха записани",
"app.statusNotifier.lowerHands": "Смъкни ръцете",
"app.statusNotifier.raisedHandsTitle": "Вдигнати ръце",
"app.statusNotifier.raisedHandDesc": "{0} вдигнаха ръка",
"app.statusNotifier.raisedHandDescOneUser": "{0} вдигнати ръце",
"app.statusNotifier.and": "и",
"app.switch.onLabel": "ВКЛ",
"app.switch.offLabel": "ИЗК",
"app.talkingIndicator.ariaMuteDesc" : "Избери за да заглушиш потребителя",
"app.talkingIndicator.isTalking" : "{0} говори",
"app.talkingIndicator.moreThanMaxIndicatorsTalking" : "{0}+ говорят",
"app.talkingIndicator.moreThanMaxIndicatorsWereTalking" : "{0}+ говореха",
"app.talkingIndicator.wasTalking" : "{0} спря да говори",
"app.actionsBar.actionsDropdown.actionsLabel": "Действия",
"app.actionsBar.actionsDropdown.presentationLabel": "Управление на презентациите",
"app.actionsBar.actionsDropdown.initPollLabel": "Стартирай проучване",
"app.actionsBar.actionsDropdown.desktopShareLabel": "Сподели екрана",
"app.actionsBar.actionsDropdown.lockedDesktopShareLabel": "Споделянето на екрана е забранено",
@ -432,13 +307,9 @@
"app.actionsBar.actionsDropdown.captionsDesc": "Показва/скрива панела на субтитрите",
"app.actionsBar.actionsDropdown.takePresenter": "Стани презентатор",
"app.actionsBar.actionsDropdown.takePresenterDesc": "Правиш се презентатор",
"app.actionsBar.actionsDropdown.selectRandUserLabel": "Избери случаен потребител",
"app.actionsBar.actionsDropdown.selectRandUserDesc": "Избери случаен участник",
"app.actionsBar.emojiMenu.statusTriggerLabel": "Статус",
"app.actionsBar.emojiMenu.awayLabel": "Отсъстващ",
"app.actionsBar.emojiMenu.awayDesc": "Промени статуса си на отсъстващ",
"app.actionsBar.emojiMenu.raiseHandLabel": "Вдигни ръка",
"app.actionsBar.emojiMenu.lowerHandLabel": "Смъкни ръка",
"app.actionsBar.emojiMenu.raiseHandDesc": "Вдигни ръка за да зададеш въпрос",
"app.actionsBar.emojiMenu.neutralLabel": "Неопределено",
"app.actionsBar.emojiMenu.neutralDesc": "Промени статуса си на неопределен",
@ -484,8 +355,6 @@
"app.audioModal.ariaTitle": "Включи аудиото",
"app.audioModal.microphoneLabel": "Със звук",
"app.audioModal.listenOnlyLabel": "Като слушател",
"app.audioModal.microphoneDesc": "Влез в срещата с микрофон",
"app.audioModal.listenOnlyDesc": "Влез в срещата като слушател",
"app.audioModal.audioChoiceLabel": "Как желаете да се включите?",
"app.audioModal.iOSBrowser": "Аудио/Видео не се поддържа",
"app.audioModal.iOSErrorDescription": "Към момента Chrome под iOS не поддържа аудио и видео. ",
@ -511,7 +380,6 @@
"app.audioModal.playAudio.arialabel" : "Пусни аудио",
"app.audioDial.tipIndicator": "Подсказка",
"app.audioDial.tipMessage": "Натиснете `0` на вашия телефон за да вкл/изк микрофона си.",
"app.audioModal.connecting": "Установяване на аудио връзка",
"app.audioManager.joinedAudio": "Вие се присъединихте към аудио конференцията",
"app.audioManager.joinedEcho": "Вие се присъединихте към ехо тест",
"app.audioManager.leftAudio": "Вие напуснахте аудио конференцията",
@ -523,14 +391,9 @@
"app.audioManager.mediaError": "Грешка: Има проблем с досъпа до вашите камера/микрофон",
"app.audio.joinAudio": "Включи аудиото",
"app.audio.leaveAudio": "Изключи аудиото",
"app.audio.changeAudioDevice": "Премени аудио устройството",
"app.audio.enterSessionLabel": "Влез в сесията",
"app.audio.playSoundLabel": "Пусни звук",
"app.audio.backLabel": "Назад",
"app.audio.loading": "Зареждане",
"app.audio.microphones": "Микрофони",
"app.audio.speakers": "Говорители",
"app.audio.noDeviceFound": "Не е намерено устройство",
"app.audio.audioSettings.titleLabel": "Изберете Ваште аудио настройки",
"app.audio.audioSettings.descriptionLabel": "Моля обърнете внимание, Вашият браузър ще поиска разрешение за споделяне на микрофона",
"app.audio.audioSettings.microphoneSourceLabel": "Микрофон - източник",
@ -555,41 +418,18 @@
"app.modal.confirm": "Завършено",
"app.modal.newTab": "(отваря нов таб)",
"app.modal.confirm.description": "Запази промяната и затвори избора",
"app.modal.randomUser.noViewers.description": "Не са налични участници от които да се избере случаен\n",
"app.modal.randomUser.selected.description": "Вие бяхте избран на случаен принцип",
"app.modal.randomUser.title": "Случайно избран потребител",
"app.modal.randomUser.who": "Кой ще бъде избран..?",
"app.modal.randomUser.alone": "Има само един участник",
"app.modal.randomUser.reselect.label": "Избери отново",
"app.modal.randomUser.ariaLabel.title": "Диалог за случаен избор на потребител",
"app.dropdown.close": "Затвори",
"app.dropdown.list.item.activeLabel": "Активен",
"app.error.400": "Грешна заявка",
"app.error.401": "Неауторизиран",
"app.error.403": "Вие бяхте изключен от срещата",
"app.error.404": "Не е намерен",
"app.error.408": "Ауторизацията неуспешна",
"app.error.410": "Срещата приключи",
"app.error.500": "Опс, нещо не е наред",
"app.error.userLoggedOut": "Потребителя има невалиден sessionToken поради log out ",
"app.error.ejectedUser": "Потребителя има невалиден sessionToken поради изхвърляне",
"app.error.userBanned": "Потребителя беше изгонен",
"app.error.leaveLabel": "Влезте отново",
"app.error.fallback.presentation.title": "Възникна грешка",
"app.error.fallback.presentation.description": "Влязъл е. Моля презаредете станицата",
"app.error.fallback.presentation.reloadButton": "Презареждане",
"app.guest.waiting": "Изчаква одобрение за вход",
"app.guest.errorSeeConsole": "Грешка: Повече подробности в конзолата.",
"app.guest.noModeratorResponse": "Няма отговор от модератора.",
"app.guest.windowTitle": "BigBlueButton - Лоби за гости",
"app.guest.missingMeeting": "Срещата не съществува.",
"app.guest.meetingEnded": "Срещата приключи.",
"app.guest.guestWait": "Моля изчакайте модератора да одобри участието Ви в срещата.",
"app.guest.guestDeny": "Участието на госта в срещата е отказано.",
"app.guest.seatWait": "Гост очаква одобрение за участие в срещата.",
"app.guest.allow": "Госта е одобрен и препратен към срещата.",
"app.guest.guestInvalid": "Госта е невалиден",
"app.guest.meetingForciblyEnded": "Не можете да влезете в среща която принудително е приключила",
"app.userList.guest.waitingUsers": "Изчаква потребители",
"app.userList.guest.waitingUsersTitle": "Управление на потребителите",
"app.userList.guest.optionTitle": "Преглеждане на чакващите потребители",
@ -601,10 +441,6 @@
"app.userList.guest.pendingGuestUsers": "{0} Изчакващи Гост потребители",
"app.userList.guest.pendingGuestAlert": "Присъедини се към сесията и очаква Вашето одобрение",
"app.userList.guest.rememberChoice": "Запомни избора",
"app.userList.guest.emptyMessage": "Няма нови съобщения",
"app.userList.guest.inputPlaceholder": "Съобщение до гостите в лобито",
"app.userList.guest.acceptLabel": "Приемам",
"app.userList.guest.denyLabel": "Забранявам",
"app.user-info.title": "Преглед на директорията",
"app.toast.breakoutRoomEnded": "Екипната стая бе затворена. Моля вкючете аудиото.",
"app.toast.chat.public": "Ново съобщение в Общия чат",
@ -614,17 +450,13 @@
"app.toast.setEmoji.label": "Емоджи стутса е сменен на {0}",
"app.toast.meetingMuteOn.label": "Всички потребители бяха заглушени",
"app.toast.meetingMuteOff.label": "Заглушаването на срещата е изключено",
"app.toast.setEmoji.raiseHand": "Вие дигнахте ръка",
"app.toast.setEmoji.lowerHand": "Вие свалихте ръка",
"app.notification.recordingStart": "Тази сесия се записва",
"app.notification.recordingStop": "Тази сесия не се записва",
"app.notification.recordingPaused": "Тази сесия вече не се записва",
"app.notification.recordingAriaLabel": "Време на запис",
"app.notification.userJoinPushAlert": "{0} се присъедини към сесията",
"app.notification.userLeavePushAlert": "{0} напуснаха сесията",
"app.submenu.notification.raiseHandLabel": "Вдигни ръка",
"app.shortcut-help.title": "Клавишни комбинации",
"app.shortcut-help.accessKeyNotAvailable": "Кода за достъп не е достъпен",
"app.shortcut-help.comboLabel": "Комбинация",
"app.shortcut-help.functionLabel": "Функция",
"app.shortcut-help.closeLabel": "Затвори",
@ -638,7 +470,6 @@
"app.shortcut-help.openActions": "Отвори менюто с възможни действия",
"app.shortcut-help.openStatus": "Отвори статус менюто",
"app.shortcut-help.togglePan": "Активиране на показалеца (Презентатор)",
"app.shortcut-help.toggleFullscreen": "Превключи на пълен екран (Презентатор)",
"app.shortcut-help.nextSlideDesc": "Следващ слайд (Презентатор)",
"app.shortcut-help.previousSlideDesc": "Предишен слайд (Презентатор)",
"app.lock-viewers.title": "Задай ограничение",
@ -655,27 +486,9 @@
"app.lock-viewers.button.apply": "Приложи",
"app.lock-viewers.button.cancel": "Отказ",
"app.lock-viewers.locked": "Забранено",
"app.lock-viewers.unlocked": "Разрешено",
"app.guest-policy.button.askModerator": "Попитай модератора",
"app.guest-policy.button.alwaysAccept": "Винаги приемам",
"app.guest-policy.button.alwaysDeny": "Винаги отказвам",
"app.connection-status.ariaTitle": "Статус на връзката",
"app.connection-status.title": "Статус на връзката",
"app.connection-status.description": "Статус на връзката на потребителите",
"app.connection-status.empty": "Не са докладвани проблеми с връзката",
"app.connection-status.more": "още",
"app.connection-status.copy": "Копирай мрежовите данни",
"app.connection-status.copied": "Копирани!",
"app.connection-status.label": "Статус на връзката",
"app.connection-status.no": "Не",
"app.connection-status.notification": "Установени са проблеми с връзката Ви",
"app.connection-status.offline": "offline",
"app.connection-status.lostPackets": "Загуба на пакети",
"app.connection-status.usingTurn": "Използване на TURN",
"app.connection-status.yes": "Да",
"app.learning-dashboard.label": "Табло анализи на участието",
"app.learning-dashboard.description": "Отвори таблото с потребителските активности",
"app.learning-dashboard.clickHereToOpen": "Отвори таблото са анализи на обучението",
"app.recording.startTitle": "Стартиране на записа",
"app.recording.stopTitle": "Пауза на записа",
"app.recording.resumeTitle": "Продължи записа",
@ -683,45 +496,27 @@
"app.recording.stopDescription": "Сигурни ли сте че желаете да паузирате записа? Можете да продължите записа при натискане на бутона отново.",
"app.videoPreview.cameraLabel": "Камера",
"app.videoPreview.profileLabel": "Качество",
"app.videoPreview.quality.low": "Ниско",
"app.videoPreview.quality.medium": "Средно",
"app.videoPreview.quality.high": "Високо",
"app.videoPreview.quality.hd": "Висока резолюция",
"app.videoPreview.cancelLabel": "Отказ",
"app.videoPreview.closeLabel": "Затвори",
"app.videoPreview.findingWebcamsLabel": "Търсене на камери",
"app.videoPreview.startSharingLabel": "Започване на споделянето",
"app.videoPreview.stopSharingLabel": "Спри споделянето",
"app.videoPreview.stopSharingAllLabel": "Спри всички",
"app.videoPreview.sharedCameraLabel": "Тази камера вече е споделена",
"app.videoPreview.webcamOptionLabel": "Избери камера",
"app.videoPreview.webcamPreviewLabel": "Камера преглед",
"app.videoPreview.webcamSettingsTitle": "Настройки на камерата",
"app.videoPreview.webcamVirtualBackgroundLabel": "Настройки на виртуалния фон",
"app.videoPreview.webcamVirtualBackgroundDisabledLabel": "Това устройство не поддържа виртуален фон",
"app.videoPreview.webcamNotFoundLabel": "Камерата не е намерена",
"app.videoPreview.profileNotFoundLabel": "Няма поддържан профил на камера",
"app.video.joinVideo": "Сподели камерата",
"app.video.connecting": "Започва споделянето на камерата...",
"app.video.leaveVideo": "Спри споделянето на камерата",
"app.video.advancedVideo": "Отвори разширените настройки",
"app.video.iceCandidateError": "Грешка при добавянето на ICE кандидат",
"app.video.iceConnectionStateError": "Проблем с връзката (ICE грешка 1107)",
"app.video.permissionError": "Грешка при споделянето на камерата. Моля проверете разрешенията",
"app.video.sharingError": "Грешка при споделянето на камерата",
"app.video.abortError": "Възникна непознат проблем, който възпрепятства използването на камерата",
"app.video.overconstrainedError": "Вашата камера не поддържа това качество",
"app.video.securityError": "Вашият браузър не позволява използването на камерата. Опитайте с друг браузър ",
"app.video.typeError": "Невалиден профил на качеството за камерата. Свържете се с администратор.",
"app.video.notFoundError": "Камерата не беше намерена. Моля проверете дали е свързана",
"app.video.notAllowed": "Липсва разрешение за споделяне на камерата, моля проверете разрешенията на браузъра",
"app.video.notSupportedError": "Може да се споделя видео от камерата само от сигурни източници, проверете валидността на SSL сертификата",
"app.video.notReadableError": "Няма достъп до видеото от камерата. Моля проверете дали друго приложение не я ползва.",
"app.video.timeoutError": "Браузърът не отговори навреме",
"app.video.genericError": "Възникна непозната грешка с устройството ({0})",
"app.video.mediaTimedOutError": "Видеопотока от Вашата камера беше прекъснат. Опитайте да я споделите отново",
"app.video.mediaFlowTimeout1020": "Медията не може да достигне до сървъра (грешка 1020)",
"app.video.suggestWebcamLock": "Да се ​​приложи ли настройката за заключване на уеб камерите на участниците?",
"app.video.suggestWebcamLockReason": "(това ще подобри стабилността на срещата)",
"app.video.enable": "Разреши",
"app.video.cancel": "Отказ",
@ -732,23 +527,7 @@
"app.video.videoMenu": "Видео меню",
"app.video.videoMenuDisabled": "Видео менюто на камерета е изключено в настройките",
"app.video.videoMenuDesc": "Отвори падащото видео меню",
"app.video.pagination.prevPage": "Виж предишните видеа",
"app.video.pagination.nextPage": "Виж следващите видеа",
"app.video.clientDisconnected": "Поради проблеми с връзката камерата не може да бъде споделена",
"app.video.virtualBackground.none": "Нищо",
"app.video.virtualBackground.blur": "Замъглено",
"app.video.virtualBackground.home": "Дом",
"app.video.virtualBackground.board": "Дъска",
"app.video.virtualBackground.coffeeshop": "Кафене",
"app.video.virtualBackground.background": "Фон",
"app.video.virtualBackground.genericError": "Проблем с прилагане на ефекта. Опитайте отново",
"app.video.virtualBackground.camBgAriaDesc": "Приложи виртуален фон към {0}",
"app.video.camCapReached": "Вие не може да споделяте повече камери",
"app.video.dropZoneLabel": "Пусни тук",
"app.fullscreenButton.label": "Покажи {0} на цял екран",
"app.fullscreenUndoButton.label": "Назад {0} fullscreen",
"app.switchButton.expandLabel": "Разпъни видеото на споделения екран",
"app.switchButton.shrinkLabel": "Намали видеото на споделения екран",
"app.sfu.mediaServerConnectionError2000": "Връзката тс медия сървъра невъзможна (Грешка 2000)",
"app.sfu.mediaServerOffline2001": "Медия сървъра е offline. Моля опитайте по-късно (грешка 2001)",
"app.sfu.mediaServerNoResources2002": "Медия сървъра няма свободни ресурси (грешка 2002)",
@ -758,9 +537,6 @@
"app.sfu.invalidSdp2202":"Клиента генерира невалидна медия заявка (SDP грешка 2202)",
"app.sfu.noAvailableCodec2203": "Сървъра на може да намери подходящ кодек (грешка 2203)",
"app.meeting.endNotification.ok.label": "OK",
"app.whiteboard.annotations.poll": "Резултатите от анкетата са публикувани",
"app.whiteboard.annotations.pollResult": "Резултати от анкетата",
"app.whiteboard.annotations.noResponses": "Няма отговор",
"app.whiteboard.toolbar.tools": "Инструменти",
"app.whiteboard.toolbar.tools.hand": "Показалец",
"app.whiteboard.toolbar.tools.pencil": "Молив",
@ -788,23 +564,15 @@
"app.whiteboard.toolbar.multiUserOn": "Включи многопотребителската бяла дъска",
"app.whiteboard.toolbar.multiUserOff": "Изключи многопотребителската бяла дъска",
"app.whiteboard.toolbar.fontSize": "Размер на шрифта",
"app.whiteboard.toolbarAriaLabel": "Инструменти за презентиране",
"app.feedback.title": "Вие излязохте от конференцията",
"app.feedback.subtitle": "Ще се радваме да чуем Вашия опит с BigBlueButton (опционално)",
"app.feedback.textarea": "Как можем да подобрим BigBlueButton?",
"app.feedback.sendFeedback": "Изпрати мнение",
"app.feedback.sendFeedbackDesc": "Изпрати мнение и напусни срещата",
"app.videoDock.webcamMirrorLabel": "Огледало",
"app.videoDock.webcamMirrorDesc": "Огледален образ на избраната камера",
"app.videoDock.webcamFocusLabel": "Фокус",
"app.videoDock.webcamFocusDesc": "Премести фокуса върху избраната камера",
"app.videoDock.webcamUnfocusLabel": "Премахни фокуса",
"app.videoDock.webcamUnfocusDesc": "Премахни фокуса от избраната камера",
"app.videoDock.webcamPinLabel": "Закачи",
"app.videoDock.webcamPinDesc": "Закачи избраната камера",
"app.videoDock.webcamUnpinLabel": "Разкачи",
"app.videoDock.webcamUnpinLabelDisabled": "Само модераторите могат да разкачат участници",
"app.videoDock.webcamUnpinDesc": "Разкачи избраната камера",
"app.videoDock.autoplayBlockedDesc": "Нуждаем се от Вашето разрешение да Ви покажем камерите да другите потребители",
"app.videoDock.autoplayAllowLabel": "Прегледай камерите",
"app.invitation.title": "Покана за екипна стая",
@ -812,22 +580,17 @@
"app.createBreakoutRoom.title": "Екипни стаи",
"app.createBreakoutRoom.ariaTitle": "Скрий екипните стаи",
"app.createBreakoutRoom.breakoutRoomLabel": "Екипни стаи {0}",
"app.createBreakoutRoom.askToJoin": "Поискайте да се присъедините",
"app.createBreakoutRoom.generatingURL": "Генериране на URL",
"app.createBreakoutRoom.generatingURLMessage": "Генерира се URL за присъединяване към избраната екипна стая. Това ще отнеме няколко секунди...",
"app.createBreakoutRoom.duration": "Продължителност {0}",
"app.createBreakoutRoom.room": "Стая {0}",
"app.createBreakoutRoom.notAssigned": "Неприсъединени ({0})",
"app.createBreakoutRoom.join": "Влез в стаята",
"app.createBreakoutRoom.joinAudio": "Включи аудиото",
"app.createBreakoutRoom.returnAudio": "Възстанови аудиото",
"app.createBreakoutRoom.alreadyConnected": "Вече сте в стаята",
"app.createBreakoutRoom.confirm": "Създай",
"app.createBreakoutRoom.record": "Запиши",
"app.createBreakoutRoom.numberOfRooms": "Брой на стаите",
"app.createBreakoutRoom.durationInMinutes": "Продължителност (минути)",
"app.createBreakoutRoom.randomlyAssign": "Случайно записване",
"app.createBreakoutRoom.randomlyAssignDesc": "Разпредели участниците в екипните стаи на случаен принцип",
"app.createBreakoutRoom.endAllBreakouts": "Затвори всички екипни стаи",
"app.createBreakoutRoom.roomName": "{0} (Стая - {1})",
"app.createBreakoutRoom.doneLabel": "Завършено",
@ -837,17 +600,9 @@
"app.createBreakoutRoom.addParticipantLabel": "+ Добави участник",
"app.createBreakoutRoom.freeJoin": "Разрешете на потребителите да изберат в коя екипна стая да влязат",
"app.createBreakoutRoom.leastOneWarnBreakout": "Трябва да поставите поне един потребител в екипната стая.",
"app.createBreakoutRoom.minimumDurationWarnBreakout": "Минималното време за активност на екипната стая е {0} минути.",
"app.createBreakoutRoom.modalDesc": "Съвет: Можете да влачите потребителските имена до конкретната екипна стая.",
"app.createBreakoutRoom.roomTime": "{0} минути",
"app.createBreakoutRoom.numberOfRoomsError": "Броя на стаите е невалиден",
"app.createBreakoutRoom.duplicatedRoomNameError": "Имената на стаите на могат да се дублират",
"app.createBreakoutRoom.emptyRoomNameError": "Името на стаята не може да е празно",
"app.createBreakoutRoom.extendTimeInMinutes": "Време за удължаване(минути)",
"app.createBreakoutRoom.extendTimeLabel": "Удължи",
"app.createBreakoutRoom.extendTimeCancel": "Отмени",
"app.createBreakoutRoom.extendTimeHigherThanMeetingTimeError": "Времето за активност на екипната стая не може да превишава това на основната среща",
"app.createBreakoutRoom.roomNameInputDesc": "Обновява името на екипната стая",
"app.externalVideo.start": "Сподели ново видео",
"app.externalVideo.title": "Сподели външно видео",
"app.externalVideo.input": "Външно видео URl",
@ -855,91 +610,12 @@
"app.externalVideo.urlError": "Този видеоизточник не се поддържа.",
"app.externalVideo.close": "Затвори",
"app.externalVideo.autoPlayWarning": "Щракнете вълхо видеото за да го пуснете",
"app.externalVideo.refreshLabel": "Обнови Video Player",
"app.externalVideo.noteLabel": "Бележка: Споделеното външно видео няма да се появи във записа. Поддържат се YouTube, Vimeo, Instructure Media, Twitch, Dailymotion and URLs на медийни файлове (e.g. https://example.com/xy.mp4) .",
"app.actionsBar.actionsDropdown.shareExternalVideo": "Сподели външно видео",
"app.actionsBar.actionsDropdown.stopShareExternalVideo": "Спри споделянето на видео",
"app.iOSWarning.label": "Моля обновете до iOS 12.2 или по-висока",
"app.legacy.unsupportedBrowser": "Вие използвате браузър който не се поддържа.За пълна функционалност, моля използвайте {0} или {1}",
"app.legacy.upgradeBrowser": "Вие използвате стара версия на браузър който се поддържа. За постигане на пълна функционалнаст, моля обновете браузъра си.",
"app.legacy.criosBrowser": "За пълна функционалност под iOS моля използвайте Safari",
"app.debugWindow.form.button.copy": "Копирай",
"app.debugWindow.form.enableAutoarrangeLayoutLabel": "Включи автоматично подреждане на изгледа",
"app.debugWindow.form.enableAutoarrangeLayoutDescription": "(ще бъде изключено ако влачите или преоразмерите прозореца на камерата)",
"app.debugWindow.form.button.apply": "Приложи",
"app.layout.style.custom": "Персонализиран",
"app.layout.style.smart": "Умно оформление",
"app.layout.style.presentationFocus": "Фокус върху презентацията",
"app.layout.style.videoFocus": "Фокус върху видеото",
"app.layout.style.customPush": "Персонализиран (налага оформлението на всички)",
"app.layout.style.smartPush": "Умно оформление(налага оформлението на всички)",
"app.layout.style.presentationFocusPush": "Фокус върху презентацията (налага оформлението на всички)",
"app.layout.style.videoFocusPush": "Фокус върху видеото(налага оформлението на всички)",
"playback.button.about.aria": "Относно",
"playback.button.clear.aria": "Изчисти търсенето",
"playback.button.close.aria": "Затвори",
"playback.button.fullscreen.aria": "Съдържанието на цял екран",
"playback.button.restore.aria": "Възстанови съдържанието",
"playback.button.search.aria": "Търси",
"playback.button.section.aria": "Странична секция",
"playback.button.swap.aria": "Размени съдържанието",
"playback.error.wrapper.aria": "Зона за грешки",
"playback.loader.wrapper.aria": "Зона за зареждане",
"playback.player.wrapper.aria": "Зона на плейъра",
"playback.player.about.modal.shortcuts.title": "Пряк път",
"playback.player.about.modal.shortcuts.alt": "Alt",
"playback.player.about.modal.shortcuts.shift": "Shift",
"playback.player.about.modal.shortcuts.fullscreen": "Превключи на цял екран",
"playback.player.about.modal.shortcuts.play": "Пусни / Пауза",
"playback.player.about.modal.shortcuts.section": "Превключи страничната секция",
"playback.player.about.modal.shortcuts.seek.backward": "Търси назад",
"playback.player.about.modal.shortcuts.seek.forward": "Търси напред",
"playback.player.about.modal.shortcuts.skip.next": "Следващ слайд",
"playback.player.about.modal.shortcuts.skip.previous": "Предишен слайд",
"playback.player.about.modal.shortcuts.swap": "Размени съдържанието",
"playback.player.chat.message.poll.name": "Резултат от анкетата",
"playback.player.chat.message.poll.question": "Въпрос",
"playback.player.chat.message.poll.options": "Опции",
"playback.player.chat.message.poll.option.yes": "Да",
"playback.player.chat.message.poll.option.no": "е",
"playback.player.chat.message.poll.option.abstention": "Въздържал се",
"playback.player.chat.message.poll.option.true": "Вярно",
"playback.player.chat.message.poll.option.false": "Невярно",
"playback.player.chat.message.video.name": "Външно видео",
"playback.player.chat.wrapper.aria": "Зона за чат",
"playback.player.notes.wrapper.aria": "Зона за бележки",
"playback.player.presentation.wrapper.aria": "Зона за презентация",
"playback.player.screenshare.wrapper.aria": "Зона за споделен екран",
"playback.player.search.modal.title": "Търсене",
"playback.player.search.modal.subtitle": "Намери съдържание в презентацията",
"playback.player.thumbnails.wrapper.aria": "Зона с миниатюри",
"playback.player.webcams.wrapper.aria": "Зона за камери",
"app.learningDashboard.dashboardTitle": "Табло за анализ на обучението",
"app.learningDashboard.user": "Потребител",
"app.learningDashboard.indicators.meetingStatusEnded": "Приключил",
"app.learningDashboard.indicators.meetingStatusActive": "Активен",
"app.learningDashboard.indicators.usersOnline": "Активни потребители",
"app.learningDashboard.indicators.usersTotal": "Общ брой на участниците",
"app.learningDashboard.indicators.polls": "Анкети",
"app.learningDashboard.indicators.raiseHand": "Вдикнати ръце",
"app.learningDashboard.indicators.activityScore": "Точки на активност",
"app.learningDashboard.indicators.duration": "Продължителност",
"app.learningDashboard.usersTable.title": "Преглед",
"app.learningDashboard.usersTable.colOnline": "Време онлайн",
"app.learningDashboard.usersTable.colTalk": "Време за дискусия",
"app.learningDashboard.usersTable.colWebcam": "Време с камера",
"app.learningDashboard.usersTable.colMessages": "Съобщения",
"app.learningDashboard.usersTable.colEmojis": "Емотикони",
"app.learningDashboard.usersTable.colRaiseHands": "Вдигнати ръце",
"app.learningDashboard.usersTable.colActivityScore": "Точки на активност",
"app.learningDashboard.usersTable.colStatus": "Статус",
"app.learningDashboard.usersTable.userStatusOnline": "Онлайн",
"app.learningDashboard.usersTable.userStatusOffline": "Офлайн",
"app.learningDashboard.pollsTable.title": "Анкетиране",
"app.learningDashboard.pollsTable.anonymousAnswer": "Анонимна анкета (отговорите в последния ред)",
"app.learningDashboard.pollsTable.anonymousRowName": "Анонимен",
"app.learningDashboard.statusTimelineTable.title": "Времева линия на статуса ",
"app.learningDashboard.errors.dataUnavailable": "Данните вече не са достъпни"
"app.legacy.criosBrowser": "За пълна функционалност под iOS моля използвайте Safari"
}

View File

@ -616,7 +616,6 @@
"app.lock-viewers.button.apply": "প্রয়োগ করুন",
"app.lock-viewers.button.cancel": "ক্যানকেল",
"app.lock-viewers.locked": "লকড",
"app.lock-viewers.unlocked": "আনলক করা",
"app.guest-policy.ariaTitle": "অতিথি নীতি সেটিংস মডেল",
"app.guest-policy.title": "অতিথি নীতি",
"app.guest-policy.description": "সভায় অতিথি নীতি সেটিং পরিবর্তন করুন",

View File

@ -695,7 +695,6 @@
"app.lock-viewers.button.apply": "Aplica",
"app.lock-viewers.button.cancel": "Cancel·la",
"app.lock-viewers.locked": "Bloquejat/da",
"app.lock-viewers.unlocked": "Desbloqueja",
"app.guest-policy.ariaTitle": "Modalitat de configuració de la política de convidats",
"app.guest-policy.title": "Política de convidats",
"app.guest-policy.description": "Canviar la configuració de la política de convidats a les reunions",

View File

@ -651,7 +651,6 @@
"app.lock-viewers.button.apply": "Aplikovat",
"app.lock-viewers.button.cancel": "Zrušit",
"app.lock-viewers.locked": "Uzamčen",
"app.lock-viewers.unlocked": "Povoleno",
"app.guest-policy.ariaTitle": "Panel nastavení Pravidla pro hosty",
"app.guest-policy.title": "Pravidla pro hosty",
"app.guest-policy.description": "Změnit nastavení pravidel pro hosty",

View File

@ -548,7 +548,6 @@
"app.lock-viewers.button.apply": "Anvend",
"app.lock-viewers.button.cancel": "Afbestille",
"app.lock-viewers.locked": "Låst",
"app.lock-viewers.unlocked": "Oplåst",
"app.connection-status.ariaTitle": "Forbindelsesstatus modal",
"app.connection-status.title": "Forbindelsesstatus",
"app.connection-status.description": "Se brugernes forbindelsesstatus",

View File

@ -133,6 +133,8 @@
"app.userList.userOptions.savedNames.title": "Liste der Teilnehmer in der Konferenz {0} vom {1}",
"app.userList.userOptions.sortedFirstName.heading": "Sortiert nach Vorname:",
"app.userList.userOptions.sortedLastName.heading": "Sortiert nach Nachname:",
"app.userList.userOptions.hideViewersCursor": "Cursor der Teilnehmer sind gesperrt",
"app.userList.userOptions.showViewersCursor": "Cursor der Teilnehmer sind freigegeben",
"app.media.label": "Media",
"app.media.autoplayAlertDesc": "Zugang erlauben",
"app.media.screenshare.start": "Bildschirmfreigabe wurde gestartet",
@ -563,6 +565,7 @@
"app.audio.audioSettings.descriptionLabel": "Ein Dialogfenster wird sich in Ihrem Browser öffnen, in dem Sie der Freigabe Ihres Mikrofons zustimmen müssen.",
"app.audio.audioSettings.microphoneSourceLabel": "Mikrofoneingang",
"app.audio.audioSettings.speakerSourceLabel": "Lautsprecherausgang",
"app.audio.audioSettings.testSpeakerLabel": "Testen Sie Ihren Lautsprecher",
"app.audio.audioSettings.microphoneStreamLabel": "Lautstärke Ihres Audiosignals",
"app.audio.audioSettings.retryLabel": "Erneut versuchen",
"app.audio.listenOnly.backLabel": "Zurück",
@ -696,7 +699,7 @@
"app.lock-viewers.button.apply": "Anwenden",
"app.lock-viewers.button.cancel": "Abbrechen",
"app.lock-viewers.locked": "Gesperrt",
"app.lock-viewers.unlocked": "Freigegeben",
"app.lock-viewers.hideViewersCursor": "Cursor anderer Teilnehmer anzeigen",
"app.guest-policy.ariaTitle": "Einstellungsdialog für Gastzugangsregelung",
"app.guest-policy.title": "Gastzugang regeln",
"app.guest-policy.description": "Grundregel für den Gastzugang ändern",
@ -953,6 +956,7 @@
"playback.button.search.aria": "Suche",
"playback.button.section.aria": "Randabschnitt",
"playback.button.swap.aria": "Inhalt umschalten",
"playback.button.theme.aria": "Design wechseln",
"playback.error.wrapper.aria": "Fehlerbereich",
"playback.loader.wrapper.aria": "Loaderbereich",
"playback.player.wrapper.aria": "Playerbereich",

View File

@ -207,7 +207,7 @@
"app.poll.quickPollTitle": "އަވަސް ވޯޓު",
"app.poll.hidePollDesc": "ވޯޓު މެނޫ ޕޭން ފޮރުވާނެ",
"app.poll.quickPollInstruction": "ވޯޓު ފެށުމަށްޓަކައި ތިރިން އޮޕްޝަންއެއް ހިޔާރުކުރައްވާ.",
"app.poll.activePollInstruction": "ލައިވްކޮށް ވޯޓުގެ ނަތީއްޖާ ބެއްލެވުމަށް މި ޕޭން ހުޅުވާފައި ބަހައްޓާ. ތައްޔާރުވުމުން، ނަތީއްޖާ ޝާއިއުކޮށް ވޯޓު ބަންދުކުރުމަށް 'ވޯޓުގެ ނަތީއްޖާ ޝާއިއުކުރ' ހިޔާރުކުރައްވާ. ",
"app.poll.activePollInstruction": "ލައިވްކޮށް ވޯޓުގެ ނަތީއްޖާ ބެއްލެވުމަށް މި ޕޭން ހުޅުވާފައި ބަހައްޓާ. ތައްޔާރުވުމުން، ނަތީއްޖާ ޝާއިއުކޮށް ވޯޓު ބަންދުކުރުމަށް 'ވޯޓުގެ ނަތީއްޖާ ޝާއިއުކުރޭ' ހިޔާރުކުރައްވާ. ",
"app.poll.dragDropPollInstruction": "ވޯޓުގެ ވެލިއުތައް ފުރުމަށް، ވޯޓުގެ ވެލިއުތައް ހިމެނޭ ޓެކްސްޓް ފައިލެއް ފާހަގަކޮށްފައިވާ ފިލްޑަށް ޑްރޭގްކޮށްލާ",
"app.poll.customPollTextArea": "ވޯޓުގެ ވެލިއުތައް ފުރާލާ",
"app.poll.backLabel": "ވޯޓެއް ފަށާ",
@ -601,7 +601,6 @@
"app.lock-viewers.button.apply": "ބަދަލު ގެނޭ",
"app.lock-viewers.button.cancel": "ކެންސަލްކޮށްލާ",
"app.lock-viewers.locked": "ތަޅުލާފައި",
"app.lock-viewers.unlocked": "ތަޅުހުޅުވާފައި",
"app.guest-policy.ariaTitle": "މެހެމާނުންގެ ޕޮލިސީ ސެޓިންގސް މޯޑަލް",
"app.guest-policy.title": "މެހެމާނުންގެ ޕޮލިސީ",
"app.guest-policy.description": "ބައްދަލުވުމުގެ މެހެމާނުންގެ ޕޮލިސީ ޚިޔާރުތައް ބަދަލުކުރޭ",

View File

@ -662,7 +662,6 @@
"app.lock-viewers.button.apply": "Εφαρμογή",
"app.lock-viewers.button.cancel": "Ακύρωση",
"app.lock-viewers.locked": "Κλειδωμένο",
"app.lock-viewers.unlocked": "Μη Κλειδωμένο",
"app.guest-policy.ariaTitle": "Τυπικές ρυθμίσεις πολιτικής για επισκέπτη",
"app.guest-policy.title": "Πολιτική επισκεπτών",
"app.guest-policy.description": "Αλλαγή ρυθμίσεων πολιτικής συνεδρίας για επισκέπτη",

View File

@ -690,6 +690,10 @@
"app.shortcut-help.toggleFullscreen": "Toggle Full-screen (Presenter)",
"app.shortcut-help.nextSlideDesc": "Next slide (Presenter)",
"app.shortcut-help.previousSlideDesc": "Previous slide (Presenter)",
"app.shortcut-help.togglePanKey": "Spacebar",
"app.shortcut-help.toggleFullscreenKey": "Enter",
"app.shortcut-help.nextSlideKey": "Right Arrow",
"app.shortcut-help.previousSlideKey": "Left Arrow",
"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",
@ -929,6 +933,12 @@
"app.createBreakoutRoom.setTimeCancel": "Cancel",
"app.createBreakoutRoom.setTimeHigherThanMeetingTimeError": "The breakout rooms duration can't exceed the meeting remaining time.",
"app.createBreakoutRoom.roomNameInputDesc": "Updates breakout room name",
"app.updateBreakoutRoom.modalDesc": "To update or invite a user, simply drag them into the desired room.",
"app.updateBreakoutRoom.cancelLabel": "Cancel",
"app.updateBreakoutRoom.title": "Update Breakout Rooms",
"app.updateBreakoutRoom.confirm": "Apply",
"app.updateBreakoutRoom.userChangeRoomNotification": "You were moved to room {0}.",
"app.update.resetRoom": "Reset user room",
"app.externalVideo.start": "Share a new video",
"app.externalVideo.title": "Share an external video",
"app.externalVideo.input": "External Video URL",
@ -1059,13 +1069,15 @@
"app.learningDashboard.statusTimelineTable.thumbnail": "Presentation thumbnail",
"app.learningDashboard.errors.invalidToken": "Invalid session token",
"app.learningDashboard.errors.dataUnavailable": "Data is no longer available",
"mobileApp.portals.list.empty.label": "Please add portals.",
"mobileApp.portals.list.add.button.label": "New Portal",
"mobileApp.portals.list.empty.addFirstPortal.label": "Add your first portal using the button above,",
"mobileApp.portals.list.empty.orUseOurDemoServer.label": "or use our demo server.",
"mobileApp.portals.list.add.button.label": "Add portal",
"mobileApp.portals.fields.name.label": "Portal Name",
"mobileApp.portals.fields.name.placeholder": "BigBlueButton demo",
"mobileApp.portals.fields.url.label": "Server URL",
"mobileApp.portals.addPortalPopup.confirm.button.label": "Add Portal",
"mobileApp.portals.addPortalPopup.confirm.button.label": "Save",
"mobileApp.portals.drawerNavigation.button.label": "Portals",
"mobileApp.portals.addPortalPopup.validation.emptyFilds": "Empty Fields",
"mobileApp.portals.addPortalPopup.validation.portalNameAlreadyExists": "Name Already Exists"
"mobileApp.portals.addPortalPopup.validation.emptyFields": "Required Fields",
"mobileApp.portals.addPortalPopup.validation.portalNameAlreadyExists": "Name already in use",
"mobileApp.portals.addPortalPopup.validation.urlInvalid": "Error trying to load the page - check URL and network connection"
}

View File

@ -528,7 +528,6 @@
"app.lock-viewers.button.apply": "Apliki",
"app.lock-viewers.button.cancel": "Nuligi",
"app.lock-viewers.locked": "Malebligite",
"app.lock-viewers.unlocked": "Ebligite",
"app.connection-status.ariaTitle": "Dialogo pri konektostato",
"app.connection-status.title": "Konektostato",
"app.connection-status.description": "Vidi la konektostaton de uzantoj",

View File

@ -228,7 +228,7 @@
"app.poll.optionErr": "Introducir una opción a la votación/encuesta",
"app.poll.t": "Verdadero",
"app.poll.f": "Falso",
"app.poll.tf": "Verdadero / Falso",
"app.poll.tf": "Verdadero / Falseo",
"app.poll.y": "Sí",
"app.poll.n": "No",
"app.poll.abstention": "Abstención",
@ -602,7 +602,6 @@
"app.lock-viewers.button.apply": "Aplicar",
"app.lock-viewers.button.cancel": "Cancelar",
"app.lock-viewers.locked": "Bloqueado",
"app.lock-viewers.unlocked": "Desbloqueado",
"app.guest-policy.ariaTitle": "Modo de configuración de la política de invitados",
"app.guest-policy.title": "Política de invitados",
"app.guest-policy.description": "Cambiar la configuración de la política de invitados a la reunión",

View File

@ -600,7 +600,6 @@
"app.lock-viewers.button.apply": "Aplicar",
"app.lock-viewers.button.cancel": "Cancelar",
"app.lock-viewers.locked": "Bloqueado",
"app.lock-viewers.unlocked": "Desbloqueado",
"app.guest-policy.ariaTitle": "Modo de configuración de la política de invitados",
"app.guest-policy.title": "Política de invitados",
"app.guest-policy.description": "Cambiar la configuración de la política de invitados a la reunión",

View File

@ -132,6 +132,8 @@
"app.userList.userOptions.savedNames.title": "Kasutajate nimekiri koosolekul {0} kell {1}",
"app.userList.userOptions.sortedFirstName.heading": "Sorteeritult eesnime järgi:",
"app.userList.userOptions.sortedLastName.heading": "Sorteeritult perekonnanime järgi:",
"app.userList.userOptions.hideViewersCursor": "Vaatajate kursorid on lukustatud",
"app.userList.userOptions.showViewersCursor": "Vaatajate kursorid on vabastatud",
"app.media.label": "Meedia",
"app.media.autoplayAlertDesc": "Luba juurdepääs",
"app.media.screenshare.start": "Ekraanijagamine algas",
@ -215,7 +217,7 @@
"app.presentationUploder.fileToUpload": "Ootab üleslaadimist...",
"app.presentationUploder.currentBadge": "Aktiivne",
"app.presentationUploder.rejectedError": "Valitud fail(id) lükati tagasi. Palun kontrolli failitüüpi.",
"app.presentationUploder.connectionClosedError": "Katkestatud halva ühenduvuse tõttu.",
"app.presentationUploder.connectionClosedError": "Katkestatud halva ühenduvuse tõttu. Palun proovi uuesti.",
"app.presentationUploder.upload.progress": "Üleslaadimine ({0}%)",
"app.presentationUploder.upload.413": "Fail on liiga suur, maksimaalne suurus on {0} MB.",
"app.presentationUploder.genericError": "Oih, miskit läks valesti...",
@ -562,6 +564,7 @@
"app.audio.audioSettings.descriptionLabel": "Pane tähele, et veebilehitsejas avaneb dialoogiaken, kus palutakse luba sinu mikrofoni jagamiseks.",
"app.audio.audioSettings.microphoneSourceLabel": "Mikrofoni sisend",
"app.audio.audioSettings.speakerSourceLabel": "Kõlarite sisend",
"app.audio.audioSettings.testSpeakerLabel": "Testi kõlarit",
"app.audio.audioSettings.microphoneStreamLabel": "Audiovoo helitugevus",
"app.audio.audioSettings.retryLabel": "Uuesti",
"app.audio.listenOnly.backLabel": "Tagasi",
@ -695,7 +698,7 @@
"app.lock-viewers.button.apply": "Kinnita",
"app.lock-viewers.button.cancel": "Tühista",
"app.lock-viewers.locked": "Lukustatud",
"app.lock-viewers.unlocked": "Avatud",
"app.lock-viewers.hideViewersCursor": "Näita teiste vaatajate kursoreid",
"app.guest-policy.ariaTitle": "Külaliste reeglite seadistamise aken",
"app.guest-policy.title": "Külaliste reeglid",
"app.guest-policy.description": "Muuda koosoleku külaliste reegleid",
@ -952,6 +955,7 @@
"playback.button.search.aria": "Otsi",
"playback.button.section.aria": "Külgsektsioon",
"playback.button.swap.aria": "Vaheta sisu",
"playback.button.theme.aria": "Lülita teemat",
"playback.error.wrapper.aria": "Vigade ala",
"playback.loader.wrapper.aria": "Laadija ala",
"playback.player.wrapper.aria": "Mängija ala",

View File

@ -6,9 +6,10 @@
"app.chat.disconnected": "Deskonektatuta zaude, mezuak ezin dira bidali",
"app.chat.locked": "Txata blokeatuta dago, mezuak ezin dira bidali",
"app.chat.inputLabel": "Txatean {0} mezu sartu dira",
"app.chat.inputPlaceholder": "Mezuak {0}",
"app.chat.titlePublic": "Txat publikoa",
"app.chat.titlePrivate": "Txat pribatua {0}-(r)ekin",
"app.chat.partnerDisconnected": "{0}-(e)k bilera utzi du",
"app.chat.titlePrivate": "Txat pribatua {0}-ekin",
"app.chat.partnerDisconnected": "{0}-k bilera utzi du",
"app.chat.closeChatLabel": "Itxi {0}",
"app.chat.hideChatLabel": "Ezkutatu {0}",
"app.chat.moreMessages": "Mezu gehiago behean",
@ -43,6 +44,8 @@
"app.captions.menu.previewLabel": "Aurreikusi",
"app.captions.menu.cancelLabel": "Utzi",
"app.captions.hide": "Ezkutatu azpitituluak",
"app.captions.ownership": "Hartu kontrola",
"app.captions.ownershipTooltip": "{0} azpitituluen jabe gisa hartuko zaituzte",
"app.captions.dictationStart": "Hasi diktaketa",
"app.captions.dictationStop": "Gelditu diktaketa",
"app.captions.dictationOnDesc": "Aktibatu hizketa-ezagutzea",
@ -129,6 +132,8 @@
"app.userList.userOptions.savedNames.title": "Bileraren erabiltzaile zerrenda {0}/{1}",
"app.userList.userOptions.sortedFirstName.heading": "Izenaren arabera ordenatuta:",
"app.userList.userOptions.sortedLastName.heading": "Abizenaren arabera ordenatuta:",
"app.userList.userOptions.hideViewersCursor": "Ikusleen kurtsoreak blokeatuta daude",
"app.userList.userOptions.showViewersCursor": "Ikusleen kurtsoreak desblokeatuta daude",
"app.media.label": "Multimedia",
"app.media.autoplayAlertDesc": "Baimendu sartzea",
"app.media.screenshare.start": "Pantaila partekatzea hasi da",
@ -196,6 +201,7 @@
"app.presentation.presentationToolbar.fitToWidth": "Doitu zabalera",
"app.presentation.presentationToolbar.fitToPage": "Doitu orrira",
"app.presentation.presentationToolbar.goToSlide": "{0} diapositiba",
"app.presentation.placeholder": "Une honetan ez dago aurkezpen aktiborik",
"app.presentationUploder.title": "Aurkezpena",
"app.presentationUploder.message": "Aurkezle gisa edozein bulegoko dokumentu edo PDF fitxategi igotzeko gaitasuna duzu. Emaitzarik onena lortzeko PDF fitxategia gomendatzen dugu. Ziurtatu ezazu aurkezpena hautatuta dagoela eskuinean dagoen kontrol-zirkulua erabiliz.",
"app.presentationUploder.extraHint": "GARRANTZITSUA: fitxategi bakoitzak ezin ditu {0} MB eta {1} orrialde baino gehiago izan.",
@ -357,6 +363,7 @@
"app.endMeeting.noLabel": "Ez",
"app.about.title": "Honi buruz",
"app.about.version": "Bezeroaren bertsioa:",
"app.about.version_label": "BigBlueButton-en bertsioa:",
"app.about.copyright": "Copyright:",
"app.about.confirmLabel": "Ados",
"app.about.confirmDesc": "Ados",
@ -417,6 +424,7 @@
"app.settings.dataSavingTab.description": "Zure banda zabalera aurrezteko, doitu ezazu une honetan erakusten dena.",
"app.settings.save-notification.label": "Ezarpenak gorde dira",
"app.statusNotifier.lowerHands": "Jaitsi eskuak",
"app.statusNotifier.lowerHandDescOneUser": "Jaitsi {0}-ren eskua",
"app.statusNotifier.raisedHandsTitle": "Altxatutako eskuak",
"app.statusNotifier.raisedHandDesc": "{0}-k altxatu dute eskua",
"app.statusNotifier.raisedHandDescOneUser": "{0} esku altxatuta",
@ -427,7 +435,7 @@
"app.talkingIndicator.isTalking" : "{0} hitz egiten ari da",
"app.talkingIndicator.moreThanMaxIndicatorsTalking" : "{0}+ hitz egiten ari dira",
"app.talkingIndicator.moreThanMaxIndicatorsWereTalking" : "{0}+ hitz egiten ari ziren",
"app.talkingIndicator.wasTalking" : "{0}-(e)k hitz egiteari utzi dio",
"app.talkingIndicator.wasTalking" : "{0}-k hitz egiteari utzi dio",
"app.actionsBar.actionsDropdown.actionsLabel": "Ekintzak",
"app.actionsBar.actionsDropdown.presentationLabel": "Kudeatu aurkezpenak",
"app.actionsBar.actionsDropdown.initPollLabel": "Hasi inkesta bat",
@ -453,7 +461,7 @@
"app.actionsBar.emojiMenu.awayLabel": "Kanpoan",
"app.actionsBar.emojiMenu.awayDesc": "Aldatu zure egoera: kanpoan",
"app.actionsBar.emojiMenu.raiseHandLabel": "Altxa eskua",
"app.actionsBar.emojiMenu.lowerHandLabel": "Jaitsi eskuka",
"app.actionsBar.emojiMenu.lowerHandLabel": "Jaitsi eskua",
"app.actionsBar.emojiMenu.raiseHandDesc": "Altxatu eskua hitza eskatzeko",
"app.actionsBar.emojiMenu.neutralLabel": "Zalantzan",
"app.actionsBar.emojiMenu.neutralDesc": "Aldatu zure egoera: zalantzan",
@ -498,6 +506,9 @@
"app.breakoutJoinConfirmation.freeJoinMessage": "Aukeratu azpitalde baten gela bertara sartzeko",
"app.breakoutTimeRemainingMessage": "Azpitaldearen gelari geratzen zaion denbora: {0}",
"app.breakoutWillCloseMessage": "Denbora agortu da. Azpitaldearen gela laster itxiko da",
"app.breakout.dropdown.manageDuration": "Kudeatu iraupena",
"app.breakout.dropdown.destroyAll": "Bukatu azpitaldeak",
"app.breakout.dropdown.options": "Azpitaldeen aukerak",
"app.calculatingBreakoutTimeRemaining": "Geratzen den denbora kalkulatzen...",
"app.audioModal.ariaTitle": "Erabili audio modala",
"app.audioModal.microphoneLabel": "Mikrofonoa",
@ -609,6 +620,10 @@
"app.guest.guestDeny": "Gonbidatuak uko egin dio bileran sartzeari.",
"app.guest.seatWait": "Gonbidatua bilerako aulki baten zain dago.",
"app.guest.allow": "Gonbidatua onartu da eta bilerara sartu da",
"app.guest.firstPositionInWaitingQueue": "Ilaran lehena zara!",
"app.guest.positionInWaitingQueue": "Zure uneko posizioa itxaron-ilaran:",
"app.guest.guestInvalid": "Erabiltzaile gonbidatua baliogabea da",
"app.guest.meetingForciblyEnded": "Ezin duzu sartu dagoeneko bukatu-arazi den bilera batean",
"app.userList.guest.waitingUsers": "Itxaron zerrenda",
"app.userList.guest.waitingUsersTitle": "Erabiltzaileen kudeaketa",
"app.userList.guest.optionTitle": "Berrikusi zain dauden erabiltzaileak",
@ -617,11 +632,14 @@
"app.userList.guest.allowEveryone": "Onartu guztiak",
"app.userList.guest.denyEveryone": "Ukatu guztiak",
"app.userList.guest.pendingUsers": "{0} erabiltzaile zain",
"app.userList.guest.noPendingUsers": "Ez dago zain dagoen erabiltzailerik...",
"app.userList.guest.pendingGuestUsers": "{0} gonbidatu zain",
"app.userList.guest.pendingGuestAlert": "Saioan sartu da eta zure onarpenaren zain dago",
"app.userList.guest.rememberChoice": "Gogoratu aukeratutakoa",
"app.userList.guest.emptyMessage": "Une honetan ez dago mezurik",
"app.userList.guest.inputPlaceholder": "Mezua gonbidatuen atondorako",
"app.userList.guest.privateInputPlaceholder": "Mezua {0}-rentzat",
"app.userList.guest.privateMessageLabel": "Mezua",
"app.userList.guest.acceptLabel": "Onartu",
"app.userList.guest.denyLabel": "Ukatu",
"app.user-info.title": "Direktorio bilatzea",
@ -634,6 +652,9 @@
"app.toast.meetingMuteOn.label": "Erabiltzaile guztiak isilarazi dira",
"app.toast.meetingMuteOff.label": "Bileraren isilaraztea itzali da",
"app.toast.setEmoji.raiseHand": "Eskua altxatu duzu",
"app.toast.setEmoji.lowerHand": "Zure eskua jaitsi dute",
"app.toast.promotedLabel": "Moderatzaile rola eman dizute",
"app.toast.demotedLabel": "Ikusle rolera jaitsi zaituzte",
"app.notification.recordingStart": "Saio hau grabatzen ari da",
"app.notification.recordingStop": "Saioa ez da grabatzen ari",
"app.notification.recordingPaused": "Saio hau ez da jada grabatzen ari",
@ -676,7 +697,7 @@
"app.lock-viewers.button.apply": "Aplikatu",
"app.lock-viewers.button.cancel": "Utzi",
"app.lock-viewers.locked": "Blokeatua",
"app.lock-viewers.unlocked": "Desblokeatuta",
"app.lock-viewers.hideViewersCursor": "Ikusi beste ikusleen kurtsoreak",
"app.guest-policy.ariaTitle": "Gonbidatuen gidalerroen ezarpen modala",
"app.guest-policy.title": "Gonbidapen gidalerroak",
"app.guest-policy.description": "Aldatu bileraren gonbidapen gidalerroen ezarpenak",
@ -689,15 +710,26 @@
"app.connection-status.description": "Ikusi erabiltzaileen konexio egoera",
"app.connection-status.empty": "Une honetan ez dago konexio huts egiteen txostenik",
"app.connection-status.more": "gehiago",
"app.connection-status.copy": "Kopiatu estatistikak",
"app.connection-status.copied": "Kopiatu dira!",
"app.connection-status.jitter": "Bibrazioa",
"app.connection-status.label": "Konexioaren egoera",
"app.connection-status.settings": "Zure ezarpenak doitzen",
"app.connection-status.no": "Ez",
"app.connection-status.notification": "Zure konexioaren galera antzeman da",
"app.connection-status.offline": "Lineaz kanpo",
"app.connection-status.audioUploadRate": "Audioaren igoera-tasa",
"app.connection-status.audioDownloadRate": "Audioaren jaitsiera-tasa",
"app.connection-status.videoUploadRate": "Bideoaren igoera-tasa",
"app.connection-status.videoDownloadRate": "Bideoaren jaitsiera-tasa",
"app.connection-status.lostPackets": "Pakete galduak",
"app.connection-status.usingTurn": "TXANDA erabiltzen",
"app.connection-status.yes": "Bai",
"app.connection-status.connectionStats": "Konexioaren estatistikak",
"app.connection-status.myLogs": "Nire erregistroak",
"app.connection-status.sessionLogs": "Saioaren erregistroak",
"app.connection-status.next": "Hurrengo orria",
"app.connection-status.prev": "Aurreko orria",
"app.learning-dashboard.label": "Ikaskuntzaren estatistiken panela",
"app.learning-dashboard.description": "Ireki arbela erabiltzaileen aktibitateekin",
"app.learning-dashboard.clickHereToOpen": "Ireki ikaskuntza estatistiken panela",
@ -768,6 +800,8 @@
"app.video.virtualBackground.background": "Atzeko planoa",
"app.video.virtualBackground.genericError": "Kamera efektuaren aplikazioak huts egin du. Saiatu berriro",
"app.video.virtualBackground.camBgAriaDesc": "{0} ezartzen du web-kameraren atzeko plano birtuala",
"app.video.camCapReached": "Ezin duzu kamera gehiago partekatu",
"app.video.meetingCamCapReached": "Bilera aldibereko kameren mugara iritsi da",
"app.video.dropZoneLabel": "Jaregin hona",
"app.fullscreenButton.label": "Jarri {0} pantaila osoan",
"app.fullscreenUndoButton.label": "Desegin {0} pantaila osoa",
@ -857,7 +891,11 @@
"app.createBreakoutRoom.durationInMinutes": "Iraupena (minutuak)",
"app.createBreakoutRoom.randomlyAssign": "Ausazko esleipena",
"app.createBreakoutRoom.randomlyAssignDesc": "Azpitaldeetarako erabiltzaileak ausaz esleitzen ditu",
"app.createBreakoutRoom.resetAssignments": "Berrezarri esleipenak",
"app.createBreakoutRoom.resetAssignmentsDesc": "Berrezarri erabiltzaileen gelaren esleipen guztiak",
"app.createBreakoutRoom.endAllBreakouts": "Itxi azpitaldeen gela guztiak",
"app.createBreakoutRoom.chatTitleMsgAllRooms": "gela guztiak",
"app.createBreakoutRoom.msgToBreakoutsSent": "Mezua {0} azpigeletara bidali da",
"app.createBreakoutRoom.roomName": "{0} (Gela - {1})",
"app.createBreakoutRoom.doneLabel": "Eginda",
"app.createBreakoutRoom.nextLabel": "Hurrengoa",
@ -872,6 +910,10 @@
"app.createBreakoutRoom.numberOfRoomsError": "Gela kopurua ez da baliozkoa",
"app.createBreakoutRoom.duplicatedRoomNameError": "Gelaren izena ezin da bikoiztu.",
"app.createBreakoutRoom.emptyRoomNameError": "Gelaren izena ezin da hutsik utzi.",
"app.createBreakoutRoom.setTimeInMinutes": "Ezarri iraupena (minututan)",
"app.createBreakoutRoom.setTimeLabel": "Aplikatu",
"app.createBreakoutRoom.setTimeCancel": "Utzi",
"app.createBreakoutRoom.setTimeHigherThanMeetingTimeError": "Azpitaldeen gelen iraupenak ezin du bilerari geratzen zaion denbora gainditu.",
"app.createBreakoutRoom.roomNameInputDesc": "Eguneratzen du azpitaldearen gelaren izena",
"app.externalVideo.start": "Partekatu bideo berri bat",
"app.externalVideo.title": "Partekatu kanpoko bideo bat",
@ -912,9 +954,21 @@
"playback.button.search.aria": "Bilatu",
"playback.button.section.aria": "Alboko atala",
"playback.button.swap.aria": "Aldatu edukia",
"playback.button.theme.aria": "Aldatu itxura",
"playback.error.wrapper.aria": "Erroreen eremua",
"playback.loader.wrapper.aria": "Kargatzailearen eremua",
"playback.player.wrapper.aria": "Erreproduzigailuaren eremua",
"playback.player.about.modal.shortcuts.title": "Laster-teklak",
"playback.player.about.modal.shortcuts.alt": "Alt",
"playback.player.about.modal.shortcuts.shift": "Mayus",
"playback.player.about.modal.shortcuts.fullscreen": "Pantaila osora",
"playback.player.about.modal.shortcuts.play": "Erreproduzitu/Pausatu",
"playback.player.about.modal.shortcuts.section": "Aldatu alboko atala",
"playback.player.about.modal.shortcuts.seek.backward": "Bilatu atzerantz",
"playback.player.about.modal.shortcuts.seek.forward": "Bilatu aurrerantz",
"playback.player.about.modal.shortcuts.skip.next": "Hurrengo diapositiba",
"playback.player.about.modal.shortcuts.skip.previous": "Aurreko diapositiba",
"playback.player.about.modal.shortcuts.swap": "Trukatu edukia",
"playback.player.chat.message.poll.name": "Inkestaren emaitza",
"playback.player.chat.message.poll.question": "Galdera",
"playback.player.chat.message.poll.options": "Aukerak",
@ -923,6 +977,7 @@
"playback.player.chat.message.poll.option.abstention": "Abstentzioa",
"playback.player.chat.message.poll.option.true": "Egia",
"playback.player.chat.message.poll.option.false": "Gezurra",
"playback.player.chat.message.video.name": "Kanpoko bideoa",
"playback.player.chat.wrapper.aria": "Txat eremua",
"playback.player.notes.wrapper.aria": "Oharren eremua",
"playback.player.presentation.wrapper.aria": "Aurkezpenaren eremua",
@ -930,15 +985,32 @@
"playback.player.search.modal.title": "Bilatu",
"playback.player.search.modal.subtitle": "Aurkitu aurkezpenaren diapositiben edukia",
"playback.player.thumbnails.wrapper.aria": "Koadro txikien eremua",
"playback.player.webcams.wrapper.aria": "Web-kameren eremua",
"app.learningDashboard.dashboardTitle": "Ikaskuntzaren estatistiken panela",
"app.learningDashboard.downloadSessionDataLabel": "Deskargatu saioaren datuak",
"app.learningDashboard.lastUpdatedLabel": "Azken eguneratzea:",
"app.learningDashboard.sessionDataDownloadedLabel": "Deskarga osatu da!",
"app.learningDashboard.shareButton": "Partekatu besterekin",
"app.learningDashboard.shareLinkCopied": "Esteka behar bezala kopiatu da!",
"app.learningDashboard.user": "Erabiltzailea",
"app.learningDashboard.indicators.meetingStatusEnded": "Bukatua",
"app.learningDashboard.indicators.meetingStatusActive": "Aktiboa",
"app.learningDashboard.indicators.usersOnline": "Erabiltzaile aktiboak",
"app.learningDashboard.indicators.usersTotal": "Erabiltzaileak denetara",
"app.learningDashboard.indicators.polls": "Inkestak",
"app.learningDashboard.indicators.timeline": "Denbora-lerroa",
"app.learningDashboard.indicators.activityScore": "Jardueraren puntuazioa",
"app.learningDashboard.indicators.duration": "Iraupena",
"app.learningDashboard.userDetails.startTime": "Hasiera ordua",
"app.learningDashboard.userDetails.endTime": "Bukaera ordua",
"app.learningDashboard.userDetails.joined": "Barruan",
"app.learningDashboard.userDetails.category": "Kategoria",
"app.learningDashboard.userDetails.average": "Batez beste",
"app.learningDashboard.userDetails.activityPoints": "Aktibitate puntuak",
"app.learningDashboard.userDetails.poll": "Inkesta",
"app.learningDashboard.userDetails.response": "Erantzuna",
"app.learningDashboard.userDetails.mostCommonAnswer": "Erantzun ohikoena",
"app.learningDashboard.userDetails.anonymousAnswer": "Inkesta anonimoa",
"app.learningDashboard.usersTable.title": "Ikuspegi orokorra",
"app.learningDashboard.usersTable.colOnline": "Lineako denbora",
"app.learningDashboard.usersTable.colTalk": "Hizketako denbora",
@ -951,10 +1023,30 @@
"app.learningDashboard.usersTable.userStatusOnline": "Linean",
"app.learningDashboard.usersTable.userStatusOffline": "Lineatik kanpo",
"app.learningDashboard.usersTable.noUsers": "Oraindik ez dago erabiltzailerik",
"app.learningDashboard.usersTable.name": "Izena",
"app.learningDashboard.usersTable.moderator": "Moderatzailea",
"app.learningDashboard.usersTable.pollVotes": "Botoak",
"app.learningDashboard.usersTable.join": "Sartu",
"app.learningDashboard.usersTable.left": "Irten",
"app.learningDashboard.usersTable.notAvailable": "Erantzunik ez",
"app.learningDashboard.pollsTable.title": "Inkestak",
"app.learningDashboard.pollsTable.anonymousAnswer": "Inkesta anonimoa (erantzun azken errenkadan)",
"app.learningDashboard.pollsTable.anonymousRowName": "Anonimoa",
"app.learningDashboard.pollsTable.noPollsCreatedHeading": "Ez da inkestarik sortu",
"app.learningDashboard.pollsTable.noPollsCreatedMessage": "Erabiltzaileei inkesta bat bidalitakoan, haien emaitzak zerrenda honetan agertuko dira.",
"app.learningDashboard.statusTimelineTable.title": "Denbora-lerroa",
"app.learningDashboard.statusTimelineTable.thumbnail": "Aurkezpenaren miniaturak",
"app.learningDashboard.errors.invalidToken": "Saioaren token baliogabea",
"app.learningDashboard.errors.dataUnavailable": "Datuak ez daude eskuragarri"
"app.learningDashboard.errors.dataUnavailable": "Datuak ez daude eskuragarri",
"mobileApp.portals.list.empty.label": "Gehitu atariak.",
"mobileApp.portals.list.add.button.label": "Atari berria",
"mobileApp.portals.fields.name.label": "Atariaren izena",
"mobileApp.portals.fields.name.placeholder": "BigBlueButton demo",
"mobileApp.portals.fields.url.label": "Zerbitzariaren URLa",
"mobileApp.portals.addPortalPopup.confirm.button.label": "Gehitu ataria",
"mobileApp.portals.drawerNavigation.button.label": "Atariak",
"mobileApp.portals.addPortalPopup.validation.emptyFilds": "Eremu hutsak",
"mobileApp.portals.addPortalPopup.validation.portalNameAlreadyExists": "Izen hori dagoeneko badago"
}

View File

@ -188,7 +188,6 @@
"app.presentationUploder.fileToUpload": "آماده بارگذاری ...",
"app.presentationUploder.currentBadge": "کنونی",
"app.presentationUploder.rejectedError": "پرونده(های) انتخاب شده رد شدند. لطفا نوع پرونده(ها) را بررسی کنید.",
"app.presentationUploder.connectionClosedError": "به دلیل اتصال ضعیف قطع شد. لطفا دوباره تلاش کنید. ",
"app.presentationUploder.upload.progress": "در حال بارگذاری ({0}%)",
"app.presentationUploder.upload.413": "حجم پرونده زیاد است، از حداکثر {0} مگابایت بیشتر است",
"app.presentationUploder.genericError": "آخ، خطای پیش آمده است...",
@ -654,7 +653,6 @@
"app.lock-viewers.button.apply": "اعمال",
"app.lock-viewers.button.cancel": "لغو",
"app.lock-viewers.locked": "قفل شده",
"app.lock-viewers.unlocked": "مجاز",
"app.guest-policy.ariaTitle": "فرم تنظیمات سیاست پذیرش درخواست ورود کاربران",
"app.guest-policy.title": "سیاست پذیرش درخواست ورود کاربران",
"app.guest-policy.description": "سیاست پذیرش درخواست ورود کاربران در جلسه را مشخصی کنید",
@ -746,7 +744,6 @@
"app.video.virtualBackground.background": "پس‌زمینه",
"app.video.virtualBackground.genericError": "افکت دوربین اعمال نشد. مجددا تلاش کنید.",
"app.video.virtualBackground.camBgAriaDesc": "تنظیم پس‌زمینه مجازی دوربین به {0}",
"app.video.camCapReached": "نمی‌توانید دوربین‌های بیشتری را به اشتراک بگذارید. ",
"app.video.dropZoneLabel": "اینجا بیندازید",
"app.fullscreenButton.label": "تغییر {0} به تمام صفحه",
"app.fullscreenUndoButton.label": "{0} تمام صفحه را واگرد کنید",

View File

@ -695,7 +695,6 @@
"app.lock-viewers.button.apply": "Appliquer",
"app.lock-viewers.button.cancel": "Annuler",
"app.lock-viewers.locked": "Verrouillé",
"app.lock-viewers.unlocked": "Déverrouillé",
"app.guest-policy.ariaTitle": "Fenêtre des paramètres de gestion des accès",
"app.guest-policy.title": "Gestion des accès",
"app.guest-policy.description": "Modifier le paramétrage de la gestion des accès à la réunion ",
@ -960,9 +959,9 @@
"playback.player.about.modal.shortcuts.shift": "Maj",
"playback.player.about.modal.shortcuts.fullscreen": "Basculer en plein écran",
"playback.player.about.modal.shortcuts.play": "Lecture/Pause",
"playback.player.about.modal.shortcuts.section": "Basculer le volet latéral",
"playback.player.about.modal.shortcuts.seek.backward": "Rechercher en remontant",
"playback.player.about.modal.shortcuts.seek.forward": "Rechercher en avançant",
"playback.player.about.modal.shortcuts.section": "Faire apparaître/disparaître le volet latéral",
"playback.player.about.modal.shortcuts.seek.backward": "Reculer",
"playback.player.about.modal.shortcuts.seek.forward": "Avancer",
"playback.player.about.modal.shortcuts.skip.next": "Diapositive suivante",
"playback.player.about.modal.shortcuts.skip.previous": "Diapositive précédente",
"playback.player.about.modal.shortcuts.swap": "Permuter le contenu",

View File

@ -132,6 +132,8 @@
"app.userList.userOptions.savedNames.title": "Lista de usuarios en xuntanza {0} en {1}",
"app.userList.userOptions.sortedFirstName.heading": "Ordenado por nome:",
"app.userList.userOptions.sortedLastName.heading": "Ordenado por apelido:",
"app.userList.userOptions.hideViewersCursor": "Os cursores do espectador están bloqueados",
"app.userList.userOptions.showViewersCursor": "Os cursores do espectador están desbloqueados",
"app.media.label": "Multimedia",
"app.media.autoplayAlertDesc": "Permitir acceso",
"app.media.screenshare.start": "Comezou a pantalla compartida",
@ -562,6 +564,7 @@
"app.audio.audioSettings.descriptionLabel": "Teña en conta que aparecerá un diálogo no navegador que lle requerira que acepte compartir o seu micrófono",
"app.audio.audioSettings.microphoneSourceLabel": "Fonte de micrófono",
"app.audio.audioSettings.speakerSourceLabel": "Fonte de altofalante",
"app.audio.audioSettings.testSpeakerLabel": "Probar o seu altofalante",
"app.audio.audioSettings.microphoneStreamLabel": "O seu volume do fluxo de son",
"app.audio.audioSettings.retryLabel": "Tentar de novo",
"app.audio.listenOnly.backLabel": "Atrás",
@ -695,7 +698,7 @@
"app.lock-viewers.button.apply": "Aplicar",
"app.lock-viewers.button.cancel": "Cancelar",
"app.lock-viewers.locked": "Bloqueado",
"app.lock-viewers.unlocked": "Desbloqueado",
"app.lock-viewers.hideViewersCursor": "Ver os cursores doutros espectadores",
"app.guest-policy.ariaTitle": "Axustes das normas de convidados modais",
"app.guest-policy.title": "Normas para os convidados",
"app.guest-policy.description": "Cambiar os axustes das normas de convidados á xuntanza",
@ -952,6 +955,7 @@
"playback.button.search.aria": "Buscar",
"playback.button.section.aria": "Sección lateral",
"playback.button.swap.aria": "Intercambiar o contido",
"playback.button.theme.aria": "Alternar o tema",
"playback.error.wrapper.aria": "Área de erro",
"playback.loader.wrapper.aria": "Área do cargador",
"playback.player.wrapper.aria": "Área do reprodutor",

View File

@ -428,7 +428,6 @@
"app.lock-viewers.button.apply": "אישור",
"app.lock-viewers.button.cancel": "ביטול",
"app.lock-viewers.locked": "לא מאופשר",
"app.lock-viewers.unlocked": "מאופשר",
"app.recording.startTitle": "התחלת הקלטה",
"app.recording.stopTitle": "השהית הקלטה",
"app.recording.resumeTitle": "הפעלת הקלטה מחדש",

View File

@ -389,7 +389,6 @@
"app.lock-viewers.button.apply": "Primjeni",
"app.lock-viewers.button.cancel": "Odustani",
"app.lock-viewers.locked": "Zaključano",
"app.lock-viewers.unlocked": "Otključano",
"app.guest-policy.button.askModerator": "Pitaj moderatora",
"app.guest-policy.button.alwaysAccept": "Uvijek prihvati",
"app.guest-policy.button.alwaysDeny": "Uvijek odbij",

View File

@ -2,28 +2,32 @@
"app.home.greeting": "A prezentáció hamarosan elindul ...",
"app.chat.submitLabel": "Üzenet küldése",
"app.chat.loading": "Üzenet töltődik: {0}%",
"app.chat.errorMaxMessageLength": "Az üzenet {0} karakterrel hosszabb",
"app.chat.errorMaxMessageLength": "Az üzenet {0} karakterrel hosszabb",
"app.chat.disconnected": "Nem küldhetsz üzenete, mert nem kapcsolódtál",
"app.chat.locked": "Nem küldhetsz üzenetet, mert a beszélgetés zárolt",
"app.chat.inputLabel": "{0}: üzenet érkezett",
"app.chat.inputPlaceholder": "{0} üzenet",
"app.chat.titlePublic": "Nyilvános üzenetek",
"app.chat.titlePrivate": "Privát üzenetek {0} résztvevővel",
"app.chat.partnerDisconnected": "{0} kilépett",
"app.chat.closeChatLabel": "{0} bezárása",
"app.chat.hideChatLabel": "{0} elrejtése",
"app.chat.moreMessages": "További üzenetek lejjebb",
"app.chat.dropdown.options": "Üzenetek beállításai",
"app.chat.dropdown.options": "Üzenetbeállítások",
"app.chat.dropdown.clear": "Törlés",
"app.chat.dropdown.copy": "Másolás",
"app.chat.dropdown.save": "Mentés",
"app.chat.label": "Üzenetek",
"app.chat.offline": "Offline",
"app.chat.pollResult": "Szavazás eredménye",
"app.chat.breakoutDurationUpdated": "A csoportmegbeszélés ideje {0} perc",
"app.chat.emptyLogLabel": "Az üzenetek naplója üres",
"app.chat.clearPublicChatMessage": "A nyilvános beszélgetés előzményeit csak Szervező törölheti",
"app.chat.clearPublicChatMessage": "A nyilvános beszélgetés előzményeit csak a szervező törölheti",
"app.chat.multi.typing": "Több résztvevő gépel",
"app.chat.one.typing": "{0} gépel",
"app.chat.two.typing": "{0} és {1} gépel",
"app.chat.copySuccess": "Másolt üzenetátirat",
"app.chat.copyErr": "Üzenetátirat másolása sikertelen",
"app.captions.label": "Feliratok",
"app.captions.menu.close": "Bezárás",
"app.captions.menu.start": "Indítás",
@ -39,10 +43,27 @@
"app.captions.menu.backgroundColor": "Háttérszín",
"app.captions.menu.previewLabel": "Előnézet",
"app.captions.menu.cancelLabel": "Mégsem",
"app.captions.hide": "Felirat elrejtése",
"app.captions.ownership": "Átvétel",
"app.captions.ownershipTooltip": "{0} feliratok tulajdonosa leszel",
"app.captions.dictationStart": "Diktálás indítása",
"app.captions.dictationStop": "Diktálás befejezése",
"app.captions.dictationOnDesc": "Beszédfelismerés bekapcsolása",
"app.captions.dictationOffDesc": "Beszédfelismerés kikapcsolása",
"app.captions.speech.start": "A beszédfelismerés elindult",
"app.captions.speech.stop": "A beszédfelismerés leállt",
"app.captions.speech.error": "A beszédfelismerő leállt a böngésző inkompatibilitása vagy a csöndes időszak miatt",
"app.textInput.sendLabel": "Küldés",
"app.title.defaultViewLabel": "Alapértelmezett prezentációs nézet",
"app.notes.title": "Megosztott jegyzetek",
"app.notes.label": "Jegyetek",
"app.notes.hide": "Jegyzet elrejtése",
"app.notes.locked": "Zárolt",
"app.pads.hint": "Nyomj Esc-et a szerkesztő eszköztárra fókuszálásához",
"app.user.activityCheck": "Felhasználói aktivitás ellenőrzése",
"app.user.activityCheck.label": "Ellenőrzi, hogy a felhasználó még az előadás résztvevője-e ({0})",
"app.user.activityCheck.check": "Ellenőrzés",
"app.userList.usersTitle": "Résztvevők",
"app.userList.usersTitle": "Felhasználók",
"app.userList.participantsTitle": "Résztvevők",
"app.userList.messagesTitle": "Üzenetek",
"app.userList.notesTitle": "Jegyetek",
@ -52,14 +73,17 @@
"app.userList.you": "Én",
"app.userList.locked": "Zárolt",
"app.userList.byModerator": "(Szervező)",
"app.userList.label": "Résztvevők",
"app.userList.label": "Résztvevők listája",
"app.userList.toggleCompactView.label": "Kompakt nézet be-, kikapcsolása",
"app.userList.moderator": "Szervező",
"app.userList.moderator": "Moderátor",
"app.userList.mobile": "Mobil",
"app.userList.guest": "Vendég",
"app.userList.sharingWebcam": "Webkamera",
"app.userList.menuTitleContext": "Elérhető beállítások",
"app.userList.chatListItem.unreadSingular": "Egy új üzenet",
"app.userList.chatListItem.unreadPlural": "{0} új üzenet",
"app.userList.menu.chat.label": "Privát üzenetek indítása",
"app.userList.menu.clearStatus.label": "Hangulatjeled törlése",
"app.userList.menu.clearStatus.label": "Állapot törlése",
"app.userList.menu.removeUser.label": "Résztvevő eltávolítása",
"app.userList.menu.removeConfirmation.label": "({0}) résztvevő eltávolítása",
"app.userlist.menu.removeConfirmation.desc": "A résztvevő újracsatlakozásának megakadályozása.",
@ -69,6 +93,7 @@
"app.userList.menu.webcamUnpin.label": "Résztvevő webkamera feloldás",
"app.userList.menu.giveWhiteboardAccess.label" : "Hozzáférést biztosít a táblához",
"app.userList.menu.removeWhiteboardAccess.label": "Hozzáférés megvonás a táblától",
"app.userList.menu.ejectUserCameras.label": "Feliratok",
"app.userList.userAriaLabel": "{0} {1} {2} állapot {3}",
"app.userList.menu.promoteUser.label": "Előléptetés Szervezővé",
"app.userList.menu.demoteUser.label": "Lefokozás résztvevővé",
@ -93,6 +118,7 @@
"app.userList.userOptions.disableMic": "A résztvevők mikrofonja le van tiltva",
"app.userList.userOptions.disablePrivChat": "A privát üzenetek le van tiltva",
"app.userList.userOptions.disablePubChat": "A nyilvános üzenetek le van tiltva",
"app.userList.userOptions.disableNotes": "A megosztott jegyzetek zárolva vannak",
"app.userList.userOptions.hideUserList": "A résztvevők nem látják a résztvevői névsort",
"app.userList.userOptions.webcamsOnlyForModerator": "Csak Szervezők láthatják a résztvevők webkaméráját (zárolási beállítások miatt)",
"app.userList.content.participants.options.clearedStatus": "Az összes résztvevő állapotát sikeresen törölted",
@ -100,15 +126,19 @@
"app.userList.userOptions.enableMic": "A résztvevők mikrofonja engedélyezve van",
"app.userList.userOptions.enablePrivChat": "A privát üzenetek engedélyezve van",
"app.userList.userOptions.enablePubChat": "A nyilvános üzenetek engedélyezve van",
"app.userList.userOptions.enableNotes": "A megosztott jegyzet engedélyezve van",
"app.userList.userOptions.showUserList": "A résztvevők látják a résztvevői névsort",
"app.userList.userOptions.enableOnlyModeratorWebcam": "A webkamerád engedélyezve van, így a többiek láthatnak",
"app.userList.userOptions.savedNames.title": "A(z) {0} konferencia résztvevőinek listája, {1}",
"app.userList.userOptions.savedNames.title": "{0} előadás résztvevőinek listája, {1}",
"app.userList.userOptions.sortedFirstName.heading": "Keresztnév szerint rendezve:",
"app.userList.userOptions.sortedLastName.heading": "Vezetéknév szerint rendezve:",
"app.userList.userOptions.hideViewersCursor": "Résztvevők kurzora zárolva",
"app.userList.userOptions.showViewersCursor": "Résztvevők kurzora nincs zárolva",
"app.media.label": "Média",
"app.media.autoplayAlertDesc": "Hozzáférés engedélyezése",
"app.media.screenshare.start": "A képernyőmegosztás elindult",
"app.media.screenshare.end": "A képernyőmegosztás befejeződött",
"app.media.screenshare.endDueToDataSaving": "A képernyőmegosztás leállt adatcsökkentés miatt",
"app.media.screenshare.unavailable": "A képernyőmegosztás nem érhető el",
"app.media.screenshare.notSupported": "Ez a böngésző nem támogatja a képernyőmegosztást.",
"app.media.screenshare.autoplayBlockedDesc": "Az előadó képernyőjének megjelenítéséhez az engedélyedre van szükségünk.",
@ -138,7 +168,15 @@
"app.presentation.slideContent": "Diatartalom",
"app.presentation.startSlideContent": "Diatartalom indítása",
"app.presentation.endSlideContent": "Diatartalom befejezése",
"app.presentation.changedSlideContent": "A prezentáció váltott a diára: {0}",
"app.presentation.emptySlideContent": "A jelenlegi diának nincs tartalma",
"app.presentation.options.fullscreen": "Teljes képernyő",
"app.presentation.options.exitFullscreen": "Teljes képernyő bezárása",
"app.presentation.options.minimize": "Kis méret",
"app.presentation.options.snapshot": "Pillanatkép az aktuális előadásról ",
"app.presentation.options.downloading": "Letöltés...",
"app.presentation.options.downloaded": "Az aktuális előadás letöltve",
"app.presentation.options.downloadFailed": "Az aktuális előadás nem tölthető le",
"app.presentation.presentationToolbar.noNextSlideDesc": "Prezentáció vége",
"app.presentation.presentationToolbar.noPrevSlideDesc": "Prezentáció eleje",
"app.presentation.presentationToolbar.selectLabel": "Dia választása",
@ -163,8 +201,10 @@
"app.presentation.presentationToolbar.fitToWidth": "A szélességhez illeszkedjen",
"app.presentation.presentationToolbar.fitToPage": "Az oldalhoz illeszkedjen",
"app.presentation.presentationToolbar.goToSlide": "{0}. dia",
"app.presentation.placeholder": "Jelenleg nincs aktív előadás",
"app.presentationUploder.title": "Prezentáció",
"app.presentationUploder.message": "Előadóként tetszőleges office dokumentumot, illetve PDF fájlt fel tudsz tölteni. A legjobb eredmény érdekében javasoljuk PDF fájl használatát. Kérjük, ellenőrizd, hogy egy prezentációt kiválasztottál a jobb oldalon lévő jelölővel. ",
"app.presentationUploder.extraHint": "FONTOS: egyik fájl sem érheti el {0} MB-ot és {1} oldalt.",
"app.presentationUploder.uploadLabel": "Feltöltés",
"app.presentationUploder.confirmLabel": "Jóváhagyás",
"app.presentationUploder.confirmDesc": "Mentsd a módosításaidat és indítsd a prezentációt",
@ -177,6 +217,7 @@
"app.presentationUploder.fileToUpload": "Feltöltendő ...",
"app.presentationUploder.currentBadge": "Jelenlegi",
"app.presentationUploder.rejectedError": "A kiválasztott fájl(oka)t visszautasítottuk. Kérjük, ellenőrizd a fájl(ok) típusát.",
"app.presentationUploder.connectionClosedError": "Megszakadt a lassú kapcsolat miatt. Kérem, próbáld újra.",
"app.presentationUploder.upload.progress": "({0}%) feltöltve",
"app.presentationUploder.upload.413": "A fájl túl nagy, túllépte a maximális {0} MB-ot",
"app.presentationUploder.genericError": "Hoppá, valami hiba történt ...",
@ -211,6 +252,7 @@
"app.presentationUploder.clearErrorsDesc": "Hibás feltöltések törlése",
"app.presentationUploder.uploadViewTitle": "Bemutató feltöltése",
"app.poll.pollPaneTitle": "Szavazás",
"app.poll.enableMultipleResponseLabel": "Több válasz is lehetséges válaszadónként?",
"app.poll.quickPollTitle": "Gyorsszavazás",
"app.poll.hidePollDesc": "Szavazásmenü-panel elrejtése",
"app.poll.quickPollInstruction": "Válassz egy beállítást a szavazás indításához",
@ -238,7 +280,11 @@
"app.poll.secretPoll.label" : "Névtelen szavazás",
"app.poll.secretPoll.isSecretLabel": "A szavazás anonim az egyéni válaszokat nem láthatja.",
"app.poll.questionErr": "Kérdés megadása kötelező.",
"app.poll.optionErr": "Szavazási lehetőség beírása",
"app.poll.startPollDesc": "Szavazás kezdése",
"app.poll.showRespDesc": "Válaszok beállításainak megjelenítése",
"app.poll.addRespDesc": "Szavazási válaszbemenet hozzáadása",
"app.poll.deleteRespDesc": "{0} lehetőség eltávolítása",
"app.poll.t": "Igaz",
"app.poll.f": "Hamis",
"app.poll.tf": "Igaz / Hamis",
@ -263,6 +309,8 @@
"app.poll.liveResult.usersTitle": "Résztvevők",
"app.poll.liveResult.responsesTitle": "Válasz",
"app.poll.liveResult.secretLabel": "Ez egy névtelen szavazás. Az egyéni válaszok nem jelennek meg.",
"app.poll.removePollOpt": "{0} szavazási lehetőség eltávolítva",
"app.poll.emptyPollOpt": "Üres",
"app.polling.pollingTitle": "Válaszlehetőségek",
"app.polling.pollQuestionTitle": "Szavazás kérdése",
"app.polling.submitLabel": "Beküldés",
@ -278,6 +326,8 @@
"app.waitingMessage": "Szétkapcsolódtunk. {0} másodperc múlva próbálunk újra csatlakozni ...",
"app.retryNow": "Most próbáld újra",
"app.muteWarning.label": "{0} kattints, hogy hallható légy!",
"app.muteWarning.disableMessage": "A néma figyelmeztetések tiltva a visszavonásig",
"app.muteWarning.tooltip": "Kattints a figyelmeztetés bezárásához és letiltásához a következő némítás feloldásáig",
"app.navBar.settingsDropdown.optionsLabel": "Beállítások",
"app.navBar.settingsDropdown.fullscreenLabel": "Teljes képernyő",
"app.navBar.settingsDropdown.settingsLabel": "Beállítások",
@ -298,6 +348,7 @@
"app.navBar.userListToggleBtnLabel": "Résztvevői ablak be-, kikapcsolása",
"app.navBar.toggleUserList.ariaLabel": "Résztvevők és Üzentek felcserélése",
"app.navBar.toggleUserList.newMessages": "új üzenetértesítéssel",
"app.navBar.toggleUserList.newMsgAria": "Új üzenet tőle: {0}",
"app.navBar.recording": "Ezt a munkamenetet rögzítjük",
"app.navBar.recording.on": "Felvétel",
"app.navBar.recording.off": "Nem készül felvétel",
@ -312,6 +363,7 @@
"app.endMeeting.noLabel": "Nem",
"app.about.title": "Névjegy",
"app.about.version": "Kliens buildszáma:",
"app.about.version_label": "BigBlueButton verzió:",
"app.about.copyright": "Copyright:",
"app.about.confirmLabel": "OK",
"app.about.confirmDesc": "OK",
@ -372,6 +424,7 @@
"app.settings.dataSavingTab.description": "Igazítsd a sávszélességedhez, hogy mi jelenhessen meg a képernyődön.",
"app.settings.save-notification.label": "A beállításokat mentettük",
"app.statusNotifier.lowerHands": "Kezek leengedése",
"app.statusNotifier.lowerHandDescOneUser": "{0} kezének letétele",
"app.statusNotifier.raisedHandsTitle": "Kézfeltartások",
"app.statusNotifier.raisedHandDesc": "{0} jelentkeznek",
"app.statusNotifier.raisedHandDescOneUser": "{0} jelentkezik",
@ -380,7 +433,7 @@
"app.switch.offLabel": "KI",
"app.talkingIndicator.ariaMuteDesc" : "Válasszd ki a némítani kívánt résztvevőt",
"app.talkingIndicator.isTalking" : "{0} beszél",
"app.talkingIndicator.moreThanMaxIndicatorsTalking" : "0}+ beszél",
"app.talkingIndicator.moreThanMaxIndicatorsTalking" : "{0}+ beszél",
"app.talkingIndicator.moreThanMaxIndicatorsWereTalking" : "{0}+ beszélgettek",
"app.talkingIndicator.wasTalking" : "{0} befejezte beszédét",
"app.actionsBar.actionsDropdown.actionsLabel": "Műveletek",
@ -453,6 +506,9 @@
"app.breakoutJoinConfirmation.freeJoinMessage": "Csoportterem választása",
"app.breakoutTimeRemainingMessage": "Csoport hátralévő ideje: {0}",
"app.breakoutWillCloseMessage": "Az idő lejárt. A csoportterem hamarosan bezárul",
"app.breakout.dropdown.manageDuration": "Időtartam kezelése",
"app.breakout.dropdown.destroyAll": "Csoporttermek megszüntetése",
"app.breakout.dropdown.options": "Csoporttermek beállításai",
"app.calculatingBreakoutTimeRemaining": "Hátralévő idő számítása ...",
"app.audioModal.ariaTitle": "Csatlakozás hangablak",
"app.audioModal.microphoneLabel": "Mikrofon",
@ -508,6 +564,7 @@
"app.audio.audioSettings.descriptionLabel": "Kérjük, figyelj, hogy egy ablak fog megjelenni a böngésződben, benne kérés, hogy fogadd el a mikrofonod megosztását.",
"app.audio.audioSettings.microphoneSourceLabel": "Mikrofon forrása",
"app.audio.audioSettings.speakerSourceLabel": "Hangszóró forrása",
"app.audio.audioSettings.testSpeakerLabel": "Hang tesztelése",
"app.audio.audioSettings.microphoneStreamLabel": "A hangstream hangerőd",
"app.audio.audioSettings.retryLabel": "Újra",
"app.audio.listenOnly.backLabel": "Vissza",
@ -544,6 +601,8 @@
"app.error.408": "Hitelesítés nem sikerült",
"app.error.410": "A találkozó véget ért",
"app.error.500": "Sajnáljuk, hiba történt",
"app.error.userLoggedOut": "A felhasználónak érvénytelen munkamenet-tokenje van kijelentkezés miatt",
"app.error.ejectedUser": "A felhasználónak érvénytelen munkamenet-tokenje van kizárás miatt",
"app.error.userBanned": "A résztvevőt kitiltották",
"app.error.leaveLabel": "Bejelentkezés újra",
"app.error.fallback.presentation.title": "Hiba lépett fel",
@ -562,6 +621,10 @@
"app.guest.guestDeny": "Sajnálom, a Szervező elutasította a csatlakozásod. Amennyiben úgy gondolod, hogy ez tévedésből történt, kérlek vedd fel a kapcsolatot a szervezővel, hogy tisztázni tudd a helyzetet!",
"app.guest.seatWait": "Vendég várakozik csatlakozáshoz",
"app.guest.allow": "Vendég csatlakozása jóváhagyva",
"app.guest.firstPositionInWaitingQueue": "Te vagy az első a sorban!",
"app.guest.positionInWaitingQueue": "Jelenlegi helyed a várakozási sorban:",
"app.guest.guestInvalid": "A vendég felhasználó érvénytelen",
"app.guest.meetingForciblyEnded": "Befejezett előadáshoz nem csatlakozhatsz",
"app.userList.guest.waitingUsers": "Várakozók",
"app.userList.guest.waitingUsersTitle": "Résztvevő kezelés",
"app.userList.guest.optionTitle": "Várakozók",
@ -570,11 +633,14 @@
"app.userList.guest.allowEveryone": "Mindenki engedélyezése",
"app.userList.guest.denyEveryone": "Mindenki tiltása",
"app.userList.guest.pendingUsers": "{0} várakozó szervező",
"app.userList.guest.noPendingUsers": "Egy várakozó vendég sincs...",
"app.userList.guest.pendingGuestUsers": "{0} várakozó ",
"app.userList.guest.pendingGuestAlert": "csatlakozott a munkamenethez és várakozik a jóváhagyásodra.",
"app.userList.guest.rememberChoice": "Választás megjegyzése",
"app.userList.guest.emptyMessage": "Jelenleg nincs üzenet",
"app.userList.guest.inputPlaceholder": "Üzenet a belépésre várakozóknak",
"app.userList.guest.privateInputPlaceholder": "Üzenet neki: {0}",
"app.userList.guest.privateMessageLabel": "Üzenet",
"app.userList.guest.acceptLabel": "Engedélyezés",
"app.userList.guest.denyLabel": "Tiltás",
"app.user-info.title": "Címtárkeresés",
@ -582,11 +648,14 @@
"app.toast.chat.public": "Új nyilvános üzenet",
"app.toast.chat.private": "Új privát üzenet",
"app.toast.chat.system": "Rendszer",
"app.toast.clearedEmoji.label": "Hangulatjel(ek) törölve",
"app.toast.clearedEmoji.label": "Hangulatjel-állapot törölve",
"app.toast.setEmoji.label": "Hangulatod új állapota {0}",
"app.toast.meetingMuteOn.label": "Az összes résztvevőt elnémítottad",
"app.toast.meetingMuteOff.label": "A megbeszélés némaságát kikapcsoltad",
"app.toast.setEmoji.raiseHand": "Felemelted a kezed",
"app.toast.setEmoji.lowerHand": "Kezedet letették",
"app.toast.promotedLabel": "Moderátorrá léptettek elő",
"app.toast.demotedLabel": "Résztvevővé fokoztak le",
"app.notification.recordingStart": "Ezt a munkamenetet rögzítjük",
"app.notification.recordingStop": "Ezt a munkamenetet nem rögzítjük",
"app.notification.recordingPaused": "Ezt a munkamenetet nem rögzítjük tovább",
@ -624,12 +693,12 @@
"app.lock-viewers.PublicChatLabel": "Nyilvános üzenetek küldése",
"app.lock-viewers.PrivateChatLable": "Privát üzenetek küldése",
"app.lock-viewers.notesLabel": "Nyilvános megjegyzések módosítása",
"app.lock-viewers.userListLabel": "A Résztvevői lista nyílt",
"app.lock-viewers.userListLabel": "A többi résztvevő megjelenítése a Résztvevői listában",
"app.lock-viewers.ariaTitle": "Résztvevők beállításablakának zárolása",
"app.lock-viewers.button.apply": "Alkalmaz",
"app.lock-viewers.button.cancel": "Mégsem",
"app.lock-viewers.locked": "Zárolt",
"app.lock-viewers.unlocked": "Zárolás feloldva",
"app.lock-viewers.hideViewersCursor": "A többi felhasználó kurzorának megtekintése",
"app.guest-policy.ariaTitle": "Vendégek fogadása",
"app.guest-policy.title": "Vendégek fogadása",
"app.guest-policy.description": "Teendő új vendég fogadásakor",
@ -642,14 +711,26 @@
"app.connection-status.description": "Az állapotjel saját interneted minőségéről mutat képet.",
"app.connection-status.empty": "Jelenleg nincs kapcsolódási probléma.",
"app.connection-status.more": "több",
"app.connection-status.copy": "Statisztikák másolása",
"app.connection-status.copied": "Másolva!",
"app.connection-status.jitter": "Jitter",
"app.connection-status.label": "Kapcsolódás állapota",
"app.connection-status.settings": "Beállításaim alkalmazása",
"app.connection-status.no": "Nem",
"app.connection-status.notification": "Kapcsolatod szakadozik.",
"app.connection-status.offline": "offline",
"app.connection-status.audioUploadRate": "Hang feltöltési arány",
"app.connection-status.audioDownloadRate": "Hang letöltési arány",
"app.connection-status.videoUploadRate": "Videó feltöltési arány",
"app.connection-status.videoDownloadRate": "Videó letöltési arány",
"app.connection-status.lostPackets": "Elvesztett csomag",
"app.connection-status.usingTurn": "TURN használat",
"app.connection-status.yes": "Igen",
"app.connection-status.connectionStats": "Csatlakozási statisztikák",
"app.connection-status.myLogs": "Naplózásaim",
"app.connection-status.sessionLogs": "Munkamenet-naplók",
"app.connection-status.next": "Következő oldal",
"app.connection-status.prev": "Előző oldal",
"app.learning-dashboard.label": "Aktivitáselemzés irányítópult",
"app.learning-dashboard.description": "Irányítópult megnyitása a résztvevők tevékenységeivel",
"app.learning-dashboard.clickHereToOpen": "Aktivitáselemzés irányítópult megnyitása",
@ -695,6 +776,7 @@
"app.video.notSupportedError": "Csak biztonságok forrásból oszthatsz meg webkamerát, ezért kérjük, ellenőrizd, hogy SSL tanúsítványod érvényes-e",
"app.video.notReadableError": "Nem vesszük a webkamera képét. Kérjük, ellenőrizd, hogy másik program ne használja a webkamerát",
"app.video.timeoutError": "A böngésző nem válaszolt időben.",
"app.video.genericError": "({0}) eszköz ismeretlen hibát okozott",
"app.video.mediaTimedOutError": "A webkamera adatfolyama megszakadt. Próbáld meg újra megosztani",
"app.video.mediaFlowTimeout1020": "A média nem éri el a szervert (hiba 1020)",
"app.video.suggestWebcamLock": "Érvényesíted a zárolási beállítást a nézők webkameráján?",
@ -713,12 +795,19 @@
"app.video.clientDisconnected": "A webkamerát nem lehet megosztani kapcsolódási problémák miatt",
"app.video.virtualBackground.none": "Egyik sem",
"app.video.virtualBackground.blur": "Elhomályosít",
"app.video.virtualBackground.home": "Kezdőpont",
"app.video.virtualBackground.board": "Tábla",
"app.video.virtualBackground.coffeeshop": "Kávézó",
"app.video.virtualBackground.background": "Háttér",
"app.video.virtualBackground.genericError": "Nem sikerült alkalmazni a kameraeffektust. Próbáld újra.",
"app.video.virtualBackground.camBgAriaDesc": "A webkamera virtuális hátterét a következőre állítottad: {0}",
"app.video.camCapReached": "Több webkamerát nem oszthatsz meg",
"app.video.meetingCamCapReached": "Az előadás elérte az egyidőben maximálisan megosztható webkamerák számát.",
"app.video.dropZoneLabel": "Dobja ide",
"app.fullscreenButton.label": "{0} teljes képernyős módra állítása",
"app.fullscreenUndoButton.label": "{0} teljes képernyőjének visszaállítása",
"app.switchButton.expandLabel": "Képernyőmegosztási videó kiterjesztése",
"app.switchButton.shrinkLabel": "Képernyőmegosztási videó zsugorítása",
"app.sfu.mediaServerConnectionError2000": "Nem sikerült csatlakozni a médiaszerverhez (hiba 2000)",
"app.sfu.mediaServerOffline2001": "A médiaszerver ki van kapcsolva. Kérjük, próbálja később. (hiba 2001)",
"app.sfu.mediaServerNoResources2002": "A médiaszervernek nincs elérhető erőforrása (hiba 2002)",
@ -731,6 +820,7 @@
"app.meeting.endNotification.ok.label": "OK",
"app.whiteboard.annotations.poll": "A szavazás eredményeit sikeresen közzétetted",
"app.whiteboard.annotations.pollResult": "Szavazás eredménye",
"app.whiteboard.annotations.noResponses": "Egy válasz sincs",
"app.whiteboard.toolbar.tools": "Eszközök",
"app.whiteboard.toolbar.tools.hand": "Mozgatás",
"app.whiteboard.toolbar.tools.pencil": "Ceruza",
@ -762,6 +852,7 @@
"app.whiteboard.toolbar.palmRejectionOn": "Érintőképernyőn rajzolás elutasítása",
"app.whiteboard.toolbar.palmRejectionOff": "Érintőképernyőn rajzolás engedélyezése",
"app.whiteboard.toolbar.fontSize": "Betűméretek",
"app.whiteboard.toolbarAriaLabel": "Prezentációs eszköz",
"app.feedback.title": "Kiléptél a beszélgetésből",
"app.feedback.subtitle": "Örömmel vesszük, ha írsz néhány szót a BigBlueButton használatának tapasztalatairól (nem kötelező)",
"app.feedback.textarea": "Hogyan tennéd jobbá a BigBlueButton-t?",
@ -773,7 +864,9 @@
"app.videoDock.webcamFocusDesc": "Fókusz a kiválasztott webkamerára",
"app.videoDock.webcamUnfocusLabel": "Fókusz elvétele",
"app.videoDock.webcamUnfocusDesc": "Fókusz elvétele a kiválasztott webkameráról",
"app.videoDock.webcamPinLabel": "Kitűzés",
"app.videoDock.webcamPinDesc": "Rögzítsd a kiválasztott webkamerát",
"app.videoDock.webcamUnpinLabel": "Kitűzés eltávolítása",
"app.videoDock.webcamUnpinLabelDisabled": "Csak Szervezők oldhatják fel a résztvevők rögzítését",
"app.videoDock.webcamUnpinDesc": "Oldd fel a kiválasztott webkamerát",
"app.videoDock.autoplayBlockedDesc": "Mások webkamerájának a megjelenítéséhez az engedélyedre van szükségünk.",
@ -783,7 +876,9 @@
"app.createBreakoutRoom.title": "Csoporttermek",
"app.createBreakoutRoom.ariaTitle": "Csoporttermek elrejtése",
"app.createBreakoutRoom.breakoutRoomLabel": "{0} csoportterem",
"app.createBreakoutRoom.askToJoin": "Csatlakozás kérése",
"app.createBreakoutRoom.generatingURL": "URL létrehozása",
"app.createBreakoutRoom.generatingURLMessage": "Rövid időn belül legyártjuk a csoportszobához a csatlakozásai linket...",
"app.createBreakoutRoom.duration": "{0} időtartam",
"app.createBreakoutRoom.room": "{0}. Terem",
"app.createBreakoutRoom.notAssigned": "({0}) nincs hozzárendelve",
@ -797,7 +892,11 @@
"app.createBreakoutRoom.durationInMinutes": "Időtartam (percben)",
"app.createBreakoutRoom.randomlyAssign": "Véletlenszerű hozzárendelés",
"app.createBreakoutRoom.randomlyAssignDesc": "Véletlenszerűen rendeli a résztvevőket a csoportterembe",
"app.createBreakoutRoom.resetAssignments": "Hozzárendelések resztelése",
"app.createBreakoutRoom.resetAssignmentsDesc": "Összes felhasználó szoba összerendelés reszetelése",
"app.createBreakoutRoom.endAllBreakouts": "Összes csoportterem bezárása",
"app.createBreakoutRoom.chatTitleMsgAllRooms": "összes szoba",
"app.createBreakoutRoom.msgToBreakoutsSent": "{0} csoportteremnek küldendő üzenet",
"app.createBreakoutRoom.roomName": "{0} (Terem - {1})",
"app.createBreakoutRoom.doneLabel": "Kész",
"app.createBreakoutRoom.nextLabel": "Következő",
@ -810,6 +909,13 @@
"app.createBreakoutRoom.modalDesc": "Tipp: Fogd-és-vidd a résztvevő nevét a kívánt csoportterembe.",
"app.createBreakoutRoom.roomTime": "{0} perc",
"app.createBreakoutRoom.numberOfRoomsError": "A termek száma érvénytelen.",
"app.createBreakoutRoom.duplicatedRoomNameError": "A szoba neve nem duplikálható.",
"app.createBreakoutRoom.emptyRoomNameError": "A szoba neve nem lehet üres.",
"app.createBreakoutRoom.setTimeInMinutes": "Időtartam beállítása (percben)",
"app.createBreakoutRoom.setTimeLabel": "Alkalmaz",
"app.createBreakoutRoom.setTimeCancel": "Mégsem",
"app.createBreakoutRoom.setTimeHigherThanMeetingTimeError": "A csoporttermek nyitvatartási időtartama nem haladhatja meg a megbeszélésből hátralévő időt.",
"app.createBreakoutRoom.roomNameInputDesc": "Csoportterem nevének módosítása",
"app.externalVideo.start": "Egy új videó megosztása",
"app.externalVideo.title": "Egy külső videó megosztása",
"app.externalVideo.input": "Külső videó URL",
@ -817,6 +923,8 @@
"app.externalVideo.urlError": "Ez a videó URL nem támogatott",
"app.externalVideo.close": "Bezárás",
"app.externalVideo.autoPlayWarning": "Játszd le a videót a médiaszinkronizáció engedélyezéséhez",
"app.externalVideo.refreshLabel": "Videólejátszó frissítése",
"app.externalVideo.fullscreenLabel": "Videólejátszó",
"app.externalVideo.noteLabel": "Megjegyzés: A megosztott külső videó nem jelenik meg a felvételen. A YouTube, Vimeo, Instructure Media, Twitch, Daily Motion és média URL-ek (például https://example.com/xy.mp4) támogatottak.",
"app.actionsBar.actionsDropdown.shareExternalVideo": "Egy külső videó megosztása",
"app.actionsBar.actionsDropdown.stopShareExternalVideo": "Külső videó megosztásának befejezése",
@ -824,9 +932,13 @@
"app.legacy.unsupportedBrowser": "Úgy néz ki, hogy a böngésződ nem támogatott. Kérjük, használj {0} vagy {1} böngészőt a teljes támogatás érdekében.",
"app.legacy.upgradeBrowser": "Úgy néz ki, hogy a böngésződ egy régi verzióját használod. Kérjük, frissítsd a böngésződet a teljes támogatás érdekében.",
"app.legacy.criosBrowser": "iOS-en a teljes támogatáshoz használj Safari böngészőt .",
"app.debugWindow.windowTitle": "Debug",
"app.debugWindow.form.userAgentLabel": "User Agent",
"app.debugWindow.form.button.copy": "Másolás",
"app.debugWindow.form.enableAutoarrangeLayoutLabel": "Automatikus elrendezés engedélyezése",
"app.debugWindow.form.enableAutoarrangeLayoutDescription": "(le van tiltva, hogy húzd vagy átméretezd a webkamerák területét)",
"app.debugWindow.form.chatLoggerLabel": "Tesztüzenet naplózási szintjei",
"app.debugWindow.form.button.apply": "Alkalmaz",
"app.layout.style.custom": "Egyéni",
"app.layout.style.smart": "Intelligens elrendezés",
"app.layout.style.presentationFocus": "Prezentáció a fókuszban",
@ -835,25 +947,107 @@
"app.layout.style.smartPush": "Intelligens elrendezés (mindenkinél kikényszerítve)",
"app.layout.style.presentationFocusPush": "Prezentáció a fókuszban (mindenkinél kikényszerítve)",
"app.layout.style.videoFocusPush": "Video a fókuszban (mindenkinél kikényszerítve)",
"playback.button.about.aria": "Névjegy",
"playback.button.clear.aria": "Keresés törlése",
"playback.button.close.aria": "Ablak bezárása",
"playback.button.fullscreen.aria": "Teljes képernyős tartalom",
"playback.button.restore.aria": "Tartalom visszaállítása",
"playback.button.search.aria": "Keresés",
"playback.button.section.aria": "Oldalsó rész",
"playback.button.swap.aria": "Tartalom cseréje",
"playback.button.theme.aria": "Téma felcserélése",
"playback.error.wrapper.aria": "Hiba területe",
"playback.loader.wrapper.aria": "Betöltő területe",
"playback.player.wrapper.aria": "Lejátszó területe",
"playback.player.about.modal.shortcuts.title": "Gyorsbillentyűk",
"playback.player.about.modal.shortcuts.alt": "Alt",
"playback.player.about.modal.shortcuts.shift": "Shift",
"playback.player.about.modal.shortcuts.fullscreen": "Teljes képernyő be-ki",
"playback.player.about.modal.shortcuts.play": "Lejátszás/Megállítás",
"playback.player.about.modal.shortcuts.section": "Oldalterület felcserélése",
"playback.player.about.modal.shortcuts.seek.backward": "Visszafelé keresés",
"playback.player.about.modal.shortcuts.seek.forward": "Előre keresés",
"playback.player.about.modal.shortcuts.skip.next": "Következő dia",
"playback.player.about.modal.shortcuts.skip.previous": "Előző dia",
"playback.player.about.modal.shortcuts.swap": "Tartalom cseréje",
"playback.player.chat.message.poll.name": "Szavazás eredménye",
"playback.player.chat.message.poll.question": "Kérdés",
"playback.player.chat.message.poll.options": "Lehetőségek",
"playback.player.chat.message.poll.option.yes": "Igen",
"playback.player.chat.message.poll.option.no": "Nem",
"playback.player.chat.message.poll.option.abstention": "Tartózkodás",
"playback.player.chat.message.poll.option.true": "Igaz",
"playback.player.chat.message.poll.option.false": "Hamis",
"playback.player.chat.message.video.name": "Külső videó",
"playback.player.chat.wrapper.aria": "Csevegés területe",
"playback.player.notes.wrapper.aria": "Jegyzetek területe",
"playback.player.presentation.wrapper.aria": "Prezentáció területe",
"playback.player.screenshare.wrapper.aria": "Képernyőmegosztás területe",
"playback.player.search.modal.title": "Keresés",
"playback.player.search.modal.subtitle": "Prezentációs diák tartalmának keresése ",
"playback.player.thumbnails.wrapper.aria": "Bélyegképek területe",
"playback.player.webcams.wrapper.aria": "Webkamerák területe",
"app.learningDashboard.dashboardTitle": "Aktivitáselemzés irányítópult",
"app.learningDashboard.downloadSessionDataLabel": "Munkamenet-adat letöltése",
"app.learningDashboard.lastUpdatedLabel": "Utolsó módosítás időpontja:",
"app.learningDashboard.sessionDataDownloadedLabel": "Letöltve!",
"app.learningDashboard.shareButton": "Megosztás másokkal",
"app.learningDashboard.shareLinkCopied": "A linket sikeresen másolta!",
"app.learningDashboard.user": "Résztvevő",
"app.learningDashboard.indicators.meetingStatusEnded": "Lezárult",
"app.learningDashboard.indicators.meetingStatusActive": "Aktív",
"app.learningDashboard.indicators.usersOnline": "Aktív résztvevők",
"app.learningDashboard.indicators.usersTotal": "Résztvevők száma",
"app.learningDashboard.indicators.polls": "Szavazások",
"app.learningDashboard.indicators.timeline": "Idővonal",
"app.learningDashboard.indicators.activityScore": "Aktivitás pontszám",
"app.learningDashboard.indicators.duration": "Időtartam",
"app.learningDashboard.userDetails.startTime": "Kezdő időpont",
"app.learningDashboard.userDetails.endTime": "Záró időpont",
"app.learningDashboard.userDetails.joined": "Csatlakozott",
"app.learningDashboard.userDetails.category": "Kategória",
"app.learningDashboard.userDetails.average": "Átlag",
"app.learningDashboard.userDetails.activityPoints": "Aktivitás pontszámok",
"app.learningDashboard.userDetails.poll": "Szavazás",
"app.learningDashboard.userDetails.response": "Válasz",
"app.learningDashboard.userDetails.mostCommonAnswer": "Leggyakoribb válasz",
"app.learningDashboard.userDetails.anonymousAnswer": "Névtelen szavazás",
"app.learningDashboard.usersTable.title": "Áttekintés",
"app.learningDashboard.usersTable.colOnline": "Kapcsolódás ideje",
"app.learningDashboard.usersTable.colTalk": "Beszélgetés ideje",
"app.learningDashboard.usersTable.colWebcam": "Webkamera ideje",
"app.learningDashboard.usersTable.colMessages": "Üzenetek",
"app.learningDashboard.usersTable.colEmojis": "Hangulatjelek",
"app.learningDashboard.usersTable.colRaiseHands": "Jelentkezések",
"app.learningDashboard.usersTable.colActivityScore": "Aktivitás pontszám",
"app.learningDashboard.usersTable.colStatus": "Állapot",
"app.learningDashboard.usersTable.userStatusOnline": "Kapcsolódva",
"app.learningDashboard.usersTable.userStatusOnline": "Online",
"app.learningDashboard.usersTable.userStatusOffline": "Offline",
"app.learningDashboard.usersTable.noUsers": "Még nincsenek résztvevők",
"app.learningDashboard.pollsTable.anonymousAnswer": "Névtelen szavazás (válaszok az utolsó sorban)"
"app.learningDashboard.usersTable.name": "Név",
"app.learningDashboard.usersTable.moderator": "Moderátor",
"app.learningDashboard.usersTable.pollVotes": "Szavaztok",
"app.learningDashboard.usersTable.join": "Csatlakozás",
"app.learningDashboard.usersTable.left": "Bal",
"app.learningDashboard.usersTable.notAvailable": "N/A",
"app.learningDashboard.pollsTable.title": "Szavazások",
"app.learningDashboard.pollsTable.anonymousAnswer": "Névtelen szavazás (válaszok az utolsó sorban)",
"app.learningDashboard.pollsTable.anonymousRowName": "Névtelen",
"app.learningDashboard.pollsTable.noPollsCreatedHeading": "Egy szavazás sem jött létre",
"app.learningDashboard.pollsTable.noPollsCreatedMessage": "Miután elküldték a szavazást a felhasználóknak, eredményeik megjelennek ebben a listában.",
"app.learningDashboard.statusTimelineTable.title": "Idővonal",
"app.learningDashboard.statusTimelineTable.thumbnail": "Bemutató bélyegképe",
"app.learningDashboard.errors.invalidToken": "Érvénytelen munkamenet-token",
"app.learningDashboard.errors.dataUnavailable": "Az adat többé nem érhető el",
"mobileApp.portals.list.empty.label": "Portálok hozzáadása.",
"mobileApp.portals.list.add.button.label": "Új portál",
"mobileApp.portals.fields.name.label": "Portál neve",
"mobileApp.portals.fields.name.placeholder": "BigBlueButton demo",
"mobileApp.portals.fields.url.label": "Szerver URL-je",
"mobileApp.portals.addPortalPopup.confirm.button.label": "Portál hozzáadása",
"mobileApp.portals.drawerNavigation.button.label": "Portálok",
"mobileApp.portals.addPortalPopup.validation.emptyFilds": "Üres mezők",
"mobileApp.portals.addPortalPopup.validation.portalNameAlreadyExists": "Ez a név már létezik"
}

View File

@ -695,7 +695,6 @@
"app.lock-viewers.button.apply": "Ընդունել",
"app.lock-viewers.button.cancel": "Չեղարկել",
"app.lock-viewers.locked": "Արգելափակված է",
"app.lock-viewers.unlocked": "Արգելափակված չէ",
"app.guest-policy.ariaTitle": "Հյուրերի միանալու կանոնների պատուհան",
"app.guest-policy.title": "Հյուրերի միանալու կանոններ",
"app.guest-policy.description": "Փոխել հյուրերի միանալու կանոնները",

View File

@ -648,7 +648,6 @@
"app.lock-viewers.button.apply": "Terapkan",
"app.lock-viewers.button.cancel": "Batalkan",
"app.lock-viewers.locked": "Terkunci",
"app.lock-viewers.unlocked": "Tak Terkunci",
"app.guest-policy.title": "Kebijakan tamu",
"app.guest-policy.description": "Ubah pengaturan kebijakan tamu pertemuan",
"app.guest-policy.button.askModerator": "Tanya moderator",

View File

@ -669,7 +669,6 @@
"app.lock-viewers.button.apply": "Applica",
"app.lock-viewers.button.cancel": "Annulla",
"app.lock-viewers.locked": "Bloccato",
"app.lock-viewers.unlocked": "Sbloccato",
"app.guest-policy.ariaTitle": "Finestra impostazioni regolamento degli ospiti",
"app.guest-policy.title": "Regolamento degli ospiti",
"app.guest-policy.description": "Modifica impostazioni sulle norme degli ospiti al meeting",
@ -908,12 +907,8 @@
"playback.error.wrapper.aria": "Area errori",
"playback.loader.wrapper.aria": "Area caricatore",
"playback.player.wrapper.aria": "Area riproduttore",
"playback.player.about.modal.shortcuts.title": "Scorciatoie",
"playback.player.about.modal.shortcuts.alt": "Alt",
"playback.player.about.modal.shortcuts.shift": "Shift",
"playback.player.about.modal.shortcuts.skip.next": "Prossima slide",
"playback.player.about.modal.shortcuts.skip.previous": "Slide precedente",
"playback.player.about.modal.shortcuts.swap": "Scambia contenuto",
"playback.player.chat.message.poll.name": "Risultati sondaggio",
"playback.player.chat.message.poll.question": "Domanda",
"playback.player.chat.message.poll.options": "Opzioni",

View File

@ -132,6 +132,8 @@
"app.userList.userOptions.savedNames.title": "{0}の会議の{1}のユーザーリスト",
"app.userList.userOptions.sortedFirstName.heading": "第一語でソート",
"app.userList.userOptions.sortedLastName.heading": "第二語でソート",
"app.userList.userOptions.hideViewersCursor": "ビューアーのカーソルがロックされました",
"app.userList.userOptions.showViewersCursor": "ビューアーのカーソルロックが解除されました",
"app.media.label": "メディア",
"app.media.autoplayAlertDesc": "アクセス許可",
"app.media.screenshare.start": "画面共有を開始しました",
@ -562,6 +564,7 @@
"app.audio.audioSettings.descriptionLabel": "マイク共有の許可を求めるダイアログがブラウザ内に現われますのでご了承ください。",
"app.audio.audioSettings.microphoneSourceLabel": "マイクのソース",
"app.audio.audioSettings.speakerSourceLabel": "スピーカーのソース",
"app.audio.audioSettings.testSpeakerLabel": "スピーカーをテストする",
"app.audio.audioSettings.microphoneStreamLabel": "音声ストリームの音量",
"app.audio.audioSettings.retryLabel": "再試行",
"app.audio.listenOnly.backLabel": "戻る",
@ -695,7 +698,7 @@
"app.lock-viewers.button.apply": "適用",
"app.lock-viewers.button.cancel": "キャンセル",
"app.lock-viewers.locked": "禁止",
"app.lock-viewers.unlocked": "許可",
"app.lock-viewers.hideViewersCursor": "他のビューアーのカーソルを表示する",
"app.guest-policy.ariaTitle": "入室許可設定モーダル",
"app.guest-policy.title": "入室許可設定",
"app.guest-policy.description": "会議室の入室許可設定を変更する",
@ -952,6 +955,7 @@
"playback.button.search.aria": "検索",
"playback.button.section.aria": "サイドセクション",
"playback.button.swap.aria": "コンテンツの入れ替え",
"playback.button.theme.aria": "テーマの切り替え",
"playback.error.wrapper.aria": "エラーエリア",
"playback.loader.wrapper.aria": "ローダーエリア",
"playback.player.wrapper.aria": "プレイヤーエリア",

View File

@ -539,7 +539,6 @@
"app.lock-viewers.button.apply": "გამოყენება",
"app.lock-viewers.button.cancel": "გაუქმება",
"app.lock-viewers.locked": "ჩაკეტილია",
"app.lock-viewers.unlocked": "გახსნილია",
"app.connection-status.title": "კავშირის სტატუსი",
"app.connection-status.more": "მეტი",
"app.connection-status.copied": "დაკოპირებულია!",

View File

@ -481,7 +481,6 @@
"app.lock-viewers.button.apply": "ಅನ್ವಯಿಸು",
"app.lock-viewers.button.cancel": "ರದ್ದುಮಾಡಿ",
"app.lock-viewers.locked": "ಲಾಕ್ ಮಾಡಲಾಗಿದೆ",
"app.lock-viewers.unlocked": "ಅನ್ಲಾಕ್ ಮಾಡಲಾಗಿದೆ",
"app.recording.startTitle": "ರೆಕಾರ್ಡಿಂಗ್ ಪ್ರಾರಂಭಿಸಿ",
"app.recording.stopTitle": "ರೆಕಾರ್ಡಿಂಗ್ ಅನ್ನು ವಿರಾಮಗೊಳಿಸಿ",
"app.recording.resumeTitle": "ರೆಕಾರ್ಡಿಂಗ್ ಅನ್ನು ಪುನರಾರಂಭಿಸಿ",

View File

@ -647,7 +647,6 @@
"app.lock-viewers.button.apply": "적용",
"app.lock-viewers.button.cancel": "취소",
"app.lock-viewers.locked": "잠김",
"app.lock-viewers.unlocked": "해제",
"app.guest-policy.ariaTitle": "참여자 승인 정책 설정 모달",
"app.guest-policy.title": "참여자 승인 정책",
"app.guest-policy.description": "참여자 승인 정책 변경",

View File

@ -519,7 +519,6 @@
"app.lock-viewers.button.apply": "Taikyti",
"app.lock-viewers.button.cancel": "Atšaukti",
"app.lock-viewers.locked": "Užrakinta",
"app.lock-viewers.unlocked": "Atrakinta",
"app.connection-status.title": "Ryšio būsena",
"app.connection-status.description": "Peržiūrėti naudotojų ryšio būseną",
"app.connection-status.more": "daugiau",

View File

@ -479,7 +479,6 @@
"app.lock-viewers.button.apply": "Pielietot",
"app.lock-viewers.button.cancel": "Atcelt",
"app.lock-viewers.locked": "Slēgts/bloķēts",
"app.lock-viewers.unlocked": "Atslēgts/nebloķēts",
"app.recording.startTitle": "Sākt ierakstu",
"app.recording.stopTitle": "Pauzēt ierakstu",
"app.recording.resumeTitle": "Turpināt ierakstu",

View File

@ -629,7 +629,6 @@
"app.lock-viewers.button.apply": "പ്രയോഗിക്കുക",
"app.lock-viewers.button.cancel": "റദ്ദാക്കുക",
"app.lock-viewers.locked": "ലോക്കുചെയ്‌തു",
"app.lock-viewers.unlocked": "അൺലോക്കുചെയ്‌തു",
"app.guest-policy.ariaTitle": "അതിഥി നയ ക്രമീകരണ മോഡൽ",
"app.guest-policy.title": "അതിഥി നയം",
"app.guest-policy.description": "മീറ്റിംഗ് അതിഥി നയ ക്രമീകരണം മാറ്റുക",

View File

@ -486,7 +486,6 @@
"app.lock-viewers.button.apply": "Bruk",
"app.lock-viewers.button.cancel": "Avbryt",
"app.lock-viewers.locked": "Låst",
"app.lock-viewers.unlocked": "Opplåst",
"app.recording.startTitle": "Start innspilling",
"app.recording.stopTitle": "Pause innspilling",
"app.recording.resumeTitle": "Gjenoppta innspilling",

View File

@ -695,7 +695,6 @@
"app.lock-viewers.button.apply": "Toepassen",
"app.lock-viewers.button.cancel": "Annuleren",
"app.lock-viewers.locked": "Vergrendeld",
"app.lock-viewers.unlocked": "Ontgrendeld",
"app.guest-policy.ariaTitle": "Modale instellingen voor het beleid voor gasten",
"app.guest-policy.title": "Beleid voor gasten",
"app.guest-policy.description": "Wijzig de instellingen van het beleid voor gasten",

View File

@ -625,7 +625,6 @@
"app.lock-viewers.button.apply": "Zastosuj",
"app.lock-viewers.button.cancel": "Anuluj",
"app.lock-viewers.locked": "Zablokowane",
"app.lock-viewers.unlocked": "Odblokowane",
"app.guest-policy.ariaTitle": "Okno ustawień polityki gości",
"app.guest-policy.title": "Polityka gości",
"app.guest-policy.description": "Zmień ustawienia polityki gości spotkania",

View File

@ -648,7 +648,6 @@
"app.lock-viewers.button.apply": "Aplicar",
"app.lock-viewers.button.cancel": "Cancelar",
"app.lock-viewers.locked": "Bloqueado",
"app.lock-viewers.unlocked": "Desbloqueado",
"app.guest-policy.ariaTitle": "Janela de configurações da política de convidado",
"app.guest-policy.title": "Política de convidado",
"app.guest-policy.description": "Alterar configuração da política de convidados da sessão",

View File

@ -6,6 +6,7 @@
"app.chat.disconnected": "Você está desconectado, as mensagens não podem ser enviadas",
"app.chat.locked": "O bate-papo está bloqueado, as mensagens não podem ser enviadas",
"app.chat.inputLabel": "Entrada de mensagem para o bate-papo {0}",
"app.chat.inputPlaceholder": "Mensagem {0}",
"app.chat.titlePublic": "Bate-papo público",
"app.chat.titlePrivate": "Bate-papo privado com {0}",
"app.chat.partnerDisconnected": "{0} saiu da sessão",
@ -19,6 +20,7 @@
"app.chat.label": "Bate-papo",
"app.chat.offline": "Offline",
"app.chat.pollResult": "Resultados da enquete",
"app.chat.breakoutDurationUpdated": "Tempo das salas de apoio agora é de {0} minutos",
"app.chat.emptyLogLabel": "Registro do bate-papo vazio",
"app.chat.clearPublicChatMessage": "O histórico do bate-papo público foi apagado por um moderador",
"app.chat.multi.typing": "Múltiplos usuários estão digitando",
@ -41,14 +43,23 @@
"app.captions.menu.backgroundColor": "Cor de fundo",
"app.captions.menu.previewLabel": "Visualizar",
"app.captions.menu.cancelLabel": "Cancelar",
"app.captions.hide": "Ocultar legendas",
"app.captions.ownership": "Assumir o controle",
"app.captions.ownershipTooltip": "Você recebeu o controle das legendas {0}",
"app.captions.dictationStart": "Iniciar ditado",
"app.captions.dictationStop": "Encerrar ditado",
"app.captions.dictationOnDesc": "Ativar o reconhecimento de fala",
"app.captions.dictationOffDesc": "Desativar o reconhecimento de fala",
"app.captions.speech.start": "Reconhecimento de fala iniciado",
"app.captions.speech.stop": "Reconhecimento de fala encerrado",
"app.captions.speech.error": "O reconhecimento de fala parou devido à incompatibilidade do navegador ou algum tempo de silêncio",
"app.textInput.sendLabel": "Enviar",
"app.title.defaultViewLabel": "Visualização da apresentação padrão",
"app.note.title": "Notas compartilhadas",
"app.note.label": "Notas",
"app.note.hideNoteLabel": "Ocultar notas",
"app.note.converter-button.convertAndUpload": "Adicionar notas compartilhadas como apresentação",
"app.note.tipLabel": "Pressione Esc para focar na barra de ferramentas do editor",
"app.note.locked": "Bloqueado",
"app.notes.title": "Notas compartilhadas",
"app.notes.label": "Notas",
"app.notes.hide": "Ocultar notas",
"app.notes.locked": "Bloqueado",
"app.pads.hint": "Pressione Esc para focar na barra de ferramentas do editor",
"app.user.activityCheck": "Verificação de atividade do usuário",
"app.user.activityCheck.label": "Verifica se o usuário ainda está na sala ({0})",
"app.user.activityCheck.check": "Verificar",
@ -107,6 +118,7 @@
"app.userList.userOptions.disableMic": "Microfones dos participantes estão desabilitados",
"app.userList.userOptions.disablePrivChat": "Bate-papo privado está desabilitado",
"app.userList.userOptions.disablePubChat": "Bate-papo público está desabilitado",
"app.userList.userOptions.disableNotes": "Notas compartilhadas agora estão bloqueadas",
"app.userList.userOptions.hideUserList": "A lista de participantes agora está oculta para os espectadores",
"app.userList.userOptions.webcamsOnlyForModerator": "Somente os moderadores podem ver as webcams dos participantes (devido às configurações de bloqueio)",
"app.userList.content.participants.options.clearedStatus": "Status de todos os participantes redefinidos",
@ -114,16 +126,19 @@
"app.userList.userOptions.enableMic": "Os participantes podem usar seus microfones",
"app.userList.userOptions.enablePrivChat": "Bate-papo privado está liberado",
"app.userList.userOptions.enablePubChat": "Bate-papo público está liberado",
"app.userList.userOptions.enableNotes": "Notas compartilhadas estão liberadas",
"app.userList.userOptions.showUserList": "A lista de participantes agora está visível aos espectadores",
"app.userList.userOptions.enableOnlyModeratorWebcam": "Você pode habilitar sua webcam agora, todo mundo vai ver você",
"app.userList.userOptions.savedNames.title": "Lista de usuários na sessão {0} em {1}",
"app.userList.userOptions.sortedFirstName.heading": "Ordenado pelo primeiro nome:",
"app.userList.userOptions.sortedLastName.heading": "Ordenado pelo último nome:",
"app.userList.userOptions.hideViewersCursor": "Cursores dos participantes estão bloqueados",
"app.userList.userOptions.showViewersCursor": "Cursores dos participantes estão liberados",
"app.media.label": "Mídia",
"app.media.autoplayAlertDesc": "Permitir acesso",
"app.media.screenshare.start": "O compartilhamento de tela foi iniciado",
"app.media.screenshare.end": "O compartilhamento de tela foi encerrado",
"app.media.screenshare.endDueToDataSaving": "O compartilhamento de tela foi interrompido devido à economia de dados",
"app.media.screenshare.endDueToDataSaving": "Compartilhamento de tela parado por economia de dados",
"app.media.screenshare.unavailable": "Compartilhamento de tela indisponível",
"app.media.screenshare.notSupported": "Compartilhamento de tela não suportado neste navegador.",
"app.media.screenshare.autoplayBlockedDesc": "Precisamos da sua permissão para mostrar a tela do apresentador.",
@ -153,8 +168,15 @@
"app.presentation.slideContent": "Conteúdo do slide",
"app.presentation.startSlideContent": "Início do conteúdo do slide",
"app.presentation.endSlideContent": "Fim do conteúdo do slide",
"app.presentation.changedSlideContent": "Apresentação alterada para slide: {0}",
"app.presentation.changedSlideContent": "Apresentação alterada para o slide: {0}",
"app.presentation.emptySlideContent": "Nenhum conteúdo no slide atual",
"app.presentation.options.fullscreen": "Tela cheia",
"app.presentation.options.exitFullscreen": "Sair de tela cheia",
"app.presentation.options.minimize": "Minimizar",
"app.presentation.options.snapshot": "Salvar imagem da apresentação",
"app.presentation.options.downloading": "Downloading...",
"app.presentation.options.downloaded": "Donwload da apresentação atual encerrado",
"app.presentation.options.downloadFailed": "Não foi possível fazer o download da apresentação atual",
"app.presentation.presentationToolbar.noNextSlideDesc": "Fim da apresentação",
"app.presentation.presentationToolbar.noPrevSlideDesc": "Início da apresentação",
"app.presentation.presentationToolbar.selectLabel": "Selecione o slide",
@ -179,6 +201,7 @@
"app.presentation.presentationToolbar.fitToWidth": "Ajustar à largura",
"app.presentation.presentationToolbar.fitToPage": "Ajustar à página",
"app.presentation.presentationToolbar.goToSlide": "Slide {0}",
"app.presentation.placeholder": "No momento não há apresentação ativa",
"app.presentationUploder.title": "Apresentação",
"app.presentationUploder.message": "Como apresentador, você pode enviar qualquer documento do Office ou arquivo PDF. Para melhores resultados, recomendamos que se carregue arquivos em PDF. Por favor, certifique-se de que uma apresentação seja selecionada usando a caixa de seleção circular à direita.",
"app.presentationUploder.extraHint": "IMPORTANTE: cada arquivo não pode exceder {0} MB e {1} páginas.",
@ -194,7 +217,7 @@
"app.presentationUploder.fileToUpload": "Carregar arquivo...",
"app.presentationUploder.currentBadge": "Atual",
"app.presentationUploder.rejectedError": "Os arquivos selecionados foram rejeitados. Por favor, verifique os tipos de arquivos permitidos.",
"app.presentationUploder.connectionClosedError": "Interrompido por conectividade ruim. Por favor, tente novamente.",
"app.presentationUploder.connectionClosedError": "Interrompido por problemas de conectividade. Por favor tente novamente.",
"app.presentationUploder.upload.progress": "Carregando ({0}%)",
"app.presentationUploder.upload.413": "O arquivo é muito grande, excedeu o limite de {0} MB",
"app.presentationUploder.genericError": "Ops, algo deu errado ...",
@ -229,6 +252,7 @@
"app.presentationUploder.clearErrorsDesc": "Limpar envios de apresentações com falhas",
"app.presentationUploder.uploadViewTitle": "Carregar apresentação",
"app.poll.pollPaneTitle": "Enquete",
"app.poll.enableMultipleResponseLabel": "Permitir múltiplas respostas por participante?",
"app.poll.quickPollTitle": "Enquete rápida",
"app.poll.hidePollDesc": "Ocultar menu de enquetes",
"app.poll.quickPollInstruction": "Selecione uma opção abaixo para iniciar uma enquete.",
@ -339,6 +363,7 @@
"app.endMeeting.noLabel": "Não",
"app.about.title": "Sobre",
"app.about.version": "Versão do cliente:",
"app.about.version_label": "Versão do BigBlueButton:",
"app.about.copyright": "Copyright:",
"app.about.confirmLabel": "OK",
"app.about.confirmDesc": "OK",
@ -402,6 +427,7 @@
"app.settings.dataSavingTab.description": "Para economizar o volume de transferência de dados, ajuste o que está sendo exibido no momento.",
"app.settings.save-notification.label": "As configurações foram salvas",
"app.statusNotifier.lowerHands": "Mãos baixadas",
"app.statusNotifier.lowerHandDescOneUser": "Abaixar a mão de {0}",
"app.statusNotifier.raisedHandsTitle": "Mãos levantadas",
"app.statusNotifier.raisedHandDesc": "{0} levantaram as mãos",
"app.statusNotifier.raisedHandDescOneUser": "{0} levantou a mão",
@ -484,6 +510,9 @@
"app.breakoutJoinConfirmation.freeJoinMessage": "Escolha uma sala de apoio para entrar",
"app.breakoutTimeRemainingMessage": "Tempo restante na sala de apoio: {0}",
"app.breakoutWillCloseMessage": "Tempo expirado. A sala de apoio será fechada em breve",
"app.breakout.dropdown.manageDuration": "Gerenciar duração",
"app.breakout.dropdown.destroyAll": "Encerrar salas de apoio",
"app.breakout.dropdown.options": "Opções das salas de apoio",
"app.calculatingBreakoutTimeRemaining": "Calculando o tempo restante...",
"app.audioModal.ariaTitle": "Janela de ativação de áudio",
"app.audioModal.microphoneLabel": "Microfone",
@ -595,8 +624,10 @@
"app.guest.guestDeny": "Convidado teve sua entrada negada.",
"app.guest.seatWait": "Convidado aguardando uma vaga na reunião.",
"app.guest.allow": "Convidado aprovado e sendo redirecionado para a sessão.",
"app.guest.guestInvalid": "O usuário convidado é inválido",
"app.guest.meetingForciblyEnded": "Você não pode entrar em uma reunião que já foi encerrada",
"app.guest.firstPositionInWaitingQueue": "Você é o primeiro da fila!",
"app.guest.positionInWaitingQueue": "Sua posição atual na fila de espera é:",
"app.guest.guestInvalid": "Convidado inválido",
"app.guest.meetingForciblyEnded": "Você não pode acessar uma sessão que já foi encerrada",
"app.userList.guest.waitingUsers": "Aguardando",
"app.userList.guest.waitingUsersTitle": "Convidados",
"app.userList.guest.optionTitle": "Usuários aguardando aprovação",
@ -605,11 +636,14 @@
"app.userList.guest.allowEveryone": "Permitir todos",
"app.userList.guest.denyEveryone": "Rejeitar todos",
"app.userList.guest.pendingUsers": "{0} usuários aguardando",
"app.userList.guest.noPendingUsers": "Sem usuários aguardando...",
"app.userList.guest.pendingGuestUsers": "{0} usuários convidados aguardando",
"app.userList.guest.pendingGuestAlert": "entrou na sessão e está aguardando sua aprovação.",
"app.userList.guest.rememberChoice": "Lembrar escolha",
"app.userList.guest.emptyMessage": "Atualmente não há mensagem",
"app.userList.guest.inputPlaceholder": "Mensagem para a sala de espera",
"app.userList.guest.privateInputPlaceholder": "Mensagem para {0}",
"app.userList.guest.privateMessageLabel": "Mensagem",
"app.userList.guest.acceptLabel": "Aceitar",
"app.userList.guest.denyLabel": "Recusar",
"app.user-info.title": "Pesquisa de Diretório",
@ -622,6 +656,9 @@
"app.toast.meetingMuteOn.label": "Todos os participantes foram silenciados",
"app.toast.meetingMuteOff.label": "Mudo da sessão desativado",
"app.toast.setEmoji.raiseHand": "Você levantou sua mão",
"app.toast.setEmoji.lowerHand": "Sua mão foi abaixada",
"app.toast.promotedLabel": "Você foi promovido para moderador",
"app.toast.demotedLabel": "Você foi despromovido para participante",
"app.notification.recordingStart": "Esta sessão está sendo gravada",
"app.notification.recordingStop": "Esta sessão não está sendo gravada",
"app.notification.recordingPaused": "Esta sessão não está mais sendo gravada",
@ -664,7 +701,7 @@
"app.lock-viewers.button.apply": "Aplicar",
"app.lock-viewers.button.cancel": "Cancelar",
"app.lock-viewers.locked": "Bloqueado",
"app.lock-viewers.unlocked": "Liberado",
"app.lock-viewers.hideViewersCursor": "Ver os cursores dos outros participantes",
"app.guest-policy.ariaTitle": "Janela de configurações da política de convidado",
"app.guest-policy.title": "Política de convidado",
"app.guest-policy.description": "Alterar configuração da política de convidados da sessão",
@ -677,15 +714,26 @@
"app.connection-status.description": "Mostra o status da conexão dos participantes",
"app.connection-status.empty": "Atualmente não há problemas de conexão relatados",
"app.connection-status.more": "mais",
"app.connection-status.copy": "Copiar",
"app.connection-status.copied": "Copiado!",
"app.connection-status.jitter": "Jitter",
"app.connection-status.label": "Status da conexão",
"app.connection-status.settings": "Ajustando suas configurações...",
"app.connection-status.no": "Não",
"app.connection-status.notification": "Sua conexão foi perdida",
"app.connection-status.offline": "desconectado",
"app.connection-status.audioUploadRate": "Taxa de upload de áudio",
"app.connection-status.audioDownloadRate": "Taxa de download de áudio",
"app.connection-status.videoUploadRate": "Taxa de upload de vídeo",
"app.connection-status.videoDownloadRate": "Taxa de download de vídeo",
"app.connection-status.lostPackets": "Pacotes perdidos",
"app.connection-status.usingTurn": "Usando TURN",
"app.connection-status.yes": "Sim",
"app.connection-status.connectionStats": "Status da conexão",
"app.connection-status.myLogs": "Meus registros",
"app.connection-status.sessionLogs": "Registros da sessão",
"app.connection-status.next": "Próxima página",
"app.connection-status.prev": "Página anterior",
"app.learning-dashboard.label": "Painel Analítico de Aprendizagem",
"app.learning-dashboard.description": "Abrir painel com a atividade dos usuários",
"app.learning-dashboard.clickHereToOpen": "Abrir Painel Analítico de Aprendizagem",
@ -757,6 +805,7 @@
"app.video.virtualBackground.genericError": "Falha ao aplicar efeito de câmera. Tente novamente.",
"app.video.virtualBackground.camBgAriaDesc": "Define fundo virtual de camera para {0}",
"app.video.camCapReached": "Você não pode compartilhar mais câmeras",
"app.video.meetingCamCapReached": "A sessão atingiu seu limite de câmeras simultâneas",
"app.video.dropZoneLabel": "Largar aqui",
"app.fullscreenButton.label": "Alternar {0} para tela cheia",
"app.fullscreenUndoButton.label": "Desfazer {0} tela inteira",
@ -846,7 +895,11 @@
"app.createBreakoutRoom.durationInMinutes": "Duração (minutos)",
"app.createBreakoutRoom.randomlyAssign": "Atribuir aleatoriamente",
"app.createBreakoutRoom.randomlyAssignDesc": "Atribuir usuários em salas de apoio aleatóriamente",
"app.createBreakoutRoom.resetAssignments": "Redefinir atribuições",
"app.createBreakoutRoom.resetAssignmentsDesc": "Redefinir todas atribuições",
"app.createBreakoutRoom.endAllBreakouts": "Encerrar todas as salas de apoio",
"app.createBreakoutRoom.chatTitleMsgAllRooms": "todas salas",
"app.createBreakoutRoom.msgToBreakoutsSent": "A mensagem foi enviada para {0} salas de apoio",
"app.createBreakoutRoom.roomName": "{0} (Sala - {1})",
"app.createBreakoutRoom.doneLabel": "Confirmar",
"app.createBreakoutRoom.nextLabel": "Próximo",
@ -861,6 +914,10 @@
"app.createBreakoutRoom.numberOfRoomsError": "O número de salas é inválido.",
"app.createBreakoutRoom.duplicatedRoomNameError": "O nome da sala não pode ser duplicado.",
"app.createBreakoutRoom.emptyRoomNameError": "O nome da sala não pode estar vazio.",
"app.createBreakoutRoom.setTimeInMinutes": "Definir duração para (minutos)",
"app.createBreakoutRoom.setTimeLabel": "Aplicar",
"app.createBreakoutRoom.setTimeCancel": "Cancelar",
"app.createBreakoutRoom.setTimeHigherThanMeetingTimeError": "A duração das salas de apoio não pode exceder o tempo remanescente da sessão.",
"app.createBreakoutRoom.roomNameInputDesc": "Atualiza o nome da sala de apoio",
"app.externalVideo.start": "Compartilhar vídeo",
"app.externalVideo.title": "Compartilhar um vídeo externo",
@ -914,10 +971,10 @@
"playback.player.about.modal.shortcuts.alt": "Alt",
"playback.player.about.modal.shortcuts.shift": "Shift",
"playback.player.about.modal.shortcuts.fullscreen": "Alternar tela cheia",
"playback.player.about.modal.shortcuts.play": "Reproduzir/Pausar",
"playback.player.about.modal.shortcuts.play": "Play/Pause",
"playback.player.about.modal.shortcuts.section": "Alternar seção lateral",
"playback.player.about.modal.shortcuts.seek.backward": "Buscar para trás",
"playback.player.about.modal.shortcuts.seek.forward": "Procurar para a frente",
"playback.player.about.modal.shortcuts.seek.backward": "Avançar",
"playback.player.about.modal.shortcuts.seek.forward": "Retroceder",
"playback.player.about.modal.shortcuts.skip.next": "Próximo slide",
"playback.player.about.modal.shortcuts.skip.previous": "Slide anterior",
"playback.player.about.modal.shortcuts.swap": "Trocar conteúdo",
@ -937,7 +994,7 @@
"playback.player.search.modal.title": "Procurar",
"playback.player.search.modal.subtitle": "Encontre o conteúdo dos slides da apresentação",
"playback.player.thumbnails.wrapper.aria": "Área das miniaturas",
"playback.player.webcams.wrapper.aria": "Área de webcams",
"playback.player.webcams.wrapper.aria": "Área das câmeras",
"app.learningDashboard.dashboardTitle": "Painel Analítico de Aprendizagem",
"app.learningDashboard.user": "Usuário",
"app.learningDashboard.indicators.meetingStatusEnded": "Finalizado",

View File

@ -462,7 +462,6 @@
"app.lock-viewers.button.apply": "Aplica",
"app.lock-viewers.button.cancel": "Anulare",
"app.lock-viewers.locked": "Blocat",
"app.lock-viewers.unlocked": "Deblocat",
"app.recording.startTitle": "Porneste inregistrare",
"app.recording.stopTitle": "Pauza inregistrare",
"app.recording.resumeTitle": "Reporneste inregistrare",

View File

@ -435,7 +435,7 @@
"app.actionsBar.actionsDropdown.actionsLabel": "Действия",
"app.actionsBar.actionsDropdown.presentationLabel": "Управление презентациями",
"app.actionsBar.actionsDropdown.initPollLabel": "Начать голосование",
"app.actionsBar.actionsDropdown.desktopShareLabel": "Демонстрировать ваш экран",
"app.actionsBar.actionsDropdown.desktopShareLabel": "Демонстировать ваш экран",
"app.actionsBar.actionsDropdown.lockedDesktopShareLabel": "Демонстрация экрана заблокирована",
"app.actionsBar.actionsDropdown.stopDesktopShareLabel": "Остановить демонстрацию экрана",
"app.actionsBar.actionsDropdown.presentationDesc": "Загрузите вашу презентацию",
@ -560,6 +560,7 @@
"app.audio.audioSettings.descriptionLabel": "Вам будет показан запрос на разрешение использование вашего микрофона",
"app.audio.audioSettings.microphoneSourceLabel": "Микрофон",
"app.audio.audioSettings.speakerSourceLabel": "Динамики",
"app.audio.audioSettings.testSpeakerLabel": "Проверить динамики",
"app.audio.audioSettings.microphoneStreamLabel": "Громкость вашего аудио-потока",
"app.audio.audioSettings.retryLabel": "Повторить",
"app.audio.listenOnly.backLabel": "Назад",
@ -693,7 +694,6 @@
"app.lock-viewers.button.apply": "Применить",
"app.lock-viewers.button.cancel": "Отмена",
"app.lock-viewers.locked": "Заблокировано",
"app.lock-viewers.unlocked": "Разблокирован",
"app.guest-policy.ariaTitle": "Окно настроек для правил входа гостей в конференцию",
"app.guest-policy.title": "Правила входа гостей в конференцию",
"app.guest-policy.description": "Изменить правила входа гостей в конференцию",
@ -797,6 +797,7 @@
"app.video.virtualBackground.genericError": "Ошибка при применении эффекта для камеры. Попробуйте ещё раз.",
"app.video.virtualBackground.camBgAriaDesc": "Установка виртуального фона веб-камеры на {0}",
"app.video.camCapReached": "Вы не можете предоставить больше камер",
"app.video.meetingCamCapReached": "В этой конференции включено максимальное количество веб-камер",
"app.video.dropZoneLabel": "Перенесите файл сюда",
"app.fullscreenButton.label": "Включить {0} на полный экран",
"app.fullscreenUndoButton.label": "Отменить {0} полноэкранный режим",

View File

@ -590,7 +590,6 @@
"app.lock-viewers.button.apply": "Aplikovať",
"app.lock-viewers.button.cancel": "Zrušiť",
"app.lock-viewers.locked": "Uzamknuté",
"app.lock-viewers.unlocked": "Odomknuté",
"app.guest-policy.ariaTitle": "Nastavenia pravidiel pre hostí sú modálne",
"app.guest-policy.title": "Pravidlá pre hostí",
"app.guest-policy.description": "Zmeniť nastavenia pravidiel pre hostí",

View File

@ -519,7 +519,6 @@
"app.lock-viewers.button.apply": "Potrdi",
"app.lock-viewers.button.cancel": "Prekliči",
"app.lock-viewers.locked": "Zaklenjeno",
"app.lock-viewers.unlocked": "Odklenjeno",
"app.connection-status.ariaTitle": "Okno stanja povezave",
"app.connection-status.title": "Stanje povezave",
"app.connection-status.description": "Pokaži stanje povezave uporabnika",

View File

@ -492,7 +492,6 @@
"app.lock-viewers.button.apply": "Primenite",
"app.lock-viewers.button.cancel": "Otkažite",
"app.lock-viewers.locked": "Zaključano",
"app.lock-viewers.unlocked": "Otključano",
"app.connection-status.description": "Pogledajte status povezivanja učesnika",
"app.recording.startTitle": "Započnite snimanje",
"app.recording.stopTitle": "Pauzirajte snimanje",

View File

@ -648,7 +648,6 @@
"app.lock-viewers.button.apply": "Spara",
"app.lock-viewers.button.cancel": "Avbryt",
"app.lock-viewers.locked": "Låst",
"app.lock-viewers.unlocked": "Upplåst",
"app.guest-policy.ariaTitle": "Gäst policy inställningar modal",
"app.guest-policy.title": "Gäst policy",
"app.guest-policy.description": "Ändra mötespolicy för gäster",

View File

@ -609,7 +609,6 @@
"app.lock-viewers.button.apply": "விண்ணப்பிக்கவும்",
"app.lock-viewers.button.cancel": "ரத்துசெய்",
"app.lock-viewers.locked": "பூட்டப்பட்டுள்ளது",
"app.lock-viewers.unlocked": "திறக்கப்பட்டது",
"app.guest-policy.ariaTitle": "விருந்தினர் கொள்கை அமைப்புகள் மாதிரி",
"app.guest-policy.title": "விருந்தினர் கொள்கை",
"app.guest-policy.description": "சந்திப்பு விருந்தினர் கொள்கை அமைப்பை மாற்றவும்",

View File

@ -641,7 +641,6 @@
"app.lock-viewers.button.apply": "అమలు చేయి",
"app.lock-viewers.button.cancel": "రద్దు చేయి",
"app.lock-viewers.locked": "లాక్ చేయబడింది",
"app.lock-viewers.unlocked": "అన్ లాక్ చేయబడింది",
"app.guest-policy.ariaTitle": "అతిథి విధాన సెట్టింగ్‌లు మోడల్",
"app.guest-policy.title": "అతిథి విధానం",
"app.guest-policy.description": "సమావేశ అతిథి విధాన సెట్టింగ్‌ని మార్చండి",

View File

@ -465,7 +465,6 @@
"app.lock-viewers.button.apply": "ใช้งาน",
"app.lock-viewers.button.cancel": "ยกเลิก",
"app.lock-viewers.locked": "ล็อค",
"app.lock-viewers.unlocked": "ปลดล็อค",
"app.recording.startTitle": "เริ่มการบันทึก",
"app.recording.stopTitle": "หยุดการบันทึกชั่วคราว",
"app.recording.resumeTitle": "ทำการบันทึกต่อ",

View File

@ -577,6 +577,8 @@
"app.guest.guestDeny": "Misafir toplantıya katılmayı reddetti.",
"app.guest.seatWait": "Toplantıda katılmayı bekleyen bir misafir var.",
"app.guest.allow": "Misafir onaylandı ve toplantıya yönlendiriliyor.",
"app.guest.firstPositionInWaitingQueue": "İlk Sıradasınız!",
"app.guest.positionInWaitingQueue": "Bekleme kuyruğundaki mevcut konumunuz:",
"app.userList.guest.waitingUsers": "Kullanıcılar Bekleniyor",
"app.userList.guest.waitingUsersTitle": "Kullanıcı Yönetimi",
"app.userList.guest.optionTitle": "Bekleyen Kullanıcılara Bakın",
@ -644,7 +646,6 @@
"app.lock-viewers.button.apply": "Uygula",
"app.lock-viewers.button.cancel": "Vazgeç",
"app.lock-viewers.locked": "Kilitli",
"app.lock-viewers.unlocked": "Kilidi açık",
"app.guest-policy.ariaTitle": "Misafir politikası ayarları modeli",
"app.guest-policy.title": "Misafir politikası",
"app.guest-policy.description": "Toplantı misafir politika ayarını değiştirin",

View File

@ -607,7 +607,7 @@
"app.guest.seatWait": "Toplantıda katılmayı bekleyen bir misafir var.",
"app.guest.allow": "Misafir onaylandı ve toplantıya yönlendiriliyor.",
"app.guest.firstPositionInWaitingQueue": "İlk Sıradasınız!",
"app.guest.positionInWaitingQueue": "Bekleme sırasındaki mevcut konumunuz:",
"app.guest.positionInWaitingQueue": "Bekleme kuyruğundaki mevcut konumunuz:",
"app.guest.guestInvalid": "Konuk kullanıcı geçersiz",
"app.guest.meetingForciblyEnded": "Zorla sonlandırılan bir toplantıya katılamazsınız",
"app.userList.guest.waitingUsers": "Kullanıcılar bekleniyor",
@ -683,7 +683,6 @@
"app.lock-viewers.button.apply": "Uygula",
"app.lock-viewers.button.cancel": "Vazgeç",
"app.lock-viewers.locked": "Kilitli",
"app.lock-viewers.unlocked": "Açık",
"app.guest-policy.ariaTitle": "Misafir politikası ayarları modeli",
"app.guest-policy.title": "Misafir Politikası",
"app.guest-policy.description": "Toplantı misafir politika ayarını değiştirin",

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