Files
shell-rs/locales/cli.yml
XuzandClaude Opus 5.5 e09adeefb7 外部 CLI 新增 exec --terminal:在已打开的终端里执行命令
只允许登录一次的堡垒机(外部连接)上,exec 重新登录会被拒绝,另开通道又会结束会话。
--terminal 把命令打进这台主机在 ShellRS 里已打开的远程终端:先发 Ctrl-C,探测出
交互 shell(bash、dash、busybox ash)后输入命令行,经 OSC 标记取回输出、退出码和
执行上下文(--json 的 context)。不做忙碌检测,只拒绝全屏程序和同一终端已有一次运行。
外部连接上普通 exec 登录失败时,说明里提示改用 --terminal。

shells.yml 在 Docker 里对 bash 4.2–5.2、dash、busybox ash 跑真实终端测试。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 16:16:30 +08:00

433 lines
18 KiB
YAML
Raw Permalink 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.
_version: 2
# 外部 CLI: what the `shellrs` command prints, and the messages the app
# sends back to it. CLI output uses plain ASCII quotes and apostrophes, so
# it copies into a shell unchanged; the texts shown in the app's window
# (the settings page, notifications) use “ ” and ’ like the rest of the UI.
# The command could not reach the app.
cli.client.not_running:
zh-CN: ShellRS 未运行:请先打开 ShellRS,并在 设置 → 外部 CLI 中打开「启用外部 CLI」
en: ShellRS isn't running. Open ShellRS and turn on Enable external CLI in Settings → External CLI.
cli.client.broken:
zh-CN: 与 ShellRS 的连接意外中断:%{error}
en: "The connection to ShellRS broke off: %{error}"
cli.client.no_permission:
zh-CN: 没有权限连接 ShellRS:Agent 可能运行在沙箱中,需要允许它访问本机的进程间通信
en: No permission to connect to ShellRS. The agent may be running in a sandbox; allow it local interprocess communication.
cli.client.foreign_pipe:
zh-CN: 外部 CLI 的管道不属于当前用户,已拒绝连接
en: The external CLI's pipe belongs to another user, so the connection was refused.
cli.client.older_app:
zh-CN: 正在运行的 ShellRS 不认识这个命令:请把 ShellRS 升级到最新版本,然后重新启动它
en: The running ShellRS doesn't know this command. Update ShellRS to the latest version, then restart it.
# Also the app's notification when the server cannot start.
cli.unsupported:
zh-CN: 此系统暂不支持外部 CLI
en: The external CLI is not supported on this system.
# Reading the command line and stdin.
cli.exec.empty:
zh-CN: 命令不能为空
en: The command is empty.
cli.exec.bad_json:
zh-CN: 标准输入不是 %{form} 形式的 JSON:%{error}
en: "The input on stdin isn't JSON of the form %{form}: %{error}"
cli.json.from_terminal:
zh-CN: 请从标准输入传入 JSON,例如 %{example}
en: "Pass the JSON on stdin, for example: %{example}"
cli.json.not_json:
zh-CN: 标准输入不是 JSON:%{error}
en: "The input on stdin isn't JSON: %{error}"
cli.json.invalid:
zh-CN: JSON 有误:%{error}
en: "The JSON is invalid: %{error}"
cli.stdin.unreadable:
zh-CN: 无法读取标准输入:%{error}
en: "Couldn't read stdin: %{error}"
cli.path.unresolvable:
zh-CN: 无法解析路径 %{path}:%{error}
en: "Couldn't resolve the path %{path}: %{error}"
# `hosts list` and `credentials list`: the column headers, upper case in
# English as command line tables have them.
cli.column.id:
zh-CN: ID
en: ID
cli.column.name:
zh-CN: 名称
en: NAME
cli.column.group:
zh-CN: 分组
en: GROUP
cli.column.address:
zh-CN: 地址
en: ADDRESS
cli.column.os:
zh-CN: 系统
en: SYSTEM
cli.column.kind:
zh-CN: 类型
en: TYPE
cli.column.user:
zh-CN: 用户名
en: USERNAME
cli.column.hosts:
zh-CN: 主机数
en: HOSTS
cli.hosts.none:
zh-CN: 没有匹配的主机
en: No matching hosts
cli.credentials.none:
zh-CN: 没有匹配的凭据
en: No matching credentials
# The group of a host connected to without saving.
cli.group.not_saved:
zh-CN: (未保存)
en: (not saved)
# `hosts show` and `credentials show`: the labels, then the values.
cli.field.id:
zh-CN: ID
en: ID
cli.field.name:
zh-CN: 名称
en: Name
cli.field.group:
zh-CN: 分组
en: Group
cli.field.address:
zh-CN: 地址
en: Address
cli.field.auth:
zh-CN: 认证
en: Authentication
cli.field.route:
zh-CN: 连接方式
en: Connection
cli.field.os:
zh-CN: 系统
en: System
cli.field.notes:
zh-CN: 备注
en: Notes
cli.field.kind:
zh-CN: 类型
en: Type
cli.field.user:
zh-CN: 用户名
en: Username
cli.field.private_key:
zh-CN: 私钥
en: Private key
cli.field.passphrase:
zh-CN: 口令
en: Passphrase
cli.field.hosts:
zh-CN: 主机
en: Hosts
cli.show.saved:
zh-CN: "%{label}(已保存)"
en: "%{label} (saved)"
cli.show.not_saved:
zh-CN: "%{label}(未保存)"
en: "%{label} (not saved)"
cli.auth.password:
zh-CN: 密码
en: Password
cli.auth.credential:
zh-CN: 凭据 %{id}
en: Credential %{id}
cli.auth.no_password:
zh-CN: 无密码
en: No password
cli.route.direct:
zh-CN: 直接连接
en: Direct
cli.route.jump:
zh-CN: SSH 跳板 %{hosts}
en: Jump hosts %{hosts}
cli.route.deleted_host:
zh-CN: (已删除的主机)
en: (deleted host)
cli.route.http:
zh-CN: HTTP 代理 %{address}
en: HTTP proxy %{address}
cli.route.socks5:
zh-CN: SOCKS5 代理 %{address}
en: SOCKS5 proxy %{address}
cli.route.password_saved:
zh-CN: "%{proxy}(密码已保存)"
en: "%{proxy} (password saved)"
cli.route.password_not_saved:
zh-CN: "%{proxy}(密码未保存)"
en: "%{proxy} (password not saved)"
cli.kind.password:
zh-CN: 密码
en: Password
cli.kind.key:
zh-CN: 密钥
en: Key
cli.kind.agent:
zh-CN: SSH Agent
en: SSH Agent
cli.credential.kept_key:
zh-CN: 由 ShellRS 保存
en: Kept by ShellRS
cli.credential.passphrase_saved:
zh-CN: 已保存
en: Saved
cli.credential.passphrase_not_saved:
zh-CN: 未保存
en: Not saved
# What `create`, `update` and `delete` did.
cli.host.created:
zh-CN: 已创建主机「%{name}」,ID %{id}
en: 'Created host "%{name}", ID %{id}'
cli.host.saved:
zh-CN: 已保存主机「%{name}」(ID %{id})
en: 'Saved host "%{name}" (ID %{id})'
cli.host.deleted:
zh-CN: 已删除主机「%{name}」
en: 'Deleted host "%{name}"'
cli.host.deleted_with_forwards.one:
en: 'Deleted host "%{name}" and its port forwarding rule'
cli.host.deleted_with_forwards.other:
zh-CN: 已删除主机「%{name}」,连同它的 %{count} 条端口转发规则
en: 'Deleted host "%{name}" and its %{count} port forwarding rules'
cli.host.deleted_jump_users.one:
en: "%{deleted}; 1 host jumped through it and now has a deleted jump host"
cli.host.deleted_jump_users.other:
zh-CN: "%{deleted};%{count} 台主机经它跳转,现在那一跳是「已删除的主机」"
en: "%{deleted}; %{count} hosts jumped through it and now have a deleted jump host"
cli.credential.created:
zh-CN: 已创建凭据「%{name}」,ID %{id}
en: 'Created credential "%{name}", ID %{id}'
cli.credential.saved:
zh-CN: 已保存凭据「%{name}」(ID %{id})
en: 'Saved credential "%{name}" (ID %{id})'
cli.credential.deleted:
zh-CN: 已删除凭据「%{name}」
en: 'Deleted credential "%{name}"'
cli.credential.deleted_released.one:
en: "%{deleted}; 1 host now logs in on its own: %{hosts}"
cli.credential.deleted_released.other:
zh-CN: "%{deleted};%{count} 台主机改为自己登录:%{hosts}"
en: "%{deleted}; %{count} hosts now log in on their own: %{hosts}"
# `upload`, `download` and `sync`: the progress line and the summary.
cli.progress:
zh-CN: "%{files}/%{total_files} 个文件,%{bytes} / %{total_bytes}"
en: "%{files}/%{total_files} files, %{bytes} / %{total_bytes}"
cli.summary.transferred.one:
en: Transferred 1 file (%{size})
cli.summary.transferred.other:
zh-CN: 已传输 %{count} 个文件,共 %{size}
en: Transferred %{count} files (%{size})
cli.summary.unchanged:
zh-CN: "%{summary},未变 %{count} 个"
en: "%{summary}, %{count} unchanged"
cli.summary.skipped:
zh-CN: "%{summary},跳过 %{count} 个"
en: "%{summary}, %{count} skipped"
cli.summary.deleted:
zh-CN: "%{summary},删除 %{count} 个"
en: "%{summary}, %{count} deleted"
cli.summary.failed:
zh-CN: "%{summary},失败 %{count} 个"
en: "%{summary}, %{count} failed"
# What the app answers when it will not take the request.
cli.server.version_mismatch:
zh-CN: shellrs 命令与正在运行的 ShellRS 版本不同:请重新启动 ShellRS,或在 设置 → 外部 CLI 中更新 CLI
en: The shellrs command and the running ShellRS are different versions. Restart ShellRS, or update the CLI in Settings → External CLI.
cli.server.not_enabled:
zh-CN: ShellRS 未启用外部 CLI:请在 ShellRS 的 设置 → 外部 CLI 中打开「启用外部 CLI」
en: The external CLI is turned off. Turn on Enable external CLI in ShellRS under Settings → External CLI.
cli.server.closed_during_change:
zh-CN: ShellRS 在处理改动时关闭了:请重新打开 ShellRS,用 shellrs hosts list 查看改动是否已完成
en: ShellRS closed while making the change. Open ShellRS again and check with shellrs hosts list whether it was made.
cli.server.change_timed_out:
zh-CN: ShellRS 没有及时处理这项改动,改动没有做:请稍后再试
en: ShellRS didn't get to the change in time, so it wasn't made. Try again later.
cli.server.not_absolute:
zh-CN: 本地路径必须是绝对路径:%{path}
en: "The local path must be absolute: %{path}"
# The app's notification when a second ShellRS starts.
cli.server.another_app:
zh-CN: 另一个 ShellRS 已在提供外部 CLI
en: Another ShellRS is already serving the external CLI.
cli.error.host_not_found:
zh-CN: 没有 ID 为 %{id} 的主机:请用 shellrs hosts list 查看
en: No host has the ID %{id}. List the hosts with shellrs hosts list.
cli.error.credential_not_found:
zh-CN: 没有 ID 为 %{id} 的凭据:请用 shellrs credentials list 查看
en: No credential has the ID %{id}. List the credentials with shellrs credentials list.
# Checking what `hosts create` / `update` ask for.
cli.host.temporary:
zh-CN: 「%{name}」是没有保存的连接(临时连接或外部连接),不能修改或删除:关闭它的标签即可
en: '"%{name}" isn''t saved (it came from Quick connect or an external connection), so it can''t be changed or deleted. Closing its tab is enough.'
cli.host.credential_with_own_auth:
zh-CN: auth 为 password 或 no_password 时不能同时指定 credential
en: With auth password or no_password, credential can't be given.
cli.host.no_credential:
zh-CN: 请选择凭据
en: Choose a credential.
cli.host.credential_user:
zh-CN: 使用凭据的主机以凭据的用户名 %{user} 登录:去掉 user,或改凭据的用户名
en: A host using a credential logs in as the credential's user, %{user}. Leave out user, or change the credential's username.
cli.host.password_without_auth:
zh-CN: 只有 auth 为 password 的主机才保存自己的密码
en: Only a host with auth password keeps a password of its own.
cli.host.proxy_password_without_user:
zh-CN: 填写代理密码时请同时填写用户名
en: Enter a username along with the proxy password.
cli.host.jump_temporary:
zh-CN: 跳板只能是保存的主机:%{id} 是没有保存的连接
en: "Jump hosts must be saved hosts: %{id} isn't saved."
cli.host.jump_self:
zh-CN: 跳板主机不能是这台主机自己
en: A host can't be its own jump host.
cli.host.jump_repeated:
zh-CN: 跳板主机 %{id} 重复了
en: Jump host %{id} is listed twice.
cli.group.empty_level:
zh-CN: 分组路径「%{path}」里有空的一级
en: 'The group path "%{path}" has an empty level.'
cli.group.ambiguous:
zh-CN: 有 %{count} 个分组的路径都是「%{path}」:请先在 ShellRS 里给它们改名
en: '%{count} groups have the path "%{path}". Rename them in ShellRS first.'
# Checking what `credentials create` / `update` ask for.
cli.credential.key_without_kind:
zh-CN: 只有密钥凭据(kind 为 key)才有私钥
en: Only a key credential (kind key) has a private key.
cli.credential.password_without_kind:
zh-CN: 只有密码凭据(kind 为 password)才保存密码
en: Only a password credential (kind password) keeps a password.
cli.credential.passphrase_without_kind:
zh-CN: 只有密钥凭据(kind 为 key)才有口令
en: Only a key credential (kind key) has a passphrase.
cli.credential.two_keys:
zh-CN: key_path 和 private_key 只能给一个
en: Give key_path or private_key, not both.
cli.credential.key_not_absolute:
zh-CN: 私钥文件必须是绝对路径:%{path}
en: "The private key file must be an absolute path: %{path}"
cli.credential.key_missing:
zh-CN: 私钥文件不存在:%{path}
en: "The private key file doesn't exist: %{path}"
cli.credential.no_key_dir:
zh-CN: 没有可以保存私钥的目录
en: There's no folder to keep the private key in.
# Making the change in the app.
cli.change.host_gone:
zh-CN: 主机保存后不见了
en: The host was gone after saving.
cli.change.host_missing:
zh-CN: 主机已不存在
en: The host no longer exists.
cli.change.host_in_use:
zh-CN: 主机「%{name}」有打开的标签:先关闭它们,或加 --force 连同标签一起关闭
en: 'Host "%{name}" has tabs open. Close them first, or add --force to close them along with it.'
cli.change.credential_gone:
zh-CN: 凭据保存后不见了
en: The credential was gone after saving.
cli.change.key_not_saved:
zh-CN: 私钥未能保存:%{error}
en: "Couldn't save the private key: %{error}"
# One failure after another.
cli.change.failures:
zh-CN: "%{before};%{next}"
en: "%{before}; %{next}"
# Running commands and moving files.
cli.exec.try_terminal:
zh-CN: "%{message}(堡垒机可能只允许登录一次:改用 shellrs exec --terminal,在 ShellRS 已打开的终端里执行)"
en: "%{message} (The bastion host may allow one login only: use shellrs exec --terminal to run the command in the terminal open in ShellRS.)"
# `exec --terminal`: why the command could not be typed into the terminal,
# or did not finish there.
cli.terminal.timed_out:
zh-CN: ShellRS 没有及时处理这条命令,命令没有执行:请稍后再试
en: ShellRS didn't get to the command in time, so it didn't run. Try again later.
cli.terminal.no_terminal:
zh-CN: 这台主机在 ShellRS 里没有打开的终端:请先在 ShellRS 里打开它的终端
en: This host has no terminal open in ShellRS. Open its terminal in ShellRS first.
cli.terminal.not_connected:
zh-CN: 这台主机在 ShellRS 里的终端没有连接:请先在 ShellRS 里重新连接
en: This host's terminal in ShellRS isn't connected. Reconnect it in ShellRS first.
cli.terminal.unknown_shell:
zh-CN: 认不出终端里的 shell:只支持 Linux 上的 bash、dash 和 busybox ash
en: Couldn't tell which shell the terminal runs. Only bash, dash and busybox ash on Linux are supported.
cli.terminal.unsupported_shell:
zh-CN: 终端里的 shell 是 %{shell}:只支持 bash、dash 和 busybox ash
en: The terminal runs %{shell}. Only bash, dash and busybox ash are supported.
cli.terminal.too_long:
zh-CN: 命令太长:这个终端里,编码后的命令行最多 %{limit} 字节。请拆成几条
en: The command is too long. In this terminal the encoded command line takes %{limit} bytes at most; split it up.
cli.terminal.full_screen:
zh-CN: 终端里正在运行全屏程序(如 vim、less、top、tmux):请先在 ShellRS 里退出它
en: A full-screen program (such as vim, less, top or tmux) has the terminal. Quit it in ShellRS first.
cli.terminal.another_run:
zh-CN: 这个终端里上一条 shellrs exec --terminal 命令还在执行
en: The previous shellrs exec --terminal command is still running in this terminal.
cli.terminal.no_answer:
zh-CN: 终端里的 shell 没有回应:前台程序可能不响应 Ctrl-C(如 python、mysql),或者终端里不是 Linux 上的 bash、dash 或 busybox ash
en: The shell in the terminal didn't answer. The program in the foreground may ignore Ctrl-C (such as python or mysql), or the terminal doesn't run bash, dash or busybox ash on Linux.
cli.terminal.not_started:
zh-CN: shell 没有开始执行这条命令,可能被堡垒机的命令过滤或命令复核拦下了;已发送 Ctrl-C
en: The shell didn't start the command; the bastion host's command filter or review may have held it back. Ctrl-C was sent.
cli.terminal.disconnected:
zh-CN: 命令执行过程中终端断开了,命令可能已执行了一部分
en: The terminal disconnected while the command ran; it may have partly run.
cli.exec.signal:
zh-CN: 远程命令被信号 %{signal} 终止
en: The remote command was killed by signal %{signal}.
cli.transfer.sftp_ended:
zh-CN: SFTP 连接意外结束
en: The SFTP connection ended unexpectedly.
cli.transfer.no_local_folder:
zh-CN: 本地目录不存在:%{path}
en: "The local folder doesn't exist: %{path}"
cli.transfer.host_key_unknown:
zh-CN: 尚未信任这台主机的密钥:请先在 ShellRS 中连接一次这台主机
en: This host's key isn't trusted yet. Connect to the host once in ShellRS first.
cli.transfer.host_key_changed:
zh-CN: 主机密钥与已保存的不一致,已拒绝连接。请先核实服务器身份
en: The host key doesn't match the saved one, so the connection was refused. Check the server's identity first.
cli.transfer.missing_credential:
zh-CN: 这台主机没有保存可用的密码或口令:请先在 ShellRS 中连接一次这台主机并保存密码
en: No usable password or passphrase is saved for this host. Connect to it once in ShellRS and save the password.
cli.transfer.unfinished:
zh-CN: 传输未完成
en: The transfer didn't finish.
cli.transfer.empty_remote_path:
zh-CN: 远程路径不能为空
en: The remote path is empty.
# 设置 › 外部 CLI: the agents the skill installs for, and installing the
# command.
cli.agent.generic:
zh-CN: 通用 Agent
en: Any agent
cli.agent.generic_description:
zh-CN: 安装到 Agent Skills 标准目录,供支持该目录的 Agent 使用。
en: Installs to the standard Agent Skills folder, for agents that read it.
cli.install.unsupported:
zh-CN: 此系统暂不支持安装 shellrs 命令
en: Installing the shellrs command isn’t supported on this system.
cli.install.occupied:
zh-CN: "%{path} 已被其他程序占用,ShellRS 不会改动它"
en: "%{path} belongs to another program, so ShellRS leaves it alone"
cli.install.cancelled:
zh-CN: 已取消
en: Cancelled
cli.install.missing:
zh-CN: 找不到 %{path}
en: Can’t find %{path}