aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js')
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js174
1 files changed, 165 insertions, 9 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js
index 218b5f3..367efa0 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js
@@ -66,6 +66,7 @@ export default {
'register.submit': '注册',
'register.loading': '正在创建账户…',
'register.has_account': '已经有账户了?',
+ 'register.legal_notice': "创建账户即表示您接受此 hub 的使用条款。依照法律,它须将您的连接日志(IP 地址、日期、操作)保存一年,即使您的账户已被删除。",
'register.login_link': '登录',
'register.recovery_title': '保存您的恢复密钥',
'register.recovery_intro': '如果您忘记了密码短语,此密钥可恢复您的群组身份。请将其保存在密码管理器或安全的地方。',
@@ -123,6 +124,7 @@ export default {
'welcome.docs_devel': '开发文档',
'welcome.docs_design': '设计',
'welcome.docs_protocol': '协议',
+ 'welcome.docs_api': 'API',
'welcome.download': '下载(测试版)',
'welcome.legal': '法律信息',
'register.err_mismatch': '两次输入的密码不一致',
@@ -205,6 +207,11 @@ export default {
'group.mkdir_prompt': '新文件夹名称',
'group.mkdir_offline': '未连接到节点。',
'group.download_offline': '未连接到节点 — 无法开始下载。连接会自动恢复,请稍后重试。',
+ 'group.link_unknown': "此链接指向一个您不是其成员的群组,或该群组已不再使用此名称。",
+ 'group.link_path_unknown': "此群组中 {path} 处没有内容——文件可能已被移动、重命名或删除。",
+ 'link.copy': "复制链接",
+ 'link.copied': "链接已复制",
+ 'link.copy_failed': "无法复制——链接为 {url}",
'group.download_write_stalled': '文件停止写入磁盘({seconds} 秒无进展)。已中止下载而不是让它一直卡住,请重试。',
'device.add_title': 'This browser is not linked to this node yet',
'device.add_hint': 'Your account is known here, but this browser holds a different key. Approve it from a device already linked — no operator needed.',
@@ -270,6 +277,7 @@ export default {
'group.upload_indexing': '建立索引中…',
'video.err_transport': '传输未连接',
'video.err_mse': '该编解码器不支持流式播放:{codec}',
+ 'video.err_no_mse': '此浏览器不支持视频流式播放(iPhone 需要 iOS 17.1 或更高版本)',
'video.mode_poster': '海报视图',
'video.mode_flat': '平铺列表',
'video.filter_all': 'All',
@@ -366,10 +374,17 @@ export default {
one: '{n} 张照片',
other: '{n} 张照片',
},
+ 'photo.n_videos': {
+ one: "{n} 个视频",
+ other: "{n} 个视频",
+ },
+ 'photo.play_video': "播放视频",
'photo.back': '返回',
'photo.prev': '上一张(←)',
'photo.next': '下一张(→)',
'photo.zip_album': '将相册下载为 zip',
+ 'photo.slideshow': '幻灯片放映',
+ 'photo.slideshow_stop': '停止幻灯片放映',
'photo.zoom_in': '放大',
'photo.zoom_out': '缩小',
'photo.zoom_fit_title': '适应窗口',
@@ -383,6 +398,13 @@ export default {
'cast.copied': '链接已复制',
'cast.scanning': '正在搜索设备…',
'cast.no_devices': '未找到设备',
+ 'cast.casting_to': '投放到',
+ 'cast.seek': '播放位置',
+ 'cast.waiting': '正在等待电视…',
+ 'cast.back30': '后退 30 秒',
+ 'cast.fwd30': '前进 30 秒',
+ 'cast.play': '播放',
+ 'cast.pause': '暂停',
// Settings
'settings.title': '设置',
@@ -412,6 +434,15 @@ export default {
'settings.email_verified': '邮箱地址修改成功。',
'settings.notif_global_disable': '关闭所有通知',
'settings.notif_global_hint': '启用后,所有群组都不会创建通知。',
+ 'settings.push_label': '此手机上的通知',
+ 'settings.push_off': '已关闭。开启后,即使 MeshBay 已关闭,也会收到新消息和邀请的通知。',
+ 'settings.push_pending': '正在等待分发应用的响应…',
+ 'settings.push_blocked': 'Android 正在阻止 MeshBay 的通知:请在系统设置中允许。',
+ 'settings.push_ready': '已开启。新通知通过分发应用送达此手机,并经过加密,分发应用无法读取。',
+ 'settings.push_poll': '已开启。此手机大约每十五分钟检查一次新通知。如需即时收到,可以安装 UnifiedPush 分发应用,例如 ntfy(可选)。',
+ 'settings.push_global_off': '所有通知关闭期间不会发送任何内容。',
+ 'push.channel_chat': '消息',
+ 'push.channel_other': '邀请与账户',
'settings.defaults': '默认值',
'settings.default_tab': 'Default tab',
'settings.default_tab_hint': 'Which tab opens first when you enter a group.',
@@ -481,12 +512,11 @@ export default {
'firstrun.hint': 'A hub holds your account and introduces you to nodes. It never sees your files, your messages or your keys.',
'firstrun.btn': 'Continue',
'firstrun.checking': 'Checking…',
- 'firstrun.note': 'There is no default on purpose: this application only trusts a hub for its API, never for the interface, which ships with the application itself.',
'device.this_device': 'This device',
'settings.keys_heading': 'Keys on this device',
'settings.hub_heading': 'Hub',
'settings.hub_current': 'Currently',
- 'settings.hub_hint': 'Changing this signs you out and restarts the window.',
+ 'settings.hub_hint': 'The hub this application connects to. Changing it signs you out: your account stays on this hub.',
'settings.hub_change': 'Change',
'settings.keys_where': 'Protected by',
'settings.keys_unprotected': 'No system keyring is running, so your keys are encrypted with a key that is not a secret. Anyone who can read this machine’s files can read them. Start a keyring, or treat this device as untrusted.',
@@ -504,12 +534,14 @@ export default {
'settings.node_key_placeholder': '粘贴 node 的 Ed25519 公钥(base64)',
'settings.node_key_submit': '关联 node',
'settings.node_key_success': 'node 关联成功',
+ 'settings.node_key_unlink': "取消关联",
+ 'settings.node_key_unlink_confirm': "要从你的账户取消关联该节点吗?在再次关联节点之前,它将停止为你的群组提供服务。",
+ 'settings.node_key_unlinked': "已取消关联节点",
'settings.node_key_current': '已关联的 node 密钥',
// Sidebar
'sidebar.create_group': '创建群组',
'sidebar.settings': '设置',
- 'sidebar.admin': '管理',
// User menu
'usermenu.language': '语言',
@@ -738,6 +770,7 @@ export default {
'transfers.eta_minutes': '剩余 {n} 分钟',
'transfers.eta_hours': '剩余 {n} 小时',
'transfers.failed': '失败',
+ 'transfers.disk_full': 'node 的磁盘已满',
'group.select': '选择',
'group.select_done': '完成',
'group.actions': '操作({n})',
@@ -818,6 +851,7 @@ export default {
'indexdock.next_count': "等待中:{count}",
'indexdock.open': "打开此群组的设置",
'indexdock.hide': "隐藏,直到下一次索引",
+ 'indexdock.pause': "暂停索引此文件夹",
'chat.load_older': '加载更早的 {n} 条消息',
'chat.start_of_history': '对话开头',
'chat.today': '今天',
@@ -864,7 +898,7 @@ export default {
'lazy.reload': '重新加载页面',
// Sidebar
- 'sidebar.node': 'Node',
+ 'androidsync.title': 'Android Sync',
// Node admin
'node.title': 'Node',
@@ -889,6 +923,7 @@ export default {
'node.startup_mode_service': '作为后台服务(开机时启动)',
'node.startup_mode_updating': '正在切换模式 — 请留意管理员权限提示…',
'node.startup_mode_service_unavailable_hint': '后台服务模式需要已安装的版本。如需本地测试,请在具有管理员权限的 PowerShell 中运行 "meshbay-node service install"。',
+ 'node.startup_mode_service_store_hint': '在任何人登录之前随系统启动,需要使用 MeshBay 安装程序 (.exe),而不是 Microsoft Store 版本。',
'node.not_operator': '无法连接到您的 node。请确保它正在运行。',
'node.offline': 'Node 已离线',
'node.retry': '重试',
@@ -896,6 +931,13 @@ export default {
'node.pair_code_placeholder': '配对码',
'node.pair_button': '配对此浏览器',
'node.pair_success': '配对成功。',
+ 'node.pair_pending': '配对码已就绪:下次打开此 Node 的任一群组时将自动使用。',
+ 'node.link_other_node': "你的账户已关联到另一台机器的节点,因此此节点无法为你的群组提供服务。",
+ 'node.link_here': "改为关联此节点",
+ 'node.link_here_confirm': "将此节点关联到你的账户?当前关联的另一台机器上的节点将停止为你的群组提供服务,直到再次关联。",
+ 'node.link_other_account': "此节点是为 {account} 而不是为你设置的,因此无法为你的群组提供服务。",
+ 'node.link_take_over': "将此节点用于我的账户",
+ 'node.link_linking': "正在关联…",
'node.reload': '重新加载配置',
'node.reloaded': '配置已重新加载。对现有群组的目录更改现已生效。',
'node.restart_needed': '添加后请初始化群组密钥(meshbay-node gek-init --group <名称>)。',
@@ -914,6 +956,8 @@ export default {
'node.setting_max_uploads': '最大同时上传数',
'node.setting_transcode': 'Transcode incompatible video',
'node.setting_max_upload': '单个上传的最大大小',
+ 'node.setting_connection_processes': '用于连接的 CPU 核心数',
+ 'node.setting_unit_of': '/ {n}',
'node.setting_unit_gb': 'GB',
'node.setting_unit_hours': 'hours',
'node.setting_unit_minutes': 'min',
@@ -931,9 +975,10 @@ export default {
'node.remove_root': '移除',
'node.root_no_signing_key': '没有可用的签名密钥 — 请先将本设备与节点配对',
'node.root_no_route': '无法连接到节点 — 请先连接,或在运行该节点的机器上使用应用',
+ 'node.root_pause': "暂停索引",
+ 'node.root_resume': "继续索引",
+ 'node.root_paused': "索引已暂停",
'node.root_remove_last': '每个群组至少需要一个目录',
- 'node.root_path_hint': '托管该群组的机器上,节点所看到的路径。',
- 'node.root_path_placeholder': '/home/user/Media',
'node.root_path': '路径',
'node.directory': '目录',
'node.root_added': '目录已添加。',
@@ -953,7 +998,6 @@ export default {
'node.gek_init_hint': '尚无群组密钥。请从命令行运行 GEK 初始化来设置。',
'node.gek_public_hint': '公开群组不支持密钥轮换。',
'node.gek_rotate': '轮换群组密钥',
- 'node.gek_rotate_confirm': '轮换群组密钥?已连接的成员将自动收到新密钥。已下载的内容不受影响。',
'node.gek_rotated': '群组密钥已轮换。',
'node.roster': '花名册',
'node.roster_load': '加载花名册',
@@ -1057,9 +1101,12 @@ export default {
'settings_app.chat_encrypted_always': '本群组的聊天始终加密,无法关闭。',
'settings_app.chat_rotate_epoch': '更换聊天密钥',
'settings_app.chat_rotate_epoch_hint': '成员仍可阅读全部历史记录。已被移出群组的人无法阅读此后写入的内容。移除成员或设备时已自动执行此操作。',
+ 'settings_app.chat_purge': '清空聊天',
+ 'settings_app.chat_purge_hint': '删除此节点上该群组聊天的全部消息,对所有成员生效。附件保留在其文件夹中。此操作无法撤销。',
'settings_app.tmdb_token_prompt': '在 TMDB 注册以生成你自己的 API 密钥。',
'settings_app.tmdb_token_link': '获取密钥',
'settings_node.roots_offline_hint': '未连接到节点 — 变更将通过本地节点进行,并在其下次重新加载时生效。',
+ 'settings_node.roots_local_only_hint': '添加目录以及切换读写或可移除,只能在运行节点的机器上进行 — 在桌面应用中,或使用 meshbay-node root。',
'settings_node.directories_title': '应用目录',
'settings_node.directories_hint': '共享文件夹,以及“视频”“音乐”和“照片”应用各自使用哪个(些)作为入口。',
@@ -1211,6 +1258,7 @@ export default {
'home.accept': "接受",
'home.decline': "拒绝",
'members.invited': "已邀请",
+ 'members.awaiting_code': "waiting for their code",
'hosts.title': "主机",
'hosts.hint': "你自己的 node 无需询问即可提供此群组。其他 node 只有在你于此处批准后才会提供;提出申请的 node 列在下方。",
'hosts.none': "没有其他 node 申请托管此群组。",
@@ -1233,9 +1281,117 @@ export default {
'settings.browser_access_off_in_browser': '此账户已关闭浏览器访问。可在 MeshBay 桌面应用中开启,该应用也可以单独批准此浏览器。',
'group.browser_access_off': '此账户已关闭浏览器访问。请在 MeshBay 桌面应用(个人资料)中开启,或从该应用批准此浏览器。',
// Worded by the desktop main process for its own dialogs (main.js).
- 'native.attach_confirm': '在这台电脑上托管群组“{name}”,并与其成员共享文件夹 {path}?',
- 'native.folder_confirm': '与这台电脑上托管的群组成员共享文件夹 {path}?该文件夹不是在文件夹选择器中选择的。',
'native.node_account_confirm': '这台电脑上的 node 已为 {current} 设置。改为为 {next} 设置吗?它将不再为 {current} 提供其托管的群组。',
'native.browser_access_confirm': '允许从浏览器登录吗?应用会在您使用的每个 node 上留下您的身份,并加以封存,只有您的密码短语配合您的 hub 账户才能打开。',
'native.declined': '已取消,未做任何更改。',
+
+ // Photo backup, Android only (photo-sync.js, photo-sync-settings.js).
+ 'photosync.heading': "照片备份",
+ 'photosync.intro': "每天一次,通过 Wi-Fi 将这部手机拍摄的照片发送到您某个群组的文件夹。从手机删除的照片会保留在群组中。",
+ 'photosync.setup': "设置",
+ 'photosync.change': "更改",
+ 'photosync.turn_off': "关闭",
+ 'photosync.now': "立即备份",
+ 'photosync.permission_needed': "MeshBay 需要访问这部手机上的照片。",
+ 'photosync.permission_allow': "允许访问",
+ 'photosync.permission_partial': "访问权限仅限于您选择的照片:在您允许访问全部照片之前,新照片不会被备份。",
+ 'photosync.group': "群组",
+ 'photosync.choose_group': "选择群组",
+ 'photosync.checking_group': "正在读取群组的文件夹…",
+ 'photosync.group_offline': "目前没有托管此群组的 node 在线。请在其上线后重试。",
+ 'photosync.folder': "文件夹",
+ 'photosync.albums': "这部手机上的相册",
+ 'photosync.album_camera': "相机",
+ 'photosync.album_count': "{n} 张照片 · {size}",
+ 'photosync.videos_not_included': "视频未备份:点“更改”添加。",
+ 'photosync.videos_included': "视频也会备份。",
+ 'photosync.include_videos': "包括视频",
+ 'photosync.include_videos_hint': "视频体积较大:它们和照片一样通过 Wi-Fi 发送,首次备份可能需要一些时间。",
+ 'photosync.album_count_videos': "{n} 张照片,{v} 个视频 · {size}",
+ 'photosync.confirm_videos': "将把 {count} 个照片和视频({size},其中 {videos} 个视频,{videoSize})发送到 {dir},之后每天发送一次新的。",
+ 'photosync.video_permission_needed': "MeshBay 还需要访问本机的视频。",
+ 'photosync.scope_existing': "手机上已有的照片,然后是新照片",
+ 'photosync.scope_new': "仅从现在起拍摄的照片",
+ 'photosync.start': "开始备份",
+ 'photosync.confirm': "将把 {count} 张照片({size})发送到 {dir},之后每天发送一次新照片。",
+ 'photosync.confirm_new': "新照片将每天一次发送到 {dir}。",
+ 'photosync.metered_confirm': "您正在使用移动数据 — {count} 张照片,{size}。仍要发送吗?",
+ 'photosync.other_account': "已为 @{account} 设置。请以 @{account} 登录以继续,或在此重新设置。",
+ 'photosync.sent_total': "已发送照片:{n}",
+ 'photosync.last_run': "上次备份:{when}",
+ 'photosync.never': "尚未备份",
+ 'photosync.state_waiting_wifi': "正在等待 Wi-Fi",
+ 'photosync.state_connecting': "正在连接群组…",
+ 'photosync.state_sending': "正在发送 {done} / {total}",
+ 'photosync.state_offline': "群组的 node 均不在线;稍后重试",
+ 'photosync.state_interrupted': "已中断 — 将在下次有机会时继续",
+ 'photosync.state_up_to_date': "已是最新",
+ 'photosync.notif_progress': "正在备份照片 — {done} / {total}",
+ 'photosync.fail_disk_full': "照片备份已停止:node 的磁盘已满。",
+ 'photosync.fail_read_only': "照片备份已停止:该文件夹不再接受上传。",
+ 'photosync.fail_no_folder': "照片备份已停止:该文件夹已不在群组中。",
+ 'photosync.fail_unavailable': "照片备份已停止:该文件夹所在的磁盘未连接到 node。",
+ 'photosync.fail_not_member': "照片备份已停止:您已不再是此群组的成员。",
+ 'photosync.fail_permission': "照片备份已停止:MeshBay 已无法访问照片。",
+ 'photosync.fail_other': "照片备份已停止。",
+ 'contactsync.heading': "联系人备份",
+ 'contactsync.intro': "在联系人有变动的日子里,每天一次发送本机联系人的副本。每份副本都是任何手机都能导入的 .vcf 文件。",
+ 'contactsync.permission_needed': "MeshBay 需要访问本机的联系人。",
+ 'calendarsync.heading': "日历备份",
+ 'calendarsync.intro': "在日历有变动的日子里,每天一次发送本机日历的副本:包括你可以编辑的日历,不包括仅订阅的日历。每份副本都是任何日历都能导入的 .ics 文件。",
+ 'calendarsync.permission_needed': "MeshBay 需要访问本机的日历。",
+ 'messagesync.heading': "短信备份",
+ 'messagesync.intro': "每天一次发送本机的短信:第一份副本包含全部短信,之后每份只包含新短信。文件采用短信备份应用可以恢复的 XML 格式。不包括彩信。",
+ 'messagesync.permission_needed': "MeshBay 需要访问本机的短信。",
+ 'messagesync.restricted_hint': "如果 Android 提示这是受限设置:打开应用设置,点按顶部的 ⋮,选择“允许受限设置”,然后回到这里再次开启。Android 对不是从应用商店安装的应用有此要求。",
+ 'phonesync.state_sending': "正在发送…",
+ 'phonesync.summary': "{group} → {dir}",
+ 'phonesync.copies_sent': "已发送副本:{n}",
+ 'phonesync.last_file': "最近一份副本:{name}",
+ 'phonesync.checking_groups': "正在查找由你创建且只有你一个成员的群组…",
+ 'phonesync.no_private_group': "你没有由你创建且只有你一个成员的群组。请创建一个只属于你自己的群组,然后回到这里。",
+ 'phonesync.no_folder': "这个群组没有你可以添加文件的文件夹。",
+ 'phonesync.notice': "{what}。{reason}",
+ 'phonesync.fail_disk_full': "已停止:node 的磁盘已满。",
+ 'phonesync.fail_read_only': "已停止:该文件夹不再接受上传。",
+ 'phonesync.fail_no_folder': "已停止:该文件夹在群组中已不存在。",
+ 'phonesync.fail_unavailable': "已停止:该文件夹所在的磁盘未连接到 node。",
+ 'phonesync.fail_not_member': "已停止:你已不再是这个群组的成员。",
+ 'phonesync.fail_not_private': "已停止:有其他人加入了群组。",
+ 'phonesync.fail_permission': "已停止:MeshBay 已无法访问。",
+ 'phonesync.fail_other': "已停止。",
+ 'phonesync.open_settings': "打开应用设置",
+ 'drivesync.heading': "文件备份",
+ 'drivesync.intro': "每天一次通过 Wi-Fi 发送你在本机选择的文件夹中的文件。在手机上修改过的文件会在之前的副本旁边再次发送;不会替换任何内容。",
+ 'drivesync.folders': "已备份的文件夹",
+ 'drivesync.no_folders': "尚未选择文件夹。",
+ 'drivesync.folders_hint': "照片和视频由照片备份负责:不能选择 DCIM、Pictures 和 Movies。Android 不允许应用选择整个 Download 文件夹,只能选择其中的文件夹。",
+ 'drivesync.add_folder': "添加文件夹",
+ 'drivesync.remove': "移除",
+ 'drivesync.refused_media': "这个文件夹包含照片备份会发送的照片和视频:请选择其他文件夹。",
+ 'drivesync.refused_root': "Android 不允许选择整个存储空间:请选择其中的文件夹。",
+ 'drivesync.notif_progress': "正在备份文件:{done} / {total}",
+ 'drivesync.metered_confirm': "你正在使用移动数据。仍要发送这些文件吗?",
+ 'drivesync.sent_total': "已发送文件:{n}",
+ 'whatsappsync.heading': "WhatsApp",
+ 'whatsappsync.intro': "每天一次通过 Wi-Fi 复制 WhatsApp 自己生成的聊天备份,以便在新手机上恢复。它们仍由 WhatsApp 加密:这里无法读取,只能用于恢复。",
+ 'whatsappsync.folder_needed': "尚未选择 WhatsApp 的文件夹。",
+ 'whatsappsync.folder_chosen': "已选择 WhatsApp 的文件夹。",
+ 'whatsappsync.folder_choose': "选择 WhatsApp 的文件夹",
+ 'whatsappsync.folder_hint': "选择器会直接打开它:Android/media/com.whatsapp/WhatsApp。点按“使用此文件夹”。",
+ 'whatsappsync.media': "包括媒体",
+ 'whatsappsync.media_hint': "收发的照片、视频、语音消息和文档:常常有好几 GB。照片备份已发送的内容不会重复发送。",
+ 'whatsappsync.refused': "这不是 WhatsApp 的文件夹:请选择 Android/media/com.whatsapp/WhatsApp。",
+ 'whatsappsync.restore_hint': "在新手机上恢复:安装 WhatsApp 之前,把最新副本中的 Databases 和 Backups 文件夹复制到 Android/media/com.whatsapp/WhatsApp,然后用同一个手机号恢复(如果开启了端到端加密备份,还需要密码或 64 位密钥)。",
+ 'whatsappsync.notif_progress': "正在备份 WhatsApp:{done} / {total}",
+ 'androidsync.dest_heading': "备份保存位置",
+ 'androidsync.dest_intro': "备份会保存到一个由你创建且只有你一个成员的群组的文件夹中。每种备份在那里都有自己的文件夹。",
+ 'androidsync.dest_summary': "{group} → {folder}",
+ 'androidsync.dest_dirs': "使用的文件夹:{dirs}",
+ 'androidsync.dest_change_confirm': "所有备份将在 {group} 的 {folder} 中重新开始。已发送的内容保留在原处。",
+ 'androidsync.dest_not_in_photos': "该群组的照片标签页不显示 {dir}:照片会被备份,但在该文件夹加入标签页的文件夹之前(群组设置)不会在那里显示。",
+ 'androidsync.dest_needed': "请先在本页顶部选择备份保存位置。",
+ 'androidsync.dest_save': "保存",
+ 'phonesync.turn_on': "开启",
+ 'photosync.fail_not_private': "照片备份已停止:有其他人加入了群组。",
};