Files
Termix/plugins/session-sharing/locales/translated/zh_CN.json
T
Luke GustafsonandZacharyZcR 6b708106e1 release-2.9.1 (#1557)
* fix(sso): send the PKCE verifier for GitHub login (#1534)

* fix(remote-desktop): clip cursor overflow without disabling zoom (#1535)

* test(remote-desktop): preserve sessions beyond one hour (#1536)

* fix(hosts): expose controls for overflowing editor tabs (#1537)

* fix(hosts): expose controls for overflowing editor tabs

* test(hosts): mock resize observation in admin panel tests

* fix(status): skip TCP probes while host sessions are active (#1538)

* fix(database): batch session activity persistence (#1539)

* docs(api): describe cookie and API key authentication (#1540)

* fix(snippets): repair missing note column on SQLite upgrades (#1541)

* fix(docker): retain stored SSH credential association (#1543)

* fix(file-manager): render transfer toasts without plugin hooks (#1546)

* feat(hosts): keep compact row actions inline (#1547)

* fix(auth): allow retrying unavailable second-factor interfaces (#1549)

* fix(auth): reject unresolved legacy identity provisioning (#1550)

* fix(desktop): ship the plugin SDK inside Mac App Store builds (#1551)

* fix(tmux): pass full session info to the terminal's session picker (#1552)

The tmux.sessions service reduced detected sessions to bare names, but the
picker reads session.name, so every entry rendered blank and selecting one
sent an empty name, which created a new session instead of attaching.

* fix(ssh): read force keyboard-interactive as a boolean when resolving hosts (#1553)

The column holds the text "true"/"false", and the resolver passed it
through as-is. The string "false" is truthy, so the password provider
treated every saved host as forced keyboard-interactive and left the
password out. Jump hops are built straight from the resolved host, so a
password hop whose server doesn't offer keyboard-interactive failed with
"All configured authentication methods failed".

* fix(database): batch database saves for bulk host writes (#1554)

* fix(database): yield to the event loop between database saves

Each SQLite save serializes and encrypts the whole database into new
buffers, which V8 only releases once the event loop turns. Boot
migrations and bulk host import write plugin settings per host and per
key in an awaited loop, so hundreds of full copies piled up and the
container ran out of memory.

* fix(database): save once per bulk host write instead of once per row

On SQLite every repository write force-saves the whole database. Boot
plugin data migrations, host defaults materialization and the bulk
host routes write one row per host per setting, so they serialized and
encrypted the full database hundreds of times in a row.

DatabaseSaveTrigger.batched wraps a function so force saves made while
it runs collapse into a single save when it finishes. Nested scopes fold
into the outer one, and work that outlives its scope saves normally.

* feat(hosts): add instance-wide predefined tag suggestions (#1548)

* feat(hosts): add shared predefined tag suggestions

* style(hosts): format tag catalog routes

* test(database): advance fake timers past the save yield (#1555)

* fix(i18n): complete Simplified Chinese core and plugin translations (#1542)

* fix(i18n): complete Chinese onboarding and navigation labels

* fix(i18n): translate remaining Chinese core and plugin interfaces

* fix(i18n): translate host editor tab overflow controls

* fix(i18n): use consistent Chinese fleet terminology

* fix(i18n): localize hardcoded controls and plugin views

* fix(i18n): translate built-in homepage widget catalog

* test(homepage): follow translated timezone placeholder

* fix(i18n): translate plugin-provided homepage widgets

* fix(i18n): localize feature settings section titles

* fix: 2.8 oidc accounts unable to sign in after upgrading (#1381)

* fix: plugins losing the saved ssh login when copying a host (#1391)

* fix: fleets, proxmox and automations not getting the host sudo password

* fix: host imports running a defaults pass and metrics restart per host (#1384)

* fix: high cpu from status probes and full database saves on every sample (#1300)

* fix: user data export freezing the server (#1393)

* fix: op:// secret references rejected as ssh keys on credentials (#1394)

* fix: slow file deletes from the trash lookups on every delete (#1390)

* fix: add openapi docs and error handling to host tag routes

* test: compare download stream buffers directly so it stops timing out

* chore: drop em dash from host row comment

* chore: update release notes for 2.9.1

* fix: restore space to add host tags and redesign predefined tags editor

* fix: host key silently accepted when the host is missing from the database (#1397)

* fix: clearer host login failed status label and fix its translations (#1396)

* chore: add host key and status label fixes to release notes

* fix: sso and ldap provider dialogs overflowing the screen and using mismatched toggles

* chore: increment ver

* fix(audit): store plugin entries with no acting user as a null user_id (#1556)

Plugin audit entries written outside a request used the literal "system"
as user_id. That column references users.id, so the insert was refused
(Postgres logs it as an FK violation) and the entry was silently dropped.
Write null instead and keep "system" / plugin:<id> in username.

* chore: add sso/ldap dialog and audit log fixes to release notes

* fix: tunnels and host settings missing from shared hosts on desktop

* fix: remote desktop logins missing from shared hosts on desktop

* fix: simplify host status to online/offline and keep it live without a refresh

* chore: sync Crowdin translations for 2.9.1

---------

Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com>
2026-10-04 15:11:41 -05:00

190 lines
8.0 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"sessionSharing": {
"guestView": {
"loading": "正在连接到共享会话...",
"linkInvalid": "此共享链接无效、已过期或已被撤销。",
"rateLimited": "尝试次数过多,请稍后再试。",
"sessionEnded": "此会话已结束",
"readOnlyBadge": "仅查看",
"ownerLabel": "房东"
},
"modalTitle": "共享会话",
"shareButton": "共享",
"notReadyToShare": "会话尚未准备好共享",
"modeTab": {
"link": "链接",
"user": "用户"
},
"linkModeDescription": "任何人只要拥有此链接即可加入,无需注册账号。",
"userModeDescription": "将主机共享给已拥有此主机访问权限的特定用户。如果他们还没有访问权限,请先将主机共享给他们,或者使用链接代替。共享后,会话将显示在他们的“连接”标签页中。",
"permissionLevel": {
"label": "权限级别",
"readOnly": "只读",
"readOnlyDescription": "可以观看直播,但无法打字或互动。",
"readWrite": "读写",
"readWriteDescription": "可以像会话所有者一样进行输入和互动。"
},
"expiryLabel": "链接过期",
"createLinkButton": "创建链接",
"createShareButton": "与用户共享",
"searchUsersPlaceholder": "搜索用户......",
"noUsersFound": "未找到用户",
"linkCreated": "已创建共享链接",
"linkNeedsServer": "分享链接仅适用于 Termix 服务器上的会话。请通过您链接的服务器连接此主机,然后使用链接进行分享。",
"linkCopied": "链接已复制到剪贴板",
"copyLink": "复制链接",
"shareCreated": "会话已共享。它将出现在对方的“连接”标签页中。",
"shareFailed": "创建共享失败",
"userLacksHostAccess": "该用户目前没有访问此主机的权限。请先与其共享主机,或使用链接进行共享。",
"activeShares": "有效共享",
"noActiveShares": "此会话暂无活跃共享",
"revoke": "吊销",
"revokeConfirmTitle": "撤销此共享?",
"revokeConfirmDescription": "任何使用此共享的用户都将立即失去访问权限。",
"revoked": "共享已撤销",
"revokeFailed": "撤销共享失败",
"joinCount": "{{count}} 人加入",
"joinCount_other": "{{count}} 人加入",
"expiresAt": "过期于 {{date}}",
"linkShareBadge": "链接",
"userShareBadge": "用户:{{username}}",
"loadSharesFailed": "无法加载共享",
"remoteDisplayUnavailable": "目前远程桌面功能不可用。",
"sharedWithMe": "与我分享的会议",
"customHoursPlaceholder": "过期前的小时数"
},
"collab": {
"createRoom": "新房间",
"roomName": "房间名称",
"persistentRoom": "持久房间",
"persistentRoomHint": "会议结束后,持久会议室仍会保留在列表中,可以重复使用。",
"noRooms": "暂无会议室。创建会议室即可开始会议。",
"openRoom": "打开",
"endRoom": "会议结束",
"leaveRoom": "离开",
"deleteMember": "删除",
"removeMember": "移除{{name}}",
"removeMemberTitle": "移除此成员?",
"removeMemberDescription": "{{name}} 将立即失去对该房间的访问权限。所有正在使用的 SSH 查看器都将被断开连接。",
"invite": "邀请",
"inviteTitle": "邀请成员",
"members": "成员",
"membersPanel": "房间成员和控制请求",
"membersWithCount": "成员({{count}})",
"guestsWithCount": "宾客({{count}})",
"removeGuests": "移除客人",
"anonymousGuest": "客人",
"online": "在线",
"offline": "离线",
"you": "(你)",
"hostBadge": "主机",
"presenterBadge": "呈现",
"present": "展示",
"presentTitle": "登上舞台",
"presentHost": "主机",
"searchHosts": "搜索主机",
"noHostsFound": "未找到可用主机。",
"presentProtocol": "协议",
"stopPresenting": "停止演示",
"takeOver": "接管",
"takeOverConfirmTitle": "替换当前演示文稿?",
"takeOverDescription": "{{name}} 正在直播。接管直播将会断开所有人与该直播间的连接。",
"emptyStage": "目前无人发言。请上台分享您的演讲内容。",
"stageLoading": "连接到舞台……",
"stageEnded": "演讲结束了",
"roomEnded": "会议结束",
"presenterLabel": "{{name}} 正在呈现",
"guestLink": "访客链接",
"guestLinkOn": "访客链接已开启。任何拥有该链接的人都可以观看舞台表演。",
"guestLinkOff": "访客链接已关闭。",
"copyLink": "复制链接",
"rotateLink": "旋转链接",
"disableLink": "禁用链接",
"rotateLinkConfirmTitle": "旋转访客链接?",
"rotateLinkDescription": "当前连接将立即停止工作。已连接的SSH访客将被断开连接。",
"disableLinkConfirmTitle": "禁用访客链接?",
"disableLinkDescription": "匿名 SSH 查看者将被立即断开连接,当前链接将停止工作。",
"linkCopied": "链接已复制",
"roles": "角色",
"users": "用户",
"searchUsers": "搜索用户",
"endConfirmTitle": "结束会议吗?",
"endDescription": "{{name}} 将对所有人关闭,且无法重新开启。",
"endPersistentDescription": "{{name}} 中的当前演示将停止。该房间仍可供再次使用。",
"deleteRoom": "删除房间",
"deleteConfirmTitle": "删除这个房间?",
"deleteDescription": "{{name}} 将被永久删除,且无法撤销。",
"invitedTo": "您受邀参加“{{name}}”",
"guest": {
"title": "会议",
"waiting": "等待主持人……",
"linkInvalid": "此访客链接无效或会议已结束"
},
"reopenFromPanel": "此会议标签页已过期。请从“会议”面板重新打开会议室。",
"retry": "重试",
"requestControl": "请求控制",
"cancelControlRequest": "取消请求",
"controlQueue": "控制请求",
"noControlRequests": "没有待处理的请求。",
"grantControlTo": "将控制权交给 {{name}}",
"dismissControlRequest": "驳回 {{name}}的控制请求",
"releaseControl": "发布控制",
"grantControl": "赋予控制权",
"revokeControl": "夺回控制权",
"controlRequestedBy": "{{name}} 请求控制权",
"grant": "授予",
"controlBadge": "掌控之中",
"youArePresenting": "您正在另一个标签页中进行演示。请停止演示,将演示权交给对方。",
"created": "创建房间",
"invited": "受邀成员",
"roomTab": "会议",
"serverChanged": "会议服务器已更改。请从“会议”面板重新打开此会议。",
"hostNotSynced": "演示前,请将此主机与会议服务器同步。",
"linkRequiresServer": "将此桌面连接到 Termix 服务器,并在该服务器上创建会议以共享 Web 链接。"
},
"nav": {
"collab": "会议"
},
"settings": {
"admin": {
"globallyEnabled": {
"label": "允许会话共享",
"description": "允许在整个实例范围内共享实时终端、RDP、VNC 和 Telnet 会话。禁用此功能将覆盖所有主机级别的共享设置。"
}
},
"host": {
"allowSessionSharing": {
"label": "允许会话共享",
"description": "允许通过链接或其他方式共享此主机上的实时会话。"
}
}
},
"permissions": {
"use": {
"title": "分享会话并加入房间",
"description": "通过链接或与其他用户共享实时会话,并创建和加入协作房间。"
}
},
"hosts": {
"sharing": {
"expiry": {
"never": "永不过期",
"oneHour": "1 小时",
"oneDay": "24 小时",
"sevenDays": "7 天",
"thirtyDays": "30 天",
"custom": "自定义"
}
}
},
"connections": {
"sectionSharedWithMe": "与我共享",
"sharedBy": "由 {{username}} 共享",
"join": "加入",
"sharedSessionLabel": "{{hostName}}(共享)"
},
"plugin": {
"name": "Session Sharing"
}
}