mirror of
https://github.com/l0ng-ai/tty7.git
synced 2026-11-06 08:15:35 +00:00
fix(i18n): proofread the Chinese UI copy (#980)
Fix half-width punctuation, unify terminology (passphrase, Finder, server), quotes and dash styles, and rewrite the most literal translations. Point every language and the CLI at Settings → Integrations, the page's actual name, instead of Settings → Agents.
This commit is contained in:
@@ -242,6 +242,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Chinese UI copy reads like Chinese** (#980). Half-width `?` and `,` in the
|
||||
hard-reset confirmation, the passphrase, Finder and server naming used two
|
||||
words each, and three quote/dash styles were mixed; these are now one each,
|
||||
and the most literal translations (file errors, update and version-mismatch
|
||||
dialogs, SSH prompts) are rewritten. The fork error that pointed to
|
||||
"Settings → Agents" — a page that is called Integrations — now names it
|
||||
correctly in every language and in the `tty7` CLI.
|
||||
- **Return runs the top row after a search that found nothing.** Backspacing
|
||||
from a query with no results to one with some — or opening the search
|
||||
already filtered, as the New Tab menu's *Other Shells…* row does — left no row selected, so Return did nothing until an arrow key was
|
||||
|
||||
+2
-2
@@ -28,7 +28,7 @@
|
||||
|
||||
## 为什么
|
||||
|
||||
真正持有 shell 和 pane 的是后台常驻的 server,不是窗口。下面这些几乎都是这一个决定的结果。
|
||||
shell 和窗格由后台常驻的 server 持有,而不是窗口。下面这些特性几乎都源自这一设计。
|
||||
|
||||
- **性能**:吞吐是 Alacritty、Ghostty、Kitty 的两倍左右([基准测试](#基准测试))
|
||||
- **会话常驻**:退出应用或重启机器后,shell 和已支持的 agent 会话继续运行,不需要 tmux
|
||||
@@ -53,7 +53,7 @@ macOS、Windows、Linux 的原生构建都在 [**Releases**](https://github.com/
|
||||
|---|---|
|
||||
| **Agent 感知** | 逐 pane 识别 20 个 CLI agent · 状态点 · 通知 · 分支 + diff · 需要输入时托盘图标提醒 · 重启后续上会话 · 侧边栏按仓库分组 |
|
||||
| **CLI + Skills** | 安装包自带 `tty7` CLI · [agent skill](skills/tty7/SKILL.md) · `run` 转发命令输出并原样返回退出码 · `split` · `send` · `wait --until free` · `capture` |
|
||||
| **编辑器级输入** | 从历史推出影子建议 · Tab 补全附带说明 · 语法高亮 · 多行编辑 · 点击定位光标 · <kbd>⌃ R</kbd> 模糊搜索历史 |
|
||||
| **编辑器级输入** | 基于历史的内联补全建议 · Tab 补全附带说明 · 语法高亮 · 多行编辑 · 点击定位光标 · <kbd>⌃ R</kbd> 模糊搜索历史 |
|
||||
| **窗口** | 标签页与分屏 · <kbd>⌘ P</kbd> 随处搜索 · <kbd>⌘ F</kbd> 回滚搜索 · <kbd>⌘ J</kbd> 侧栏列出进程树和监听端口 · 13 套主题,也能写自己的 YAML 或导入 iTerm2 配色 · 输入法 |
|
||||
| **Shell 集成** | pane 启动时自动注入,不用你装什么 · 提示符边界 · 工作目录 · 退出码 · 命令跑完发通知 · 覆盖 zsh、bash、fish、PowerShell、WSL 和远程 pane |
|
||||
| **远程工作区** | 远端的文件、仓库、改动、diff、worktree、标签页和 pane · 从任意客户端重连,接着离开时的位置继续 |
|
||||
|
||||
@@ -1899,7 +1899,7 @@ fn agents_human(
|
||||
for diagnostic in diagnostics {
|
||||
let state = diagnostic.gap.describe();
|
||||
human.push_str(&format!(
|
||||
"{} is running, but its tty7 agent-status hooks are {state}. Open Settings → Agents to {} the hooks, then start a new {} session.\n",
|
||||
"{} is running, but its tty7 agent-status hooks are {state}. Open Settings → Integrations to {} the hooks, then start a new {} session.\n",
|
||||
diagnostic.agent.display_name(),
|
||||
diagnostic.gap.action(),
|
||||
diagnostic.agent.display_name(),
|
||||
@@ -2071,7 +2071,7 @@ fn hooks_summary(hooks: &[(HookAgent, HooksState)]) -> String {
|
||||
summary.push_str(&format!("; {missing} not installed"));
|
||||
}
|
||||
if installed.is_empty() || !outdated.is_empty() {
|
||||
summary.push_str(" (Settings → Agents)");
|
||||
summary.push_str(" (Settings → Integrations)");
|
||||
}
|
||||
summary
|
||||
}
|
||||
@@ -4734,7 +4734,7 @@ mod tests {
|
||||
r.human
|
||||
);
|
||||
assert!(
|
||||
r.human.contains("Settings → Agents"),
|
||||
r.human.contains("Settings → Integrations"),
|
||||
"say where the fix is: {}",
|
||||
r.human
|
||||
);
|
||||
|
||||
+1
-1
@@ -1722,7 +1722,7 @@ pub fn translate_en(key: L10nKey) -> &'static str {
|
||||
L10nKey::AppForkNoCommand => "tty7 has no fork command for {name}",
|
||||
L10nKey::AppForkLocalOnly => "{name} sessions can only be forked from a local pane",
|
||||
L10nKey::AppForkNoSessionId => {
|
||||
"tty7 hasn't seen a {name} session id in this pane — install its hooks in Settings → Agents"
|
||||
"tty7 hasn't seen a {name} session id in this pane — install its hooks in Settings → Integrations"
|
||||
}
|
||||
L10nKey::AppForkSessionIdNotToken => "{name}'s session id isn't a plain token",
|
||||
L10nKey::AppForkMidTurn => "{name} is mid-turn — the fork won't include the turn in flight",
|
||||
|
||||
+1
-1
@@ -1765,7 +1765,7 @@ pub fn translate_ja(key: L10nKey) -> Option<&'static str> {
|
||||
"{name} のセッションはローカルペインからしかフォークできません"
|
||||
}
|
||||
L10nKey::AppForkNoSessionId => {
|
||||
"tty7 はこのペインで {name} のセッション ID を確認できていません — 設定 → エージェントでフックをインストールしてください"
|
||||
"tty7 はこのペインで {name} のセッション ID を確認できていません — 設定 → 連携でフックをインストールしてください"
|
||||
}
|
||||
L10nKey::AppForkSessionIdNotToken => {
|
||||
"{name} のセッション ID はプレーンなトークンではありません"
|
||||
|
||||
+51
-59
@@ -27,13 +27,13 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::SettingsShortcutsHintTmux => {
|
||||
"tmux 预设:窗格与标签页操作使用前缀键。点击快捷键即可修改;Esc 取消,⌫ 清除。"
|
||||
}
|
||||
L10nKey::SettingsShortcutConflict => "{keys} 已被「{action}」使用,替换后将从那里移除。",
|
||||
L10nKey::SettingsShortcutConflict => "{keys} 已被“{action}”使用,替换后将从那里移除。",
|
||||
L10nKey::SettingsReplace => "替换",
|
||||
L10nKey::SettingsNoActionsMatch => "没有与「{query}」匹配的操作",
|
||||
L10nKey::SettingsNoActionsMatch => "没有与“{query}”匹配的操作",
|
||||
L10nKey::SettingsSearchShortcuts => "搜索操作或按键",
|
||||
L10nKey::SettingsHostsDesc => "最近使用的主机。搜索可找到任意已保存的主机。",
|
||||
L10nKey::SettingsAddHost => "添加主机",
|
||||
L10nKey::SettingsNoHostsMatch => "没有与「{query}」匹配的主机",
|
||||
L10nKey::SettingsNoHostsMatch => "没有与“{query}”匹配的主机",
|
||||
L10nKey::SettingsHostsFromFiles => "{count} 台主机,来自 {files} 个来源",
|
||||
L10nKey::SettingsMoreHosts => "还有 {count} 台主机",
|
||||
L10nKey::SettingsShowRecentOnly => "只显示最近",
|
||||
@@ -58,7 +58,7 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::SettingsMachineRemoteDesc => "通过当前与 {name} 的连接安装。",
|
||||
L10nKey::SettingsAgentsInstalledSummary => "已安装 {count} / {total}",
|
||||
L10nKey::SettingsNoAgentsInstalled => "这台机器上还没有安装 Agent 钩子。",
|
||||
L10nKey::SettingsNoAgentsMatch => "没有与「{query}」匹配的 Agent",
|
||||
L10nKey::SettingsNoAgentsMatch => "没有与“{query}”匹配的 Agent",
|
||||
L10nKey::SettingsMoreAgents => "还有 {count} 个可用 Agent",
|
||||
L10nKey::SettingsShowInstalledOnly => "只显示已安装",
|
||||
L10nKey::SettingsWorking => "处理中…",
|
||||
@@ -221,7 +221,7 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
"模糊半透明窗口背后的内容。需要合成器支持——KDE Plasma 可以;GNOME 和裸 X11 下窗口只会变透明。"
|
||||
}
|
||||
}
|
||||
L10nKey::SettingsBlurAutoDesc => "模糊窗口背后的内容,仅限「自动」材质。",
|
||||
L10nKey::SettingsBlurAutoDesc => "模糊窗口背后的内容,仅限“自动”材质。",
|
||||
L10nKey::SettingsBackdrop => "背景材质",
|
||||
L10nKey::SettingsBackdropDesc => "半透明窗口背后的原生背景材质。",
|
||||
L10nKey::SettingsSearchBackdropKeywords => {
|
||||
@@ -376,18 +376,14 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::SettingsTestConnection => "测试",
|
||||
L10nKey::SettingsTestRunning => "正在测试连接…",
|
||||
L10nKey::SettingsTestReached => "已连接并通过认证,用时 {time}。",
|
||||
L10nKey::SettingsTestNeedsPassword => "已连到服务器 —— 它要求输入密码,点连接后再输入。",
|
||||
L10nKey::SettingsTestNeedsPassphrase => {
|
||||
"已连到服务器 —— 私钥要求输入口令,点连接后再输入。"
|
||||
}
|
||||
L10nKey::SettingsTestNeedsPassword => "已连到服务器:它要求输入密码,点连接后再输入。",
|
||||
L10nKey::SettingsTestNeedsPassphrase => "已连到服务器:私钥要求输入口令,点连接后再输入。",
|
||||
L10nKey::SettingsTestNeedsInteractive => {
|
||||
"已连到服务器 —— 它要求交互式验证(如 2FA),点连接后再作答。"
|
||||
}
|
||||
L10nKey::SettingsTestNeedsHostKey => {
|
||||
"已连到服务器 —— 它的主机密钥还没被接受,先连一次确认。"
|
||||
"已连到服务器:它要求交互式验证(如 2FA),点连接后再作答。"
|
||||
}
|
||||
L10nKey::SettingsTestNeedsHostKey => "已连到服务器:它的主机密钥还没被接受,先连一次确认。",
|
||||
L10nKey::SettingsTestHostKeyChanged => {
|
||||
"已连到服务器 —— 它的主机密钥和上次不一样了,先连一次核对这次变更。"
|
||||
"已连到服务器:它的主机密钥和上次不一样了,先连一次核对这次变更。"
|
||||
}
|
||||
L10nKey::SettingsTestFailed => "没连上:{reason}",
|
||||
L10nKey::SettingsProxyPortInvalid => "端口必须在 1-65535 之间——只写主机则使用默认端口。",
|
||||
@@ -426,7 +422,7 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::SettingsLoginScriptsDesc => "shell 打开后发送的命令,每行一个。",
|
||||
L10nKey::SettingsSkipBanner => "跳过横幅",
|
||||
L10nKey::SettingsSkipBannerDesc => "抑制服务器登录横幅。",
|
||||
L10nKey::SettingsDefaultFollowsDefaults => "默认跟随默认设置,当前为 {value}。",
|
||||
L10nKey::SettingsDefaultFollowsDefaults => "沿用全局默认设置(当前为 {value})。",
|
||||
L10nKey::SettingsValueOn => "开",
|
||||
L10nKey::SettingsValueOff => "关",
|
||||
L10nKey::SettingsDefault => "默认",
|
||||
@@ -481,14 +477,12 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::SettingsOpenFilesSystem => "默认应用",
|
||||
L10nKey::SettingsOpenFilesCommand => "自定义命令",
|
||||
L10nKey::SettingsOpenFilesModeDesc => {
|
||||
"{modifier}+点击 文件链接时用什么打开。只有内置编辑器能跳到指定行、打开远程文件。"
|
||||
"{modifier}+点击文件链接时的打开方式。只有内置编辑器能跳到指定行、打开远程文件。"
|
||||
}
|
||||
L10nKey::LinkFileNotUnder => "{path} —— {dir} 下没有这个文件",
|
||||
L10nKey::LinkFileNoDirectory => {
|
||||
"{path} —— 这个窗格没有报告自己在哪个目录,相对路径无从算起"
|
||||
}
|
||||
L10nKey::LinkFileMissing => "{path} —— 这个路径下什么也没有",
|
||||
L10nKey::LinkDirOutsideTree => "{path} —— 它在另一台机器上,也不在文件面板打开的任何目录里",
|
||||
L10nKey::LinkFileNotUnder => "{path}:{dir} 下没有这个文件",
|
||||
L10nKey::LinkFileNoDirectory => "{path}:当前窗格未上报工作目录,无法解析相对路径",
|
||||
L10nKey::LinkFileMissing => "{path}:路径不存在",
|
||||
L10nKey::LinkDirOutsideTree => "{path}:它在另一台机器上,也不在文件面板打开的任何目录里",
|
||||
L10nKey::OpenFilesWith => "打开文件方式",
|
||||
L10nKey::SettingsOpenFilesWithDesc => "可用 {path}、{line}、{column},留空用默认应用。",
|
||||
L10nKey::SettingsBellModeOff => "关",
|
||||
@@ -502,7 +496,7 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
"在输入行上提供选择、撤销和菜单。关闭后交还给 ZLE、readline 或 fish。"
|
||||
}
|
||||
L10nKey::SettingsNeedsPromptEditor => {
|
||||
"需要提示符编辑器:它关闭时,这个按键本就归 shell 所有。"
|
||||
"依赖提示符编辑器:关闭提示符编辑器时,此按键由 shell 处理。"
|
||||
}
|
||||
L10nKey::SettingsTabCompletion => "Tab 补全",
|
||||
L10nKey::SettingsTabCompletionDesc => "Tab 打开 tty7 的补全菜单,关闭后交给 shell。",
|
||||
@@ -577,7 +571,7 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::SettingsDiffPreviewFromCounts => "从侧栏计数打开 diff 预览",
|
||||
L10nKey::SettingsDiffPreviewFromCountsDesc => "点击行上的 +N −N 打开 diff。",
|
||||
L10nKey::SettingsSshTabTitle => "SSH 标签页标题",
|
||||
L10nKey::SettingsSshTabTitleDesc => "SSH 标签页以什么命名。",
|
||||
L10nKey::SettingsSshTabTitleDesc => "SSH 标签页标题的命名方式。",
|
||||
L10nKey::SettingsSshTabTitleDynamic => "动态",
|
||||
L10nKey::SettingsSshTabTitleProfileName => "配置名称",
|
||||
L10nKey::SettingsSshTabTitleHostname => "主机名",
|
||||
@@ -638,7 +632,7 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::SettingsUpdateDownloadingPercent => "正在下载更新… {percent}%,共 {size}",
|
||||
L10nKey::SettingsUpdateDownloadingBytes => "正在下载更新… 已下载 {received}",
|
||||
L10nKey::SettingsUpdateVerifying => "正在校验下载的更新…",
|
||||
L10nKey::SettingsUpdateInstalling => "正在通过更新重新启动…",
|
||||
L10nKey::SettingsUpdateInstalling => "正在重启以应用更新…",
|
||||
L10nKey::SettingsUpdateCheckNow => "立即检查",
|
||||
L10nKey::SettingsUpdateCancel => "取消下载",
|
||||
L10nKey::SettingsUpdateRetry => "重试",
|
||||
@@ -667,7 +661,7 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
"tty7 {version} 已发布,你现在是 {current}。安装会重启应用和 tty7 server:窗格里的进程会被结束,标签页和布局以全新的 shell 恢复。"
|
||||
}
|
||||
L10nKey::UpdateDialogDetailManual => "tty7 {version} 已发布,你现在是 {current}。{hint}",
|
||||
L10nKey::UpdateDialogCannotSelfUpdate => "这份安装无法自行更新。",
|
||||
L10nKey::UpdateDialogCannotSelfUpdate => "当前安装方式不支持自动更新。",
|
||||
L10nKey::UpdateDialogLater => "以后再说",
|
||||
L10nKey::UpdateDialogNextLaunch => "下次启动时安装",
|
||||
L10nKey::UpdateDialogNeedsElevation => {
|
||||
@@ -677,7 +671,7 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::SettingsUpdatePrepareFailed => "更新失败:{error}",
|
||||
L10nKey::SettingsUpdateLaunchFailed => "无法启动安装程序:{error}",
|
||||
L10nKey::SettingsUpdateUnsupportedMacos => {
|
||||
"当前副本不在可写的 tty7.app 包里,无法自我替换。请把 tty7 移到“应用程序”,或打开发布页面更新。"
|
||||
"当前应用不在可写的 tty7.app 包内,无法自动更新。请把 tty7 移到“应用程序”,或打开发布页面更新。"
|
||||
}
|
||||
L10nKey::SettingsUpdateUnsupportedLinux => {
|
||||
"发布版本中没有适用于该架构的 Linux 包。请自行从源码构建,或使用包管理器。"
|
||||
@@ -1059,17 +1053,17 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::FileDropTooDeep => "文件夹嵌套超过 {n} 层。",
|
||||
L10nKey::FileDropTooLarge => "超过 {limit} MB,请改用 SFTP 传输。",
|
||||
L10nKey::FileDropNoWorkingName => "旁边找不到可用的临时名称,无法先复制再替换。",
|
||||
L10nKey::FileDropLeftAside => "新副本没能就位,原来的东西现在在同一目录下叫“{name}”。",
|
||||
L10nKey::FileDropLeftAside => "未能完成替换,原有项目已在同一目录下重命名为“{name}”。",
|
||||
L10nKey::FileDropReplaceTitle => "替换“{name}”?",
|
||||
L10nKey::FileDropReplaceManyTitle => "替换 {n} 个项目?",
|
||||
L10nKey::FileDropReplaceBody => "这个目录下已经有同名的东西了,替换后无法撤销。",
|
||||
L10nKey::FileDropReplaceBody => "当前目录下已存在同名项目,替换后无法撤销。",
|
||||
L10nKey::FileDropReplace => "替换",
|
||||
L10nKey::FileDropFailed => "无法复制 {name}",
|
||||
L10nKey::FileDropFailedMany => "无法复制 {name},另有 {n} 个也失败了",
|
||||
L10nKey::SshPromptNewKey => "新 {fingerprint}",
|
||||
L10nKey::SshPromptOldKey => "旧 {old_fingerprint}",
|
||||
L10nKey::SshPromptHostKeyNewAlgorithm => {
|
||||
"你已经通过一把 {previous_algorithm} 密钥认识这台主机。这是一把新的 {algorithm} 密钥,并不是用来替换那一把的。"
|
||||
"此前已记录这台主机的 {previous_algorithm} 密钥。这是一把新的 {algorithm} 密钥,不会替换原有密钥。"
|
||||
}
|
||||
L10nKey::SshPromptTypeYesToOverride => "输入 yes 才能启用“覆盖”。",
|
||||
L10nKey::EditorCantOpen => "无法打开 {path}:{e}",
|
||||
@@ -1117,7 +1111,7 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::PanelAgentWorking => "进行中",
|
||||
L10nKey::PanelAgentWaiting => "等待中",
|
||||
L10nKey::PanelAgentDone => "已完成",
|
||||
L10nKey::PanelRevealInFinder => "在 Finder 中显示",
|
||||
L10nKey::PanelRevealInFinder => "在访达中显示",
|
||||
L10nKey::PanelOpenFolder => "打开文件夹",
|
||||
L10nKey::PanelOpenInBrowser => "在浏览器中打开",
|
||||
L10nKey::ScmGroupMerge => "合并冲突",
|
||||
@@ -1145,7 +1139,7 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::ScmTimeMonths => "{n}个月",
|
||||
L10nKey::ScmTimeYears => "{n}年",
|
||||
L10nKey::ScmResetHardConfirm => {
|
||||
"把分支重置到这个提交?之后的提交会从分支上消失,未提交的更改会被丢弃。"
|
||||
"把分支重置到这个提交?之后的提交会从分支上消失,未提交的更改会被丢弃。"
|
||||
}
|
||||
L10nKey::ScmReset => "重置",
|
||||
L10nKey::ScmChipStaged => "已暂存",
|
||||
@@ -1158,7 +1152,7 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::ScmDiscardConfirm => "放弃对 {path} 的更改?此操作无法撤销。",
|
||||
L10nKey::ScmOpenConflict => "解决冲突",
|
||||
L10nKey::ScmMarkResolved => "标记为已解决",
|
||||
L10nKey::ScmUnrepresentablePath => "该路径不是合法的 UTF-8,无法传给 git —— 仅可查看。",
|
||||
L10nKey::ScmUnrepresentablePath => "该路径不是合法的 UTF-8,无法传给 git,仅可查看。",
|
||||
L10nKey::ScmPublishBranch => "发布分支",
|
||||
L10nKey::ScmDetached => "游离头指针",
|
||||
L10nKey::ScmPushDetached => "HEAD 游离——请先切换到一个分支再推送",
|
||||
@@ -1204,7 +1198,7 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
"放弃所有未暂存的改动和未跟踪的文件?已暂存的改动会保留。此操作无法撤销。"
|
||||
}
|
||||
L10nKey::ScmAmendConfirm => {
|
||||
"修补上一次提交?它会被一个新提交取代,已经拿到旧提交的人需要自行处理。"
|
||||
"修补上一次提交?它会被一个新提交取代,已经获取旧提交的协作者需要自行同步。"
|
||||
}
|
||||
L10nKey::ScmOpMerge => "合并中",
|
||||
L10nKey::ScmOpRebase => "变基中",
|
||||
@@ -1335,7 +1329,7 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::RemoteInstallBytes => "字节",
|
||||
L10nKey::RemoteMismatchTitle => "更新“{machine}”上的 tty7 server?",
|
||||
L10nKey::RemoteMismatchDetail => {
|
||||
"{machine} 上跑的是 server {running},此客户端({wanted})不认它的协议。匹配的 server 已经装好了,但你的会话在正在跑的那个上面。\n\n{replace_server}\u{2003}换成 {wanted},并结束它托管的所有会话。\n{cancel}\u{2003}保持 {machine} 现状。此窗口不会连接。"
|
||||
"{machine} 上正在运行的 server({running})与此客户端({wanted})的协议不兼容。匹配的 server 已经安装,但你的会话仍在当前运行的 server 上。\n\n{replace_server}\u{2003}换成 {wanted},并结束它托管的所有会话。\n{cancel}\u{2003}保持 {machine} 现状。此窗口不会连接。"
|
||||
}
|
||||
L10nKey::RemoteMismatchReplaceServer => "更新 server",
|
||||
L10nKey::RemoteMismatchDowngradeServer => "替换 server",
|
||||
@@ -1352,17 +1346,17 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::RemoteDaemonStartFailed => "无法启动 tty7 本地 server:{error}",
|
||||
L10nKey::RemoteDaemonUnreachable => "无法连接到 tty7 本地 server:{error}",
|
||||
L10nKey::RemoteDaemonTooOld => {
|
||||
"本机的 tty7 守护进程版本较旧,无法重启 {machine} 上的 server。请退出 tty7(这会停止守护进程)再打开,然后重试。"
|
||||
"本机的 tty7 本地 server 版本较旧,无法重启 {machine} 上的 server。请退出 tty7(这会停止本地 server)再打开,然后重试。"
|
||||
}
|
||||
L10nKey::RemoteProfileMissing => "该已保存的 SSH 主机配置已不存在",
|
||||
L10nKey::RemoteAliasMissing => "“{alias}”已不再位于 ~/.ssh/config 中",
|
||||
L10nKey::RemoteWslNoSsh => "WSL 工作区没有 SSH 连接",
|
||||
L10nKey::RemoteLocalStdioNoSsh => "本地 --stdio 工作区没有 SSH 连接",
|
||||
L10nKey::RemoteHostNotTty7 => "{machine} 已响应,但并非作为 tty7 server:{error}",
|
||||
L10nKey::RemoteHostNotTty7 => "{machine} 已响应,但它不是 tty7 server:{error}",
|
||||
L10nKey::RemoteWorkspaceListFailed => "已连接到 {machine},但其工作区列表获取失败:{error}",
|
||||
L10nKey::RemoteServerRestartFailed => "无法重启 {machine} 上的 tty7 server:{error}",
|
||||
L10nKey::RemoteNoRouteToHost => "tty7 已无法到达 {machine}",
|
||||
L10nKey::RemoteMachineTreeUnexpectedReply => "server 用 {reply} 回复了机器树请求",
|
||||
L10nKey::RemoteMachineTreeUnexpectedReply => "获取机器树时收到意外响应:{reply}",
|
||||
L10nKey::RemoteMismatchVersionFromExe => "{version}(来自 {exe})",
|
||||
L10nKey::AppNoRunningCodingAgent => {
|
||||
"未找到运行中的编码 agent——请先在某个窗格中启动一个(claude、codex 等)。"
|
||||
@@ -1377,9 +1371,7 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::SwitcherDisconnect => "断开连接",
|
||||
L10nKey::SwitcherEditHost => "编辑主机…",
|
||||
L10nKey::SwitcherSaveAsHost => "保存为 SSH 主机…",
|
||||
L10nKey::SshSaveDroppedJumpHost => {
|
||||
"跳板机没有带过来 —— 主机配置的跳板必须是另一个已保存的主机。"
|
||||
}
|
||||
L10nKey::SshSaveDroppedJumpHost => "未导入跳板机设置:跳板机必须是另一个已保存的主机。",
|
||||
L10nKey::SwitcherOpenInNewWindow => "在新窗口中打开",
|
||||
L10nKey::SwitcherRename => "重命名…",
|
||||
L10nKey::SwitcherPickAWorkspace => "选一个工作区查看它的标签页。",
|
||||
@@ -1406,7 +1398,7 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::SwitcherFormCreateHint => "Enter 创建 · Esc 返回",
|
||||
L10nKey::SwitcherFormPickHint => "↑↓ 选择 · Enter 确定 · Esc 收起",
|
||||
L10nKey::SshPromptPasswordFor => "{user}@{host} 的密码",
|
||||
L10nKey::SshPromptPassphraseFor => "{key_path} 的密码短语",
|
||||
L10nKey::SshPromptPassphraseFor => "{key_path} 的口令",
|
||||
L10nKey::SshPromptTwoFactor => "双因素认证",
|
||||
L10nKey::SshPromptUnknownHost => "未知主机 {host}",
|
||||
L10nKey::SshPromptHostKeyChanged => "主机密钥已更改——可能存在中间人攻击",
|
||||
@@ -1416,13 +1408,13 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::SshPromptSubmit => "提交",
|
||||
L10nKey::HostOpsError => "{context}:{error}",
|
||||
L10nKey::IoDenied => "没有权限。",
|
||||
L10nKey::IoGone => "它已经不在了。",
|
||||
L10nKey::IoGone => "文件或目录已不存在。",
|
||||
L10nKey::IoNoSpace => "磁盘没有空间了。",
|
||||
L10nKey::IoReadOnly => "那个位置是只读的。",
|
||||
L10nKey::IoBusy => "有别的程序正占着它。",
|
||||
L10nKey::IoReadOnly => "目标位置是只读的。",
|
||||
L10nKey::IoBusy => "它正被其他程序占用。",
|
||||
L10nKey::IoTimedOut => "对方没有在规定时间内响应。",
|
||||
L10nKey::TreeWindowOpenedEmpty => {
|
||||
"tty7 server 没有交出这个窗口的标签页,所以窗口是空的。什么都没丢,它一响应就会回来。如果一直不回来,在命令面板里执行「重启 tty7 server」。"
|
||||
"tty7 server 尚未返回这个窗口的标签页,所以窗口暂时是空的。会话没有丢失,server 响应后会自动恢复;如果长时间没有恢复,请在命令面板中执行“重启 tty7 server”。"
|
||||
}
|
||||
L10nKey::CmdGroupTabsPanes => "标签页与窗格",
|
||||
L10nKey::CmdGroupWorkspaces => "工作区",
|
||||
@@ -1558,16 +1550,16 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::AppRestartServerTitle => "重启 tty7 server?",
|
||||
L10nKey::AppRestartServerFailed => "无法重启 tty7 server:{error}",
|
||||
L10nKey::AppRestartServerMismatchDetail => {
|
||||
"tty7 server 用协议 {protocol}(构建 v{build}),此应用用 {ours},标签页取不出来。\n\n退出:什么都不变,tty7 server 和 shell 继续运行。\n重启:标签页带全新 shell 回来,现在跑着的东西会被杀掉。"
|
||||
"tty7 server 的协议为 {protocol}(构建 v{build}),此应用为 {ours},无法获取标签页。\n\n退出:什么都不变,tty7 server 和 shell 继续运行。\n重启:标签页会以全新的 shell 恢复,当前运行的程序会被终止。"
|
||||
}
|
||||
L10nKey::AppRestartServerDialectDetail => {
|
||||
"tty7 server 用 control 方言 v{dialect}(构建 v{build}),此应用用 v{ours},每个窗口都开成空的。\n\n退出:什么都不变,tty7 server 和 shell 继续运行。\n重启:标签页带全新 shell 回来,现在跑着的东西会被杀掉。"
|
||||
"tty7 server 的控制协议版本为 v{dialect}(构建 v{build}),此应用为 v{ours},版本不匹配,每个窗口都会打开为空。\n\n退出:什么都不变,tty7 server 和 shell 继续运行。\n重启:标签页会以全新的 shell 恢复,当前运行的程序会被终止。"
|
||||
}
|
||||
L10nKey::AppRestartServerDialectNewerDetail => {
|
||||
"tty7 server 用 control 方言 v{dialect}(构建 v{build}),此应用用 v{ours},每个窗口都开成空的。\n\n退出并装上更新的构建:真正的解法,shell 全都还在。\n重启:标签页带全新 shell 回来,现在跑着的东西会被杀掉。"
|
||||
"tty7 server 的控制协议版本为 v{dialect}(构建 v{build}),此应用为 v{ours},版本不匹配,每个窗口都会打开为空。\n\n退出并安装更新的版本(推荐):所有 shell 都会保留。\n重启:标签页会以全新的 shell 恢复,当前运行的程序会被终止。"
|
||||
}
|
||||
L10nKey::AppRestartServerOldDetail => {
|
||||
"tty7 server 早于版本握手,此应用无从得知它说的是什么。\n\n退出:什么都不变,tty7 server 和 shell 继续运行。\n重启:标签页带全新 shell 回来,现在跑着的东西会被杀掉。"
|
||||
"当前运行的 tty7 server 版本过旧,不支持版本握手,此应用无法判断它的协议版本。\n\n退出:什么都不变,tty7 server 和 shell 继续运行。\n重启:标签页会以全新的 shell 恢复,当前运行的程序会被终止。"
|
||||
}
|
||||
L10nKey::AppRestart => "重启",
|
||||
L10nKey::AppRestartServerNoServer => {
|
||||
@@ -1599,8 +1591,8 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::AppReopenTabFailed => "无法重新打开标签页:没有启动终端",
|
||||
L10nKey::AppOpenTerminalFailed => "无法打开终端:{error}",
|
||||
L10nKey::AppTabsNotRestored => "上次的 {count} 个标签页没能重新打开",
|
||||
L10nKey::AppFullscreenEntered => "已进入全屏 —— 按 {key} 退出",
|
||||
L10nKey::AppFullscreenEnteredNoKey => "已进入全屏 —— 窗口按钮在退出前会一直隐藏",
|
||||
L10nKey::AppFullscreenEntered => "已进入全屏,按 {key} 退出",
|
||||
L10nKey::AppFullscreenEnteredNoKey => "已进入全屏,窗口按钮在退出前会一直隐藏",
|
||||
L10nKey::LaunchWorkspacesLeftRunning => {
|
||||
"只恢复了这个窗口——还有 {count} 个工作区在后台运行,可从侧边栏重新打开。"
|
||||
}
|
||||
@@ -1615,9 +1607,9 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::AppForkNoCommand => "tty7 没有用于 {name} 的 fork 命令",
|
||||
L10nKey::AppForkLocalOnly => "{name} 会话只能从本地窗格 fork",
|
||||
L10nKey::AppForkNoSessionId => {
|
||||
"tty7 尚未在此窗格中看到 {name} 的会话 ID——请在设置 → Agents 中安装其 hook"
|
||||
"tty7 尚未在此窗格中看到 {name} 的会话 ID,请在“设置 → 集成”中安装其 hook"
|
||||
}
|
||||
L10nKey::AppForkSessionIdNotToken => "{name} 的会话 ID 不是普通令牌",
|
||||
L10nKey::AppForkSessionIdNotToken => "{name} 的会话 ID 格式异常(不是单个连续字符串)",
|
||||
L10nKey::AppForkMidTurn => "{name} 正在处理中——fork 不会包含进行中的这一轮",
|
||||
L10nKey::AppTabNoWorkingDirectory => "此标签页还没有工作目录",
|
||||
L10nKey::AppNothingSelected => "未选择任何内容——请先选择一些终端输出。",
|
||||
@@ -1668,7 +1660,7 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::AppAgentHooksHomeDirUnresolved => "无法解析主目录",
|
||||
L10nKey::AppAgentHooksInstalled => "已安装",
|
||||
L10nKey::AppAgentHooksInstalledEnableCodexThere => {
|
||||
"已安装 —— 需要在那台机器上运行一次 `codex features enable hooks`"
|
||||
"已安装,还需要在那台机器上运行一次 `codex features enable hooks`"
|
||||
}
|
||||
L10nKey::AppAgentHooksInstalledCodexEnableFailed => {
|
||||
"已安装,但无法运行 `codex features enable hooks`({error})—— 请手动运行一次"
|
||||
@@ -1716,10 +1708,10 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
"tty7 已更新。server 可原地替换,shell 不受影响;只有内置 SSH 的窗格会断开。"
|
||||
}
|
||||
L10nKey::AppRestartServerBodyInPlace => {
|
||||
"tty7 server 会原地把自己换成当前这个版本:shell 继续运行,窗口稍后自动连回去。用 tty7 内置 SSH 客户端的窗格除外——那些连接会断开,需要重新打开。"
|
||||
"tty7 server 会原地更新到当前版本:shell 继续运行,窗口稍后自动重连。用 tty7 内置 SSH 客户端的窗格除外——那些连接会断开,需要重新打开。"
|
||||
}
|
||||
L10nKey::PaneRestoredScreenBanner => {
|
||||
"已恢复的画面 —— 下面是新的 shell,上面的内容都已不在运行"
|
||||
"已恢复的画面:下面是新的 shell,上面的内容都已不在运行"
|
||||
}
|
||||
L10nKey::SettingsPerPaneHistory => "各窗格使用独立命令历史",
|
||||
L10nKey::SettingsPerPaneHistoryDescription => "↑ 只翻本窗格的历史,仅限 bash 和 zsh。",
|
||||
@@ -1837,7 +1829,7 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::TabTooltipHideSidebar => "隐藏侧栏",
|
||||
L10nKey::TabTooltipHideDetailPanel => "隐藏详情面板",
|
||||
L10nKey::TabTooltipShowDetailPanel => "显示详情面板",
|
||||
L10nKey::TabTooltipZoomed => "窗格已缩放 — 其他窗格已隐藏",
|
||||
L10nKey::TabTooltipZoomed => "窗格已缩放,其他窗格已隐藏",
|
||||
L10nKey::TabMenuLocalShells => "本地",
|
||||
L10nKey::TabMenuAddHost => "添加 SSH 主机…",
|
||||
L10nKey::TabMenuAllHosts => "所有 SSH 主机…",
|
||||
@@ -1870,7 +1862,7 @@ pub fn translate_zh(key: L10nKey) -> Option<&'static str> {
|
||||
L10nKey::TabContextMarkUnread => "标记为未读",
|
||||
L10nKey::TabContextHibernate => "休眠",
|
||||
L10nKey::TabContextWake => "唤醒",
|
||||
L10nKey::TabTooltipAsleep => "已休眠 — 选中即可唤醒",
|
||||
L10nKey::TabTooltipAsleep => "已休眠,选中即可唤醒",
|
||||
L10nKey::TabWakeFailed => "无法唤醒标签页:其中的窗格都无法启动",
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user