Merge remote-tracking branch 'origin/main' into dbkr/spatial_audio_ff_only

This commit is contained in:
David Baker 2022-12-16 17:17:30 +00:00
commit 2d8c33d66d
4 changed files with 185 additions and 29 deletions

View file

@ -133,6 +133,6 @@
"Copy": "Копировать",
"Allow analytics": "Разрешить аналитику",
"Advanced": "Расширенные",
"<0>Join call now</0><1>Or</1><2>Copy call link and join later</2>": "<0>Присоедениться к звонку сейчас</0><1>Or<1><2>Скопировать ссылку на звонок и присоедениться позже</2>",
"<0>Join call now</0><1>Or</1><2>Copy call link and join later</2>": "<0>Присоединиться сейчас</0><1>или<1><2>Скопировать ссылку на звонок и присоединиться позже</2>",
"{{name}} (Connecting...)": "{{name}} (Соединение...)"
}

View file

@ -0,0 +1,141 @@
{
"Your recent calls": "最近通话",
"You can't talk at the same time": "你不能在同一时间发言",
"Yes, join call": "是,加入通话",
"Whether to enable single-key keyboard shortcuts, e.g. 'm' to mute/unmute the mic.": "是否启用单键键盘快捷键,例如,'m'可使麦克风静音/取消静音。",
"WebRTC is not supported or is being blocked in this browser.": "此浏览器不支持WebRTC或WebRTC被浏览器阻止。",
"Walkie-talkie call name": "对讲机通话名称",
"Walkie-talkie call": "对讲机通话",
"Waiting for other participants…": "等待其他参与者……",
"Waiting for network": "正在等待网络",
"Video call name": "视频通话名称",
"Video call": "视频通话",
"Video": "视频",
"Version: {{version}}": "版本:{{version}}",
"Username": "用户名",
"User menu": "用户菜单",
"User ID": "用户ID",
"Unmute microphone": "取消麦克风静音",
"Turn on camera": "开启摄像头",
"Turn off camera": "关闭摄像头",
"This will send anonymised data (such as the duration of a call and the number of participants) to the Element Call team to help us optimise the application based on how it is used.": "这将向Element Call团队发送匿名数据如通话的持续时间和参与者的数量以帮助我们根据使用方式优化应用程序。",
"This will make a speaker's audio seem as if it is coming from where their tile is positioned on screen. (Experimental feature: this may impact the stability of audio.)": "这将使发言人的音频看起来像是来自他们在屏幕上的位置。(实验性功能:这可能影响音频的稳定性)",
"This site is protected by ReCAPTCHA and the Google <2>Privacy Policy</2> and <6>Terms of Service</6> apply.<9></9>By clicking \"Register\", you agree to our <12>Terms and conditions</12>": "本网站受reCaptcha保护并适用Google<2>隐私政策</2>和<6>服务条款</6>。<9></9>点击\"注册\"则表明您同意我们的<12>条款和条件</12>",
"This call already exists, would you like to join?": "该通话已存在,你想加入吗?",
"Thanks! We'll get right on it.": "谢谢!我们会马上去做的。",
"Talking…": "正在发言……",
"Talk over speaker": "通过扬声器发言",
"Take me Home": "返回主页",
"Submitting feedback…": "正在提交反馈……",
"Submit feedback": "提交反馈",
"Stop sharing screen": "停止屏幕共享",
"Spotlight": "聚焦模式",
"Speaker {{n}}": "发言人 {{n}}",
"Speaker": "发言人",
"Spatial audio": "空间音频",
"Single-key keyboard shortcuts": "单键键盘快捷方式",
"Sign out": "注销登录",
"Sign in": "登录",
"Audio": "音频",
"Another user on this call is having an issue. In order to better diagnose these issues we'd like to collect a debug log.": "这个通话中的另一个用户出现了问题。为了更好地诊断这些问题,我们想收集调试日志。",
"Allow analytics": "允许进行分析",
"Advanced": "偏好",
"Accept microphone permissions to join the call.": "授予麦克风权限以加入通话。",
"Accept camera/microphone permissions to join the call.": "授予摄像头/麦克风权限以加入通话。",
"<0>Why not finish by setting up a password to keep your account?</0><1>You'll be able to keep your name and set an avatar for use on future calls</1>": "<0>为什么不设置一个密码来保留你的账户?</0><1>你将可以保留你的名字并设置一个头像,以便在未来的通话中使用。</1>",
"<0>Oops, something's gone wrong.</0><1>Submitting debug logs will help us track down the problem.</1>": "<0>哎呀,出错了。</0><1>提交调试日志将有助于我们追踪问题。</1>",
"<0>Join call now</0><1>Or</1><2>Copy call link and join later</2>": "<0>现在加入通话</0><1>或</1><2>复制通话链接并稍后加入</2>",
"<0>Create an account</0> Or <2>Access as a guest</2>": "<0>创建账户</0> Or <2>以访客身份继续</2>",
"<0>Already have an account?</0><1><0>Log in</0> Or <2>Access as a guest</2></1>": "<0>已有账户?</0><1><0>登录</0> Or <2>以访客身份继续</2></1>",
"{{roomName}} - Walkie-talkie call": "{{roomName}} - 对讲机通话",
"{{names}}, {{name}}": "{{names}}, {{name}}",
"{{name}} is talking…": "{{name}}正在发言……",
"{{name}} is presenting": "{{name}}正在展示",
"{{name}} (Waiting for video...)": "{{name}}(等待视频……)",
"{{name}} (Connecting...)": "{{name}} (正在连接……)",
"{{displayName}}, your call is now ended": "{{displayName}},您的通话已结束",
"{{count}} people connected|other": "{{count}}人已连接",
"{{count}} people connected|one": "{{count}}人已连接",
"Inspector": "检查器",
"Show call inspector": "显示通话检查器",
"Share screen": "屏幕共享",
"Settings": "设置",
"Sending…": "正在发送……",
"Sending debug logs…": "正在发送调试日志……",
"Send debug logs": "发送调试日志",
"Select an option": "选择一个选项",
"Saving…": "正在保存……",
"Save": "保存",
"Return to home screen": "返回主页",
"Remove": "移除",
"Release to stop": "松开后停止",
"Release spacebar key to stop": "松开空格键停止",
"Registering…": "正在注册……",
"Register": "注册",
"Recaptcha not loaded": "reCaptcha未加载",
"Recaptcha dismissed": "reCaptcha验证失败",
"Profile": "个人信息",
"Press and hold to talk over {{name}}": "按住不放即可与 {{name}} 通话",
"Press and hold to talk": "按住不放即可通话",
"Press and hold spacebar to talk over {{name}}": "按住空格键,与 {{name}} 对话",
"Press and hold spacebar to talk": "按住空格键发言",
"Passwords must match": "密码必须匹配",
"Password": "密码",
"Other users are trying to join this call from incompatible versions. These users should ensure that they have refreshed their browsers:<1>{userLis}</1>": "其他用户正试图从不兼容的版本加入这一呼叫。这些用户应该确保已经刷新了浏览器:<1>{userLis}</1>",
"Not registered yet? <2>Create an account</2>": "还没有注册? <2>创建账户<2>",
"Not now, return to home screen": "暂不,先返回主页",
"No": "否",
"Mute microphone": "麦克风静音",
"More menu": "更多",
"More": "更多",
"Microphone permissions needed to join the call.": "加入通话需要麦克风权限。",
"Microphone {{n}}": "麦克风 {{n}}",
"Microphone": "麦克风",
"Login to your account": "登录你的账户",
"Login": "登录",
"Logging in…": "登录中……",
"Local volume": "本地音量",
"Loading…": "加载中……",
"Loading room…": "加载房间中……",
"Leave": "离开",
"Join existing call?": "加入现有的通话?",
"Join call now": "现在加入通话",
"Join call": "加入通话",
"Invite people": "邀请他人",
"Invite": "邀请",
"Incompatible versions!": "版本不兼容!",
"Incompatible versions": "不兼容版本",
"Include debug logs": "包含调试日志",
"Home": "主页",
"Having trouble? Help us fix it.": "遇到麻烦?帮助我们解决问题。",
"Grid layout menu": "网格布局菜单",
"Go": "开始",
"Full screen": "全屏",
"Freedom": "自由模式",
"Fetching group call timed out.": "获取群组通话超时。",
"Exit full screen": "退出全屏",
"Element Call Home": "Element Call 主页",
"Download debug logs": "下载调试日志",
"Display name": "显示名称",
"Developer": "开发者",
"Details": "详情",
"Description (optional)": "描述(可选)",
"Debug log request": "调试日志请求",
"Debug log": "调试日志",
"Create account": "创建账户",
"Copy and share this call link": "复制并分享该链接",
"Copy": "复制",
"Copied!": "已复制!",
"Connection lost": "连接丢失",
"Confirm password": "确认密码",
"Close": "关闭",
"By clicking \"Go\", you agree to our <2>Terms and conditions</2>": "点击开始则代表同意我们的<2>条款和条件<2>",
"Change layout": "更改布局",
"Camera/microphone permissions needed to join the call.": "加入通话需要摄像头/麦克风权限。",
"Camera {{n}}": "摄像头 {{n}}",
"Camera": "摄像头",
"Call type menu": "通话类型菜单",
"Call link copied": "链接已复制",
"By clicking \"Join call now\", you agree to our <2>Terms and conditions</2>": "点击“现在加入”则表示同意我们的<2>条款与条件<2>",
"Avatar": "头像"
}

