//! 下载页文案(M94)。 //! //! 一句话一个 key:带变量的句子用 `{name}`,页面只做 [`crate::Catalog::render`],不拼片段 //! ([`crate::bridge`] 的规矩 1)。 //! //! 文案口径(M94 r1 / P2-2):**只说这个页面真能做到的动作**(切分类、刷新、看日志), //! 不写「稍后会自动重试」这类 UI 没有的能力,也不拿文案去补功能。 //! //! 域文件的形状见 [`crate::catalog`] 的「域装配」一节。 macro_rules! download_entries { ($next:ident, $($rest:ident,)* { $($acc:tt)* }) => { $next! { $($rest,)* { $($acc)* // --- download page (M94) --- DownloadTitle => ("Downloads", "下载"), DownloadSubtitle => ("Versions you can install", "可以安装的版本"), DownloadRefresh => ("Refresh", "刷新"), DownloadInstall => ("Install", "安装"), DownloadCancel => ("Cancel install", "取消安装"), DownloadInstalled => ("Installed", "已安装"), DownloadCount => ("{count} versions", "{count} 个版本"), DownloadRowSupporting => ("{kind} · released {date}", "{kind} · 发布于 {date}"), DownloadSelectHint => ("Pick a version, then install", "选一个版本再安装"), DownloadLoading => ("Loading versions…", "正在加载版本列表…"), DownloadLoadingHint => ( "If this stays here, press Refresh in the top right.", "如果一直停在这里,点右上角的刷新。" ), DownloadEmptyTitle => ("No versions to show", "没有可显示的版本"), DownloadEmptyBody => ( "Pick another category, or refresh the list.", "换一个分类,或刷新一次列表。" ), DownloadCategoryAll => ("All", "全部"), DownloadCategoryRelease => ("Release", "正式版"), DownloadCategorySnapshot => ("Snapshot", "预览版"), DownloadCategoryAncient => ("Ancient", "远古版"), DownloadStagePlanning => ("Planning", "解析版本"), DownloadStageDownloading => ("Downloading files", "下载文件"), DownloadStageInstalling => ("Building the version", "生成版本"), DownloadStageRegistering => ("Registering the instance", "登记实例"), DownloadStageDone => ("Done", "已完成"), DownloadStageFailed => ("Install failed", "安装失败"), DownloadStageCancelled => ("Install cancelled", "安装已取消"), DownloadProgress => ( "{done}/{total} files", "{done}/{total} 文件" ), DownloadProgressUnknown => ("Waiting for the first file…", "等第一个文件…"), // 速率与剩余时间是两个独立短语,各占一个 key(`DownloadRate` 只负责把它们排成一行) DownloadRate => ("{speed} · {eta}", "{speed},{eta}"), DownloadEtaSecs => ("{secs}s left", "剩 {secs}s"), DownloadEtaMins => ("{mins}m{secs}s left", "剩 {mins}m{secs}s"), DownloadFailedHint => ( "The Logs page has the full reason.", "完整原因在日志页。" ), DownloadOpenLogs => ("Open logs", "打开日志"), DownloadDismiss => ("Dismiss", "关闭"), // --- 安装选项(M105)--- DownloadOptionsTitle => ("Install options", "安装选项"), DownloadOptionsLoaderVersion => ("Loader version", "加载器版本"), DownloadOptionsLoaderVersionsLoading => ( "Fetching loader versions…", "正在获取加载器版本…" ), DownloadOptionsLoaderVersionsFailed => ( "Could not fetch loader versions: {reason}", "取不到加载器版本:{reason}" ), DownloadOptionsLoaderVersionsEmpty => ( "No loader builds published for {version}", "官方没有为 {version} 发布加载器版本" ), DownloadOptionsInstanceName => ("Instance name", "实例名"), DownloadOptionsInstanceNameHint => ( "Empty = use the version id", "留空就用版本号" ), DownloadOptionsIncompatible => ( "{loader} has no builds for {version}", "{loader} 没有适配 {version} 的构建" ), DownloadOptionsNeedsAtLeast => ( "{loader} needs Minecraft {min} or newer", "{loader} 需要 Minecraft {min} 或更新" ), DownloadCancelled => ( "Install cancelled — finished files are kept, the instance was not created", "安装已取消 —— 已下好的文件保留,实例未登记" ), } } }; } pub(crate) use download_entries; /// **M107 版本管理页**的侧栏 / 搜索文案。 /// /// 为什么单独一个宏、并**接在装配链最后**:`catalog/golden.rs` 是「`Key` 声明顺序 × 译文」的逐字节 /// 快照,M107 的纪律是**只追加不重排**。把新 key 插在 `download_entries` 中间会让 `Key::ALL` /// 的顺序在 `DownloadDismiss` 与 `LogsSubtitleIdle` 之间断开,金表就得整体重排(那正是要避免的 /// 风险)。追加在链尾 ⇒ 新 key 落在 `Key::ALL` 末尾 ⇒ 金表末尾追加同样几行即可。 macro_rules! version_entries { ($next:ident, $($rest:ident,)* { $($acc:tt)* }) => { $next! { $($rest,)* { $($acc)* // --- version management page (M107) --- VersionRailTitle => ("Version type", "版本类型"), VersionMajorTitle => ("Major version", "主版本"), VersionMajorAll => ("All versions", "全部版本"), VersionSearchPlaceholder => ("Search version numbers", "搜版本号"), VersionSearchClear => ("Clear search", "清空搜索"), VersionSearchHits => ("{count} matches", "{count} 个匹配"), VersionSearchEmptyTitle => ("No matching versions", "没有匹配的版本"), VersionSearchEmptyBody => ( "Try a shorter piece of the number — 1.21, 24w, a1.", "试试更短的片段 — 1.21、24w、a1。" ), VersionSearchElsewhere => ( "{count} versions match, but they are in another type.", "有 {count} 个版本匹配,但它们在别的类型里。" ), VersionSearchElsewhereAction => ("Show all types", "看全部类型"), // --- M107 r2:复数口径与「在别处」的标题(追加在域尾 ⇒ `Key::ALL` 顺序只增不动) --- VersionSearchHitsOne => ("1 match", "1 个匹配"), VersionSearchElsewhereTitle => ("Found in another type", "在别的类型里找到了"), VersionSearchElsewhereOne => ( "1 version matches, but it is in another type.", "有 1 个版本匹配,但它在别的类型里。" ), } } }; } pub(crate) use version_entries;