pub fn get_english_text(key: &str) -> &'static str {
match key {
"checking_packages" => "for updates to globally installed packages",
"no_packages_found" => "no installed packages match",
"found_packages" => "{} installed package(s)",
"all_up_to_date" => "all packages are up to date",
"stable_updates" => "Stable updates:",
"prerelease_updates" => "Prerelease updates:",
"prerelease_warning" => "prerelease",
"update_question" => "Update these packages?",
"include_prerelease_question" => "Include prerelease updates?",
"select_packages" => "Select packages (space to toggle, enter to confirm)",
"no_interactive_mode" => "non-interactive mode; skipping selection",
"starting_update" => "selected packages",
"updating_package" => "{}",
"package_failed" => "{}",
"package_error" => "{name}: {error}",
"update_completed" => "update completed",
"success_count" => "{} succeeded",
"fail_count" => "{} failed",
"no_packages_selected" => "no packages selected",
"aborted_by_user" => "cancelled by user, {done}/{total} completed",
"binstall_hint" => "cargo-binstall not found — using cargo install (slower). Pass --install-binstall to auto-install for faster updates",
"update_instructions" => "To update manually: cargo install --force <name>",
"interactive_instructions" => "Or drop --no-interactive for interactive selection",
"version_unchanged" => "version unchanged",
"unknown_version" => "unknown",
"version_info_unknown" => "version unknown",
"package_has_update" => "{}",
"current_version" => "current",
"latest_version" => "latest",
"package_up_to_date" => "{}",
"version" => "version",
"update_summary" => "Update Summary",
"successful_updates" => "Successful:",
"failed_updates" => "Failed:",
"update_failed" => "failed",
"updates_detected" => "Updates available:",
"unknown" => "unknown",
"updating_package_progress" => "{}",
"current_version_label" => "currently",
"executing_command" => "cargo",
"retry_attempt" => "attempt {attempt} for {name}",
"error_message" => "stderr:",
"package_update_success" => "{} install command succeeded",
"package_updated_version" => "{name} {old} -> {new}",
"package_version_unchanged" => "{} version unchanged",
"package_update_verification_failed" => "{} command succeeded but version not verified",
"package_update_failed" => "{name} failed (exit code: {code})",
"error_details" => "details:",
"waiting_retry" => "waiting before retry",
"cargo_install_list_failed" => "failed to execute cargo install --list",
"checking_package" => "checking",
"unable_to_get_latest_version" => "no latest version available",
"check_failed" => "check failed",
"binstall_not_found" => "cargo binstall not installed",
"attempting_to_install_binstall" => "cargo-binstall (will speed up future updates)",
"installing_binstall" => "cargo-binstall",
"binstall_installed_successfully" => "cargo-binstall",
"binstall_install_failed" => "to install cargo-binstall",
"using_binstall" => "self-hosted downloader",
"using_install_fallback" => "cargo install",
"binstall_failed_fallback" => "downloader failed, falling back to cargo install",
"checking_binstall" => "binstall availability for {} update candidate(s)",
"summary_prebuilt" => "Prebuilt",
"summary_compiled" => "Compiled",
"total_time_seconds" => "in {}s",
"total_time_millis" => "in {}ms",
"dry_run_label" => "cargo",
"dry_run_fallback_label" => "(fallback)",
"dry_run_summary" => "no packages will be modified",
_ => "",
}
}
pub fn get_chinese_text(key: &str) -> &'static str {
match key {
"checking_packages" => "全局 cargo 包更新",
"no_packages_found" => "未找到匹配的已安装包",
"found_packages" => "{} 个已安装的包",
"all_up_to_date" => "所有包均为最新",
"stable_updates" => "稳定版更新:",
"prerelease_updates" => "预发布版更新:",
"prerelease_warning" => "预发布",
"update_question" => "更新这些包?",
"include_prerelease_question" => "是否包含预发布版?",
"select_packages" => "选择要更新的包(空格切换,回车确认)",
"no_interactive_mode" => "非交互模式,跳过选择",
"starting_update" => "选中的包",
"updating_package" => "{}",
"package_failed" => "{}",
"package_error" => "{name}:{error}",
"update_completed" => "更新完成",
"success_count" => "{} 个成功",
"fail_count" => "{} 个失败",
"no_packages_selected" => "未选择任何包",
"aborted_by_user" => "用户取消,已完成 {done}/{total}",
"binstall_hint" => "未检测到 cargo-binstall——改用 cargo install(较慢)。加 --install-binstall 可自动安装以加速",
"update_instructions" => "手动更新:cargo install --force <name>",
"interactive_instructions" => "或去掉 --no-interactive 进入交互模式",
"version_unchanged" => "版本未变",
"unknown_version" => "未知",
"version_info_unknown" => "版本未知",
"package_has_update" => "{}",
"current_version" => "当前",
"latest_version" => "最新",
"package_up_to_date" => "{}",
"version" => "版本",
"update_summary" => "更新摘要",
"successful_updates" => "成功:",
"failed_updates" => "失败:",
"update_failed" => "失败",
"updates_detected" => "可用更新:",
"unknown" => "未知",
"updating_package_progress" => "{}",
"current_version_label" => "当前",
"executing_command" => "cargo",
"retry_attempt" => "第 {attempt} 次重试 {name}",
"error_message" => "stderr:",
"package_update_success" => "{} 安装命令成功",
"package_updated_version" => "{name} {old} -> {new}",
"package_version_unchanged" => "{} 版本未变",
"package_update_verification_failed" => "{} 命令成功但版本未验证",
"package_update_failed" => "{name} 失败(退出码:{code})",
"error_details" => "详情:",
"waiting_retry" => "等待重试",
"cargo_install_list_failed" => "执行 cargo install --list 失败",
"checking_package" => "检查",
"unable_to_get_latest_version" => "无最新版本信息",
"check_failed" => "检查失败",
"binstall_not_found" => "未安装 cargo-binstall",
"attempting_to_install_binstall" => "cargo-binstall(加速后续更新)",
"installing_binstall" => "cargo-binstall",
"binstall_installed_successfully" => "cargo-binstall",
"binstall_install_failed" => "安装 cargo-binstall 失败",
"using_binstall" => "使用下载器",
"using_install_fallback" => "cargo install",
"binstall_failed_fallback" => "下载器失败,回退到 cargo install",
"checking_binstall" => "{} 个更新候选的 binstall 可用性",
"summary_prebuilt" => "预编译",
"summary_compiled" => "源码编译",
"total_time_seconds" => "耗时 {}s",
"total_time_millis" => "耗时 {}ms",
"dry_run_label" => "cargo",
"dry_run_fallback_label" => "(回退)",
"dry_run_summary" => "不会实际修改任何包",
_ => "",
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_english_texts() {
assert_eq!(
get_english_text("checking_packages"),
"for updates to globally installed packages"
);
assert_eq!(
get_english_text("all_up_to_date"),
"all packages are up to date"
);
assert_eq!(get_english_text("nonexistent_key"), "");
}
#[test]
fn test_chinese_texts() {
assert_eq!(
get_chinese_text("checking_packages"),
"全局 cargo 包更新"
);
assert_eq!(get_chinese_text("all_up_to_date"), "所有包均为最新");
assert_eq!(get_chinese_text("nonexistent_key"), "");
}
#[test]
fn test_text_consistency() {
let english_keys = [
"checking_packages",
"no_packages_found",
"found_packages",
"all_up_to_date",
"stable_updates",
"prerelease_updates",
"prerelease_warning",
"update_question",
"include_prerelease_question",
"select_packages",
"starting_update",
"updating_package",
"package_failed",
"package_error",
"update_completed",
"success_count",
"fail_count",
"no_packages_selected",
"aborted_by_user",
"binstall_hint",
"update_instructions",
"interactive_instructions",
"version_unchanged",
"unknown_version",
"version_info_unknown",
"package_has_update",
"current_version",
"latest_version",
"package_up_to_date",
"version",
"update_summary",
"summary_prebuilt",
"summary_compiled",
"successful_updates",
"failed_updates",
"update_failed",
"updates_detected",
"unknown",
"updating_package_progress",
"current_version_label",
"executing_command",
"retry_attempt",
"error_message",
"package_update_success",
"package_updated_version",
"package_version_unchanged",
"package_update_verification_failed",
"package_update_failed",
"error_details",
"waiting_retry",
"unknown_version",
"cargo_install_list_failed",
"checking_package",
"unable_to_get_latest_version",
"check_failed",
"checking_binstall",
];
for key in &english_keys {
let english = get_english_text(key);
let chinese = get_chinese_text(key);
if !english.is_empty() {
assert!(
!chinese.is_empty(),
"Missing Chinese translation for key: {}",
key
);
}
}
}
}