View file

@ -0,0 +1 @@
{}

View file

@ -231,22 +231,23 @@ export function InCallView({
return tileDescriptors;
}, [client, participants, userMediaFeeds, activeSpeaker, screenshareFeeds]);
const reducedControls = boundsValid && bounds.width <= 400;
const noControls = reducedControls && bounds.height <= 400;
// The maximised participant: either the participant that the user has
// manually put in fullscreen, or the focused (active) participant if the
// window is too small to show everyone
const maximisedParticipant = useMemo(
() =>
fullscreenParticipant ??
(boundsValid && bounds.height <= 400 && bounds.width <= 400
(noControls
? items.find((item) => item.focused) ??
items.find((item) => item.callFeed) ??
null
: null),
[fullscreenParticipant, boundsValid, bounds, items]
[fullscreenParticipant, noControls, items]
);
const reducedControls = boundsValid && bounds.width <= 400;
const renderAvatar = useCallback(
(roomMember: RoomMember, width: number, height: number) => {
const avatarUrl = roomMember.getMxcAvatarUrl();
@ -353,6 +354,42 @@ export function InCallView({
}
}
let footer: JSX.Element | null;
if (noControls) {
footer = null;
} else if (reducedControls) {
footer = (
<div className={styles.footer}>
<MicButton muted={microphoneMuted} onPress={toggleMicrophoneMuted} />
<VideoButton muted={localVideoMuted} onPress={toggleLocalVideoMuted} />
<HangupButton onPress={onLeave} />
</div>
);
} else {
footer = (
<div className={styles.footer}>
<MicButton muted={microphoneMuted} onPress={toggleMicrophoneMuted} />
<VideoButton muted={localVideoMuted} onPress={toggleLocalVideoMuted} />
{canScreenshare && !hideScreensharing && !isSafari && (
<ScreenshareButton
enabled={isScreensharing}
onPress={toggleScreensharing}
/>
)}
<OverflowMenu
inCall
roomIdOrAlias={roomIdOrAlias}
groupCall={groupCall}
showInvite={joinRule === JoinRule.Public}
feedbackModalState={feedbackModalState}
feedbackModalProps={feedbackModalProps}
/>
<HangupButton onPress={onLeave} />
</div>
);
}
return (
<div className={containerClasses} ref={containerRef}>
<>{audioElements}</>
@ -372,30 +409,7 @@ export function InCallView({
</Header>
)}
{renderContent()}
<div className={styles.footer}>
<MicButton muted={microphoneMuted} onPress={toggleMicrophoneMuted} />
<VideoButton muted={localVideoMuted} onPress={toggleLocalVideoMuted} />
{canScreenshare &&
!hideScreensharing &&
!isSafari &&
!reducedControls && (
<ScreenshareButton
enabled={isScreensharing}
onPress={toggleScreensharing}
/>
)}
{!reducedControls && (
<OverflowMenu
inCall
roomIdOrAlias={roomIdOrAlias}
groupCall={groupCall}
showInvite={joinRule === JoinRule.Public}
feedbackModalState={feedbackModalState}
feedbackModalProps={feedbackModalProps}
/>
)}
<HangupButton onPress={onLeave} />
</div>
{footer}
<GroupCallInspector
client={client}
groupCall={groupCall}