Argus
文档目录 · v0.3.4 文档首页

使用指南

界面与操作硬件数据的来源与限制常驻、托盘与快捷键设置

开发指南

环境与命令构建与缓存多语言性能基线与测量提交与发布依赖与安全维护Windows 代码签名

架构

架构管理员启动采集层 argus-core前端Tauri 宿主特权服务系统任务管理器替换技术栈

设计

设计原则曲线动画全局快捷键窗口外观

项目

已知问题路线图
搜索文档

多语言

Argus 的界面与原生层(托盘、错误信息、特权服务的提示)共用 locales/ 下的文案目录。简体中文(zh-CN)是源语言,其他语言从它翻译;目前另有英语(en-US)。

目录结构

locales/
  zh-CN/            源语言:键以这里为准
    common.json     通用词(取消、关闭、启用……)与资源名称
    shell.json      工具栏、导航栏、状态栏
    processes.json  进程列表、右键菜单、分组
    details.json    详细信息面板
    actions.json    结束进程、优先级等操作的确认与结果
    performance.json
    services.json
    startup.json
    connections.json
    history.json
    fileLock.json   文件占用查询
    settings.json
    updates.json    更新提示
    onboarding.json 首次启动引导
    format.json     时长、日期等格式
    native.json     Rust 侧:托盘、宿主命令、更新程序、核心库与特权服务
  en-US/            与 zh-CN 相同的文件和键

每个文件是一个命名空间,内部可以按功能嵌套分组,键用 camelCase。界面里的完整键是“命名空间.路径”,例如 settings.update.channel.label;native.json 的键不带命名空间前缀,例如 tray.quit。

在界面中使用

import { rich, t } from "../lib/i18n";

<button title={t("shell.details.show")}>…</button>
t("shell.interval.option", { seconds: 2 });          // "每 {seconds} 秒"
t("actions.endGroup.done", { count: n, name });      // 复数,见下文
rich("onboarding.background.hotkey", { hotkey: <Keycaps keys={keys} /> }); // "按 {hotkey} 可随时显示或隐藏 Argus……"
  • t 的键有类型检查:键来自 zh-CN 的 JSON,拼错或删掉的键会让 pnpm typecheck 失败。由枚举拼出的键(t(`shell.page.${p}`))只要枚举的每个值都有对应的键也能通过检查。
  • t 读取当前语言的信号,切换语言时所有在 JSX 或计算中调用 t 的地方自动更新。因此不要在模块顶层把 t(...) 的结果存进常量;常量里存键或枚举值,渲染时再调用 t,或写成 getter。
  • 占位符写作 {name}。名为 count 的数值按当前语言加千位分隔符,其他数值原样输出(PID、端口不加分隔符)。
  • 需要在文案中嵌入元素(加粗、键帽、链接、图标)时用 rich:文案里写 <tag>…</tag>,参数里给出渲染函数;{name} 占位符也可以传入元素。标签不能嵌套。
  • 数字、日期、排序使用 lib/i18n.ts 的 localized 按语言缓存 Intl 对象,不要写死 "zh-CN"。常用的格式化函数在 lib/format.ts。
  • 列表连接用 fmtList(中文“、”和“和”,英文逗号与 and)。

在 Rust 中使用

use argus_core::tr;

tr!("tray.quit")
tr!("tray.update", version = version)   // "更新到 {version}…"

tr! 返回 String,按 argus_core::i18n 的当前语言查找 native.json,缺失的键退回中文,再退回键本身。宿主启动时按设置选定语言,切换语言时重建托盘菜单和窗口标题;已经显示的错误信息不随之更新。

宿主启动的辅助进程(如句柄查询)通过环境变量 ARGUS_LOCALE(argus_core::i18n::ENV)继承宿主的语言。特权服务以 SYSTEM 身份运行,管理员维护助手经 UAC 在另一个提升的进程中运行,它们读不到用户的语言设置,使用 Windows 的显示语言。因此当 Argus 的语言与 Windows 显示语言不同时,来自服务的少量错误信息会显示为 Windows 的语言。

只有展示给用户的文字放进目录。日志(log::info! 等)、panic 信息和代码注释用英文,不翻译。

复数

中文没有复数变化,源文案总是一个字符串。其他语言可以把含 {count} 的文案写成按复数类别区分的对象,类别名称取自 Intl.PluralRules:

