Files
netbird/client/ui/i18n/locales/zh-CN/common.json
T

1815 lines
82 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.
{
"tray.tooltip": {
"message": "NetBird",
"description": "Hover tooltip on the system-tray / menu-bar icon. Brand name — do not translate."
},
"tray.status.disconnected": {
"message": "已断开连接",
"description": "Connection status surfaced through the tray icon: the client is not connected to the network."
},
"tray.status.daemonUnavailable": {
"message": "未运行",
"description": "Tray status: the background NetBird service (daemon) is not running."
},
"tray.status.error": {
"message": "错误",
"description": "Tray status: the client is in an error state."
},
"tray.status.connected": {
"message": "已连接",
"description": "Tray status: connected to the NetBird network."
},
"tray.status.connecting": {
"message": "正在连接",
"description": "Tray status: a connection is being established."
},
"tray.status.needsLogin": {
"message": "需要登录",
"description": "Tray status: the user must sign in before connecting."
},
"tray.status.loginFailed": {
"message": "登录失败",
"description": "Tray status: the last sign-in attempt failed."
},
"tray.status.sessionExpired": {
"message": "会话已过期",
"description": "Tray status: the authenticated session expired; the user must sign in again."
},
"tray.session.expiresIn": {
"message": "会话将在 {remaining} 后过期",
"description": "Tray row showing time left before the session expires. {remaining} is a human-readable duration such as '5 minutes', built from the tray.session.unit.* strings. Keep {remaining} unchanged."
},
"tray.session.unit.lessThanMinute": {
"message": "不到一分钟",
"description": "Duration fragment substituted into {remaining} (see tray.session.expiresIn). Used when under one minute remains."
},
"tray.session.unit.minute": {
"message": "1 分钟",
"description": "Duration fragment for exactly one minute, substituted into {remaining}."
},
"tray.session.unit.minutes": {
"message": "{count} 分钟",
"description": "Duration fragment for several minutes, substituted into {remaining}. {count} is the number of minutes; keep {count}."
},
"tray.session.unit.hour": {
"message": "1 小时",
"description": "Duration fragment for exactly one hour, substituted into {remaining}."
},
"tray.session.unit.hours": {
"message": "{count} 小时",
"description": "Duration fragment for several hours. {count} is the number of hours; keep {count}."
},
"tray.session.unit.day": {
"message": "1 天",
"description": "Duration fragment for exactly one day, substituted into {remaining}."
},
"tray.session.unit.days": {
"message": "{count} 天",
"description": "Duration fragment for several days. {count} is the number of days; keep {count}."
},
"tray.menu.open": {
"message": "打开 NetBird",
"description": "Tray menu item that opens the main NetBird window. Keep short."
},
"tray.menu.connect": {
"message": "连接",
"description": "Tray menu item that connects to the network. Keep short."
},
"tray.menu.disconnect": {
"message": "断开连接",
"description": "Tray menu item that disconnects from the network. Keep short."
},
"tray.menu.exitNode": {
"message": "出口节点",
"description": "Tray submenu title for choosing an exit node (route all traffic through another peer)."
},
"tray.menu.networks": {
"message": "资源",
"description": "Tray submenu title listing network resources the user can reach. Labelled 'Resources' in the UI even though the key says networks."
},
"tray.menu.profiles": {
"message": "配置文件",
"description": "Tray submenu title listing connection profiles."
},
"tray.menu.manageProfiles": {
"message": "管理配置文件",
"description": "Tray menu item that opens Settings → Profiles."
},
"tray.menu.settings": {
"message": "设置…",
"description": "Tray menu item that opens the Settings window. The trailing '...' signals that a window opens; keep it."
},
"tray.menu.debugBundle": {
"message": "创建调试包",
"description": "Tray menu item that generates a diagnostic log bundle for support."
},
"tray.menu.about": {
"message": "帮助与支持",
"description": "Tray submenu title for help and support links."
},
"tray.menu.github": {
"message": "GitHub",
"description": "Tray menu link to the GitHub repository. Brand name — do not translate."
},
"tray.menu.documentation": {
"message": "文档",
"description": "Tray menu link to the online documentation."
},
"tray.menu.troubleshoot": {
"message": "故障排除",
"description": "Tray menu link to troubleshooting help."
},
"tray.menu.downloadLatest": {
"message": "下载最新版本",
"description": "Tray menu item to download the latest available version."
},
"tray.menu.installVersion": {
"message": "安装 {version} 版本",
"description": "Tray menu item to install a specific update. {version} is a version number like 0.30.1; keep {version}."
},
"tray.menu.guiVersion": {
"message": "GUI:{version}",
"description": "Tray menu row showing the installed UI version. 'GUI' = the graphical app. {version} is a version number; keep it."
},
"tray.menu.daemonVersion": {
"message": "守护进程:{version}",
"description": "Tray menu row showing the background-service version. 'Daemon' = the background NetBird service. {version} is a version number; keep it."
},
"tray.menu.versionUnknown": {
"message": "—",
"description": "Placeholder shown in version rows when the version can't be determined. It is an em dash — leave as-is."
},
"tray.menu.quit": {
"message": "退出 NetBird",
"description": "Tray menu item that fully exits the app and removes the tray icon. Keep short."
},
"notify.daemonOutdated.title": {
"message": "NetBird 服务版本过旧",
"description": "Title of the OS desktop notification shown when the running daemon is too old for this UI."
},
"notify.daemonOutdated.body": {
"message": "请更新 NetBird 服务以使用此应用。",
"description": "Body of the desktop notification telling the user to upgrade the daemon."
},
"notify.update.title": {
"message": "NetBird 有可用更新",
"description": "Title of the OS desktop notification shown when an app update is available."
},
"notify.update.body": {
"message": "NetBird {version} 已可用。",
"description": "Body of the update-available desktop notification. {version} is the new version number; keep it."
},
"notify.update.enforcedSuffix": {
"message": " 您的管理员要求进行此次更新。",
"description": "Sentence appended to the update notification body when the admin has made the update mandatory. Note the leading space — keep it."
},
"notify.error.title": {
"message": "错误",
"description": "Title of a generic error desktop notification."
},
"notify.error.connect": {
"message": "连接失败",
"description": "Error notification body shown when connecting failed."
},
"notify.error.disconnect": {
"message": "断开连接失败",
"description": "Error notification body shown when disconnecting failed."
},
"notify.error.switchProfile": {
"message": "切换到 {profile} 失败",
"description": "Error notification shown when switching profiles failed. {profile} is the target profile name; keep it."
},
"notify.error.exitNode": {
"message": "更新出口节点 {name} 失败",
"description": "Error notification shown when updating the exit node failed. {name} is the exit node name; keep it."
},
"notify.sessionExpired.title": {
"message": "NetBird 会话已过期",
"description": "Title of the desktop notification shown when the session has expired."
},
"notify.sessionExpired.body": {
"message": "您的 NetBird 会话已过期。请重新登录。",
"description": "Body of the session-expired desktop notification."
},
"notify.sessionWarning.title": {
"message": "会话即将过期",
"description": "Title of the desktop notification warning that the session will expire soon."
},
"notify.sessionWarning.body": {
"message": "您的 NetBird 会话将在 {remaining} 后过期。点击“立即延长”以续期。",
"description": "Body of the session-expiry warning notification. {remaining} is a human-readable duration (see tray.session.unit.*); keep it. 'Extend now' refers to the action button notify.sessionWarning.extend."
},
"notify.sessionWarning.bodyGeneric": {
"message": "您的 NetBird 会话即将过期。点击“立即延长”以续期。",
"description": "Generic session-expiry warning body used when the exact remaining time isn't known."
},
"notify.sessionWarning.extend": {
"message": "立即延长",
"description": "Action button on the session-expiry notification that renews the session. Keep short."
},
"notify.sessionWarning.dismiss": {
"message": "忽略",
"description": "Action button on the session-expiry notification that dismisses it. Keep short."
},
"notify.sessionWarning.failed": {
"message": "延长 NetBird 会话失败",
"description": "Notification shown when renewing the session failed."
},
"notify.sessionWarning.successTitle": {
"message": "NetBird 会话已延长",
"description": "Title of the notification confirming the session was renewed."
},
"notify.sessionWarning.successBody": {
"message": "您的会话已刷新。",
"description": "Body of the notification confirming the session was renewed."
},
"notify.sessionDeadlineRejected.title": {
"message": "会话截止时间被拒绝",
"description": "Title of the notification shown when the server sent an invalid session deadline."
},
"notify.sessionDeadlineRejected.body": {
"message": "服务器发送了无效的会话截止时间。请重新登录。",
"description": "Body explaining the server sent an invalid session deadline and the user must sign in again."
},
"notify.mdm.policyApplied.title": {
"message": "NetBird 设置已更新",
"description": "Title of the desktop notification shown when an MDM (IT-managed) policy changed the daemon configuration at runtime."
},
"notify.mdm.policyApplied.body": {
"message": "您的 NetBird 配置已根据 IT 策略更新。",
"description": "Body of the MDM policy-applied notification, telling the user their settings were changed by their organization's device-management policy."
},
"common.cancel": {
"message": "取消",
"description": "Generic Cancel button label, reused across dialogs. Keep short."
},
"common.save": {
"message": "保存",
"description": "Generic Save button label. Keep short."
},
"common.saveChanges": {
"message": "保存更改",
"description": "Button label to save edited settings. Keep short."
},
"common.saving": {
"message": "正在保存…",
"description": "Button label / status shown while a save is in progress. Ends with an ellipsis."
},
"common.close": {
"message": "关闭",
"description": "Generic Close button label. Keep short."
},
"common.copy": {
"message": "复制",
"description": "Generic Copy button label (copy to clipboard). Keep short."
},
"common.togglePasswordVisibility": {
"message": "切换密码可见性",
"description": "Accessibility label for the show/hide button inside a password field."
},
"common.increase": {
"message": "增加",
"description": "Accessibility label for the increment (+) button on a numeric stepper input."
},
"common.decrease": {
"message": "减少",
"description": "Accessibility label for the decrement (−) button on a numeric stepper input."
},
"common.delete": {
"message": "删除",
"description": "Generic Delete button label. Keep short."
},
"common.create": {
"message": "创建",
"description": "Generic Create button label. Keep short."
},
"common.add": {
"message": "添加",
"description": "Generic Add button label. Keep short."
},
"common.remove": {
"message": "移除",
"description": "Generic Remove button label. Keep short."
},
"common.refresh": {
"message": "刷新",
"description": "Generic Refresh button label. Keep short."
},
"common.loading": {
"message": "正在加载…",
"description": "Generic loading indicator text. Ends with an ellipsis."
},
"common.netbird": {
"message": "NetBird",
"description": "The product name. Brand — do not translate."
},
"common.noResults.title": {
"message": "未找到任何结果",
"description": "Title of the empty state shown when a search or filter returns nothing."
},
"common.noResults.description": {
"message": "我们未能找到任何结果。请尝试其他搜索词或更改筛选条件。",
"description": "Body of the no-results empty state, suggesting a different search term or filters."
},
"notConnected.title": {
"message": "已断开连接",
"description": "Title of the placeholder shown on data screens while disconnected."
},
"notConnected.description": {
"message": "请先连接到 NetBird,以查看有关对等节点、网络资源和出口节点的详细信息。",
"description": "Body explaining the user must connect to NetBird first to see peer, resource, and exit-node details."
},
"connect.status.disconnected": {
"message": "已断开连接",
"description": "Label on the main-window connection toggle: not connected."
},
"connect.status.connecting": {
"message": "正在连接…",
"description": "Connection toggle label while connecting. Ends with an ellipsis."
},
"connect.status.connected": {
"message": "已连接",
"description": "Connection toggle label when connected."
},
"connect.status.disconnecting": {
"message": "正在断开连接…",
"description": "Connection toggle label while disconnecting. Ends with an ellipsis."
},
"connect.status.daemonUnavailable": {
"message": "守护进程不可用",
"description": "Connection toggle label when the background service is unavailable. 'Daemon' = background service."
},
"connect.status.loginRequired": {
"message": "需要登录",
"description": "Connection toggle label when sign-in is required before connecting."
},
"connect.error.loginTitle": {
"message": "登录失败",
"description": "Error-dialog title shown when sign-in fails. The action-named '… Failed' style is intentional — keep it."
},
"connect.error.connectTitle": {
"message": "连接失败",
"description": "Error-dialog title shown when connecting fails."
},
"connect.error.disconnectTitle": {
"message": "断开连接失败",
"description": "Error-dialog title shown when disconnecting fails."
},
"nav.peers.title": {
"message": "对等节点",
"description": "Navigation label for the Peers section (other devices in the network)."
},
"nav.peers.description": {
"message": "{total} 个中已连接 {connected} 个",
"description": "Sub-label under Peers showing how many are connected. {connected} and {total} are numbers; keep both."
},
"nav.resources.title": {
"message": "资源",
"description": "Navigation label for the Resources section (routed networks)."
},
"nav.resources.description": {
"message": "{total} 个中已激活 {active} 个",
"description": "Sub-label under Resources showing how many are active. {active} and {total} are numbers; keep both."
},
"nav.exitNode.title": {
"message": "出口节点",
"description": "Navigation label for the Exit Nodes section."
},
"nav.exitNode.none": {
"message": "未激活",
"description": "Sub-label under Exit Nodes when no exit node is in use."
},
"nav.exitNode.using": {
"message": "经由 {name}",
"description": "Sub-label under Exit Nodes when one is active. {name} is the exit node's name; keep it."
},
"header.openSettings": {
"message": "打开设置",
"description": "Accessibility label / tooltip for the gear icon that opens Settings."
},
"header.togglePanel": {
"message": "切换侧边栏",
"description": "Accessibility label / tooltip for the button that shows or hides the side panel."
},
"profile.selector.loading": {
"message": "正在加载…",
"description": "Shown in the profile picker while profiles load. Ends with an ellipsis."
},
"profile.selector.noProfile": {
"message": "无配置文件",
"description": "Shown in the profile picker when no profile is selected."
},
"profile.selector.searchPlaceholder": {
"message": "按名称搜索配置文件…",
"description": "Placeholder text in the profile picker's search field."
},
"profile.selector.emptyTitle": {
"message": "未找到配置文件",
"description": "Title shown in the profile picker when a search matches no profiles."
},
"profile.selector.emptyDescription": {
"message": "请尝试其他搜索词或创建新的配置文件。",
"description": "Body shown when no profiles match the search, suggesting a different term or creating one."
},
"profile.selector.newProfile": {
"message": "新建配置文件",
"description": "Button in the profile picker to create a new profile. Keep short."
},
"profile.selector.moreOptions": {
"message": "更多选项",
"description": "Accessibility label for the per-profile kebab (⋯) menu."
},
"profile.selector.deregister": {
"message": "注销",
"description": "Per-profile menu action: deregister (sign out of the profile but keep it)."
},
"profile.selector.delete": {
"message": "删除",
"description": "Per-profile menu action: delete the profile."
},
"profile.selector.switchTo": {
"message": "切换到此配置文件",
"description": "Tooltip / label for the action that switches to a profile."
},
"profile.selector.edit": {
"message": "编辑",
"description": "Per-profile menu action: open the edit dialog to rename or change the management server."
},
"profile.edit.title": {
"message": "编辑配置文件",
"description": "Title of the dialog for editing an existing profile."
},
"profile.edit.submit": {
"message": "保存更改",
"description": "Submit button on the edit-profile dialog. Keep short."
},
"profile.dialog.title": {
"message": "输入配置文件名称",
"description": "Title of the dialog for naming a new profile."
},
"profile.dialog.nameLabel": {
"message": "配置文件名称",
"description": "Field label for the profile name."
},
"profile.dialog.description": {
"message": "为您的配置文件设置一个易于识别的名称。",
"description": "Helper text under the profile-name field."
},
"profile.dialog.placeholder": {
"message": "例如:工作",
"description": "Example placeholder shown in the profile-name field. 'Work' is a sample value; translate it to a natural example."
},
"profile.dialog.submit": {
"message": "添加配置文件",
"description": "Submit button on the add-profile dialog. Keep short."
},
"profile.dialog.required": {
"message": "请输入配置文件名称,例如:工作、家庭",
"description": "Validation message shown when the profile name is empty. The examples (work, home) may be localized."
},
"profile.dialog.managementHelp": {
"message": "使用 NetBird Cloud 或您自己的服务器。",
"description": "Helper text noting the profile can use NetBird Cloud or a self-hosted server."
},
"profile.dialog.urlUnreachable": {
"message": "无法连接到此服务器。请检查 URL,如果确认无误,也可以照常添加该配置文件。",
"description": "Soft warning when the entered server URL couldn't be reached; the user may add the profile anyway."
},
"header.menu.settings": {
"message": "设置…",
"description": "'More' menu item in the header that opens Settings. The trailing '...' signals a window opens."
},
"header.menu.defaultView": {
"message": "默认视图",
"description": "'More' menu item that switches the main window to the compact default view."
},
"header.menu.advancedView": {
"message": "高级视图",
"description": "'More' menu item that switches the main window to the wider advanced view."
},
"header.menu.updateAvailable": {
"message": "有可用更新",
"description": "'More' menu item / badge shown when an update is available."
},
"header.menu.open": {
"message": "打开菜单",
"description": "Accessibility label for the header's more (⋮) button that opens the menu."
},
"header.profile.switch": {
"message": "切换配置文件",
"description": "Accessibility label for the header's profile selector button."
},
"connect.toggle.label": {
"message": "切换 NetBird 连接",
"description": "Accessibility label for the large connect/disconnect toggle on the main page."
},
"connect.localIp.label": {
"message": "本地 IP 地址",
"description": "Accessibility label for the local IP selector that toggles between IPv4 and IPv6 on the main page."
},
"common.search": {
"message": "搜索",
"description": "Accessibility label for a generic search input."
},
"common.filter": {
"message": "筛选",
"description": "Accessibility label for a generic filter control."
},
"exitNodes.dropdown.trigger": {
"message": "选择出口节点",
"description": "Accessibility label for the exit-node picker button at the bottom of the main page."
},
"peers.row.label": {
"message": "打开 {name} 的详情,{status}",
"description": "Accessibility label for a peer row in the list. {name} is the peer name and {status} is the connection status; keep both placeholders."
},
"peers.dialog.title": {
"message": "对等节点详情",
"description": "Accessibility title (announced to screen readers) for the peer details dialog/panel."
},
"networks.row.toggle": {
"message": "切换 {name}",
"description": "Accessibility label for the row-wide toggle on a network/resource. {name} is the resource id; keep the placeholder."
},
"networks.bulk.label": {
"message": "切换所有可见资源",
"description": "Accessibility label for the bulk enable/disable button at the bottom of the resources list."
},
"profile.switch.title": {
"message": "切换到配置文件“{name}”?",
"description": "Confirmation-dialog title for switching profiles. {name} is the target profile name, shown in quotes; keep {name} and the surrounding quotes."
},
"profile.switch.message": {
"message": "您确定要切换配置文件吗?\n您当前的配置文件将被断开连接。",
"description": "Confirmation body for switching profiles. Contains a line break (\\n) — keep it."
},
"profile.switch.confirm": {
"message": "确认",
"description": "Confirm button on the switch-profile dialog. Keep short."
},
"profile.deregister.title": {
"message": "注销配置文件“{name}”?",
"description": "Confirmation-dialog title for deregistering a profile. {name} is the profile name; keep it and the quotes."
},
"profile.deregister.message": {
"message": "您确定要注销此配置文件吗?\n您将需要重新登录才能使用它。",
"description": "Confirmation body for deregistering; warns the user must sign in again. Contains a line break (\\n) — keep it."
},
"profile.deregister.confirm": {
"message": "注销",
"description": "Confirm button on the deregister dialog. Keep short."
},
"profile.delete.title": {
"message": "删除配置文件“{name}”?",
"description": "Confirmation-dialog title for deleting a profile. {name} is the profile name; keep it and the quotes."
},
"profile.delete.message": {
"message": "您确定要删除此配置文件吗?\n此操作无法撤销。",
"description": "Confirmation body for deleting; warns the action can't be undone. Contains a line break (\\n) — keep it."
},
"profile.delete.disabledActive": {
"message": "无法删除处于活动状态的配置文件。请先切换到其他配置文件,再删除此配置文件。",
"description": "Tooltip explaining the active profile can't be deleted until the user switches away."
},
"profile.delete.disabledDefault": {
"message": "无法删除默认配置文件。",
"description": "Tooltip explaining the default profile can't be deleted."
},
"profile.error.switchTitle": {
"message": "切换配置文件失败",
"description": "Error-dialog title when switching profiles fails."
},
"profile.error.deregisterTitle": {
"message": "注销配置文件失败",
"description": "Error-dialog title when deregistering a profile fails."
},
"profile.error.deleteTitle": {
"message": "删除配置文件失败",
"description": "Error-dialog title when deleting a profile fails."
},
"profile.error.createTitle": {
"message": "创建配置文件失败",
"description": "Error-dialog title when creating a profile fails."
},
"profile.error.editTitle": {
"message": "编辑配置文件失败",
"description": "Error-dialog title when editing a profile (rename or management URL change) fails."
},
"profile.error.loadTitle": {
"message": "加载配置文件失败",
"description": "Error-dialog title when loading profiles fails."
},
"profile.dropdown.activeProfile": {
"message": "当前配置文件",
"description": "Section heading in the header profile dropdown for the current profile."
},
"profile.dropdown.switchProfile": {
"message": "切换配置文件",
"description": "Section heading / action in the profile dropdown to switch profiles."
},
"profile.dropdown.noEmail": {
"message": "其他",
"description": "Label shown for a profile that has no associated email address."
},
"profile.dropdown.addProfile": {
"message": "添加配置文件",
"description": "Profile dropdown action to add a profile."
},
"profile.dropdown.manageProfiles": {
"message": "管理配置文件",
"description": "Profile dropdown action that opens Settings → Profiles."
},
"profile.dropdown.settings": {
"message": "设置",
"description": "Profile dropdown action that opens Settings."
},
"settings.profiles.section.profiles": {
"message": "配置文件",
"description": "Section heading on the Profiles settings tab."
},
"settings.profiles.intro": {
"message": "并行保留多个独立的 NetBird 身份,例如工作和个人账户,或不同的管理服务器。可在下方添加、注销或删除配置文件。",
"description": "Intro paragraph on the Profiles settings tab explaining what profiles are for."
},
"settings.profiles.addProfile": {
"message": "添加配置文件",
"description": "Button on the Profiles settings tab to add a profile."
},
"settings.profiles.active": {
"message": "活动",
"description": "Badge marking the currently active profile in the profiles table."
},
"settings.profiles.emptyTitle": {
"message": "无配置文件",
"description": "Title of the empty state when there are no profiles."
},
"settings.profiles.emptyDescription": {
"message": "创建一个配置文件以连接到 NetBird 管理服务器。",
"description": "Body of the no-profiles empty state."
},
"settings.error.loadTitle": {
"message": "加载设置失败",
"description": "Error-dialog title when loading settings fails."
},
"settings.error.saveTitle": {
"message": "保存设置失败",
"description": "Error-dialog title when saving settings fails."
},
"settings.error.debugBundleTitle": {
"message": "创建调试包失败",
"description": "Error-dialog title when creating the debug bundle fails."
},
"settings.nav.label": {
"message": "设置部分",
"description": "Accessibility label for the Settings page's side navigation (list of section tabs)."
},
"settings.tabs.general": {
"message": "常规",
"description": "Settings tab label: General. Keep short."
},
"settings.tabs.network": {
"message": "网络",
"description": "Settings tab label: Network. Keep short."
},
"settings.tabs.security": {
"message": "安全",
"description": "Settings tab label: Security. Keep short."
},
"settings.tabs.profiles": {
"message": "配置文件",
"description": "Settings tab label: Profiles. Keep short."
},
"settings.tabs.ssh": {
"message": "SSH",
"description": "Settings tab label: SSH. Acronym — keep as-is."
},
"settings.tabs.advanced": {
"message": "高级",
"description": "Settings tab label: Advanced. Keep short."
},
"settings.tabs.troubleshooting": {
"message": "故障排除",
"description": "Settings tab label: Troubleshoot. Keep short."
},
"settings.tabs.about": {
"message": "关于",
"description": "Settings tab label: About. Keep short."
},
"settings.tabs.updateAvailable": {
"message": "有可用更新",
"description": "Settings tab label / badge shown when an update is available."
},
"settings.general.section.general": {
"message": "常规",
"description": "Section heading on the General settings tab."
},
"settings.general.section.connection": {
"message": "连接",
"description": "Section heading for connection-related options on the General tab."
},
"settings.general.connectOnStartup.label": {
"message": "启动时连接",
"description": "Toggle label: connect automatically when the service starts."
},
"settings.general.connectOnStartup.help": {
"message": "在服务启动时自动建立连接。",
"description": "Helper text for the connect-on-startup toggle."
},
"settings.general.notifications.label": {
"message": "桌面通知",
"description": "Toggle label: enable desktop notifications."
},
"settings.general.notifications.help": {
"message": "显示有关新更新和连接事件的桌面通知。",
"description": "Helper text for the desktop-notifications toggle."
},
"settings.general.autostart.label": {
"message": "登录时启动 NetBird 界面",
"description": "Toggle label: launch the NetBird UI at login."
},
"settings.general.autostart.help": {
"message": "在您登录时自动启动 NetBird 界面。此设置仅影响图形界面,不影响后台服务。",
"description": "Helper text clarifying autostart affects only the UI, not the background service."
},
"settings.general.autostart.errorTitle": {
"message": "更改自启动设置失败",
"description": "Error-dialog title when changing the autostart setting fails."
},
"settings.general.keepConnectedOnQuit.label": {
"message": "退出后保持连接",
"description": "Toggle label: keep the VPN connection up after quitting the UI."
},
"settings.general.keepConnectedOnQuit.help": {
"message": "关闭 NetBird 后,连接会在后台保持。只有你自己断开时才会停止。",
"description": "Helper text for the stay-connected-after-quitting toggle."
},
"settings.general.language.label": {
"message": "显示语言",
"description": "Label for the display-language picker."
},
"settings.general.language.help": {
"message": "选择 NetBird 界面的语言。",
"description": "Helper text for the language picker."
},
"settings.general.language.search": {
"message": "搜索语言…",
"description": "Placeholder in the language picker's search field."
},
"settings.general.language.empty": {
"message": "没有匹配的语言。",
"description": "Shown when no languages match the search."
},
"settings.general.management.label": {
"message": "管理服务器",
"description": "Label for the management-server selector."
},
"settings.general.management.help": {
"message": "连接到 NetBird Cloud 或您自己的自托管管理服务器。更改将使客户端重新连接。",
"description": "Helper text explaining Cloud vs self-hosted management server; warns that changes reconnect the client."
},
"settings.general.management.cloud": {
"message": "Cloud",
"description": "Option label for using NetBird Cloud as the management server."
},
"settings.general.management.selfHosted": {
"message": "自托管",
"description": "Option label for using a self-hosted management server. 'Self-hosted' is a common technical term."
},
"settings.general.management.urlPlaceholder": {
"message": "https://netbird.selfhosted.com:443",
"description": "Example URL placeholder for the self-hosted server field. It is a sample URL — do not translate the URL itself."
},
"settings.general.management.urlError": {
"message": "请输入有效的 URL,例如:https://netbird.selfhosted.com:443",
"description": "Validation message for an invalid management-server URL. The example URL stays as-is."
},
"settings.general.management.urlUnreachable": {
"message": "无法连接到此服务器。请检查 URL,如果确认无误,也可以照常保存。",
"description": "Soft warning when the management URL couldn't be reached; the user may save anyway."
},
"settings.general.management.switchCloudTitle": {
"message": "切换到 NetBird Cloud?",
"description": "Confirmation-dialog title for switching to NetBird Cloud."
},
"settings.general.management.switchCloudMessage": {
"message": "这将断开您的自托管服务器。\n您可能需要重新登录。",
"description": "Confirmation body warning the self-hosted server will be disconnected. Contains a line break (\\n) — keep it."
},
"settings.general.management.switchCloudConfirm": {
"message": "切换到 Cloud",
"description": "Confirm button for switching to Cloud. Keep short."
},
"settings.network.section.connectivity": {
"message": "连接性",
"description": "Section heading for connectivity options on the Network tab."
},
"settings.network.section.routingDns": {
"message": "路由与 DNS",
"description": "Section heading for routing and DNS options. 'DNS' is an acronym — keep it."
},
"settings.network.monitor.label": {
"message": "网络变化时重新连接",
"description": "Toggle label: reconnect automatically on network change."
},
"settings.network.monitor.help": {
"message": "监测网络,并在发生变化时自动重新连接,例如切换 Wi-Fi、以太网变化或从睡眠中恢复。",
"description": "Helper text for the network-change reconnect toggle."
},
"settings.network.dns.label": {
"message": "启用 DNS",
"description": "Toggle label: enable DNS. 'DNS' — keep acronym."
},
"settings.network.dns.help": {
"message": "将 NetBird 管理的 DNS 设置应用到主机解析器。",
"description": "Helper text for the enable-DNS toggle."
},
"settings.network.clientRoutes.label": {
"message": "启用客户端路由",
"description": "Toggle label: enable client routes."
},
"settings.network.clientRoutes.help": {
"message": "接受来自其他对等节点的路由,以访问它们的网络。",
"description": "Helper text for client routes (accept routes from other peers)."
},
"settings.network.serverRoutes.label": {
"message": "启用服务器路由",
"description": "Toggle label: enable server routes."
},
"settings.network.serverRoutes.help": {
"message": "向其他对等节点通告此主机的本地路由。",
"description": "Helper text for server routes (advertise this host's local routes to other peers)."
},
"settings.network.ipv6.label": {
"message": "启用 IPv6",
"description": "Toggle label: enable IPv6. 'IPv6' — keep as-is."
},
"settings.network.ipv6.help": {
"message": "为 NetBird 叠加网络使用 IPv6 寻址。",
"description": "Helper text for the IPv6 toggle."
},
"settings.security.section.firewall": {
"message": "防火墙",
"description": "Section heading: Firewall."
},
"settings.security.section.encryption": {
"message": "加密",
"description": "Section heading: Encryption."
},
"settings.security.blockInbound.label": {
"message": "阻止入站流量",
"description": "Toggle label: block inbound traffic."
},
"settings.security.blockInbound.help": {
"message": "拒绝对等节点向本设备及其路由的任何网络发起的未经请求的连接。出站流量不受影响。",
"description": "Helper text for blocking inbound traffic."
},
"settings.security.blockLan.label": {
"message": "阻止 LAN 访问",
"description": "Toggle label: block LAN access. 'LAN' — keep acronym."
},
"settings.security.blockLan.help": {
"message": "当本设备为对等节点路由流量时,阻止它们访问您的本地网络或其设备。",
"description": "Helper text for blocking LAN access."
},
"settings.security.rosenpass.label": {
"message": "启用抗量子加密",
"description": "Toggle label: enable quantum-resistance."
},
"settings.security.rosenpass.help": {
"message": "在 WireGuard® 之上通过 Rosenpass 添加后量子密钥交换。",
"description": "Helper text: adds a post-quantum key exchange via Rosenpass on top of WireGuard®. 'Rosenpass' and 'WireGuard®' are product names — do not translate; keep the ® symbol."
},
"settings.security.rosenpassPermissive.label": {
"message": "启用宽松模式",
"description": "Toggle label: enable permissive mode (for quantum-resistance)."
},
"settings.security.rosenpassPermissive.help": {
"message": "允许连接到不支持抗量子加密的对等节点。",
"description": "Helper text for permissive mode (allow peers without quantum-resistance support)."
},
"settings.ssh.section.server": {
"message": "服务器",
"description": "Section heading: Server (SSH settings)."
},
"settings.ssh.section.capabilities": {
"message": "功能",
"description": "Section heading: Capabilities (SSH features)."
},
"settings.ssh.section.authentication": {
"message": "身份验证",
"description": "Section heading: Authentication (SSH)."
},
"settings.ssh.server.label": {
"message": "启用 SSH 服务器",
"description": "Toggle label: enable the SSH server."
},
"settings.ssh.server.help": {
"message": "在此主机上运行 NetBird SSH 服务器,以便其他对等节点可以连接到它。",
"description": "Helper text for the SSH server toggle."
},
"settings.ssh.root.label": {
"message": "允许 root 登录",
"description": "Toggle label: allow root login over SSH. 'root' is the Unix superuser account — keep as-is."
},
"settings.ssh.root.help": {
"message": "允许对等节点以 root 用户身份登录。禁用后将要求使用非特权账户。",
"description": "Helper text for allowing root login."
},
"settings.ssh.sftp.label": {
"message": "允许 SFTP",
"description": "Toggle label: allow SFTP. 'SFTP' — keep acronym."
},
"settings.ssh.sftp.help": {
"message": "使用原生 SFTP 或 SCP 客户端安全地传输文件。",
"description": "Helper text about SFTP/SCP file transfer. Keep the acronyms."
},
"settings.ssh.localForward.label": {
"message": "本地端口转发",
"description": "Toggle label: local port forwarding."
},
"settings.ssh.localForward.help": {
"message": "允许连接的对等节点将本地端口隧道转发到此主机可访问的服务。",
"description": "Helper text for local port forwarding."
},
"settings.ssh.remoteForward.label": {
"message": "远程端口转发",
"description": "Toggle label: remote port forwarding."
},
"settings.ssh.remoteForward.help": {
"message": "允许连接的对等节点将此主机上的端口反向暴露到它们自己的机器。",
"description": "Helper text for remote port forwarding."
},
"settings.ssh.jwt.label": {
"message": "启用 JWT 身份验证",
"description": "Toggle label: enable JWT authentication. 'JWT' — keep acronym."
},
"settings.ssh.jwt.help": {
"message": "针对您的 IdP 验证每个 SSH 会话,以确认用户身份并进行审计。禁用后将仅依赖网络 ACL 策略,在没有可用 IdP 时很有用。",
"description": "Helper text for JWT auth. 'IdP' (identity provider) and 'ACL' are acronyms — keep them."
},
"settings.ssh.jwtTtl.label": {
"message": "JWT 缓存 TTL",
"description": "Label for the JWT cache time-to-live field. 'JWT' and 'TTL' — keep acronyms."
},
"settings.ssh.jwtTtl.help": {
"message": "在出站 SSH 连接再次提示前,此客户端缓存 JWT 的时长。设为 0 可禁用缓存,每次连接都进行身份验证。",
"description": "Helper text for the JWT cache TTL; mentions setting 0 to disable caching."
},
"settings.ssh.jwtTtl.suffix": {
"message": "秒",
"description": "Unit suffix shown after the JWT TTL number field. The '(s)' marks an optional plural."
},
"settings.advanced.section.interface": {
"message": "接口",
"description": "Section heading: Interface (network-interface settings)."
},
"settings.advanced.section.security": {
"message": "安全",
"description": "Section heading: Security (advanced)."
},
"settings.advanced.interfaceName.label": {
"message": "名称",
"description": "Field label for the WireGuard interface name."
},
"settings.advanced.interfaceName.error": {
"message": "请使用 1-15 个字母、数字、点、连字符或下划线。",
"description": "Validation message for the interface name (allowed characters)."
},
"settings.advanced.interfaceName.errorMac": {
"message": "必须以“utun”开头,后跟一个数字(例如 utun100)。",
"description": "Validation message specific to macOS, where the name must start with 'utun' followed by a number. Keep 'utun' and the example."
},
"settings.advanced.port.label": {
"message": "端口",
"description": "Field label: Port."
},
"settings.advanced.port.error": {
"message": "请输入介于 {min} 和 {max} 之间的端口。",
"description": "Validation message for the port range. {min} and {max} are numbers; keep them."
},
"settings.advanced.port.help": {
"message": "如果设为 0,将使用一个随机的空闲端口。",
"description": "Helper text: 0 means a random free port is used."
},
"settings.advanced.mtu.label": {
"message": "MTU",
"description": "Field label: MTU. 'MTU' — keep acronym."
},
"settings.advanced.mtu.error": {
"message": "请输入介于 {min} 和 {max} 之间的 MTU 值。",
"description": "Validation message for the MTU range. {min} and {max} are numbers; keep them."
},
"settings.advanced.psk.label": {
"message": "预共享密钥",
"description": "Field label: Pre-shared Key."
},
"settings.advanced.psk.help": {
"message": "可选的 WireGuard PSK,用于额外的对称加密。它与 NetBird 设置密钥不同。您将只能与使用相同预共享密钥的对等节点通信。",
"description": "Helper text for the WireGuard PSK. 'WireGuard', 'PSK', and 'NetBird Setup Key' are product/technical terms — keep them."
},
"settings.troubleshooting.section.title": {
"message": "调试包",
"description": "Section heading: Debug bundle."
},
"settings.troubleshooting.anonymize.label": {
"message": "匿名化敏感信息",
"description": "Label for the anonymization level dropdown (None, Default, Strict)."
},
"settings.troubleshooting.anonymize.help": {
"message": "从日志中隐藏公共 IP 地址和非 NetBird 域名。",
"description": "Helper text under the anonymization dropdown. The level details live in the info tooltip."
},
"settings.troubleshooting.anonymize.info": {
"message": "Default keeps internal IPv4 addresses and peer names readable for support. Strict additionally anonymizes private (RFC 1918), CGNAT, and link-local IP addresses, peer names, and WireGuard public keys. Recurring values map to the same placeholder, so peers stay distinguishable. Use Strict when sharing the bundle outside your organization.",
"description": "Info tooltip explaining the anonymization levels. 'RFC 1918', 'CGNAT', 'link-local', and 'WireGuard' are technical terms — keep them."
},
"settings.troubleshooting.anonymize.none": {
"message": "None",
"description": "Dropdown option: no anonymization."
},
"settings.troubleshooting.anonymize.default": {
"message": "Default",
"description": "Dropdown option: default anonymization level."
},
"settings.troubleshooting.anonymize.strict": {
"message": "Strict",
"description": "Dropdown option: strict anonymization level."
},
"settings.troubleshooting.systemInfo.label": {
"message": "包含系统信息",
"description": "Toggle label: include system information in the bundle."
},
"settings.troubleshooting.systemInfo.help": {
"message": "包含操作系统、内核、网络接口和路由表。",
"description": "Helper text listing the system info included (OS, kernel, interfaces, routing tables)."
},
"settings.troubleshooting.upload.label": {
"message": "将调试包上传到 NetBird 服务器",
"description": "Toggle label: upload the bundle to NetBird servers."
},
"settings.troubleshooting.upload.help": {
"message": "返回一个上传密钥,供您分享给 NetBird 支持团队。",
"description": "Helper text for uploading the bundle."
},
"settings.troubleshooting.trace.label": {
"message": "启用跟踪日志",
"description": "Toggle label: raise daemon log level to TRACE while the bundle is built. 'TRACE' is a log level."
},
"settings.troubleshooting.trace.help": {
"message": "将日志级别提升到 TRACE,之后再恢复原级别。",
"description": "Helper text for the trace toggle. 'TRACE' is a log level — keep as-is."
},
"settings.troubleshooting.capture.label": {
"message": "捕获会话",
"description": "Toggle label: open a capture session — reconnect NetBird, wait a duration, optionally record packets."
},
"settings.troubleshooting.capture.help": {
"message": "重新连接并等待,以便您复现问题。",
"description": "Helper text for the master Capture Session toggle."
},
"settings.troubleshooting.packets.label": {
"message": "捕获网络数据包",
"description": "Toggle label: capture packets to a .pcap during the capture session."
},
"settings.troubleshooting.packets.help": {
"message": "在捕获期间将网络流量保存为 .pcap 文件。",
"description": "Helper text for the packet recording toggle. '.pcap' is a file extension — keep it."
},
"settings.troubleshooting.duration.label": {
"message": "捕获时长",
"description": "Label for the trace-capture duration field."
},
"settings.troubleshooting.duration.help": {
"message": "捕获会话运行的时长。",
"description": "Helper text for the capture duration."
},
"settings.troubleshooting.duration.suffix": {
"message": "分钟",
"description": "Unit suffix after the duration field. The '(s)' marks an optional plural."
},
"settings.troubleshooting.create": {
"message": "创建调试包",
"description": "Button to create the debug bundle. Keep short."
},
"settings.troubleshooting.progress.description": {
"message": "正在收集日志、系统详情和连接状态。这通常只需片刻——请保持此窗口打开,直到完成。",
"description": "Status text shown while the debug bundle is being collected; reassures the user they can keep using NetBird or close Settings meanwhile."
},
"settings.troubleshooting.cancelling": {
"message": "正在取消…",
"description": "Status shown while cancelling bundle creation. Ends with an ellipsis."
},
"settings.troubleshooting.done.uploadedTitle": {
"message": "调试包已成功上传!",
"description": "Success title after the bundle was uploaded."
},
"settings.troubleshooting.done.savedTitle": {
"message": "调试包已保存",
"description": "Title shown when the bundle was saved locally (not uploaded)."
},
"settings.troubleshooting.done.uploadedDescription": {
"message": "请将下方的上传密钥分享给 <docs>NetBird 支持团队</docs>。本地也已保存了一份副本。",
"description": "Body after upload, telling the user to share the upload key with support. '<docs>…</docs>' wraps the inline link to the NetBird support docs — keep the tags exactly and wrap the phrase that means 'NetBird support'."
},
"settings.troubleshooting.done.savedDescription": {
"message": "您的调试包已保存在本地。",
"description": "Body shown when the bundle was only saved locally."
},
"settings.troubleshooting.done.copyKey": {
"message": "复制密钥",
"description": "Button to copy the upload key. Keep short."
},
"settings.troubleshooting.done.openFolder": {
"message": "打开文件夹",
"description": "Button to open the folder containing the bundle. Keep short."
},
"settings.troubleshooting.done.openFileLocation": {
"message": "打开文件位置",
"description": "Button to reveal the bundle file in the OS file manager."
},
"settings.troubleshooting.uploadFailedWithReason": {
"message": "上传失败:{reason} 调试包仍已保存在本地。",
"description": "Shown when upload failed but the bundle was saved locally. {reason} is the server error text; keep it."
},
"settings.troubleshooting.uploadFailed": {
"message": "上传失败。调试包仍已保存在本地。",
"description": "Shown when upload failed (no specific reason) but the bundle was saved locally."
},
"settings.troubleshooting.stage.reconnecting": {
"message": "正在重新连接 NetBird…",
"description": "Progress stage: reconnecting NetBird. Ends with an ellipsis."
},
"settings.troubleshooting.stage.capturing": {
"message": "正在捕获调试日志",
"description": "Progress stage: capturing logs. {elapsed} and {total} are time values (e.g. 0:30 / 2:00); keep both."
},
"settings.troubleshooting.stage.bundling": {
"message": "正在生成调试包…",
"description": "Progress stage: generating the debug bundle. Ends with an ellipsis."
},
"settings.troubleshooting.stage.uploading": {
"message": "正在上传到 NetBird…",
"description": "Progress stage: uploading to NetBird. Ends with an ellipsis."
},
"settings.troubleshooting.stage.cancelling": {
"message": "正在取消…",
"description": "Progress stage: cancelling. Ends with an ellipsis."
},
"settings.about.client": {
"message": "NetBird 客户端 v{version}",
"description": "About tab: client product name and version. {version} is a version number; keep it. 'NetBird Client' — keep brand."
},
"settings.about.clientName": {
"message": "NetBird 客户端",
"description": "About tab: the client product name shown when no version is available. Brand — do not translate."
},
"settings.about.development": {
"message": "[开发版]",
"description": "Badge shown next to the version on development builds. Keep the square brackets."
},
"settings.about.gui": {
"message": "GUI v{version}",
"description": "About tab: UI component name and version. {version} is a version number; keep it. 'GUI' = the graphical app."
},
"settings.about.guiName": {
"message": "GUI",
"description": "About tab: the UI component name shown without a version. 'GUI' = the graphical app."
},
"settings.about.copyright": {
"message": "© {year} NetBird。保留所有权利。",
"description": "Copyright line. {year} is the current year; keep it. 'NetBird' — brand."
},
"settings.about.links.imprint": {
"message": "法律声明",
"description": "Footer link: Imprint (legal notice / Impressum)."
},
"settings.about.links.privacy": {
"message": "隐私",
"description": "Footer link: Privacy policy."
},
"settings.about.links.cla": {
"message": "CLA",
"description": "Footer link: CLA (Contributor License Agreement). Acronym — keep as-is."
},
"settings.about.links.terms": {
"message": "服务条款",
"description": "Footer link: Terms of Service."
},
"settings.about.community.github": {
"message": "GitHub",
"description": "Community link: GitHub. Brand — do not translate."
},
"settings.about.community.slack": {
"message": "Slack",
"description": "Community link: Slack. Brand — do not translate."
},
"settings.about.community.forum": {
"message": "论坛",
"description": "Community link: Forum."
},
"settings.about.community.documentation": {
"message": "文档",
"description": "Community link: Documentation."
},
"settings.about.community.feedback": {
"message": "反馈",
"description": "Community link: Feedback."
},
"update.banner.message": {
"message": "NetBird {version} 已准备好安装。",
"description": "Update banner text when a new version is ready to install. {version} is the version number; keep it."
},
"update.banner.later": {
"message": "稍后",
"description": "Banner button to postpone the update. Keep short."
},
"update.banner.installNow": {
"message": "立即安装",
"description": "Banner button to install the update now. Keep short."
},
"update.card.versionAvailableDownload": {
"message": "{version} 版本可供下载。",
"description": "Update card text when a version is available to download. {version} is the version number; keep it."
},
"update.card.versionAvailableInstall": {
"message": "{version} 版本可供安装。",
"description": "Update card text when a version is available to install. {version} is the version number; keep it."
},
"update.card.whatsNew": {
"message": "更新内容?",
"description": "Link / label that opens the release notes."
},
"update.card.installNow": {
"message": "立即安装",
"description": "Update card button: install now. Keep short."
},
"update.card.getInstaller": {
"message": "下载",
"description": "Update card button: download the installer."
},
"update.card.autoCheckInterval": {
"message": "NetBird 会在后台检查更新。",
"description": "Note that NetBird checks for updates in the background."
},
"update.card.changelog": {
"message": "更新日志",
"description": "Link / label: Changelog."
},
"update.card.onLatestVersion": {
"message": "您已是最新版本",
"description": "Shown when the client is already up to date."
},
"update.header.tooltip": {
"message": "有可用更新",
"description": "Tooltip on the header update badge."
},
"update.overlay.updatingVersion": {
"message": "正在将 NetBird 更新到 v{version}",
"description": "Heading in the install-progress window while updating to a specific version. {version} is the version number; keep it. The 'v' prefix is part of the version display."
},
"update.overlay.updating": {
"message": "正在更新 NetBird",
"description": "Heading in the install-progress window while updating when the target version isn't known."
},
"update.overlay.description": {
"message": "有更新的版本可用,正在安装。更新完成后,NetBird 将自动重启。",
"description": "Install-progress window body explaining NetBird will restart automatically after the update."
},
"update.overlay.error.timeoutTitle": {
"message": "更新耗时过长",
"description": "Install-progress window error title: the update took too long."
},
"update.overlay.error.timeoutDescription": {
"message": "安装 {target} 耗时过长,未能完成。",
"description": "Install-progress window error body for a timeout. {target} is the target-version label (see update.overlay.error.targetVersion / targetFallback); keep it."
},
"update.overlay.error.canceledTitle": {
"message": "更新已停止",
"description": "Install-progress window error title: the update was stopped / canceled."
},
"update.overlay.error.canceledDescription": {
"message": "对 {target} 的更新在完成前已被取消。",
"description": "Install-progress window error body for a canceled update. {target} is the target-version label; keep it."
},
"update.overlay.error.failTitle": {
"message": "无法安装更新",
"description": "Install-progress window error title: the update couldn't be installed."
},
"update.overlay.error.failDescription": {
"message": "无法安装 {target}。",
"description": "Install-progress window error body for a failed install. {target} is the target-version label; keep it."
},
"update.overlay.error.unknownMessage": {
"message": "未知错误",
"description": "Fallback text for an unspecified error, used inside other messages."
},
"update.overlay.error.targetVersion": {
"message": "v{version}",
"description": "The target-version label substituted into {target}. {version} is a number; keep the 'v' prefix."
},
"update.overlay.error.targetFallback": {
"message": "新版本",
"description": "Fallback target label used when the version isn't known, substituted into {target}."
},
"update.error.loadStateTitle": {
"message": "加载更新状态失败",
"description": "Error-dialog title when loading update state fails."
},
"update.error.triggerTitle": {
"message": "启动更新失败",
"description": "Error-dialog title when starting the update fails."
},
"update.page.versionLine": {
"message": "正在将客户端更新到:{version}。",
"description": "Install-progress window text naming the target version. {version} is the version number; keep it."
},
"update.page.versionLineGeneric": {
"message": "正在更新客户端。",
"description": "Install-progress text used when the target version isn't known."
},
"update.page.outdated": {
"message": "您的客户端版本早于管理服务器中设置的自动更新版本。",
"description": "Note that the client is older than the auto-update version set in Management. 'Management' = the NetBird management server / console."
},
"update.page.status.running": {
"message": "正在更新",
"description": "Install status: updating."
},
"update.page.status.timeout": {
"message": "更新超时。请重试。",
"description": "Install status: timed out; asks the user to retry."
},
"update.page.status.canceled": {
"message": "更新已取消。",
"description": "Install status: canceled."
},
"update.page.status.failed": {
"message": "更新失败:{message}",
"description": "Install status: failed. {message} is the error detail; keep it."
},
"update.page.status.unknownError": {
"message": "未知的更新错误",
"description": "Fallback text for an unknown update error, used inside update.page.status.failed."
},
"update.page.failedTitle": {
"message": "更新失败",
"description": "Heading shown when the install failed."
},
"update.page.timeoutMessage": {
"message": "更新超时。",
"description": "Message shown when the install timed out."
},
"update.page.dontClose": {
"message": "请勿关闭此窗口。",
"description": "Warning asking the user not to close the install window."
},
"update.page.updating": {
"message": "正在更新…",
"description": "Short status: updating. Ends with an ellipsis."
},
"update.page.complete": {
"message": "更新完成",
"description": "Short status: update complete."
},
"update.page.failed": {
"message": "更新失败",
"description": "Short status: update failed."
},
"window.title.settings": {
"message": "设置",
"description": "OS window-chrome title for the Settings window. The app prefixes it with 'NetBird - '."
},
"window.title.signIn": {
"message": "登录",
"description": "OS window-chrome title for the sign-in window."
},
"window.title.sessionExpiration": {
"message": "会话即将过期",
"description": "OS window-chrome title for the session-expiration window."
},
"window.title.updating": {
"message": "正在更新",
"description": "OS window-chrome title for the update / install window."
},
"window.title.welcome": {
"message": "欢迎使用 NetBird",
"description": "OS window-chrome title for the first-launch welcome window. 'NetBird' — brand."
},
"window.title.error": {
"message": "错误",
"description": "OS window-chrome title for the error window."
},
"welcome.title": {
"message": "在托盘中查找 NetBird",
"description": "Heading on the first onboarding step, pointing the user to the tray icon. Shown on Windows and Linux; macOS uses welcome.titleMac."
},
"welcome.titleMac": {
"message": "在菜单栏中查找 NetBird",
"description": "Heading on the first onboarding step on macOS, pointing the user to the menu bar icon. Use your language's Apple term for the macOS menu bar."
},
"welcome.description": {
"message": "NetBird 驻留在您的托盘中。点击图标即可连接、切换配置文件或打开设置。",
"description": "Body of the first onboarding step explaining the tray icon. Shown on Windows and Linux; macOS uses welcome.descriptionMac."
},
"welcome.descriptionMac": {
"message": "NetBird 驻留在您的菜单栏中。点击图标即可连接、切换配置文件或打开设置。",
"description": "Body of the first onboarding step on macOS explaining the menu bar icon. Use your language's Apple term for the macOS menu bar."
},
"welcome.continue": {
"message": "继续",
"description": "Primary button to advance the onboarding. Keep short."
},
"welcome.back": {
"message": "返回",
"description": "Button to go back a step in onboarding. Keep short."
},
"welcome.management.title": {
"message": "设置 NetBird",
"description": "Heading on the onboarding step for choosing a management server."
},
"welcome.management.description": {
"message": "点击“继续”即可开始;如果您有自己的 NetBird 服务器,请选择“自托管”。",
"description": "Body of the management step; mentions choosing Self-hosted if the user runs their own server."
},
"welcome.management.cloud.title": {
"message": "NetBird Cloud",
"description": "Option title: NetBird Cloud. Brand — do not translate 'NetBird Cloud'."
},
"welcome.management.cloud.description": {
"message": "使用我们的托管服务。无需任何设置。",
"description": "Option body for NetBird Cloud (hosted service, no setup required)."
},
"welcome.management.selfHosted.title": {
"message": "自托管",
"description": "Option title: Self-hosted."
},
"welcome.management.selfHosted.description": {
"message": "连接到您自己的管理服务器。",
"description": "Option body for connecting to your own management server."
},
"welcome.management.urlLabel": {
"message": "管理服务器 URL",
"description": "Field label for the management-server URL."
},
"welcome.management.urlPlaceholder": {
"message": "https://netbird.selfhosted.com:443",
"description": "Example URL placeholder. Sample URL — do not translate it."
},
"welcome.management.urlInvalid": {
"message": "请输入有效的 URL,例如:https://netbird.selfhosted.com:443",
"description": "Validation message for an invalid URL. The example URL stays as-is."
},
"welcome.management.urlUnreachable": {
"message": "无法连接到此服务器。请检查 URL 或您的网络,如果确认无误,再继续。",
"description": "Soft warning when the server couldn't be reached during onboarding; the user may continue anyway."
},
"welcome.management.checking": {
"message": "正在检查…",
"description": "Status shown while checking the server URL. Ends with an ellipsis."
},
"browserLogin.title": {
"message": "请在浏览器中继续以完成登录",
"description": "Heading telling the user to finish signing in via their browser."
},
"browserLogin.notSeeing": {
"message": "没看到浏览器标签页?",
"description": "Prompt asking whether the user doesn't see the opened browser tab."
},
"browserLogin.tryAgain": {
"message": "重试",
"description": "Button to re-open the browser sign-in page. Keep short."
},
"browserLogin.openFailedTitle": {
"message": "打开浏览器失败",
"description": "Error-dialog title when the browser couldn't be opened."
},
"sessionExpiration.title": {
"message": "会话即将过期",
"description": "Heading warning the session will expire soon."
},
"sessionExpiration.titleLater": {
"message": "您的会话即将过期",
"description": "Alternate, less-urgent heading: the session will expire."
},
"sessionExpiration.description": {
"message": "此设备即将断开连接。通过浏览器登录进行续期。",
"description": "Body warning the device will disconnect soon; renew via a browser sign-in."
},
"sessionExpiration.descriptionLater": {
"message": "通过浏览器登录可让此设备保持连接到您的网络。",
"description": "Body for the less-urgent variant; a browser sign-in keeps the device connected."
},
"sessionExpiration.stay": {
"message": "续期会话",
"description": "Button to renew the session (keep connected). Keep short."
},
"sessionExpiration.authenticate": {
"message": "进行身份验证",
"description": "Button to authenticate / sign in. Keep short."
},
"sessionExpiration.logout": {
"message": "退出登录",
"description": "Button to log out. Keep short."
},
"sessionExpiration.expired": {
"message": "会话已过期",
"description": "Heading shown once the session has actually expired."
},
"sessionExpiration.expiredDescription": {
"message": "设备已断开连接。通过浏览器登录进行身份验证以重新连接。",
"description": "Body shown after expiry; authenticate via a browser sign-in to reconnect."
},
"sessionExpiration.close": {
"message": "关闭",
"description": "Close button on the session window. Keep short."
},
"sessionExpiration.extendFailedTitle": {
"message": "延长会话失败",
"description": "Error-dialog title when extending the session fails."
},
"sessionExpiration.logoutFailedTitle": {
"message": "退出登录失败",
"description": "Error-dialog title when logging out fails."
},
"peers.search.placeholder": {
"message": "按名称或 IP 搜索",
"description": "Placeholder in the peers search field."
},
"peers.filter.all": {
"message": "全部",
"description": "Peers filter option: All. Keep short."
},
"peers.filter.online": {
"message": "在线",
"description": "Peers filter option: Online. Keep short."
},
"peers.filter.offline": {
"message": "离线",
"description": "Peers filter option: Offline. Keep short."
},
"peers.empty.title": {
"message": "无可用的对等节点",
"description": "Title of the empty state when no peers are available."
},
"peers.empty.description": {
"message": "您可能没有任何可用的对等节点,或者无权访问其中任何一个。",
"description": "Body of the no-peers empty state."
},
"peers.details.domain": {
"message": "域名",
"description": "Peer detail label: Domain."
},
"peers.details.netbirdIp": {
"message": "NetBird IP",
"description": "Peer detail label: NetBird IP address. 'NetBird' — brand; 'IP' — keep acronym."
},
"peers.details.netbirdIpv6": {
"message": "NetBird IPv6",
"description": "Peer detail label: NetBird IPv6 address. Keep 'NetBird' and 'IPv6'."
},
"peers.details.publicKey": {
"message": "公钥",
"description": "Peer detail label: WireGuard public key."
},
"peers.details.connection": {
"message": "连接",
"description": "Peer detail label: Connection."
},
"peers.details.latency": {
"message": "延迟",
"description": "Peer detail label: Latency."
},
"peers.details.lastHandshake": {
"message": "上次握手",
"description": "Peer detail label: time of the last WireGuard handshake."
},
"peers.details.statusSince": {
"message": "上次连接更新",
"description": "Peer detail label: time since the last connection-status update."
},
"peers.details.bytes": {
"message": "字节",
"description": "Peer detail label: Bytes (data transferred)."
},
"peers.details.bytesSent": {
"message": "已发送",
"description": "Peer detail label: bytes sent."
},
"peers.details.bytesReceived": {
"message": "已接收",
"description": "Peer detail label: bytes received."
},
"peers.details.localIce": {
"message": "本地 ICE",
"description": "Peer detail label: local ICE candidate. 'ICE' — keep acronym."
},
"peers.details.remoteIce": {
"message": "远程 ICE",
"description": "Peer detail label: remote ICE candidate. 'ICE' — keep acronym."
},
"peers.details.never": {
"message": "从不",
"description": "Value shown when an event has never happened (e.g. last handshake = Never)."
},
"peers.details.justNow": {
"message": "刚刚",
"description": "Relative-time value meaning a moment ago."
},
"peers.details.refresh": {
"message": "刷新",
"description": "Button to refresh peer details. Keep short."
},
"peers.status.connected": {
"message": "已连接",
"description": "Peer status: connected."
},
"peers.status.connecting": {
"message": "正在连接",
"description": "Peer status: connecting."
},
"peers.status.disconnected": {
"message": "已断开连接",
"description": "Peer status: disconnected."
},
"peers.details.relayAddress": {
"message": "中继",
"description": "Peer detail label: Relay (relay-server address)."
},
"peers.details.networks": {
"message": "资源",
"description": "Peer detail label for the peer's network resources. Labelled 'Resources' in the UI."
},
"peers.details.relayed": {
"message": "经中继",
"description": "Connection-type value: the connection is relayed (not direct). Technical term."
},
"peers.details.p2p": {
"message": "P2P",
"description": "Connection-type value: peer-to-peer (direct). 'P2P' — keep as-is."
},
"peers.details.rosenpass": {
"message": "已启用 Rosenpass",
"description": "Peer detail indicating Rosenpass (quantum-resistance) is enabled. 'Rosenpass' — product name, do not translate."
},
"networks.search.placeholder": {
"message": "按网络或域名搜索",
"description": "Placeholder in the resources search field."
},
"networks.filter.all": {
"message": "全部",
"description": "Resources filter: All. Keep short."
},
"networks.filter.active": {
"message": "活动",
"description": "Resources filter: Active. Keep short."
},
"networks.filter.overlapping": {
"message": "重叠",
"description": "Resources filter: Overlapping (overlapping IP ranges). Keep short."
},
"networks.empty.title": {
"message": "无可用资源",
"description": "Title of the empty state when no resources are available."
},
"networks.empty.description": {
"message": "您可能没有任何可用的网络资源,或者无权访问其中任何一个。",
"description": "Body of the no-resources empty state."
},
"networks.selected": {
"message": "已选择",
"description": "Label / badge: the resource is selected (enabled)."
},
"networks.unselected": {
"message": "未选择",
"description": "Label / badge: the resource is not selected."
},
"networks.ips.heading": {
"message": "已解析的 IP",
"description": "Heading for the list of a resource's resolved IP addresses."
},
"networks.bulk.selectionCount": {
"message": "{total} 个中已激活 {selected} 个",
"description": "Header showing how many resources are active. {selected} and {total} are numbers; keep both."
},
"networks.bulk.enableAll": {
"message": "全部启用",
"description": "Button to enable all resources. Keep short."
},
"networks.bulk.disableAll": {
"message": "全部禁用",
"description": "Button to disable all resources. Keep short."
},
"exitNodes.search.placeholder": {
"message": "搜索出口节点",
"description": "Placeholder in the exit-nodes search field."
},
"exitNodes.none": {
"message": "无",
"description": "Option meaning no exit node. Keep short."
},
"exitNodes.empty.title": {
"message": "无可用的出口节点",
"description": "Title of the empty state when no exit nodes are available."
},
"exitNodes.empty.description": {
"message": "尚未向此对等节点共享任何出口节点。",
"description": "Body of the no-exit-nodes empty state."
},
"exitNodes.card.title": {
"message": "出口节点",
"description": "Card heading: Exit Node."
},
"exitNodes.card.statusActive": {
"message": "活动",
"description": "Exit node card status: Active."
},
"exitNodes.card.statusInactive": {
"message": "非活动",
"description": "Exit node card status: Inactive."
},
"exitNodes.dropdown.noneTitle": {
"message": "无",
"description": "Dropdown option title: None (no exit node)."
},
"exitNodes.dropdown.noneDescription": {
"message": "不使用出口节点的直接连接",
"description": "Dropdown option body for None: direct connection without an exit node."
},
"quickActions.connect": {
"message": "连接",
"description": "Quick-action button: Connect. Keep short."
},
"quickActions.disconnect": {
"message": "断开连接",
"description": "Quick-action button: Disconnect. Keep short."
},
"daemon.unavailable.title": {
"message": "NetBird 服务未运行",
"description": "Title of the overlay shown when the NetBird background service isn't running."
},
"daemon.unavailable.description": {
"message": "服务运行后,应用将自动重新连接。",
"description": "Body reassuring the user the app will reconnect once the service is running."
},
"daemon.unavailable.docsLink": {
"message": "文档",
"description": "Documentation link on the daemon-unavailable overlay."
},
"daemon.outdated.title": {
"message": "NetBird 客户端版本过旧",
"description": "Title of the overlay shown when the NetBird client (daemon) is too old to drive this UI."
},
"daemon.outdated.description": {
"message": "新版 GUI 与您较旧的客户端不兼容。请更新客户端以使用新应用。",
"description": "Body of the daemon-outdated overlay explaining that the GUI is newer than the client and the client must be updated."
},
"daemon.outdated.download": {
"message": "下载最新版本",
"description": "Button on the daemon-outdated overlay that opens the download page for the latest release."
},
"error.jwt_clock_skew": {
"message": "登录失败:此设备的时钟与服务器不同步。请同步您的系统时钟后重试。",
"description": "Sign-in error shown to the user: the device clock is out of sync with the server."
},
"error.jwt_expired": {
"message": "您的登录令牌已过期。请重新登录。",
"description": "Sign-in error: the sign-in token expired; sign in again."
},
"error.jwt_signature_invalid": {
"message": "登录失败:令牌签名无效。请联系您的管理员。",
"description": "Sign-in error: the token signature is invalid; contact the administrator."
},
"error.session_expired": {
"message": "您的会话已过期。请重新登录。",
"description": "Error: the session expired; sign in again."
},
"error.invalid_setup_key": {
"message": "设置密钥缺失或无效。",
"description": "Error: the setup key is missing or invalid. 'setup key' is a NetBird term."
},
"error.permission_denied": {
"message": "登录被服务器拒绝。",
"description": "Error: the server rejected the sign-in."
},
"error.daemon_unreachable": {
"message": "NetBird 守护进程无响应。请检查服务是否正在运行。",
"description": "Error: the NetBird background service isn't responding. 'daemon' = the background service."
},
"error.unknown": {
"message": "操作失败。",
"description": "Generic fallback error message used when no specific error applies."
},
"settings.ssh.privilege.hint": {
"message": "Requires {actor}. Run this instead:",
"description": "Help text under an SSH setting the user cannot change: it needs elevated privileges. {actor} is 'root' on Linux/macOS or 'administrator privileges' on Windows. Followed by a copyable command."
},
"settings.ssh.privilege.oneWay": {
"message": "You can switch this off, but switching it back on needs {actor}:",
"description": "Warning under an SSH setting an unprivileged user may disable but not re-enable. {actor} is 'root' on Linux/macOS or 'administrator privileges' on Windows. Followed by a copyable command."
},
"settings.ssh.privilege.oneWayInverted": {
"message": "You can switch this on, but switching it back off needs {actor}:",
"description": "Warning under the SSH authentication setting, which an unprivileged user may re-enable but not disable again. {actor} is 'root' on Linux/macOS or 'administrator privileges' on Windows. Followed by a copyable command."
}
}