"done": { "one": "Ended {count} process of {name}.", "other": "Ended {count} processes of {name}." }

调用处传入数值的 count。除 other 外的类别可以不写 {count}(如 “One process”)。

检查

pnpm check 和 CI 会运行 node scripts/i18n.mjs,检查:

  • 每种语言都有源语言的全部文件和键,没有多余的键;
  • 译文保留源文案的全部占位符和标签,复数形式只用于含 {count} 的文案;
  • 非中文的译文里没有中文;
  • Rust 中 tr! 用到的键都存在,传入的参数与文案的占位符一致(安装程序的文案在 NSIS 脚本中,不在检查范围内);
  • 代码中没有直接写入的中文文案。注释、Rust 测试和 ui/src/lib/mock.ts(模拟数据)除外;确有必要时在该行的注释里写 i18n-ignore。

node scripts/i18n.mjs --unused 额外列出代码中似乎没有用到的键,用于清理。

增加文案

  1. 在 zh-CN 对应命名空间里加键,再在其他语言的同一位置加译文。
  2. 在代码中用 t、rich 或 tr! 引用。
  3. 运行 start.bat check。

改了源文案的意思时,同步修改所有语言的译文;只改措辞且不影响译文时可以只改中文。

增加语言

  1. 复制 locales/en-US 为新的语言目录(如 ja-JP),逐个翻译。
  2. 界面:在 ui/src/lib/i18n.ts 的 Locale 与 LOCALES 中加入该语言(用它自己的语言写名称),并调整 localeFor 的匹配。
  3. Rust:在 argus_core::i18n::Locale 中加入变体、标签、include_str! 与 system() 的匹配。
  4. 安装程序:在 src-tauri/tauri.conf.json 的 bundle.windows.nsis.languages 中加入 NSIS 语言名,在 src-tauri/installer-ui.nsh 中为每个 LangString 加上该语言(含界面字体 ArgusFace),并在 src-tauri/installer-hooks.nsh 中为新的 $LANGUAGE 补上提示文字。
  5. 在浏览器预览中用 start.bat ui 打开 http://localhost:5173/?lang=<语言> 检查各页面的排版。

写作约定

  • 中文:正式、简洁,不用口语化表述;完整句子以句号结尾,标签、按钮、提示短语不加句号。
  • 英文:沿用 Windows 的界面用语,标签与按钮用句首大写(“End task”“Open file location”),完整句子以句号结尾,与中文源文案一致。可以使用常见的缩写形式(can't、don't),错误提示用 “Couldn't …”。
  • 产品名 Argus、Windows、GitHub 与技术名词(PID、CPU、ETW、IPv4、UAC)不翻译。
  • 译文不必逐字对应,但信息必须完整,尤其是权限、风险与数据去向的说明。

术语表

中文 English
进程 Process / Processes
应用 Apps
后台进程 Background processes
进程树 Process tree
结束进程 End task
结束进程树 End process tree
效率模式 Efficiency mode
优先级:实时、高、高于正常、正常、低于正常、低 Priority: Realtime, High, Above normal, Normal, Below normal, Low
详细信息 Details
打开文件位置 Open file location
性能 Performance
服务 Services
启动类型:自动、自动(延迟启动)、手动、禁用 Startup type: Automatic, Automatic (Delayed Start), Manual, Disabled
启动(页签)、启动项 Startup (tab), Startup apps
启动影响 Startup impact
连接 Connections
历史 History
文件占用 File locks
句柄 Handle
工作集、提交大小 Working set, Commit size
分页缓冲池、非分页缓冲池 Paged pool, Non-paged pool
刷新频率、暂停刷新 Refresh rate, Pause updates
特权服务 Privileged service
替换系统任务管理器 Replace Task Manager
管理员授权 Administrator permission
管理员、标准权限 Administrator, Standard user
规则 Rules
托盘 System tray
快捷键 Keyboard shortcut
更新通道:稳定版、测试版 Update channel: Stable, Beta
下载线路 Download source
加速代理 GitHub proxy
安装版、免安装版 Installed version, Portable version
界面动画、曲线动画 Interface animations, Chart animations
流畅、均衡、省电、关闭 Smooth, Balanced, Power saving, Off
首次启动引导 Welcome guide
导航栏位置:侧边、顶部 Navigation position: Side, Top
在 GitHub 查看此页