backup_suite/
i18n.rs

1//! # Internationalization (i18n) Module
2//!
3//! Provides multi-language support for the Backup Suite CLI.
4//! Default language: English
5//! Supported languages: English, Japanese, Simplified Chinese, Traditional Chinese
6
7use std::sync::OnceLock;
8
9/// Application version string (generated once at runtime)
10fn app_version() -> &'static str {
11    static VERSION_STRING: OnceLock<String> = OnceLock::new();
12    VERSION_STRING.get_or_init(|| format!("Backup Suite v{}", env!("CARGO_PKG_VERSION")))
13}
14
15/// Supported languages
16#[derive(Debug, Clone, Copy, PartialEq, Eq)]
17pub enum Language {
18    English,
19    Japanese,
20    SimplifiedChinese,
21    TraditionalChinese,
22}
23
24impl Language {
25    /// Detect language from environment and CLI arguments
26    /// Priority: CLI flag > Environment variable > Default (English)
27    #[must_use]
28    pub fn detect() -> Self {
29        // Check LANG environment variable
30        if let Ok(lang) = std::env::var("LANG") {
31            let lang_lower = lang.to_lowercase();
32
33            // Japanese detection
34            if lang_lower.starts_with("ja") || lang_lower.starts_with("jp") {
35                return Language::Japanese;
36            }
37
38            // Simplified Chinese detection (zh-CN, zh-Hans, zh_CN, zh_Hans)
39            if lang_lower.starts_with("zh-cn")
40                || lang_lower.starts_with("zh_cn")
41                || lang_lower.starts_with("zh-hans")
42                || lang_lower.starts_with("zh_hans")
43            {
44                return Language::SimplifiedChinese;
45            }
46
47            // Traditional Chinese detection (zh-TW, zh-HK, zh-Hant, zh_TW, zh_HK, zh_Hant)
48            if lang_lower.starts_with("zh-tw")
49                || lang_lower.starts_with("zh_tw")
50                || lang_lower.starts_with("zh-hk")
51                || lang_lower.starts_with("zh_hk")
52                || lang_lower.starts_with("zh-hant")
53                || lang_lower.starts_with("zh_hant")
54            {
55                return Language::TraditionalChinese;
56            }
57        }
58
59        // Check LC_ALL environment variable as fallback
60        if let Ok(lang) = std::env::var("LC_ALL") {
61            let lang_lower = lang.to_lowercase();
62
63            // Japanese detection
64            if lang_lower.starts_with("ja") || lang_lower.starts_with("jp") {
65                return Language::Japanese;
66            }
67
68            // Simplified Chinese detection
69            if lang_lower.starts_with("zh-cn")
70                || lang_lower.starts_with("zh_cn")
71                || lang_lower.starts_with("zh-hans")
72                || lang_lower.starts_with("zh_hans")
73            {
74                return Language::SimplifiedChinese;
75            }
76
77            // Traditional Chinese detection
78            if lang_lower.starts_with("zh-tw")
79                || lang_lower.starts_with("zh_tw")
80                || lang_lower.starts_with("zh-hk")
81                || lang_lower.starts_with("zh_hk")
82                || lang_lower.starts_with("zh-hant")
83                || lang_lower.starts_with("zh_hant")
84            {
85                return Language::TraditionalChinese;
86            }
87        }
88
89        // Default to English
90        Language::English
91    }
92
93    /// Parse language from string
94    ///
95    /// # Security
96    /// - Rejects null bytes (security vulnerability)
97    /// - Rejects command injection patterns (semicolons, pipes, etc.)
98    /// - Rejects path traversal attempts (../, ..\)
99    /// - Rejects excessively long inputs (> 100 chars)
100    /// - Whitelist-based validation (only known language codes accepted)
101    #[must_use]
102    pub fn parse(s: &str) -> Option<Self> {
103        // Security: Reject null bytes
104        if s.contains('\0') {
105            return None;
106        }
107
108        // Security: Reject command injection patterns
109        if s.contains(';')
110            || s.contains('|')
111            || s.contains('&')
112            || s.contains('`')
113            || s.contains('$')
114            || s.contains('(')
115            || s.contains(')')
116        {
117            return None;
118        }
119
120        // Security: Reject path traversal attempts
121        if s.contains("..") || s.contains('/') || s.contains('\\') {
122            return None;
123        }
124
125        // Security: Reject excessively long inputs (DoS prevention)
126        if s.len() > 100 {
127            return None;
128        }
129
130        match s.to_lowercase().as_str() {
131            "en" | "english" => Some(Language::English),
132            "ja" | "japanese" | "日本語" => Some(Language::Japanese),
133            "zh-cn" | "zh_cn" | "zh-hans" | "zh_hans" | "simplified chinese" | "简体中文" => {
134                Some(Language::SimplifiedChinese)
135            }
136            "zh-tw"
137            | "zh_tw"
138            | "zh-hk"
139            | "zh_hk"
140            | "zh-hant"
141            | "zh_hant"
142            | "traditional chinese"
143            | "繁體中文"
144            | "繁体中文" => Some(Language::TraditionalChinese),
145            _ => None,
146        }
147    }
148
149    /// Convert to language code
150    #[must_use]
151    pub fn code(&self) -> &'static str {
152        match self {
153            Language::English => "en",
154            Language::Japanese => "ja",
155            Language::SimplifiedChinese => "zh-cn",
156            Language::TraditionalChinese => "zh-tw",
157        }
158    }
159}
160
161/// Message keys for internationalization
162#[derive(Debug, Clone, Copy)]
163pub enum MessageKey {
164    // Version and title
165    AppVersion,
166    AppTitle,
167    AppDescription,
168
169    // Command categories
170    BasicCommands,
171    ExecutionCommands,
172    InformationCommands,
173    ConfigCommands,
174    UtilityCommands,
175    SmartCommands,
176
177    // Commands
178    CmdAdd,
179    CmdList,
180    CmdRemove,
181    CmdClear,
182    CmdRun,
183    CmdRestore,
184    CmdCleanup,
185    CmdStatus,
186    CmdHistory,
187    CmdDashboard,
188    CmdEnable,
189    CmdDisable,
190    CmdSchedule,
191    CmdConfig,
192    CmdOpen,
193    CmdCompletion,
194    CmdSmart,
195
196    // Command descriptions
197    DescAdd,
198    DescList,
199    DescRemove,
200    DescClear,
201    DescRun,
202    DescRestore,
203    DescCleanup,
204    DescStatus,
205    DescHistory,
206    DescDashboard,
207    DescEnable,
208    DescDisable,
209    DescSchedule,
210    DescConfig,
211    DescOpen,
212    DescCompletion,
213    DescSmart,
214
215    // AI subcommands
216    CmdSmartDetect,
217    CmdSmartAnalyze,
218    CmdSmartSuggestExclude,
219    CmdSmartAutoConfigure,
220    DescSmartDetect,
221    DescSmartAnalyze,
222    DescSmartSuggestExclude,
223    DescSmartAutoConfigure,
224
225    // AI messages
226    SmartDetectTitle,
227    SmartDetectNoAnomalies,
228    SmartDetectAnomalyFound,
229    SmartAnalyzeTitle,
230    SmartAnalyzeImportanceHigh,
231    SmartAnalyzeImportanceMedium,
232    SmartAnalyzeImportanceLow,
233    SmartSuggestExcludeTitle,
234    SmartSuggestExcludeRecommendation,
235    SmartAutoConfigureTitle,
236    SmartAutoConfigureSuccess,
237    SmartDryRunModeLabel,
238    PathValidationFailed,
239    PathSafetyValidationFailed,
240    SmartExampleMaxDepthComment,
241    SmartExampleMaxSubdirsComment,
242    SmartExampleIncreaseSubdirsComment,
243    SmartAutoConfigureFeaturesHeader,
244    SmartFeatureEvaluateSubdirs,
245    SmartFeatureAutoDetectExclusions,
246    SmartFeatureHighConfidencePatterns,
247    SmartFeatureAutoDetectProjectTypes,
248    NoSubdirectoriesFound,
249    SubdirLimitReached,
250    SubdirLimitChangeHint,
251    SkippingExcludeAnalysisLarge,
252    FilesUnit,
253    AddToExcludeListPrompt,
254    SmartRecommendsAddPrompt,
255    AnalysisFailedLabel,
256    SmartErrorNotEnabled,
257    SmartErrorInsufficientData,
258    SmartErrorInsufficientDataDetailed,
259    SmartErrorAnalysisFailed,
260    SmartErrorAnalysisLabel,
261    HelpLabel,
262
263    // Options
264    Options,
265    HelpOption,
266    VersionOption,
267
268    // Usage examples
269    UsageExamples,
270    ExampleAddInteractive,
271    ExampleRunHigh,
272    ExampleEncrypt,
273    ExampleCompress,
274    ExampleEncryptCompress,
275    ExampleCleanup,
276    ExampleSchedule,
277    ExampleSmartDetect,
278    ExampleSmartAnalyze,
279    ExampleSmartSuggestExclude,
280    ExampleSmartAutoConfigureComment,
281    ExampleSmartDryRunComment,
282    ExampleSmartInteractiveComment,
283    SmartRecommendedCommandLabel,
284    SmartNoExclusionsRecommended,
285    SmartAddToExcludeListPrompt,
286    SmartReductionLabel,
287    SmartAddedLabel,
288    SmartAutoConfigureErrorNoPath,
289    SmartAutoConfigureUsageExamples,
290
291    // Detailed info
292    DetailedInfo,
293    DetailCommand,
294    ConfigFile,
295    BackupDestination,
296
297    // Status messages
298    Added,
299    Removed,
300    Deleted,
301    Error,
302    Warning,
303    BackupRunning,
304    RestoreStarting,
305
306    // Encryption and compression
307    EncryptionPassword,
308    SavePasswordSecurely,
309    EncryptOption,
310    CompressOption,
311    CompressLevel,
312
313    // Run command options
314    IncrementalOption,
315    GeneratePasswordOption,
316    PasswordOption,
317    DryRunOption,
318    PriorityOption,
319    CategoryOption,
320
321    // Restore command options
322    FromOption,
323    ToOption,
324    RestorePasswordOption,
325
326    // Cleanup command options
327    DaysOption,
328    CleanupDryRunOption,
329
330    // Add command options
331    AddPriorityOption,
332    AddCategoryOption,
333    InteractiveOption,
334
335    // List command options
336    ListPriorityOption,
337
338    // Schedule help
339    ScheduleTitle,
340    ScheduleDescription,
341    ScheduleUsage,
342    ScheduleCommands,
343    ScheduleEnable,
344    ScheduleDisable,
345    ScheduleStatus,
346    ScheduleSetup,
347    ScheduleHelp,
348
349    // Config help
350    ConfigTitle,
351    ConfigDescription,
352    ConfigUsage,
353    ConfigMgmtCommands,
354    ConfigSetDestination,
355    ConfigGetDestination,
356    ConfigSetKeepDays,
357    ConfigGetKeepDays,
358    ConfigOpen,
359    ConfigHelp,
360
361    // Schedule detailed options
362    ScheduleDetailedOptions,
363    ScheduleEnableOption,
364    ScheduleDisableOption,
365    ScheduleSetupOption,
366    ScheduleFrequencies,
367    ScheduleDaily,
368    ScheduleWeekly,
369    ScheduleMonthly,
370    ScheduleTips,
371    ScheduleTip1,
372    ScheduleTip2,
373    ScheduleTip3,
374
375    // Config examples and tips
376    ConfigExampleExternal,
377    ConfigExampleGetDest,
378    ConfigExampleSetDays,
379    ConfigExampleOpen,
380    ConfigExampleTilde,
381    ConfigTip1,
382    ConfigTip2,
383    ConfigTip3,
384
385    // Runtime messages
386    NoTargetsRegistered,
387    SelectionCancelled,
388    ConfirmClearAll,
389    ConfirmClearPriority,
390    NoPriorityTargets,
391    ConfirmCleanup,
392    DaysOutOfRange,
393    PromptSelectTarget,
394    PromptSelectFile,
395    PathNotExists,
396    NotInBackupConfig,
397    SpecifyPriorityOrAll,
398    CountDeleted,
399    DryRun,
400    Category,
401    Encryption,
402    Compression,
403    ErrorDetails,
404    Detected,
405    NoBackups,
406    RestoreStart,
407    Restoring,
408    RestoredSuccess,
409    RestoredFileCount,
410    Deleting,
411    Destination,
412    Targets,
413    High,
414    Medium,
415    Low,
416    BackupHistory,
417    Days,
418    AutoBackupEnabled,
419    AutoBackupDisabled,
420    OpenDirectory,
421    PriorityScheduleSetup,
422    ScheduleSetupFailed,
423    LaunchctlUnloadWarning,
424    PriorityScheduleDeleted,
425    ScheduleNotConfigured,
426    ScheduleDeletionFailed,
427    ActualScheduleStatus,
428    Enabled,
429    Disabled,
430    ScheduleSettings,
431    ScheduleUpdated,
432    ScheduleUpdatedEnableLater,
433    HighPriority,
434    MediumPriority,
435    LowPriority,
436    DirectoryNotExists,
437    DirectoryCreating,
438    DestinationChanged,
439    Before,
440    After,
441    CurrentDestination,
442    KeepDaysOutOfRange,
443    KeepDaysChanged,
444    CurrentKeepDays,
445    OpeningConfigFile,
446    EditorDidNotExitCleanly,
447    RustFastTypeSafe,
448    ScheduleCommandPlaceholder,
449    ConfigCommandPlaceholder,
450    ConfigArgsPlaceholder,
451    MainHelp,
452    ConfigFileLabel,
453    EnableOnlySpecifiedPriority,
454    DisableOnlySpecifiedPriority,
455    SetExecutionFrequency,
456    EnableAllAutoBackups,
457    EnableHighOnly,
458    SetupScheduleFreq,
459    CheckCurrentConfig,
460
461    // Additional runtime units and labels
462    Files,
463    EncryptedLabel,
464    StatusTitle,
465    DaysUnit,
466    DryRunParens,
467
468    // Backup progress and result messages
469    FilesDetected,
470    FullBackupMode,
471    IncrementalBackupMode,
472    BackupComplete,
473    BackupCompleteWithFailures,
474    BackupResultTitle,
475    TotalFilesLabel,
476    SuccessfulLabel,
477    FailedLabel,
478    TotalSizeLabel,
479
480    // Remove/Update command messages
481    ConfirmRemoveTarget,
482    UpdatedTarget,
483    PathLabel,
484    PriorityLabel,
485    CategoryLabel,
486    ExcludePatternsLabel,
487
488    // Smart Analyze labels
489    ItemLabel,
490    ValueLabel,
491    ImportanceScoreLabel,
492    RecommendedPriorityLabel,
493    ReasonLabel,
494
495    // Smart Auto-Configure labels
496    AnalyzingLabel,
497    AddedToConfiguration,
498    ItemsAdded,
499    ExistingBackupTargets,
500    AddNewTargets,
501
502    // History detailed view
503    TimestampLabel,
504    PathHistoryLabel,
505    StatusHistoryLabel,
506    FilesHistoryLabel,
507    SizeLabel,
508    CompressionLabel,
509    EncryptionLabel,
510    DurationLabel,
511    EnabledLabel,
512    SecondsUnit,
513
514    // Schedule table headers
515    ScheduleHeaderLabel,
516    ConfigurationLabel,
517
518    // Dashboard sections
519    StatisticsTitle,
520    DiskUsageTitle,
521    AllNormalStatus,
522    WarningsTitle,
523
524    // Dashboard statistics labels
525    TotalTargetsLabel,
526    HighPriorityTargetsLabel,
527    MediumPriorityTargetsLabel,
528    LowPriorityTargetsLabel,
529    TotalBackupsLabel,
530    SuccessCountLabel,
531    TotalFilesCountLabel,
532    TotalDataSizeLabel,
533    LastBackupLabel,
534    EncryptedBackupsLabel,
535    CompressedBackupsLabel,
536    BackupDirectoryLabel,
537    UsedCapacityLabel,
538    FileCountLabel,
539    DiskTotalCapacityLabel,
540    DiskFreeCapacityLabel,
541    DiskUsageRateLabel,
542    UsageStatusLabel,
543    RecentBackupsTitle,
544
545    // Incremental backup messages
546    PreviousBackupLabel,
547    ChangedFilesLabel,
548    NoBackupsFound,
549    FullBackupFallback,
550    MetadataLoadFailed,
551    DryRunMode,
552
553    // Relative time messages
554    DaysAgo,
555    HoursAgo,
556    MinutesAgo,
557    JustNow,
558    NotYetBackedUp,
559
560    // Dashboard warning messages
561    WarningTargetNotExists,
562    WarningDaysSinceLastBackup,
563    WarningNoBackupYet,
564    WarningFailedBackups,
565    WarningLowDiskSpace,
566    DashboardHintRunBackup,
567
568    // Interactive prompts
569    PromptPleaseSelect,
570    PromptDeleteBackup,
571    PromptDeleteOldBackups,
572    PromptDeleteTarget,
573    PromptDeleteCount,
574    PromptConfirmDelete,
575    PromptSelectPriority,
576    PromptBackupConfirm,
577
578    // Smart Analyze categories
579    SmartCategoryDirectory,
580    SmartCategoryRustProject,
581    SmartCategoryNodeJsProject,
582    SmartCategoryPythonProject,
583    SmartCategorySourceCodeProject,
584    SmartCategoryGitManaged,
585    SmartCategoryLowPriority,
586
587    // Smart Analyze reasons
588    SmartReasonSampling,
589    SmartReasonScore,
590    SmartReasonSecurityDir,
591    SmartReasonLowPriorityDir,
592
593    // Smart Exclude reasons
594    ExcludeReasonNpmDeps,
595    ExcludeReasonRustBuild,
596    ExcludeReasonVendor,
597    ExcludeReasonPythonCache,
598    ExcludeReasonPytestCache,
599    ExcludeReasonBuildArtifacts,
600    ExcludeReasonCacheDir,
601    ExcludeReasonGitMetadata,
602    ExcludeReasonSvnMetadata,
603    ExcludeReasonTempFile,
604    ExcludeReasonBackupFile,
605    ExcludeReasonEditorTemp,
606    ExcludeReasonLogFile,
607    ExcludeReasonMacOsMetadata,
608    ExcludeReasonWindowsThumb,
609    ExcludeReasonWindowsDesktop,
610
611    // Smart Detect labels
612    SmartDetectConfidenceLabel,
613    SmartDetectDescriptionLabel,
614    SmartDetectRecommendedActionLabel,
615    SmartDetectAnalyzing,
616
617    // Password strength messages
618    PasswordStrengthLabel,
619    PasswordStrengthWeak,
620    PasswordStrengthMedium,
621    PasswordStrengthStrong,
622    PasswordStrengthWeakMessage,
623    PasswordStrengthMediumMessage,
624    PasswordStrengthStrongMessage,
625    PasswordStrengthTip,
626
627    // Editor and config
628    EditorLaunchFailed,
629
630    // Smart feature progress
631    SubdirectoriesFound,
632    ProgressEvaluating,
633
634    // Backup confirmation prompts
635    ConfirmBackupTitle,
636    ConfirmBackupTargetFiles,
637    ConfirmBackupDestination,
638
639    // Cleanup confirmation prompts
640    ConfirmCleanupTitle,
641    ConfirmCleanupTargetCount,
642    ConfirmCleanupRetentionDays,
643
644    // Cleanup progress messages
645    CleanupDryRunScheduled,
646    CleanupCompleted,
647    CleanupFailed,
648
649    // Restore progress messages
650    RestoreDryRunDetected,
651    RestoreInProgress,
652    RestoreProgressFile,
653    RestoreIntegrityMetadataLoaded,
654    RestoreCompleted,
655    RestoreCompletedWithFailures,
656
657    // Restore error messages
658    ErrorRelativePathFailed,
659    ErrorPathTraversalDetected,
660    ErrorDirectoryCreateFailed,
661    ErrorFileReadFailed,
662    ErrorFileOpenFailedSymlink,
663    ErrorEncryptedButNoPassword,
664    ErrorMasterKeyRestoreFailed,
665    ErrorDecryptionFailed,
666    ErrorIntegrityVerificationFailed,
667    ErrorFileWriteFailed,
668    ErrorFileCountFailed,
669
670    // Backup progress and error messages
671    BackupProgressProcessing,
672    ErrorBackupDirectoryCreateFailed,
673    ErrorBackupWriteFailed,
674    ErrorBackupProcessFailed,
675    ErrorBackupCopyFailed,
676}
677
678impl MessageKey {
679    /// Get translated message for the given language
680    #[must_use]
681    pub fn get(&self, lang: Language) -> &'static str {
682        match lang {
683            Language::English => self.get_en(),
684            Language::Japanese => self.get_ja(),
685            Language::SimplifiedChinese => self.get_zh_cn(),
686            Language::TraditionalChinese => self.get_zh_tw(),
687        }
688    }
689
690    /// Get English message
691    fn get_en(&self) -> &'static str {
692        match self {
693            // Version and title
694            MessageKey::AppVersion => app_version(),
695            MessageKey::AppTitle => {
696                "Fast Local Backup Tool - Written in Rust, Type-safe, High-performance"
697            }
698            MessageKey::AppDescription => "Backup Suite - Fast Local Backup Tool",
699
700            // Command categories
701            MessageKey::BasicCommands => "📋 Basic Commands",
702            MessageKey::ExecutionCommands => "🚀 Execution Commands",
703            MessageKey::InformationCommands => "📊 Information Commands",
704            MessageKey::ConfigCommands => "⚙️  Configuration",
705            MessageKey::UtilityCommands => "🔧 Utility",
706            MessageKey::SmartCommands => "🤖 Smart Commands",
707
708            // Commands
709            MessageKey::CmdAdd => "add",
710            MessageKey::CmdList => "list, ls",
711            MessageKey::CmdRemove => "remove",
712            MessageKey::CmdClear => "clear",
713            MessageKey::CmdRun => "run",
714            MessageKey::CmdRestore => "restore",
715            MessageKey::CmdCleanup => "cleanup",
716            MessageKey::CmdStatus => "status",
717            MessageKey::CmdHistory => "history",
718            MessageKey::CmdDashboard => "dashboard",
719            MessageKey::CmdEnable => "enable",
720            MessageKey::CmdDisable => "disable",
721            MessageKey::CmdSchedule => "schedule",
722            MessageKey::CmdConfig => "config",
723            MessageKey::CmdOpen => "open",
724            MessageKey::CmdCompletion => "completion",
725            MessageKey::CmdSmart => "ai",
726
727            // Command descriptions
728            MessageKey::DescAdd => "Add target (interactive selection supported)",
729            MessageKey::DescList => "List targets",
730            MessageKey::DescRemove => "Remove target (interactive selection supported)",
731            MessageKey::DescClear => "Bulk delete",
732            MessageKey::DescRun => "Execute backup (encryption & compression supported)",
733            MessageKey::DescRestore => "Restore backup (auto-detect encryption & compression)",
734            MessageKey::DescCleanup => "Delete old backups",
735            MessageKey::DescStatus => "Display status",
736            MessageKey::DescHistory => "Display history",
737            MessageKey::DescDashboard => "Display dashboard",
738            MessageKey::DescEnable => "Enable auto backup",
739            MessageKey::DescDisable => "Disable auto backup",
740            MessageKey::DescSchedule => "Manage schedule",
741            MessageKey::DescConfig => "Manage configuration (destination, retention period)",
742            MessageKey::DescOpen => "Open backup directory",
743            MessageKey::DescCompletion => "Generate shell completion script",
744            MessageKey::DescSmart => "AI-driven intelligent backup management",
745
746            // AI subcommands
747            MessageKey::CmdSmartDetect => "detect",
748            MessageKey::CmdSmartAnalyze => "analyze",
749            MessageKey::CmdSmartSuggestExclude => "suggest-exclude",
750            MessageKey::CmdSmartAutoConfigure => "auto-configure",
751            MessageKey::DescSmartDetect => "Detect anomalies in backup history",
752            MessageKey::DescSmartAnalyze => "Analyze file importance",
753            MessageKey::DescSmartSuggestExclude => "Suggest exclude patterns",
754            MessageKey::DescSmartAutoConfigure => "Auto-configure backup settings with Smart rules",
755
756            // AI messages
757            MessageKey::SmartDetectTitle => "🤖 Smart Anomaly Detection",
758            MessageKey::SmartDetectNoAnomalies => "No anomalies detected in the backup history",
759            MessageKey::SmartDetectAnomalyFound => "Anomaly detected",
760            MessageKey::SmartAnalyzeTitle => "🤖 Smart File Importance Analysis",
761            MessageKey::SmartAnalyzeImportanceHigh => "High importance",
762            MessageKey::SmartAnalyzeImportanceMedium => "Medium importance",
763            MessageKey::SmartAnalyzeImportanceLow => "Low importance",
764            MessageKey::SmartSuggestExcludeTitle => "🤖 Smart Exclude Pattern Suggestions",
765            MessageKey::SmartSuggestExcludeRecommendation => "Recommended exclusion",
766            MessageKey::SmartAutoConfigureTitle => "🤖 Smart Auto-Configuration",
767            MessageKey::SmartAutoConfigureSuccess => "Auto-configuration completed successfully",
768            MessageKey::SmartDryRunModeLabel => "DRY RUN Mode",
769            MessageKey::PathValidationFailed => "Path validation failed",
770            MessageKey::PathSafetyValidationFailed => "Path safety validation failed",
771            MessageKey::SmartExampleMaxDepthComment => {
772                "# Specify subdirectory depth (up to 2 levels)"
773            }
774            MessageKey::SmartExampleMaxSubdirsComment => {
775                "# Specify maximum number of subdirectories to process (default: 100)"
776            }
777            MessageKey::SmartExampleIncreaseSubdirsComment => {
778                "# Increase subdirectory processing limit for large directory trees"
779            }
780            MessageKey::SmartAutoConfigureFeaturesHeader => "auto-configure features",
781            MessageKey::SmartFeatureEvaluateSubdirs => {
782                "Evaluate importance for each subdirectory individually"
783            }
784            MessageKey::SmartFeatureAutoDetectExclusions => {
785                "Auto-detect exclusion patterns (node_modules, target, .cache, etc.)"
786            }
787            MessageKey::SmartFeatureHighConfidencePatterns => {
788                "Apply only patterns with 80%+ confidence"
789            }
790            MessageKey::SmartFeatureAutoDetectProjectTypes => {
791                "Auto-detect project types (Rust, Node.js, Python, etc.)"
792            }
793            MessageKey::NoSubdirectoriesFound => "No subdirectories found",
794            MessageKey::SubdirLimitReached => {
795                "Limit reached, some subdirectories were not processed"
796            }
797            MessageKey::SubdirLimitChangeHint => "to change",
798            MessageKey::SkippingExcludeAnalysisLarge => {
799                "Skipping exclude pattern analysis (directory too large)"
800            }
801            MessageKey::FilesUnit => "files",
802            MessageKey::AddToExcludeListPrompt => "to exclude list?",
803            MessageKey::SmartRecommendsAddPrompt => {
804                "Smart recommends: Add {:?} (priority: {:?})?"
805            }
806            MessageKey::ExcludePatternsLabel => "Exclude patterns",
807            MessageKey::AnalysisFailedLabel => "Analysis failed",
808            MessageKey::SmartErrorNotEnabled => {
809                "AI features are not enabled. Compile with --features ai"
810            }
811            MessageKey::SmartErrorInsufficientData => "Insufficient data for Smart analysis",
812            MessageKey::SmartErrorInsufficientDataDetailed => {
813                "Insufficient data (minimum 3 entries required, found {})"
814            }
815            MessageKey::SmartErrorAnalysisFailed => "Smart analysis failed",
816            MessageKey::SmartErrorAnalysisLabel => "Analysis error",
817            MessageKey::HelpLabel => "Help",
818
819            // Options
820            MessageKey::Options => "Options:",
821            MessageKey::HelpOption => "-h, --help       Display this help",
822            MessageKey::VersionOption => "-V, --version    Display version information",
823
824            // Usage examples
825            MessageKey::UsageExamples => "Usage Examples:",
826            MessageKey::ExampleAddInteractive => "# Add file interactively",
827            MessageKey::ExampleRunHigh => "# Execute backup for high priority",
828            MessageKey::ExampleEncrypt => "# Encrypted backup (AES-256-GCM)",
829            MessageKey::ExampleCompress => "# Compressed backup (zstd fast compression)",
830            MessageKey::ExampleEncryptCompress => "# Encrypted + Compressed backup",
831            MessageKey::ExampleCleanup => "# Delete backups older than 30 days (dry run)",
832            MessageKey::ExampleSchedule => "# Setup schedule and enable",
833            MessageKey::ExampleSmartDetect => "# Detect anomalies in last 7 days",
834            MessageKey::ExampleSmartAnalyze => "# Analyze file importance",
835            MessageKey::ExampleSmartSuggestExclude => "# Get Smart exclude suggestions",
836            MessageKey::ExampleSmartAutoConfigureComment => "# Smart auto-configure (evaluate subdirectories individually with auto-exclusion)",
837            MessageKey::ExampleSmartDryRunComment => "# Dry-run (show recommendations only)",
838            MessageKey::ExampleSmartInteractiveComment => "# Interactive mode (confirm each subdirectory and exclusion pattern)",
839            MessageKey::SmartRecommendedCommandLabel => "Recommended command",
840            MessageKey::SmartNoExclusionsRecommended => "No exclusions recommended (already optimized)",
841            MessageKey::SmartAddToExcludeListPrompt => "to exclude list?",
842            MessageKey::SmartReductionLabel => "reduction",
843            MessageKey::SmartAddedLabel => "added",
844            MessageKey::SmartAutoConfigureErrorNoPath => "Error: Please specify paths to analyze",
845            MessageKey::SmartAutoConfigureUsageExamples => "Examples:\n  backup-suite smart auto-configure ~/projects\n  backup-suite smart auto-configure ~/Documents ~/projects --dry-run\n  backup-suite smart auto-configure ~/projects --interactive",
846
847            // Detailed info
848            MessageKey::DetailedInfo => "Detailed Information:",
849            MessageKey::DetailCommand => "Command details: backup-suite <command> --help",
850            MessageKey::ConfigFile => "Configuration file: ~/.config/backup-suite/config.toml",
851            MessageKey::BackupDestination => {
852                "Backup destination: ~/.local/share/backup-suite/backups/"
853            }
854
855            // Status messages
856            MessageKey::Added => "Added",
857            MessageKey::Removed => "Removed",
858            MessageKey::Deleted => "deleted",
859            MessageKey::Error => "Error",
860            MessageKey::Warning => "Warning",
861            MessageKey::BackupRunning => "Backup Running",
862            MessageKey::RestoreStarting => "Restore Starting",
863
864            // Encryption and compression
865            MessageKey::EncryptionPassword => "Encryption password",
866            MessageKey::SavePasswordSecurely => "⚠️  Please save this password securely!",
867            MessageKey::EncryptOption => "--encrypt: AES-256-GCM encryption",
868            MessageKey::CompressOption => "--compress zstd/gzip: Compression",
869            MessageKey::CompressLevel => "--compress-level 1-22: Compression level",
870
871            // Run command options
872            MessageKey::IncrementalOption => {
873                "--incremental: Incremental backup (changed files only)"
874            }
875            MessageKey::GeneratePasswordOption => "--generate-password: Generate secure password",
876            MessageKey::PasswordOption => "--password <PASSWORD>: Specify encryption password",
877            MessageKey::DryRunOption => "--dry-run: Dry run mode (no actual backup)",
878            MessageKey::PriorityOption => {
879                "--priority <PRIORITY>: Filter by priority (high/medium/low)"
880            }
881            MessageKey::CategoryOption => "--category <CATEGORY>: Filter by category",
882
883            // Restore command options
884            MessageKey::FromOption => "--from <BACKUP_NAME>: Backup to restore",
885            MessageKey::ToOption => "--to <DESTINATION>: Restore destination",
886            MessageKey::RestorePasswordOption => {
887                "--password <PASSWORD>: Decryption password (if encrypted)"
888            }
889
890            // Cleanup command options
891            MessageKey::DaysOption => "--days <DAYS>: Delete backups older than specified days",
892            MessageKey::CleanupDryRunOption => {
893                "--dry-run: Dry run mode (show what would be deleted)"
894            }
895
896            // Add command options
897            MessageKey::AddPriorityOption => {
898                "--priority <PRIORITY>: Set priority (high/medium/low)"
899            }
900            MessageKey::AddCategoryOption => "--category <CATEGORY>: Set category",
901            MessageKey::InteractiveOption => "--interactive: Interactive selection mode",
902
903            // List command options
904            MessageKey::ListPriorityOption => "--priority <PRIORITY>: Filter by priority",
905
906            // Schedule help
907            MessageKey::ScheduleTitle => "📅 Backup Suite Schedule Management",
908            MessageKey::ScheduleDescription => "Automatic backup schedule setup and control system",
909            MessageKey::ScheduleUsage => "Usage:",
910            MessageKey::ScheduleCommands => "📋 Schedule Management Commands",
911            MessageKey::ScheduleEnable => "enable       Enable automatic backup",
912            MessageKey::ScheduleDisable => "disable      Disable automatic backup",
913            MessageKey::ScheduleStatus => "status       Display current schedule status",
914            MessageKey::ScheduleSetup => "setup        Setup schedule frequency",
915            MessageKey::ScheduleHelp => "help         Display this help",
916
917            // Config help
918            MessageKey::ConfigTitle => "⚙️  Backup Suite Configuration Management",
919            MessageKey::ConfigDescription => {
920                "Command to manage backup destination, retention period and other settings"
921            }
922            MessageKey::ConfigUsage => "Usage:",
923            MessageKey::ConfigMgmtCommands => "📋 Configuration Management Commands",
924            MessageKey::ConfigSetDestination => {
925                "set-destination <path>  Change backup destination directory"
926            }
927            MessageKey::ConfigGetDestination => {
928                "get-destination        Display current backup destination"
929            }
930            MessageKey::ConfigSetKeepDays => {
931                "set-keep-days <days>   Change backup retention period (1-3650 days)"
932            }
933            MessageKey::ConfigGetKeepDays => {
934                "get-keep-days          Display current backup retention period"
935            }
936            MessageKey::ConfigOpen => {
937                "open                   Open configuration file in default editor"
938            }
939            MessageKey::ConfigHelp => "help                   Display this help",
940
941            // Schedule detailed options
942            MessageKey::ScheduleDetailedOptions => "⚙️  Detailed Options",
943            MessageKey::ScheduleEnableOption => "enable --priority <priority>",
944            MessageKey::ScheduleDisableOption => "disable --priority <priority>",
945            MessageKey::ScheduleSetupOption => "setup --high <freq> --medium <freq> --low <freq>",
946            MessageKey::ScheduleFrequencies => "📊 Frequency Settings:",
947            MessageKey::ScheduleDaily => "daily   - Every day at 2:00 AM",
948            MessageKey::ScheduleWeekly => "weekly  - Every Sunday at 2:00 AM",
949            MessageKey::ScheduleMonthly => "monthly - First day of month at 2:00 AM",
950            MessageKey::ScheduleTips => "💡 Tips:",
951            MessageKey::ScheduleTip1 => {
952                "  • After enabling schedule, it runs automatically via macOS launchctl"
953            }
954            MessageKey::ScheduleTip2 => "  • Use 'status' command to check actual operation status",
955            MessageKey::ScheduleTip3 => "  • Each priority setting is managed independently",
956
957            // Config examples and tips
958            MessageKey::ConfigExampleExternal => "# Change backup destination to external HDD",
959            MessageKey::ConfigExampleGetDest => "# Check current backup destination",
960            MessageKey::ConfigExampleSetDays => "# Change retention period to 60 days",
961            MessageKey::ConfigExampleOpen => "# Open configuration file in editor",
962            MessageKey::ConfigExampleTilde => "# Tilde expansion is supported",
963            MessageKey::ConfigTip1 => "  • Non-existent directories are automatically created",
964            MessageKey::ConfigTip2 => "  • Write permissions are automatically checked",
965            MessageKey::ConfigTip3 => {
966                "  • Backups older than retention period can be deleted with cleanup command"
967            }
968
969            // Runtime messages
970            MessageKey::NoTargetsRegistered => "No backup targets registered",
971            MessageKey::SelectionCancelled => "Selection cancelled",
972            MessageKey::ConfirmClearAll => {
973                "⚠️  Warning: Delete all {} backup targets. Are you sure?"
974            }
975            MessageKey::ConfirmClearPriority => {
976                "⚠️  Warning: Delete {count} backup targets with {priority} priority. Are you sure?"
977            }
978            MessageKey::NoPriorityTargets => "No backup targets found with specified priority",
979            MessageKey::ConfirmCleanup => "Delete backups older than {} days. Are you sure?",
980            MessageKey::DaysOutOfRange => "days must be in the range 1-3650 (specified: {})",
981            MessageKey::PromptSelectTarget => "Select backup target to remove",
982            MessageKey::PromptSelectFile => "Select file/directory to add: ",
983            MessageKey::PathNotExists => "Path does not exist",
984            MessageKey::NotInBackupConfig => "Not registered in backup configuration",
985            MessageKey::SpecifyPriorityOrAll => "Specify --priority or --all",
986            MessageKey::CountDeleted => "deleted",
987            MessageKey::DryRun => "dry run",
988            MessageKey::Category => "Category",
989            MessageKey::Encryption => "Encryption",
990            MessageKey::Compression => "Compression",
991            MessageKey::ErrorDetails => "Error Details",
992            MessageKey::Detected => "Detected",
993            MessageKey::NoBackups => "No backups",
994            MessageKey::RestoreStart => "Restore Starting",
995            MessageKey::Restoring => "Restoring...",
996            MessageKey::RestoredSuccess => "Successfully restored backup to",
997            MessageKey::RestoredFileCount => "Restored files:",
998            MessageKey::Deleting => "Deleting",
999            MessageKey::Destination => "Destination",
1000            MessageKey::Targets => "Targets",
1001            MessageKey::High => "High",
1002            MessageKey::Medium => "Medium",
1003            MessageKey::Low => "Low",
1004            MessageKey::BackupHistory => "Backup History",
1005            MessageKey::Days => "days",
1006            MessageKey::AutoBackupEnabled => "Automatic backup enabled",
1007            MessageKey::AutoBackupDisabled => "Automatic backup disabled",
1008            MessageKey::OpenDirectory => "Opening",
1009            MessageKey::PriorityScheduleSetup => "Priority schedule setup completed",
1010            MessageKey::ScheduleSetupFailed => "Failed to setup priority schedule",
1011            MessageKey::LaunchctlUnloadWarning => "launchctl unload warning",
1012            MessageKey::PriorityScheduleDeleted => "Priority schedule deleted",
1013            MessageKey::ScheduleNotConfigured => "Priority schedule is not configured",
1014            MessageKey::ScheduleDeletionFailed => "Failed to delete priority schedule",
1015            MessageKey::ActualScheduleStatus => "Actual Schedule Status",
1016            MessageKey::Enabled => "Enabled",
1017            MessageKey::Disabled => "Disabled",
1018            MessageKey::ScheduleSettings => "Schedule Settings",
1019            MessageKey::ScheduleUpdated => "Schedule updated and applied",
1020            MessageKey::ScheduleUpdatedEnableLater => {
1021                "Schedule settings updated (enable with 'schedule enable')"
1022            }
1023            MessageKey::HighPriority => "High priority",
1024            MessageKey::MediumPriority => "Medium priority",
1025            MessageKey::LowPriority => "Low priority",
1026            MessageKey::DirectoryNotExists => "Directory does not exist. Creating",
1027            MessageKey::DirectoryCreating => "Creating",
1028            MessageKey::DestinationChanged => "Backup destination changed",
1029            MessageKey::Before => "Before",
1030            MessageKey::After => "After",
1031            MessageKey::CurrentDestination => "Current backup destination",
1032            MessageKey::KeepDaysOutOfRange => "keep_days must be between 1-3650 (specified value:",
1033            MessageKey::KeepDaysChanged => "Backup retention period changed",
1034            MessageKey::CurrentKeepDays => "Current backup retention period",
1035            MessageKey::OpeningConfigFile => "Opening configuration file",
1036            MessageKey::EditorDidNotExitCleanly => "Editor did not exit cleanly",
1037            MessageKey::RustFastTypeSafe => {
1038                "Intelligent Backup with AES-256 Encryption & Smart Analysis"
1039            }
1040            MessageKey::ScheduleCommandPlaceholder => "<command>",
1041            MessageKey::ConfigCommandPlaceholder => "<command>",
1042            MessageKey::ConfigArgsPlaceholder => "[args]",
1043            MessageKey::MainHelp => "Main help",
1044            MessageKey::ConfigFileLabel => "Configuration file",
1045            MessageKey::EnableOnlySpecifiedPriority => {
1046                "Enable only specified priority (high/medium/low)"
1047            }
1048            MessageKey::DisableOnlySpecifiedPriority => "Disable only specified priority",
1049            MessageKey::SetExecutionFrequency => {
1050                "Set execution frequency for each priority (daily/weekly/monthly)"
1051            }
1052            MessageKey::EnableAllAutoBackups => "# Enable all automatic backups",
1053            MessageKey::EnableHighOnly => "# Enable high priority only",
1054            MessageKey::SetupScheduleFreq => "# Setup schedule frequency",
1055            MessageKey::CheckCurrentConfig => "# Check current configuration",
1056
1057            // Additional runtime units and labels
1058            MessageKey::Files => "files",
1059            MessageKey::EncryptedLabel => "Encrypted:",
1060            MessageKey::StatusTitle => "Status",
1061            MessageKey::DaysUnit => "days",
1062            MessageKey::DryRunParens => "(dry run)",
1063
1064            // Backup progress and result messages
1065            MessageKey::FilesDetected => "files detected",
1066            MessageKey::FullBackupMode => "Full Backup Mode (all files)",
1067            MessageKey::IncrementalBackupMode => "Incremental Backup Mode (changed files only)",
1068            MessageKey::BackupComplete => "Backup complete",
1069            MessageKey::BackupCompleteWithFailures => "Backup complete (with failures)",
1070            MessageKey::BackupResultTitle => "Backup Result",
1071            MessageKey::TotalFilesLabel => "Total Files",
1072            MessageKey::SuccessfulLabel => "Successful",
1073            MessageKey::FailedLabel => "Failed",
1074            MessageKey::TotalSizeLabel => "Total Size",
1075
1076            // Remove/Update command messages
1077            MessageKey::ConfirmRemoveTarget => {
1078                "Are you sure you want to remove {} from backup targets?"
1079            }
1080            MessageKey::UpdatedTarget => "Updated backup target",
1081            MessageKey::PathLabel => "Path",
1082            MessageKey::PriorityLabel => "Priority",
1083            MessageKey::CategoryLabel => "Category",
1084
1085            // Smart Analyze labels
1086            MessageKey::ItemLabel => "Item",
1087            MessageKey::ValueLabel => "Value",
1088            MessageKey::ImportanceScoreLabel => "Importance Score",
1089            MessageKey::RecommendedPriorityLabel => "Recommended Priority",
1090            MessageKey::ReasonLabel => "Reason",
1091
1092            // Smart Auto-Configure labels
1093            MessageKey::AnalyzingLabel => "Analyzing",
1094            MessageKey::AddedToConfiguration => "Added to configuration",
1095            MessageKey::ItemsAdded => "Items added",
1096            MessageKey::ExistingBackupTargets => "You have {} existing backup targets",
1097            MessageKey::AddNewTargets => "Add new targets?",
1098
1099            // History detailed view
1100            MessageKey::TimestampLabel => "Timestamp",
1101            MessageKey::PathHistoryLabel => "Path",
1102            MessageKey::StatusHistoryLabel => "Status",
1103            MessageKey::FilesHistoryLabel => "Files",
1104            MessageKey::SizeLabel => "Size",
1105            MessageKey::CompressionLabel => "Compression",
1106            MessageKey::EncryptionLabel => "Encryption",
1107            MessageKey::DurationLabel => "Duration",
1108            MessageKey::EnabledLabel => "Enabled",
1109            MessageKey::SecondsUnit => "seconds",
1110
1111            // Dashboard sections
1112            MessageKey::StatisticsTitle => "📈 Statistics",
1113            MessageKey::DiskUsageTitle => "💾 Disk Usage",
1114            MessageKey::AllNormalStatus => "⚡ All Normal",
1115            MessageKey::WarningsTitle => "⚠️  Warnings",
1116
1117            // Incremental backup messages
1118            MessageKey::PreviousBackupLabel => "Previous backup",
1119            MessageKey::ChangedFilesLabel => "Changed files",
1120            MessageKey::NoBackupsFound => "ℹ️  No previous backup found. Performing full backup.",
1121            MessageKey::FullBackupFallback => {
1122                "⚠️  Failed to load previous metadata. Falling back to full backup."
1123            }
1124            MessageKey::MetadataLoadFailed => "   Details",
1125            MessageKey::DryRunMode => "📋 Dry run mode: detected {} files for backup",
1126
1127            // Dashboard statistics labels
1128            MessageKey::TotalTargetsLabel => "Total Targets",
1129            MessageKey::HighPriorityTargetsLabel => "  High Priority",
1130            MessageKey::MediumPriorityTargetsLabel => "  Medium Priority",
1131            MessageKey::LowPriorityTargetsLabel => "  Low Priority",
1132            MessageKey::TotalBackupsLabel => "Total Backups",
1133            MessageKey::SuccessCountLabel => "  Success",
1134            MessageKey::TotalFilesCountLabel => "Total Files",
1135            MessageKey::TotalDataSizeLabel => "Total Data Size",
1136            MessageKey::LastBackupLabel => "Last Backup",
1137            MessageKey::EncryptedBackupsLabel => "Encrypted Backups",
1138            MessageKey::CompressedBackupsLabel => "Compressed Backups",
1139            MessageKey::BackupDirectoryLabel => "Backup Directory",
1140            MessageKey::UsedCapacityLabel => "Used Capacity",
1141            MessageKey::FileCountLabel => "File Count",
1142            MessageKey::DiskTotalCapacityLabel => "Disk Total Capacity",
1143            MessageKey::DiskFreeCapacityLabel => "Disk Free Capacity",
1144            MessageKey::DiskUsageRateLabel => "Disk Usage Rate",
1145            MessageKey::UsageStatusLabel => "Usage Status",
1146            MessageKey::RecentBackupsTitle => "🕒 Recent Backups (Latest 5)",
1147
1148            // Schedule table headers
1149            MessageKey::ScheduleHeaderLabel => "Schedule",
1150            MessageKey::ConfigurationLabel => "Configuration",
1151
1152            // Relative time messages
1153            MessageKey::DaysAgo => "{} days ago",
1154            MessageKey::HoursAgo => "{} hours ago",
1155            MessageKey::MinutesAgo => "{} minutes ago",
1156            MessageKey::JustNow => "Just now",
1157            MessageKey::NotYetBackedUp => "Not yet",
1158
1159            // Dashboard warning messages
1160            MessageKey::WarningTargetNotExists => "Backup target does not exist: {}",
1161            MessageKey::WarningDaysSinceLastBackup => "It has been {} days since the last backup",
1162            MessageKey::WarningNoBackupYet => "No backup has been performed yet",
1163            MessageKey::WarningFailedBackups => "There are {} failed backups",
1164            MessageKey::WarningLowDiskSpace => "Disk space is running low ({:.1}%)",
1165            MessageKey::DashboardHintRunBackup => {
1166                "💡 Hint: Run 'backup-suite run' to perform a backup"
1167            }
1168
1169            // Interactive prompts
1170            MessageKey::PromptPleaseSelect => "Please select",
1171            MessageKey::PromptDeleteBackup => "Do you want to delete this backup?",
1172            MessageKey::PromptDeleteOldBackups => "🗑️  Delete old backups",
1173            MessageKey::PromptDeleteTarget => "Targets to delete: {} backups",
1174            MessageKey::PromptDeleteCount => "targets",
1175            MessageKey::PromptConfirmDelete => "Do you want to proceed with deletion?",
1176            MessageKey::PromptSelectPriority => "Select priority",
1177            MessageKey::PromptBackupConfirm => "Do you want to perform a backup?",
1178
1179            // Smart Analyze categories
1180            MessageKey::SmartCategoryDirectory => "Directory",
1181            MessageKey::SmartCategoryRustProject => "Rust Project",
1182            MessageKey::SmartCategoryNodeJsProject => "Node.js Project",
1183            MessageKey::SmartCategoryPythonProject => "Python Project",
1184            MessageKey::SmartCategorySourceCodeProject => "Source Code Project",
1185            MessageKey::SmartCategoryGitManaged => "Git-managed Directory",
1186            MessageKey::SmartCategoryLowPriority => "Low Priority Directory",
1187
1188            // Smart Analyze reasons
1189            MessageKey::SmartReasonSampling => {
1190                "(Sampling: {} files, high importance: {}, score: {})"
1191            }
1192            MessageKey::SmartReasonScore => "(Score: {})",
1193            MessageKey::SmartReasonSecurityDir => {
1194                "Credentials/Secret keys ({} directory, encryption required, score: 95)"
1195            }
1196            MessageKey::SmartReasonLowPriorityDir => {
1197                "Cache/Log/Archive etc. (Directory: {}, score: 20)"
1198            }
1199
1200            // Smart Exclude reasons
1201            MessageKey::ExcludeReasonNpmDeps => {
1202                "npm/yarn dependencies (regenerable from package.json)"
1203            }
1204            MessageKey::ExcludeReasonRustBuild => {
1205                "Rust build artifacts (regenerable from Cargo.toml)"
1206            }
1207            MessageKey::ExcludeReasonVendor => "Dependency vendoring (regenerable)",
1208            MessageKey::ExcludeReasonPythonCache => "Python cache (auto-generated)",
1209            MessageKey::ExcludeReasonPytestCache => "pytest cache (auto-generated)",
1210            MessageKey::ExcludeReasonBuildArtifacts => "Build artifacts directory (rebuildable)",
1211            MessageKey::ExcludeReasonCacheDir => "Cache directory (temporary data)",
1212            MessageKey::ExcludeReasonGitMetadata => {
1213                "Git repository metadata (recoverable from remote)"
1214            }
1215            MessageKey::ExcludeReasonSvnMetadata => {
1216                "SVN repository metadata (recoverable from remote)"
1217            }
1218            MessageKey::ExcludeReasonTempFile => "Temporary file",
1219            MessageKey::ExcludeReasonBackupFile => {
1220                "Backup file (unnecessary if original file exists)"
1221            }
1222            MessageKey::ExcludeReasonEditorTemp => "Editor temporary file",
1223            MessageKey::ExcludeReasonLogFile => "Log file (old logs usually unnecessary)",
1224            MessageKey::ExcludeReasonMacOsMetadata => "macOS metadata file (auto-generated)",
1225            MessageKey::ExcludeReasonWindowsThumb => "Windows thumbnail cache (auto-generated)",
1226            MessageKey::ExcludeReasonWindowsDesktop => {
1227                "Windows desktop settings file (auto-generated)"
1228            }
1229
1230            // Smart Detect labels
1231            MessageKey::SmartDetectConfidenceLabel => "Confidence",
1232            MessageKey::SmartDetectDescriptionLabel => "Description",
1233            MessageKey::SmartDetectRecommendedActionLabel => "Recommended Action",
1234            MessageKey::SmartDetectAnalyzing => "Analyzing last {} days of backups",
1235
1236            // Password strength messages
1237            MessageKey::PasswordStrengthLabel => "Password Strength:",
1238            MessageKey::PasswordStrengthWeak => "Weak",
1239            MessageKey::PasswordStrengthMedium => "Medium",
1240            MessageKey::PasswordStrengthStrong => "Strong",
1241            MessageKey::PasswordStrengthWeakMessage => {
1242                "This password may be vulnerable to attacks. Consider using a longer password with varied characters."
1243            }
1244            MessageKey::PasswordStrengthMediumMessage => {
1245                "This password provides moderate security. Adding special characters or length would improve it."
1246            }
1247            MessageKey::PasswordStrengthStrongMessage => {
1248                "This password provides strong security."
1249            }
1250            MessageKey::PasswordStrengthTip => {
1251                "Tip: Use --generate-password to create a strong random password."
1252            }
1253
1254            // Editor and config
1255            MessageKey::EditorLaunchFailed => "Failed to launch editor: {}",
1256
1257            // Smart feature progress
1258            MessageKey::SubdirectoriesFound => "Found {} subdirectories",
1259            MessageKey::ProgressEvaluating => "Progress - Evaluating: {:?}",
1260
1261            // Backup confirmation prompts
1262            MessageKey::ConfirmBackupTitle => "📦 Backup Execution Confirmation",
1263            MessageKey::ConfirmBackupTargetFiles => "Target files: {} files",
1264            MessageKey::ConfirmBackupDestination => "Backup destination: {}",
1265
1266            // Cleanup confirmation prompts
1267            MessageKey::ConfirmCleanupTitle => "🗑️  Delete Old Backups",
1268            MessageKey::ConfirmCleanupTargetCount => "Deletion targets: {} backups",
1269            MessageKey::ConfirmCleanupRetentionDays => "Retention period: {} days",
1270
1271            // Cleanup progress messages
1272            MessageKey::CleanupDryRunScheduled => "🗑️  [Dry Run] Scheduled for deletion: {:?}",
1273            MessageKey::CleanupCompleted => "🗑️  Deletion completed: {:?}",
1274            MessageKey::CleanupFailed => "Deletion failed {:?}: {}",
1275
1276            // Restore progress messages
1277            MessageKey::RestoreDryRunDetected => "📋 Dry run mode: {} files detected for restore",
1278            MessageKey::RestoreInProgress => "Restoring...",
1279            MessageKey::RestoreProgressFile => "Restoring: {:?}",
1280            MessageKey::RestoreIntegrityMetadataLoaded => "✓ Integrity metadata loaded ({} backups)",
1281            MessageKey::RestoreCompleted => "✓ Restore completed",
1282            MessageKey::RestoreCompletedWithFailures => "⚠ Restore completed ({} failed)",
1283
1284            // Restore error messages
1285            MessageKey::ErrorRelativePathFailed => "Failed to get relative path {}: {}",
1286            MessageKey::ErrorPathTraversalDetected => "Path traversal detected {}: {}",
1287            MessageKey::ErrorDirectoryCreateFailed => "Failed to create directory {}: {}",
1288            MessageKey::ErrorFileReadFailed => "Failed to read file: {}",
1289            MessageKey::ErrorFileOpenFailedSymlink => "Failed to open file (possible symlink attack): {}",
1290            MessageKey::ErrorEncryptedButNoPassword => "Encrypted file but no password specified: {}",
1291            MessageKey::ErrorMasterKeyRestoreFailed => "Failed to restore master key: {}",
1292            MessageKey::ErrorDecryptionFailed => "Decryption failed {}: {}",
1293            MessageKey::ErrorIntegrityVerificationFailed => "⚠ Integrity verification failed (file tampered): {}",
1294            MessageKey::ErrorFileWriteFailed => "Failed to write file {}: {}",
1295            MessageKey::ErrorFileCountFailed => "Errors occurred in {} files",
1296
1297            // Backup progress and error messages
1298            MessageKey::BackupProgressProcessing => "Processing: {:?}",
1299            MessageKey::ErrorBackupDirectoryCreateFailed => "Failed to create directory {}: {}",
1300            MessageKey::ErrorBackupWriteFailed => "Write failed {}: {}",
1301            MessageKey::ErrorBackupProcessFailed => "Processing failed {}: {}",
1302            MessageKey::ErrorBackupCopyFailed => "Copy failed {}: {}",
1303        }
1304    }
1305
1306    /// Get Japanese message
1307    fn get_ja(&self) -> &'static str {
1308        match self {
1309            // Version and title
1310            MessageKey::AppVersion => app_version(),
1311            MessageKey::AppTitle => "高速ローカルバックアップツール - Rust製・型安全・高性能",
1312            MessageKey::AppDescription => "Backup Suite - 高速ローカルバックアップツール",
1313
1314            // Command categories
1315            MessageKey::BasicCommands => "📋 基本コマンド",
1316            MessageKey::ExecutionCommands => "🚀 実行コマンド",
1317            MessageKey::InformationCommands => "📊 情報表示",
1318            MessageKey::ConfigCommands => "⚙️  設定管理",
1319            MessageKey::UtilityCommands => "🔧 ユーティリティ",
1320            MessageKey::SmartCommands => "🤖 Smartコマンド",
1321
1322            // Commands
1323            MessageKey::CmdAdd => "add",
1324            MessageKey::CmdList => "list, ls",
1325            MessageKey::CmdRemove => "remove",
1326            MessageKey::CmdClear => "clear",
1327            MessageKey::CmdRun => "run",
1328            MessageKey::CmdRestore => "restore",
1329            MessageKey::CmdCleanup => "cleanup",
1330            MessageKey::CmdStatus => "status",
1331            MessageKey::CmdHistory => "history",
1332            MessageKey::CmdDashboard => "dashboard",
1333            MessageKey::CmdEnable => "enable",
1334            MessageKey::CmdDisable => "disable",
1335            MessageKey::CmdSchedule => "schedule",
1336            MessageKey::CmdConfig => "config",
1337            MessageKey::CmdOpen => "open",
1338            MessageKey::CmdCompletion => "completion",
1339            MessageKey::CmdSmart => "ai",
1340
1341            // Command descriptions
1342            MessageKey::DescAdd => "対象追加(インタラクティブ選択対応)",
1343            MessageKey::DescList => "一覧表示",
1344            MessageKey::DescRemove => "対象削除(インタラクティブ選択対応)",
1345            MessageKey::DescClear => "一括削除",
1346            MessageKey::DescRun => "バックアップ実行(暗号化・圧縮対応)",
1347            MessageKey::DescRestore => "バックアップ復元(暗号化・圧縮自動検出)",
1348            MessageKey::DescCleanup => "古いバックアップ削除",
1349            MessageKey::DescStatus => "ステータス表示",
1350            MessageKey::DescHistory => "履歴表示",
1351            MessageKey::DescDashboard => "ダッシュボード表示",
1352            MessageKey::DescEnable => "自動バックアップ有効化",
1353            MessageKey::DescDisable => "自動バックアップ無効化",
1354            MessageKey::DescSchedule => "スケジュール管理",
1355            MessageKey::DescConfig => "設定管理(保存先・保持期間)",
1356            MessageKey::DescOpen => "バックアップディレクトリを開く",
1357            MessageKey::DescCompletion => "シェル補完スクリプト生成",
1358            MessageKey::DescSmart => "AI駆動のインテリジェントバックアップ管理",
1359
1360            // AI subcommands
1361            MessageKey::CmdSmartDetect => "detect",
1362            MessageKey::CmdSmartAnalyze => "analyze",
1363            MessageKey::CmdSmartSuggestExclude => "suggest-exclude",
1364            MessageKey::CmdSmartAutoConfigure => "auto-configure",
1365            MessageKey::DescSmartDetect => "バックアップ履歴の異常検知",
1366            MessageKey::DescSmartAnalyze => "ファイル重要度分析",
1367            MessageKey::DescSmartSuggestExclude => "除外パターン提案",
1368            MessageKey::DescSmartAutoConfigure => "Smartルールによる自動設定",
1369
1370            // AI messages
1371            MessageKey::SmartDetectTitle => "🤖 Smart異常検知",
1372            MessageKey::SmartDetectNoAnomalies => "バックアップ履歴に異常は検出されませんでした",
1373            MessageKey::SmartDetectAnomalyFound => "異常を検出しました",
1374            MessageKey::SmartAnalyzeTitle => "🤖 Smartファイル重要度分析",
1375            MessageKey::SmartAnalyzeImportanceHigh => "重要度:高",
1376            MessageKey::SmartAnalyzeImportanceMedium => "重要度:中",
1377            MessageKey::SmartAnalyzeImportanceLow => "重要度:低",
1378            MessageKey::SmartSuggestExcludeTitle => "🤖 Smart除外パターン提案",
1379            MessageKey::SmartSuggestExcludeRecommendation => "除外推奨",
1380            MessageKey::SmartAutoConfigureTitle => "🤖 Smart自動設定",
1381            MessageKey::SmartAutoConfigureSuccess => "自動設定が完了しました",
1382            MessageKey::SmartDryRunModeLabel => "ドライラン モード",
1383            MessageKey::PathValidationFailed => "パスの検証に失敗しました",
1384            MessageKey::PathSafetyValidationFailed => "パスの安全性検証に失敗しました",
1385            MessageKey::SmartExampleMaxDepthComment => {
1386                "# サブディレクトリの探索深度を指定(2階層まで)"
1387            }
1388            MessageKey::SmartExampleMaxSubdirsComment => {
1389                "# 処理するサブディレクトリの最大数を指定(デフォルト: 100)"
1390            }
1391            MessageKey::SmartExampleIncreaseSubdirsComment => {
1392                "# 大量のサブディレクトリがある場合の処理数上限を増やす"
1393            }
1394            MessageKey::SmartAutoConfigureFeaturesHeader => "auto-configure の機能",
1395            MessageKey::SmartFeatureEvaluateSubdirs => {
1396                "サブディレクトリごとに重要度を個別評価"
1397            }
1398            MessageKey::SmartFeatureAutoDetectExclusions => {
1399                "除外パターンを自動検出・提案(node_modules, target, .cache等)"
1400            }
1401            MessageKey::SmartFeatureHighConfidencePatterns => {
1402                "信頼度80%以上のパターンのみを適用"
1403            }
1404            MessageKey::SmartFeatureAutoDetectProjectTypes => {
1405                "プロジェクトタイプを自動判定(Rust, Node.js, Python等)"
1406            }
1407            MessageKey::NoSubdirectoriesFound => "サブディレクトリが見つかりません",
1408            MessageKey::SubdirLimitReached => {
1409                "制限に達したため、一部のサブディレクトリは処理されませんでした"
1410            }
1411            MessageKey::SubdirLimitChangeHint => "で変更可能",
1412            MessageKey::SkippingExcludeAnalysisLarge => {
1413                "ディレクトリが大きいため除外パターン分析をスキップ"
1414            }
1415            MessageKey::FilesUnit => "ファイル以上",
1416            MessageKey::AddToExcludeListPrompt => "を除外リストに追加しますか?",
1417            MessageKey::SmartRecommendsAddPrompt => {
1418                "Smart推奨: {:?} (優先度: {:?}) を追加しますか?"
1419            }
1420            MessageKey::ExcludePatternsLabel => "除外パターン",
1421            MessageKey::AnalysisFailedLabel => "分析失敗",
1422            MessageKey::SmartErrorNotEnabled => {
1423                "Smart機能が有効化されていません。--features smart でコンパイルしてください"
1424            }
1425            MessageKey::SmartErrorInsufficientData => "Smart分析に必要なデータが不足しています",
1426            MessageKey::SmartErrorInsufficientDataDetailed => {
1427                "データが不足しています(最低3件必要、{}件しかありません)"
1428            }
1429            MessageKey::SmartErrorAnalysisFailed => "Smart分析に失敗しました",
1430            MessageKey::SmartErrorAnalysisLabel => "分析エラー",
1431            MessageKey::HelpLabel => "ヘルプ",
1432
1433            // Options
1434            MessageKey::Options => "オプション:",
1435            MessageKey::HelpOption => "-h, --help       このヘルプを表示",
1436            MessageKey::VersionOption => "-V, --version    バージョン情報を表示",
1437
1438            // Usage examples
1439            MessageKey::UsageExamples => "使用例:",
1440            MessageKey::ExampleAddInteractive => "# インタラクティブでファイルを追加",
1441            MessageKey::ExampleRunHigh => "# 高優先度のバックアップを実行",
1442            MessageKey::ExampleEncrypt => "# 暗号化バックアップ(AES-256-GCM)",
1443            MessageKey::ExampleCompress => "# 圧縮バックアップ(zstd高速圧縮)",
1444            MessageKey::ExampleEncryptCompress => "# 暗号化+圧縮バックアップ",
1445            MessageKey::ExampleCleanup => "# 30日以上前のバックアップを削除(ドライラン)",
1446            MessageKey::ExampleSchedule => "# スケジュールを設定して有効化",
1447            MessageKey::ExampleSmartDetect => "# 直近7日間の異常検知",
1448            MessageKey::ExampleSmartAnalyze => "# ファイル重要度分析",
1449            MessageKey::ExampleSmartSuggestExclude => "# Smart除外推奨を取得",
1450            MessageKey::ExampleSmartAutoConfigureComment => "# Smart自動設定(サブディレクトリを個別に評価・除外パターン自動適用)",
1451            MessageKey::ExampleSmartDryRunComment => "# ドライラン(確認のみ、設定適用なし)",
1452            MessageKey::ExampleSmartInteractiveComment => "# 対話モード(各サブディレクトリと除外パターンを確認)",
1453            MessageKey::SmartRecommendedCommandLabel => "推奨コマンド",
1454            MessageKey::SmartNoExclusionsRecommended => "除外推奨なし(すべて最適化済み)",
1455            MessageKey::SmartAddToExcludeListPrompt => "を除外リストに追加しますか?",
1456            MessageKey::SmartReductionLabel => "削減見込",
1457            MessageKey::SmartAddedLabel => "を追加しました",
1458            MessageKey::SmartAutoConfigureErrorNoPath => "エラー: 分析対象のパスを指定してください",
1459            MessageKey::SmartAutoConfigureUsageExamples => "使用例:\n  backup-suite smart auto-configure ~/projects\n  backup-suite smart auto-configure ~/Documents ~/projects --dry-run\n  backup-suite smart auto-configure ~/projects --interactive",
1460
1461            // Detailed info
1462            MessageKey::DetailedInfo => "詳細情報:",
1463            MessageKey::DetailCommand => "各コマンドの詳細: backup-suite <コマンド> --help",
1464            MessageKey::ConfigFile => "設定ファイル: ~/.config/backup-suite/config.toml",
1465            MessageKey::BackupDestination => "バックアップ先: ~/.local/share/backup-suite/backups/",
1466
1467            // Status messages
1468            MessageKey::Added => "追加",
1469            MessageKey::Removed => "削除",
1470            MessageKey::Deleted => "件削除",
1471            MessageKey::Error => "エラー",
1472            MessageKey::Warning => "⚠️",
1473            MessageKey::BackupRunning => "🚀 バックアップ実行",
1474            MessageKey::RestoreStarting => "🔄 復元開始",
1475
1476            // Encryption and compression
1477            MessageKey::EncryptionPassword => "暗号化パスワード",
1478            MessageKey::SavePasswordSecurely => "⚠️  このパスワードを安全に保管してください!",
1479            MessageKey::EncryptOption => "--encrypt: AES-256-GCM暗号化",
1480            MessageKey::CompressOption => "--compress zstd/gzip: 圧縮",
1481            MessageKey::CompressLevel => "--compress-level 1-22: 圧縮レベル",
1482
1483            // Run command options
1484            MessageKey::IncrementalOption => "--incremental: 増分バックアップ(変更ファイルのみ)",
1485            MessageKey::GeneratePasswordOption => "--generate-password: 安全なパスワードを自動生成",
1486            MessageKey::PasswordOption => "--password <パスワード>: 暗号化パスワード指定",
1487            MessageKey::DryRunOption => "--dry-run: ドライランモード(実際のバックアップなし)",
1488            MessageKey::PriorityOption => "--priority <優先度>: 優先度でフィルタ (high/medium/low)",
1489            MessageKey::CategoryOption => "--category <カテゴリ>: カテゴリでフィルタ",
1490
1491            // Restore command options
1492            MessageKey::FromOption => "--from <バックアップ名>: 復元するバックアップ",
1493            MessageKey::ToOption => "--to <復元先>: 復元先ディレクトリ",
1494            MessageKey::RestorePasswordOption => {
1495                "--password <パスワード>: 復号化パスワード(暗号化時)"
1496            }
1497
1498            // Cleanup command options
1499            MessageKey::DaysOption => "--days <日数>: 指定日数より古いバックアップを削除",
1500            MessageKey::CleanupDryRunOption => "--dry-run: ドライランモード(削除対象を表示)",
1501
1502            // Add command options
1503            MessageKey::AddPriorityOption => "--priority <優先度>: 優先度を設定 (high/medium/low)",
1504            MessageKey::AddCategoryOption => "--category <カテゴリ>: カテゴリを設定",
1505            MessageKey::InteractiveOption => "--interactive: インタラクティブ選択モード",
1506
1507            // List command options
1508            MessageKey::ListPriorityOption => "--priority <優先度>: 優先度でフィルタ",
1509
1510            // Schedule help
1511            MessageKey::ScheduleTitle => "📅 Backup Suite スケジュール管理",
1512            MessageKey::ScheduleDescription => "自動バックアップのスケジュール設定・制御システム",
1513            MessageKey::ScheduleUsage => "使用方法:",
1514            MessageKey::ScheduleCommands => "📋 スケジュール管理コマンド",
1515            MessageKey::ScheduleEnable => "enable       自動バックアップを有効化",
1516            MessageKey::ScheduleDisable => "disable      自動バックアップを無効化",
1517            MessageKey::ScheduleStatus => "status       現在のスケジュール状態を表示",
1518            MessageKey::ScheduleSetup => "setup        スケジュール頻度を設定",
1519            MessageKey::ScheduleHelp => "help         このヘルプを表示",
1520
1521            // Config help
1522            MessageKey::ConfigTitle => "⚙️  Backup Suite 設定管理",
1523            MessageKey::ConfigDescription => {
1524                "バックアップの保存先や保持期間などの設定を管理するコマンド"
1525            }
1526            MessageKey::ConfigUsage => "使用方法:",
1527            MessageKey::ConfigMgmtCommands => "📋 設定管理コマンド",
1528            MessageKey::ConfigSetDestination => {
1529                "set-destination <パス>  バックアップ保存先ディレクトリを変更"
1530            }
1531            MessageKey::ConfigGetDestination => {
1532                "get-destination        現在のバックアップ保存先を表示"
1533            }
1534            MessageKey::ConfigSetKeepDays => {
1535                "set-keep-days <日数>   バックアップ保持期間を変更 (1-3650日)"
1536            }
1537            MessageKey::ConfigGetKeepDays => {
1538                "get-keep-days          現在のバックアップ保持期間を表示"
1539            }
1540            MessageKey::ConfigOpen => {
1541                "open                   設定ファイルをデフォルトエディタで開く"
1542            }
1543            MessageKey::ConfigHelp => "help                   このヘルプを表示",
1544
1545            // Schedule detailed options
1546            MessageKey::ScheduleDetailedOptions => "⚙️  詳細オプション",
1547            MessageKey::ScheduleEnableOption => "enable --priority <優先度>",
1548            MessageKey::ScheduleDisableOption => "disable --priority <優先度>",
1549            MessageKey::ScheduleSetupOption => "setup --high <頻度> --medium <頻度> --low <頻度>",
1550            MessageKey::ScheduleFrequencies => "📊 頻度設定値:",
1551            MessageKey::ScheduleDaily => "daily   - 毎日 2:00 AM",
1552            MessageKey::ScheduleWeekly => "weekly  - 毎週日曜 2:00 AM",
1553            MessageKey::ScheduleMonthly => "monthly - 毎月1日 2:00 AM",
1554            MessageKey::ScheduleTips => "💡 ヒント:",
1555            MessageKey::ScheduleTip1 => {
1556                "  • スケジュール有効化後、macOSのlaunchctlで自動実行されます"
1557            }
1558            MessageKey::ScheduleTip2 => "  • 'status'コマンドで実際の動作状況を確認できます",
1559            MessageKey::ScheduleTip3 => "  • 各優先度の設定は独立して管理できます",
1560
1561            // Config examples and tips
1562            MessageKey::ConfigExampleExternal => "# バックアップ先を外付けHDDに変更",
1563            MessageKey::ConfigExampleGetDest => "# 現在のバックアップ先を確認",
1564            MessageKey::ConfigExampleSetDays => "# バックアップ保持期間を60日に変更",
1565            MessageKey::ConfigExampleOpen => "# 設定ファイルをエディタで開く",
1566            MessageKey::ConfigExampleTilde => "# チルダ展開も対応",
1567            MessageKey::ConfigTip1 => "  • 存在しないディレクトリは自動的に作成されます",
1568            MessageKey::ConfigTip2 => "  • 書き込み権限のチェックが自動で行われます",
1569            MessageKey::ConfigTip3 => {
1570                "  • 保持期間を過ぎたバックアップは cleanup コマンドで削除できます"
1571            }
1572
1573            // Runtime messages
1574            MessageKey::NoTargetsRegistered => "バックアップ対象が登録されていません",
1575            MessageKey::SelectionCancelled => "選択がキャンセルされました",
1576            MessageKey::ConfirmClearAll => "⚠️  警告: {}個すべてのバックアップ対象を削除します。本当によろしいですか?",
1577            MessageKey::ConfirmClearPriority => "⚠️  警告: {priority}優先度のバックアップ対象{count}個を削除します。本当によろしいですか?",
1578            MessageKey::NoPriorityTargets => "指定された優先度のバックアップ対象は0件です",
1579            MessageKey::ConfirmCleanup => "{}日以前の古いバックアップを削除します。よろしいですか?",
1580            MessageKey::DaysOutOfRange => "days は 1-3650 の範囲で指定してください(指定値: {})",
1581            MessageKey::PromptSelectTarget => "削除するバックアップ対象を選択",
1582            MessageKey::PromptSelectFile => "追加するファイル/ディレクトリを選択: ",
1583            MessageKey::PathNotExists => "パスが存在しません",
1584            MessageKey::NotInBackupConfig => "バックアップ設定に登録されていません",
1585            MessageKey::SpecifyPriorityOrAll => "--priority または --all を指定してください",
1586            MessageKey::CountDeleted => "件削除",
1587            MessageKey::DryRun => "ドライラン",
1588            MessageKey::Category => "カテゴリ",
1589            MessageKey::Encryption => "暗号化",
1590            MessageKey::Compression => "圧縮",
1591            MessageKey::ErrorDetails => "エラー詳細",
1592            MessageKey::Detected => "検出",
1593            MessageKey::NoBackups => "バックアップなし",
1594            MessageKey::RestoreStart => "復元開始",
1595            MessageKey::Restoring => "復元中...",
1596            MessageKey::RestoredSuccess => "バックアップを正常に復元しました",
1597            MessageKey::RestoredFileCount => "復元ファイル数:",
1598            MessageKey::Deleting => "削除中",
1599            MessageKey::Destination => "保存先",
1600            MessageKey::Targets => "対象",
1601            MessageKey::High => "高",
1602            MessageKey::Medium => "中",
1603            MessageKey::Low => "低",
1604            MessageKey::BackupHistory => "バックアップ履歴",
1605            MessageKey::Days => "日間",
1606            MessageKey::AutoBackupEnabled => "自動バックアップ有効化",
1607            MessageKey::AutoBackupDisabled => "自動バックアップ無効化",
1608            MessageKey::OpenDirectory => "開く",
1609            MessageKey::PriorityScheduleSetup => "優先度スケジュール設定完了",
1610            MessageKey::ScheduleSetupFailed => "優先度スケジュールの設定に失敗しました",
1611            MessageKey::LaunchctlUnloadWarning => "launchctl unload警告",
1612            MessageKey::PriorityScheduleDeleted => "優先度スケジュール削除完了",
1613            MessageKey::ScheduleNotConfigured => "優先度スケジュールは設定されていません",
1614            MessageKey::ScheduleDeletionFailed => "優先度スケジュールの削除に失敗しました",
1615            MessageKey::ActualScheduleStatus => "実際のスケジュール状態",
1616            MessageKey::Enabled => "有効",
1617            MessageKey::Disabled => "無効",
1618            MessageKey::ScheduleSettings => "スケジュール設定",
1619            MessageKey::ScheduleUpdated => "スケジュール更新・適用完了",
1620            MessageKey::ScheduleUpdatedEnableLater => {
1621                "スケジュール設定更新(有効化は 'schedule enable' で)"
1622            }
1623            MessageKey::HighPriority => "高優先度",
1624            MessageKey::MediumPriority => "中優先度",
1625            MessageKey::LowPriority => "低優先度",
1626            MessageKey::DirectoryNotExists => "ディレクトリが存在しません。作成します",
1627            MessageKey::DirectoryCreating => "作成中",
1628            MessageKey::DestinationChanged => "バックアップ先を変更しました",
1629            MessageKey::Before => "変更前",
1630            MessageKey::After => "変更後",
1631            MessageKey::CurrentDestination => "現在のバックアップ先",
1632            MessageKey::KeepDaysOutOfRange => {
1633                "keep_days は 1-3650 の範囲で指定してください(指定値:"
1634            }
1635            MessageKey::KeepDaysChanged => "バックアップ保持期間を変更しました",
1636            MessageKey::CurrentKeepDays => "現在のバックアップ保持期間",
1637            MessageKey::OpeningConfigFile => "設定ファイルを開きます",
1638            MessageKey::EditorDidNotExitCleanly => "エディタが正常に終了しませんでした",
1639            MessageKey::RustFastTypeSafe => {
1640                "AES-256暗号化 & Smart分析機能搭載のインテリジェントバックアップ"
1641            }
1642            MessageKey::ScheduleCommandPlaceholder => "<コマンド>",
1643            MessageKey::ConfigCommandPlaceholder => "<コマンド>",
1644            MessageKey::ConfigArgsPlaceholder => "[引数]",
1645            MessageKey::MainHelp => "メインヘルプ",
1646            MessageKey::ConfigFileLabel => "設定ファイル",
1647            MessageKey::EnableOnlySpecifiedPriority => "指定した優先度のみ有効化 (high/medium/low)",
1648            MessageKey::DisableOnlySpecifiedPriority => "指定した優先度のみ無効化",
1649            MessageKey::SetExecutionFrequency => "各優先度の実行頻度を設定 (daily/weekly/monthly)",
1650            MessageKey::EnableAllAutoBackups => "# 全ての自動バックアップを有効化",
1651            MessageKey::EnableHighOnly => "# 高優先度のみ有効化",
1652            MessageKey::SetupScheduleFreq => "# スケジュール頻度を設定",
1653            MessageKey::CheckCurrentConfig => "# 現在の設定状況を確認",
1654
1655            // Additional runtime units and labels
1656            MessageKey::Files => "ファイル",
1657            MessageKey::EncryptedLabel => "暗号化:",
1658            MessageKey::StatusTitle => "ステータス",
1659            MessageKey::DaysUnit => "日",
1660            MessageKey::DryRunParens => "(ドライラン)",
1661
1662            // Backup progress and result messages
1663            MessageKey::FilesDetected => "ファイルを検出",
1664            MessageKey::FullBackupMode => "📦 フルバックアップモード(全ファイル)",
1665            MessageKey::IncrementalBackupMode => "📦 増分バックアップモード(変更ファイルのみ)",
1666            MessageKey::BackupComplete => "✓ バックアップ完了",
1667            MessageKey::BackupCompleteWithFailures => "⚠ バックアップ完了(失敗あり)",
1668            MessageKey::BackupResultTitle => "📈 バックアップ結果",
1669            MessageKey::TotalFilesLabel => "総ファイル数",
1670            MessageKey::SuccessfulLabel => "成功",
1671            MessageKey::FailedLabel => "失敗",
1672            MessageKey::TotalSizeLabel => "合計サイズ",
1673
1674            // Remove/Update command messages
1675            MessageKey::ConfirmRemoveTarget => "本当に {} をバックアップ対象から削除しますか?",
1676            MessageKey::UpdatedTarget => "バックアップ対象を更新しました",
1677            MessageKey::PathLabel => "パス",
1678            MessageKey::PriorityLabel => "優先度",
1679            MessageKey::CategoryLabel => "カテゴリ",
1680
1681            // Smart Analyze labels
1682            MessageKey::ItemLabel => "項目",
1683            MessageKey::ValueLabel => "値",
1684            MessageKey::ImportanceScoreLabel => "重要度スコア",
1685            MessageKey::RecommendedPriorityLabel => "推奨優先度",
1686            MessageKey::ReasonLabel => "理由",
1687
1688            // Smart Auto-Configure labels
1689            MessageKey::AnalyzingLabel => "分析中",
1690            MessageKey::AddedToConfiguration => "設定に追加しました",
1691            MessageKey::ItemsAdded => "追加された項目",
1692            MessageKey::ExistingBackupTargets => "現在{}個のバックアップ対象が登録されています",
1693            MessageKey::AddNewTargets => "新しいターゲットを追加しますか?",
1694
1695            // History detailed view
1696            MessageKey::TimestampLabel => "日時",
1697            MessageKey::PathHistoryLabel => "パス",
1698            MessageKey::StatusHistoryLabel => "ステータス",
1699            MessageKey::FilesHistoryLabel => "ファイル数",
1700            MessageKey::SizeLabel => "サイズ",
1701            MessageKey::CompressionLabel => "圧縮",
1702            MessageKey::EncryptionLabel => "暗号化",
1703            MessageKey::DurationLabel => "処理時間",
1704            MessageKey::EnabledLabel => "有効",
1705            MessageKey::SecondsUnit => "秒",
1706
1707            // Dashboard sections
1708            MessageKey::StatisticsTitle => "📈 統計情報",
1709            MessageKey::DiskUsageTitle => "💾 ディスク使用量",
1710            MessageKey::AllNormalStatus => "⚡ すべて正常です",
1711            MessageKey::WarningsTitle => "⚠️  警告・注意事項",
1712
1713            // Incremental backup messages
1714            MessageKey::PreviousBackupLabel => "前回バックアップ",
1715            MessageKey::ChangedFilesLabel => "変更ファイル数",
1716            MessageKey::NoBackupsFound => "ℹ️  前回のバックアップが見つかりません。フルバックアップを実行します。",
1717            MessageKey::FullBackupFallback => "⚠️  前回のメタデータ読み込みに失敗しました。フルバックアップにフォールバックします。",
1718            MessageKey::MetadataLoadFailed => "   詳細",
1719            MessageKey::DryRunMode => "📋 ドライランモード: {} ファイルをバックアップ対象として検出",
1720
1721            // Dashboard statistics labels
1722            MessageKey::TotalTargetsLabel => "総対象数",
1723            MessageKey::HighPriorityTargetsLabel => "  高優先度",
1724            MessageKey::MediumPriorityTargetsLabel => "  中優先度",
1725            MessageKey::LowPriorityTargetsLabel => "  低優先度",
1726            MessageKey::TotalBackupsLabel => "総バックアップ回数",
1727            MessageKey::SuccessCountLabel => "  成功",
1728            MessageKey::TotalFilesCountLabel => "総ファイル数",
1729            MessageKey::TotalDataSizeLabel => "総データサイズ",
1730            MessageKey::LastBackupLabel => "最終バックアップ",
1731            MessageKey::EncryptedBackupsLabel => "暗号化バックアップ",
1732            MessageKey::CompressedBackupsLabel => "圧縮バックアップ",
1733            MessageKey::BackupDirectoryLabel => "バックアップディレクトリ",
1734            MessageKey::UsedCapacityLabel => "使用容量",
1735            MessageKey::FileCountLabel => "ファイル数",
1736            MessageKey::DiskTotalCapacityLabel => "ディスク総容量",
1737            MessageKey::DiskFreeCapacityLabel => "ディスク空き容量",
1738            MessageKey::DiskUsageRateLabel => "ディスク使用率",
1739            MessageKey::UsageStatusLabel => "使用状況",
1740            MessageKey::RecentBackupsTitle => "🕒 最近のバックアップ(直近5件)",
1741
1742            // Schedule table headers
1743            MessageKey::ScheduleHeaderLabel => "スケジュール",
1744            MessageKey::ConfigurationLabel => "設定",
1745
1746            // Relative time messages
1747            MessageKey::DaysAgo => "{}日前",
1748            MessageKey::HoursAgo => "{}時間前",
1749            MessageKey::MinutesAgo => "{}分前",
1750            MessageKey::JustNow => "たった今",
1751            MessageKey::NotYetBackedUp => "未実施",
1752
1753            // Dashboard warning messages
1754            MessageKey::WarningTargetNotExists => "バックアップ対象が存在しません: {}",
1755            MessageKey::WarningDaysSinceLastBackup => "最後のバックアップから{}日経過しています",
1756            MessageKey::WarningNoBackupYet => "まだ一度もバックアップが実行されていません",
1757            MessageKey::WarningFailedBackups => "失敗したバックアップが{}件あります",
1758            MessageKey::WarningLowDiskSpace => "ディスク空き容量が少なくなっています ({:.1}%)",
1759            MessageKey::DashboardHintRunBackup => "💡 ヒント: 'backup-suite run' でバックアップを実行できます",
1760
1761            // Interactive prompts
1762            MessageKey::PromptPleaseSelect => "選択してください",
1763            MessageKey::PromptDeleteBackup => "このバックアップを削除しますか?",
1764            MessageKey::PromptDeleteOldBackups => "🗑️  古いバックアップを削除",
1765            MessageKey::PromptDeleteTarget => "削除対象: {} 件のバックアップ",
1766            MessageKey::PromptDeleteCount => "件",
1767            MessageKey::PromptConfirmDelete => "削除を実行しますか?",
1768            MessageKey::PromptSelectPriority => "優先度を選択してください",
1769            MessageKey::PromptBackupConfirm => "バックアップを実行しますか?",
1770
1771            // Smart Analyze categories
1772            MessageKey::SmartCategoryDirectory => "ディレクトリ",
1773            MessageKey::SmartCategoryRustProject => "Rustプロジェクト",
1774            MessageKey::SmartCategoryNodeJsProject => "Node.jsプロジェクト",
1775            MessageKey::SmartCategoryPythonProject => "Pythonプロジェクト",
1776            MessageKey::SmartCategorySourceCodeProject => "ソースコードプロジェクト",
1777            MessageKey::SmartCategoryGitManaged => "Git管理ディレクトリ",
1778            MessageKey::SmartCategoryLowPriority => "低優先度ディレクトリ",
1779
1780            // Smart Analyze reasons
1781            MessageKey::SmartReasonSampling => "(サンプリング: {}ファイル, 高重要度: {}件, スコア: {})",
1782            MessageKey::SmartReasonScore => "(スコア: {})",
1783            MessageKey::SmartReasonSecurityDir => "認証情報・秘密鍵({}ディレクトリ、暗号化必須、スコア: 95)",
1784            MessageKey::SmartReasonLowPriorityDir => "キャッシュ/ログ/アーカイブ等 (ディレクトリ: {}, スコア: 20)",
1785
1786            // Smart Exclude reasons
1787            MessageKey::ExcludeReasonNpmDeps => "npm/yarn依存関係(package.jsonから再生成可能)",
1788            MessageKey::ExcludeReasonRustBuild => "Rustビルド成果物(Cargo.tomlから再生成可能)",
1789            MessageKey::ExcludeReasonVendor => "依存関係ベンダリング(再生成可能)",
1790            MessageKey::ExcludeReasonPythonCache => "Pythonキャッシュ(自動生成)",
1791            MessageKey::ExcludeReasonPytestCache => "pytestキャッシュ(自動生成)",
1792            MessageKey::ExcludeReasonBuildArtifacts => "ビルド成果物ディレクトリ(再ビルド可能)",
1793            MessageKey::ExcludeReasonCacheDir => "キャッシュディレクトリ(一時データ)",
1794            MessageKey::ExcludeReasonGitMetadata => "Gitリポジトリメタデータ(リモートから復元可能)",
1795            MessageKey::ExcludeReasonSvnMetadata => "SVNリポジトリメタデータ(リモートから復元可能)",
1796            MessageKey::ExcludeReasonTempFile => "一時ファイル",
1797            MessageKey::ExcludeReasonBackupFile => "バックアップファイル(元ファイルがあれば不要)",
1798            MessageKey::ExcludeReasonEditorTemp => "エディタ一時ファイル",
1799            MessageKey::ExcludeReasonLogFile => "ログファイル(古いログは通常不要)",
1800            MessageKey::ExcludeReasonMacOsMetadata => "macOSメタデータファイル(自動生成)",
1801            MessageKey::ExcludeReasonWindowsThumb => "Windowsサムネイルキャッシュ(自動生成)",
1802            MessageKey::ExcludeReasonWindowsDesktop => "Windowsデスクトップ設定ファイル(自動生成)",
1803
1804            // Smart Detect labels
1805            MessageKey::SmartDetectConfidenceLabel => "信頼度",
1806            MessageKey::SmartDetectDescriptionLabel => "説明",
1807            MessageKey::SmartDetectRecommendedActionLabel => "推奨アクション",
1808            MessageKey::SmartDetectAnalyzing => "過去{}日間のバックアップを分析中",
1809
1810            // Password strength messages
1811            MessageKey::PasswordStrengthLabel => "パスワード強度:",
1812            MessageKey::PasswordStrengthWeak => "弱い",
1813            MessageKey::PasswordStrengthMedium => "普通",
1814            MessageKey::PasswordStrengthStrong => "強い",
1815            MessageKey::PasswordStrengthWeakMessage => {
1816                "このパスワードは攻撃に対して脆弱な可能性があります。より長く、多様な文字を含むパスワードの使用を検討してください。"
1817            }
1818            MessageKey::PasswordStrengthMediumMessage => {
1819                "このパスワードは中程度のセキュリティを提供します。特殊文字の追加や長さの延長で改善できます。"
1820            }
1821            MessageKey::PasswordStrengthStrongMessage => {
1822                "このパスワードは強力なセキュリティを提供します。"
1823            }
1824            MessageKey::PasswordStrengthTip => {
1825                "ヒント: --generate-password を使用すると強力なランダムパスワードを生成できます。"
1826            }
1827
1828            // Editor and config
1829            MessageKey::EditorLaunchFailed => "エディタ起動失敗: {}",
1830
1831            // Smart feature progress
1832            MessageKey::SubdirectoriesFound => "{}個のサブディレクトリを発見",
1833            MessageKey::ProgressEvaluating => "処理進捗 - 評価中: {:?}",
1834
1835            // Backup confirmation prompts
1836            MessageKey::ConfirmBackupTitle => "📦 バックアップ実行確認",
1837            MessageKey::ConfirmBackupTargetFiles => "対象ファイル数: {} ファイル",
1838            MessageKey::ConfirmBackupDestination => "バックアップ先: {}",
1839
1840            // Cleanup confirmation prompts
1841            MessageKey::ConfirmCleanupTitle => "🗑️  古いバックアップの削除",
1842            MessageKey::ConfirmCleanupTargetCount => "削除対象: {} 個のバックアップ",
1843            MessageKey::ConfirmCleanupRetentionDays => "保持期間: {} 日",
1844
1845            // Cleanup progress messages
1846            MessageKey::CleanupDryRunScheduled => "🗑️  [ドライラン] 削除予定: {:?}",
1847            MessageKey::CleanupCompleted => "🗑️  削除完了: {:?}",
1848            MessageKey::CleanupFailed => "削除失敗 {:?}: {}",
1849
1850            // Restore progress messages
1851            MessageKey::RestoreDryRunDetected => "📋 ドライランモード: {} ファイルを復元対象として検出",
1852            MessageKey::RestoreInProgress => "復元中...",
1853            MessageKey::RestoreProgressFile => "復元中: {:?}",
1854            MessageKey::RestoreIntegrityMetadataLoaded => "✓ 整合性メタデータ読み込み完了({} バックアップ)",
1855            MessageKey::RestoreCompleted => "✓ 復元完了",
1856            MessageKey::RestoreCompletedWithFailures => "⚠ 復元完了({}件失敗)",
1857
1858            // Restore error messages
1859            MessageKey::ErrorRelativePathFailed => "相対パス取得失敗 {}: {}",
1860            MessageKey::ErrorPathTraversalDetected => "パストラバーサル検出 {}: {}",
1861            MessageKey::ErrorDirectoryCreateFailed => "ディレクトリ作成失敗 {}: {}",
1862            MessageKey::ErrorFileReadFailed => "ファイル読み込み失敗: {}",
1863            MessageKey::ErrorFileOpenFailedSymlink => "ファイルオープン失敗(シンボリックリンク攻撃の可能性): {}",
1864            MessageKey::ErrorEncryptedButNoPassword => "暗号化ファイルですがパスワード未指定: {}",
1865            MessageKey::ErrorMasterKeyRestoreFailed => "マスターキー復元失敗: {}",
1866            MessageKey::ErrorDecryptionFailed => "復号化失敗 {}: {}",
1867            MessageKey::ErrorIntegrityVerificationFailed => "⚠ 整合性検証失敗(ファイル改ざんの可能性): {}",
1868            MessageKey::ErrorFileWriteFailed => "ファイル書き込み失敗 {}: {}",
1869            MessageKey::ErrorFileCountFailed => "{}ファイルでエラー発生",
1870
1871            // Backup progress and error messages
1872            MessageKey::BackupProgressProcessing => "処理中: {:?}",
1873            MessageKey::ErrorBackupDirectoryCreateFailed => "ディレクトリ作成失敗 {}: {}",
1874            MessageKey::ErrorBackupWriteFailed => "書き込み失敗 {}: {}",
1875            MessageKey::ErrorBackupProcessFailed => "処理失敗 {}: {}",
1876            MessageKey::ErrorBackupCopyFailed => "コピー失敗 {}: {}",
1877        }
1878    }
1879
1880    /// Get Simplified Chinese message
1881    fn get_zh_cn(&self) -> &'static str {
1882        match self {
1883            // AI-related messages
1884            MessageKey::SmartCommands => "🤖 Smart命令",
1885            MessageKey::DescSmart => "AI驱动的智能备份管理",
1886            MessageKey::CmdSmartDetect => "detect",
1887            MessageKey::CmdSmartAnalyze => "analyze",
1888            MessageKey::CmdSmartSuggestExclude => "suggest-exclude",
1889            MessageKey::CmdSmartAutoConfigure => "auto-configure",
1890            MessageKey::DescSmartDetect => "检测备份历史中的异常",
1891            MessageKey::DescSmartAnalyze => "分析文件重要性",
1892            MessageKey::DescSmartSuggestExclude => "建议排除模式",
1893            MessageKey::DescSmartAutoConfigure => "使用Smart规则自动配置备份设置",
1894            MessageKey::SmartDetectTitle => "🤖 Smart异常检测",
1895            MessageKey::SmartDetectNoAnomalies => "备份历史中未检测到异常",
1896            MessageKey::SmartDetectAnomalyFound => "检测到异常",
1897            MessageKey::SmartAnalyzeTitle => "🤖 Smart文件重要性分析",
1898            MessageKey::SmartAnalyzeImportanceHigh => "重要性:高",
1899            MessageKey::SmartAnalyzeImportanceMedium => "重要性:中",
1900            MessageKey::SmartAnalyzeImportanceLow => "重要性:低",
1901            MessageKey::SmartSuggestExcludeTitle => "🤖 Smart排除模式建议",
1902            MessageKey::SmartSuggestExcludeRecommendation => "建议排除",
1903            MessageKey::SmartAutoConfigureTitle => "🤖 Smart自动配置",
1904            MessageKey::SmartAutoConfigureSuccess => "自动配置成功完成",
1905            MessageKey::SmartDryRunModeLabel => "演习模式",
1906            MessageKey::PathValidationFailed => "路径验证失败",
1907            MessageKey::PathSafetyValidationFailed => "路径安全性验证失败",
1908            MessageKey::SmartExampleMaxDepthComment => "# 指定子目录探索深度(最多2层)",
1909            MessageKey::SmartExampleMaxSubdirsComment => {
1910                "# 指定要处理的子目录最大数(默认:100)"
1911            }
1912            MessageKey::SmartExampleIncreaseSubdirsComment => "# 大量子目录时增加处理数上限",
1913            MessageKey::SmartAutoConfigureFeaturesHeader => "auto-configure 功能",
1914            MessageKey::SmartFeatureEvaluateSubdirs => "针对每个子目录单独评估重要性",
1915            MessageKey::SmartFeatureAutoDetectExclusions => {
1916                "自动检测排除模式(node_modules, target, .cache等)"
1917            }
1918            MessageKey::SmartFeatureHighConfidencePatterns => "仅应用信心度80%以上的模式",
1919            MessageKey::SmartFeatureAutoDetectProjectTypes => {
1920                "自动检测项目类型(Rust, Node.js, Python等)"
1921            }
1922            MessageKey::NoSubdirectoriesFound => "未找到子目录",
1923            MessageKey::SubdirLimitReached => "已达上限,部分子目录未处理",
1924            MessageKey::SubdirLimitChangeHint => "可修改",
1925            MessageKey::SkippingExcludeAnalysisLarge => "目录过大,跳过排除模式分析",
1926            MessageKey::FilesUnit => "个文件",
1927            MessageKey::AddToExcludeListPrompt => "添加到排除列表?",
1928            MessageKey::SmartRecommendsAddPrompt => "Smart推荐:添加 {:?}(优先级:{:?})?",
1929            MessageKey::ExcludePatternsLabel => "排除模式",
1930            MessageKey::AnalysisFailedLabel => "分析失败",
1931            MessageKey::SmartErrorNotEnabled => "Smart功能未启用。请使用 --features smart 编译",
1932            MessageKey::SmartErrorInsufficientData => "Smart分析数据不足",
1933            MessageKey::SmartErrorInsufficientDataDetailed => {
1934                "数据不足(至少需要3条记录,只找到{}条)"
1935            }
1936            MessageKey::SmartErrorAnalysisFailed => "Smart分析失败",
1937            MessageKey::SmartErrorAnalysisLabel => "分析错误",
1938            MessageKey::HelpLabel => "帮助",
1939            MessageKey::ExampleSmartDetect => "# 检测最近7天的异常",
1940            MessageKey::ExampleSmartAnalyze => "# 分析文件重要性",
1941            MessageKey::ExampleSmartSuggestExclude => "# 获取Smart排除建议",
1942            MessageKey::ExampleSmartAutoConfigureComment => {
1943                "# Smart自动配置(单独评估子目录并自动排除)"
1944            }
1945            MessageKey::ExampleSmartDryRunComment => "# 演习模式(仅显示建议)",
1946            MessageKey::ExampleSmartInteractiveComment => "# 交互模式(确认每个子目录和排除模式)",
1947            MessageKey::SmartRecommendedCommandLabel => "推荐命令",
1948            MessageKey::SmartNoExclusionsRecommended => "无排除建议(已优化)",
1949            MessageKey::SmartAddToExcludeListPrompt => "添加到排除列表?",
1950            MessageKey::SmartReductionLabel => "预计减少",
1951            MessageKey::SmartAddedLabel => "已添加",
1952            MessageKey::SmartAutoConfigureErrorNoPath => "错误:请指定要分析的路径",
1953            MessageKey::SmartAutoConfigureUsageExamples => "示例:\n  backup-suite smart auto-configure ~/projects\n  backup-suite smart auto-configure ~/Documents ~/projects --dry-run\n  backup-suite smart auto-configure ~/projects --interactive",
1954            MessageKey::RustFastTypeSafe => "AES-256加密 & Smart分析功能的智能备份",
1955
1956            // Status messages
1957            MessageKey::Added => "已添加",
1958            MessageKey::Removed => "已删除",
1959            MessageKey::Deleted => "已删除",
1960            MessageKey::Error => "错误",
1961            MessageKey::Warning => "⚠️",
1962            MessageKey::BackupRunning => "🚀 正在备份",
1963            MessageKey::RestoreStarting => "🔄 开始恢复",
1964
1965            // Encryption and compression
1966            MessageKey::EncryptionPassword => "加密密码",
1967            MessageKey::SavePasswordSecurely => "⚠️  请安全保存此密码!",
1968            MessageKey::EncryptOption => "--encrypt: AES-256-GCM加密",
1969            MessageKey::CompressOption => "--compress zstd/gzip: 压缩",
1970            MessageKey::CompressLevel => "--compress-level 1-22: 压缩级别",
1971
1972            // Run command options
1973            MessageKey::IncrementalOption => "--incremental: 增量备份(仅变更文件)",
1974            MessageKey::GeneratePasswordOption => "--generate-password: 自动生成安全密码",
1975            MessageKey::PasswordOption => "--password <密码>: 指定加密密码",
1976            MessageKey::DryRunOption => "--dry-run: 演习模式(不实际备份)",
1977            MessageKey::PriorityOption => "--priority <优先级>: 按优先级过滤 (high/medium/low)",
1978            MessageKey::CategoryOption => "--category <类别>: 按类别过滤",
1979
1980            // Restore command options
1981            MessageKey::FromOption => "--from <备份名称>: 要恢复的备份",
1982            MessageKey::ToOption => "--to <目标路径>: 恢复目标路径",
1983            MessageKey::RestorePasswordOption => "--password <密码>: 解密密码(如已加密)",
1984
1985            // Runtime messages
1986            MessageKey::NoTargetsRegistered => "未注册备份目标",
1987            MessageKey::SelectionCancelled => "选择已取消",
1988            MessageKey::ConfirmClearAll => "⚠️  警告:删除所有 {} 个备份目标。确定吗?",
1989            MessageKey::ConfirmClearPriority => "⚠️  警告:删除 {count} 个{priority}优先级备份目标。确定吗?",
1990            MessageKey::NoPriorityTargets => "未找到指定优先级的备份目标",
1991            MessageKey::ConfirmCleanup => "删除 {} 天之前的旧备份。确定吗?",
1992            MessageKey::DaysOutOfRange => "days 必须在 1-3650 范围内(指定值:{})",
1993            MessageKey::PathNotExists => "路径不存在",
1994            MessageKey::NotInBackupConfig => "未在备份配置中注册",
1995            MessageKey::SpecifyPriorityOrAll => "请指定 --priority 或 --all",
1996            MessageKey::CountDeleted => "已删除",
1997            MessageKey::DryRun => "演习模式",
1998            MessageKey::Category => "类别",
1999            MessageKey::Encryption => "加密",
2000            MessageKey::Compression => "压缩",
2001            MessageKey::ErrorDetails => "错误详情",
2002            MessageKey::Detected => "检测到",
2003            MessageKey::Files => "文件",
2004            MessageKey::Days => "天",
2005            MessageKey::DryRunParens => "(演习模式)",
2006            MessageKey::DaysUnit => "天",
2007
2008            // Common messages
2009            MessageKey::UsageExamples => "使用示例:",
2010
2011            // Backup progress and result messages
2012            MessageKey::FilesDetected => "检测到文件",
2013            MessageKey::FullBackupMode => "📦 完全备份模式(所有文件)",
2014            MessageKey::IncrementalBackupMode => "📦 增量备份模式(仅变更文件)",
2015            MessageKey::BackupComplete => "✓ 备份完成",
2016            MessageKey::BackupCompleteWithFailures => "⚠ 备份完成(有失败)",
2017            MessageKey::BackupResultTitle => "📈 备份结果",
2018            MessageKey::TotalFilesLabel => "总文件数",
2019            MessageKey::SuccessfulLabel => "成功",
2020            MessageKey::FailedLabel => "失败",
2021            MessageKey::TotalSizeLabel => "总大小",
2022
2023            // Remove/Update command messages
2024            MessageKey::ConfirmRemoveTarget => "确定要从备份目标中删除 {} 吗?",
2025            MessageKey::UpdatedTarget => "已更新备份目标",
2026            MessageKey::PathLabel => "路径",
2027            MessageKey::PriorityLabel => "优先级",
2028            MessageKey::CategoryLabel => "类别",
2029
2030            // Smart Analyze labels
2031            MessageKey::ItemLabel => "项目",
2032            MessageKey::ValueLabel => "值",
2033            MessageKey::ImportanceScoreLabel => "重要性分数",
2034            MessageKey::RecommendedPriorityLabel => "推荐优先级",
2035            MessageKey::ReasonLabel => "原因",
2036
2037            // Smart Auto-Configure labels
2038            MessageKey::AnalyzingLabel => "分析中",
2039            MessageKey::AddedToConfiguration => "已添加到配置",
2040            MessageKey::ItemsAdded => "已添加项目",
2041            MessageKey::ExistingBackupTargets => "您现有{}个备份目标",
2042            MessageKey::AddNewTargets => "添加新目标?",
2043
2044            // History detailed view
2045            MessageKey::TimestampLabel => "时间",
2046            MessageKey::PathHistoryLabel => "路径",
2047            MessageKey::StatusHistoryLabel => "状态",
2048            MessageKey::FilesHistoryLabel => "文件数",
2049            MessageKey::SizeLabel => "大小",
2050            MessageKey::CompressionLabel => "压缩",
2051            MessageKey::EncryptionLabel => "加密",
2052            MessageKey::DurationLabel => "处理时间",
2053            MessageKey::EnabledLabel => "已启用",
2054            MessageKey::SecondsUnit => "秒",
2055
2056            // Dashboard sections
2057            MessageKey::StatisticsTitle => "📈 统计信息",
2058            MessageKey::DiskUsageTitle => "💾 磁盘使用量",
2059            MessageKey::AllNormalStatus => "⚡ 一切正常",
2060            MessageKey::WarningsTitle => "⚠️  警告·注意事项",
2061
2062            // Incremental backup messages
2063            MessageKey::PreviousBackupLabel => "上次备份",
2064            MessageKey::ChangedFilesLabel => "变更文件数",
2065            MessageKey::NoBackupsFound => "ℹ️  未找到上次备份。执行完全备份。",
2066            MessageKey::FullBackupFallback => "⚠️  加载元数据失败。回退到完全备份。",
2067            MessageKey::MetadataLoadFailed => "   详情",
2068            MessageKey::DryRunMode => "📋 演习模式: 检测到 {} 个文件待备份",
2069
2070            // Dashboard statistics labels
2071            MessageKey::TotalTargetsLabel => "总目标数",
2072            MessageKey::HighPriorityTargetsLabel => "  高优先级",
2073            MessageKey::MediumPriorityTargetsLabel => "  中优先级",
2074            MessageKey::LowPriorityTargetsLabel => "  低优先级",
2075            MessageKey::TotalBackupsLabel => "总备份次数",
2076            MessageKey::SuccessCountLabel => "  成功",
2077            MessageKey::TotalFilesCountLabel => "总文件数",
2078            MessageKey::TotalDataSizeLabel => "总数据大小",
2079            MessageKey::LastBackupLabel => "最后备份",
2080            MessageKey::EncryptedBackupsLabel => "加密备份",
2081            MessageKey::CompressedBackupsLabel => "压缩备份",
2082            MessageKey::BackupDirectoryLabel => "备份目录",
2083            MessageKey::UsedCapacityLabel => "已用容量",
2084            MessageKey::FileCountLabel => "文件数",
2085            MessageKey::DiskTotalCapacityLabel => "磁盘总容量",
2086            MessageKey::DiskFreeCapacityLabel => "磁盘可用容量",
2087            MessageKey::DiskUsageRateLabel => "磁盘使用率",
2088            MessageKey::UsageStatusLabel => "使用状态",
2089            MessageKey::RecentBackupsTitle => "🕒 最近备份(最新5次)",
2090
2091            // Schedule table headers
2092            MessageKey::ScheduleHeaderLabel => "计划",
2093            MessageKey::ConfigurationLabel => "配置",
2094
2095            // Relative time messages
2096            MessageKey::DaysAgo => "{}天前",
2097            MessageKey::HoursAgo => "{}小时前",
2098            MessageKey::MinutesAgo => "{}分钟前",
2099            MessageKey::JustNow => "刚刚",
2100            MessageKey::NotYetBackedUp => "尚未执行",
2101
2102            // Dashboard warning messages
2103            MessageKey::WarningTargetNotExists => "备份目标不存在: {}",
2104            MessageKey::WarningDaysSinceLastBackup => "距离上次备份已过去{}天",
2105            MessageKey::WarningNoBackupYet => "尚未执行过备份",
2106            MessageKey::WarningFailedBackups => "有{}个失败的备份",
2107            MessageKey::WarningLowDiskSpace => "磁盘空间不足 ({:.1}%)",
2108            MessageKey::DashboardHintRunBackup => "💡 提示: 运行 'backup-suite run' 执行备份",
2109
2110            // Interactive prompts
2111            MessageKey::PromptPleaseSelect => "请选择",
2112            MessageKey::PromptDeleteBackup => "确定要删除此备份吗?",
2113            MessageKey::PromptDeleteOldBackups => "🗑️  删除旧备份",
2114            MessageKey::PromptDeleteTarget => "删除目标: {} 个备份",
2115            MessageKey::PromptDeleteCount => "个",
2116            MessageKey::PromptConfirmDelete => "确定要执行删除吗?",
2117            MessageKey::PromptSelectPriority => "选择优先级",
2118            MessageKey::PromptBackupConfirm => "确定要执行备份吗?",
2119            MessageKey::PromptSelectTarget => "选择要删除的备份目标",
2120            MessageKey::PromptSelectFile => "选择要添加的文件/目录: ",
2121
2122            // Smart Analyze categories
2123            MessageKey::SmartCategoryDirectory => "目录",
2124            MessageKey::SmartCategoryRustProject => "Rust项目",
2125            MessageKey::SmartCategoryNodeJsProject => "Node.js项目",
2126            MessageKey::SmartCategoryPythonProject => "Python项目",
2127            MessageKey::SmartCategorySourceCodeProject => "源代码项目",
2128            MessageKey::SmartCategoryGitManaged => "Git管理目录",
2129            MessageKey::SmartCategoryLowPriority => "低优先级目录",
2130
2131            // Smart Analyze reasons
2132            MessageKey::SmartReasonSampling => "(采样: {}文件, 高重要性: {}个, 分数: {})",
2133            MessageKey::SmartReasonScore => "(分数: {})",
2134            MessageKey::SmartReasonSecurityDir => "凭证/密钥({}目录,需要加密,分数: 95)",
2135            MessageKey::SmartReasonLowPriorityDir => "缓存/日志/存档等 (目录: {}, 分数: 20)",
2136
2137            // Smart Exclude reasons
2138            MessageKey::ExcludeReasonNpmDeps => "npm/yarn依赖(可从package.json重新生成)",
2139            MessageKey::ExcludeReasonRustBuild => "Rust构建产物(可从Cargo.toml重新生成)",
2140            MessageKey::ExcludeReasonVendor => "依赖供应(可重新生成)",
2141            MessageKey::ExcludeReasonPythonCache => "Python缓存(自动生成)",
2142            MessageKey::ExcludeReasonPytestCache => "pytest缓存(自动生成)",
2143            MessageKey::ExcludeReasonBuildArtifacts => "构建产物目录(可重新构建)",
2144            MessageKey::ExcludeReasonCacheDir => "缓存目录(临时数据)",
2145            MessageKey::ExcludeReasonGitMetadata => "Git仓库元数据(可从远程恢复)",
2146            MessageKey::ExcludeReasonSvnMetadata => "SVN仓库元数据(可从远程恢复)",
2147            MessageKey::ExcludeReasonTempFile => "临时文件",
2148            MessageKey::ExcludeReasonBackupFile => "备份文件(如果原文件存在则不需要)",
2149            MessageKey::ExcludeReasonEditorTemp => "编辑器临时文件",
2150            MessageKey::ExcludeReasonLogFile => "日志文件(旧日志通常不需要)",
2151            MessageKey::ExcludeReasonMacOsMetadata => "macOS元数据文件(自动生成)",
2152            MessageKey::ExcludeReasonWindowsThumb => "Windows缩略图缓存(自动生成)",
2153            MessageKey::ExcludeReasonWindowsDesktop => "Windows桌面设置文件(自动生成)",
2154
2155            // Smart Detect labels
2156            MessageKey::SmartDetectConfidenceLabel => "信心度",
2157            MessageKey::SmartDetectDescriptionLabel => "描述",
2158            MessageKey::SmartDetectRecommendedActionLabel => "推荐操作",
2159            MessageKey::SmartDetectAnalyzing => "分析过去{}天的备份",
2160
2161            // Password strength messages
2162            MessageKey::PasswordStrengthLabel => "密码强度:",
2163            MessageKey::PasswordStrengthWeak => "弱",
2164            MessageKey::PasswordStrengthMedium => "中等",
2165            MessageKey::PasswordStrengthStrong => "强",
2166            MessageKey::PasswordStrengthWeakMessage => {
2167                "此密码可能容易受到攻击。建议使用更长且包含多种字符的密码。"
2168            }
2169            MessageKey::PasswordStrengthMediumMessage => {
2170                "此密码提供中等安全性。添加特殊字符或增加长度可以改善。"
2171            }
2172            MessageKey::PasswordStrengthStrongMessage => "此密码提供强大的安全性。",
2173            MessageKey::PasswordStrengthTip => "提示: 使用 --generate-password 生成强随机密码。",
2174
2175            // Editor and config
2176            MessageKey::EditorLaunchFailed => "启动编辑器失败: {}",
2177
2178            // Smart feature progress
2179            MessageKey::SubdirectoriesFound => "发现{}个子目录",
2180            MessageKey::ProgressEvaluating => "处理进度 - 评估中: {:?}",
2181
2182            // Backup confirmation prompts
2183            MessageKey::ConfirmBackupTitle => "📦 备份执行确认",
2184            MessageKey::ConfirmBackupTargetFiles => "目标文件数: {} 文件",
2185            MessageKey::ConfirmBackupDestination => "备份目标: {}",
2186
2187            // Cleanup confirmation prompts
2188            MessageKey::ConfirmCleanupTitle => "🗑️  删除旧备份",
2189            MessageKey::ConfirmCleanupTargetCount => "删除目标: {} 个备份",
2190            MessageKey::ConfirmCleanupRetentionDays => "保留期限: {} 天",
2191
2192            // Cleanup progress messages
2193            MessageKey::CleanupDryRunScheduled => "🗑️  [演习模式] 计划删除: {:?}",
2194            MessageKey::CleanupCompleted => "🗑️  删除完成: {:?}",
2195            MessageKey::CleanupFailed => "删除失败 {:?}: {}",
2196
2197            // Restore progress messages
2198            MessageKey::RestoreDryRunDetected => "📋 演习模式: 检测到 {} 个文件待还原",
2199            MessageKey::RestoreInProgress => "还原中...",
2200            MessageKey::RestoreProgressFile => "还原中: {:?}",
2201            MessageKey::RestoreIntegrityMetadataLoaded => "✓ 完整性元数据已加载({} 个备份)",
2202            MessageKey::RestoreCompleted => "✓ 还原完成",
2203            MessageKey::RestoreCompletedWithFailures => "⚠ 还原完成({}个失败)",
2204
2205            // Restore error messages
2206            MessageKey::ErrorRelativePathFailed => "获取相对路径失败 {}: {}",
2207            MessageKey::ErrorPathTraversalDetected => "检测到路径遍历 {}: {}",
2208            MessageKey::ErrorDirectoryCreateFailed => "创建目录失败 {}: {}",
2209            MessageKey::ErrorFileReadFailed => "读取文件失败: {}",
2210            MessageKey::ErrorFileOpenFailedSymlink => "打开文件失败(可能是符号链接攻击): {}",
2211            MessageKey::ErrorEncryptedButNoPassword => "加密文件但未指定密码: {}",
2212            MessageKey::ErrorMasterKeyRestoreFailed => "恢复主密钥失败: {}",
2213            MessageKey::ErrorDecryptionFailed => "解密失败 {}: {}",
2214            MessageKey::ErrorIntegrityVerificationFailed => {
2215                "⚠ 完整性验证失败(文件可能被篡改): {}"
2216            }
2217            MessageKey::ErrorFileWriteFailed => "写入文件失败 {}: {}",
2218            MessageKey::ErrorFileCountFailed => "{}个文件发生错误",
2219
2220            // Backup progress and error messages
2221            MessageKey::BackupProgressProcessing => "处理中: {:?}",
2222            MessageKey::ErrorBackupDirectoryCreateFailed => "创建目录失败 {}: {}",
2223            MessageKey::ErrorBackupWriteFailed => "写入失败 {}: {}",
2224            MessageKey::ErrorBackupProcessFailed => "处理失败 {}: {}",
2225            MessageKey::ErrorBackupCopyFailed => "复制失败 {}: {}",
2226
2227            // Newly added translations for Simplified Chinese
2228            MessageKey::NoBackups => "无备份",
2229            MessageKey::RestoreStart => "开始恢复",
2230            MessageKey::Restoring => "恢复中...",
2231            MessageKey::RestoredSuccess => "成功恢复备份到",
2232            MessageKey::RestoredFileCount => "恢复文件数:",
2233            MessageKey::BackupHistory => "备份历史",
2234            MessageKey::ActualScheduleStatus => "实际调度状态",
2235            MessageKey::Enabled => "已启用",
2236            MessageKey::Disabled => "已禁用",
2237            MessageKey::ScheduleSettings => "调度设置",
2238            MessageKey::ScheduleUpdated => "调度已更新并应用",
2239            MessageKey::ScheduleUpdatedEnableLater => {
2240                "调度设置已更新(使用 'schedule enable' 启用)"
2241            }
2242            MessageKey::HighPriority => "高优先级",
2243            MessageKey::MediumPriority => "中优先级",
2244            MessageKey::LowPriority => "低优先级",
2245            MessageKey::CurrentDestination => "当前备份目标",
2246            MessageKey::DestinationChanged => "备份目标已更改",
2247            MessageKey::Before => "之前",
2248            MessageKey::After => "之后",
2249            MessageKey::KeepDaysOutOfRange => "keep_days 必须在 1-3650 之间(指定值:",
2250            MessageKey::KeepDaysChanged => "备份保留期限已更改",
2251            MessageKey::CurrentKeepDays => "当前备份保留期限",
2252            MessageKey::OpeningConfigFile => "打开配置文件",
2253            MessageKey::EditorDidNotExitCleanly => "编辑器未正常退出",
2254            MessageKey::AutoBackupEnabled => "已启用自动备份",
2255            MessageKey::AutoBackupDisabled => "已禁用自动备份",
2256
2257            // Keep all existing Simplified Chinese translations
2258            _ => self.get_en(), // Fallback to English for non-implemented keys
2259        }
2260    }
2261
2262    /// Get Traditional Chinese message
2263    fn get_zh_tw(&self) -> &'static str {
2264        match self {
2265            // AI-related messages
2266            MessageKey::SmartCommands => "🤖 Smart指令",
2267            MessageKey::DescSmart => "AI驅動的智慧備份管理",
2268            MessageKey::CmdSmartDetect => "detect",
2269            MessageKey::CmdSmartAnalyze => "analyze",
2270            MessageKey::CmdSmartSuggestExclude => "suggest-exclude",
2271            MessageKey::CmdSmartAutoConfigure => "auto-configure",
2272            MessageKey::DescSmartDetect => "偵測備份歷史中的異常",
2273            MessageKey::DescSmartAnalyze => "分析檔案重要性",
2274            MessageKey::DescSmartSuggestExclude => "建議排除模式",
2275            MessageKey::DescSmartAutoConfigure => "使用Smart規則自動設定備份",
2276            MessageKey::SmartDetectTitle => "🤖 Smart異常偵測",
2277            MessageKey::SmartDetectNoAnomalies => "備份歷史中未偵測到異常",
2278            MessageKey::SmartDetectAnomalyFound => "偵測到異常",
2279            MessageKey::SmartAnalyzeTitle => "🤖 Smart檔案重要性分析",
2280            MessageKey::SmartAnalyzeImportanceHigh => "重要性:高",
2281            MessageKey::SmartAnalyzeImportanceMedium => "重要性:中",
2282            MessageKey::SmartAnalyzeImportanceLow => "重要性:低",
2283            MessageKey::SmartSuggestExcludeTitle => "🤖 Smart排除模式建議",
2284            MessageKey::SmartSuggestExcludeRecommendation => "建議排除",
2285            MessageKey::SmartAutoConfigureTitle => "🤖 Smart自動設定",
2286            MessageKey::SmartAutoConfigureSuccess => "自動設定成功完成",
2287            MessageKey::SmartDryRunModeLabel => "演習模式",
2288            MessageKey::PathValidationFailed => "路徑驗證失敗",
2289            MessageKey::PathSafetyValidationFailed => "路徑安全性驗證失敗",
2290            MessageKey::SmartExampleMaxDepthComment => "# 指定子目錄探索深度(最多2層)",
2291            MessageKey::SmartExampleMaxSubdirsComment => {
2292                "# 指定要處理的子目錄最大數(預設:100)"
2293            }
2294            MessageKey::SmartExampleIncreaseSubdirsComment => "# 大量子目錄時增加處理數上限",
2295            MessageKey::SmartAutoConfigureFeaturesHeader => "auto-configure 功能",
2296            MessageKey::SmartFeatureEvaluateSubdirs => "針對每個子目錄單獨評估重要性",
2297            MessageKey::SmartFeatureAutoDetectExclusions => {
2298                "自動檢測排除模式(node_modules, target, .cache等)"
2299            }
2300            MessageKey::SmartFeatureHighConfidencePatterns => "僅應用信心度80%以上的模式",
2301            MessageKey::SmartFeatureAutoDetectProjectTypes => {
2302                "自動檢測項目類型(Rust, Node.js, Python等)"
2303            }
2304            MessageKey::NoSubdirectoriesFound => "未找到子目錄",
2305            MessageKey::SubdirLimitReached => "已達上限,部分子目錄未處理",
2306            MessageKey::SubdirLimitChangeHint => "可修改",
2307            MessageKey::SkippingExcludeAnalysisLarge => "目錄過大,跳過排除模式分析",
2308            MessageKey::FilesUnit => "個檔案",
2309            MessageKey::AddToExcludeListPrompt => "添加到排除列表?",
2310            MessageKey::SmartRecommendsAddPrompt => "Smart推薦:添加 {:?}(優先級:{:?})?",
2311            MessageKey::ExcludePatternsLabel => "排除模式",
2312            MessageKey::AnalysisFailedLabel => "分析失敗",
2313            MessageKey::SmartErrorNotEnabled => "Smart功能未啟用。請使用 --features smart 編譯",
2314            MessageKey::SmartErrorInsufficientData => "Smart分析資料不足",
2315            MessageKey::SmartErrorInsufficientDataDetailed => {
2316                "資料不足(至少需要3筆記錄,只找到{}筆)"
2317            }
2318            MessageKey::SmartErrorAnalysisFailed => "Smart分析失敗",
2319            MessageKey::SmartErrorAnalysisLabel => "分析錯誤",
2320            MessageKey::HelpLabel => "說明",
2321            MessageKey::ExampleSmartDetect => "# 偵測最近7天的異常",
2322            MessageKey::ExampleSmartAnalyze => "# 分析檔案重要性",
2323            MessageKey::ExampleSmartSuggestExclude => "# 取得Smart排除建議",
2324            MessageKey::ExampleSmartAutoConfigureComment => {
2325                "# Smart自動設定(單獨評估子目錄並自動排除)"
2326            }
2327            MessageKey::ExampleSmartDryRunComment => "# 演習模式(僅顯示建議)",
2328            MessageKey::ExampleSmartInteractiveComment => "# 交互模式(確認每個子目錄和排除模式)",
2329            MessageKey::SmartRecommendedCommandLabel => "推薦指令",
2330            MessageKey::SmartNoExclusionsRecommended => "無排除建議(已最佳化)",
2331            MessageKey::SmartAddToExcludeListPrompt => "加入至排除清單?",
2332            MessageKey::SmartReductionLabel => "預計減少",
2333            MessageKey::SmartAddedLabel => "已加入",
2334            MessageKey::SmartAutoConfigureErrorNoPath => "錯誤:請指定要分析的路徑",
2335            MessageKey::SmartAutoConfigureUsageExamples => "範例:\n  backup-suite smart auto-configure ~/projects\n  backup-suite smart auto-configure ~/Documents ~/projects --dry-run\n  backup-suite smart auto-configure ~/projects --interactive",
2336            MessageKey::RustFastTypeSafe => "AES-256加密 & Smart分析功能的智慧備份",
2337
2338            // Status messages
2339            MessageKey::Added => "已加入",
2340            MessageKey::Removed => "已刪除",
2341            MessageKey::Deleted => "已刪除",
2342            MessageKey::Error => "錯誤",
2343            MessageKey::Warning => "⚠️",
2344            MessageKey::BackupRunning => "🚀 正在備份",
2345            MessageKey::RestoreStarting => "🔄 開始還原",
2346
2347            // Encryption and compression
2348            MessageKey::EncryptionPassword => "加密密碼",
2349            MessageKey::SavePasswordSecurely => "⚠️  請安全儲存此密碼!",
2350            MessageKey::EncryptOption => "--encrypt: AES-256-GCM加密",
2351            MessageKey::CompressOption => "--compress zstd/gzip: 壓縮",
2352            MessageKey::CompressLevel => "--compress-level 1-22: 壓縮級別",
2353
2354            // Run command options
2355            MessageKey::IncrementalOption => "--incremental: 增量備份(僅變更檔案)",
2356            MessageKey::GeneratePasswordOption => "--generate-password: 自動生成安全密碼",
2357            MessageKey::PasswordOption => "--password <密碼>: 指定加密密碼",
2358            MessageKey::DryRunOption => "--dry-run: 演習模式(不實際備份)",
2359            MessageKey::PriorityOption => "--priority <優先級>: 按優先級過濾 (high/medium/low)",
2360            MessageKey::CategoryOption => "--category <類別>: 按類別過濾",
2361
2362            // Restore command options
2363            MessageKey::FromOption => "--from <備份名稱>: 要還原的備份",
2364            MessageKey::ToOption => "--to <目標路徑>: 還原目標路徑",
2365            MessageKey::RestorePasswordOption => "--password <密碼>: 解密密碼(如已加密)",
2366
2367            // Runtime messages
2368            MessageKey::NoTargetsRegistered => "未註冊備份目標",
2369            MessageKey::SelectionCancelled => "選擇已取消",
2370            MessageKey::ConfirmClearAll => "⚠️  警告:刪除所有 {} 個備份目標。確定嗎?",
2371            MessageKey::ConfirmClearPriority => "⚠️  警告:刪除 {count} 個{priority}優先級備份目標。確定嗎?",
2372            MessageKey::NoPriorityTargets => "未找到指定優先級的備份目標",
2373            MessageKey::ConfirmCleanup => "刪除 {} 天之前的舊備份。確定嗎?",
2374            MessageKey::DaysOutOfRange => "days 必須在 1-3650 範圍內(指定值:{})",
2375            MessageKey::PathNotExists => "路徑不存在",
2376            MessageKey::NotInBackupConfig => "未在備份設定中註冊",
2377            MessageKey::SpecifyPriorityOrAll => "請指定 --priority 或 --all",
2378            MessageKey::CountDeleted => "已刪除",
2379            MessageKey::DryRun => "演習模式",
2380            MessageKey::Category => "類別",
2381            MessageKey::Encryption => "加密",
2382            MessageKey::Compression => "壓縮",
2383            MessageKey::ErrorDetails => "錯誤詳情",
2384            MessageKey::Detected => "檢測到",
2385            MessageKey::Files => "檔案",
2386            MessageKey::Days => "天",
2387            MessageKey::DryRunParens => "(演習模式)",
2388            MessageKey::DaysUnit => "天",
2389
2390            // Common messages
2391            MessageKey::UsageExamples => "使用範例:",
2392
2393            // Backup progress and result messages
2394            MessageKey::FilesDetected => "檢測到檔案",
2395            MessageKey::FullBackupMode => "📦 完全備份模式(所有檔案)",
2396            MessageKey::IncrementalBackupMode => "📦 增量備份模式(僅變更檔案)",
2397            MessageKey::BackupComplete => "✓ 備份完成",
2398            MessageKey::BackupCompleteWithFailures => "⚠ 備份完成(有失敗)",
2399            MessageKey::BackupResultTitle => "📈 備份結果",
2400            MessageKey::TotalFilesLabel => "總檔案數",
2401            MessageKey::SuccessfulLabel => "成功",
2402            MessageKey::FailedLabel => "失敗",
2403            MessageKey::TotalSizeLabel => "總大小",
2404
2405            // Remove/Update command messages
2406            MessageKey::ConfirmRemoveTarget => "確定要從備份目標中刪除 {} 嗎?",
2407            MessageKey::UpdatedTarget => "已更新備份目標",
2408            MessageKey::PathLabel => "路徑",
2409            MessageKey::PriorityLabel => "優先級",
2410            MessageKey::CategoryLabel => "類別",
2411
2412            // Smart Analyze labels
2413            MessageKey::ItemLabel => "項目",
2414            MessageKey::ValueLabel => "值",
2415            MessageKey::ImportanceScoreLabel => "重要性分數",
2416            MessageKey::RecommendedPriorityLabel => "推薦優先級",
2417            MessageKey::ReasonLabel => "原因",
2418
2419            // Smart Auto-Configure labels
2420            MessageKey::AnalyzingLabel => "分析中",
2421            MessageKey::AddedToConfiguration => "已加入至設定",
2422            MessageKey::ItemsAdded => "已加入項目",
2423            MessageKey::ExistingBackupTargets => "您現有{}個備份目標",
2424            MessageKey::AddNewTargets => "加入新目標?",
2425
2426            // History detailed view
2427            MessageKey::TimestampLabel => "時間",
2428            MessageKey::PathHistoryLabel => "路徑",
2429            MessageKey::StatusHistoryLabel => "狀態",
2430            MessageKey::FilesHistoryLabel => "檔案數",
2431            MessageKey::SizeLabel => "大小",
2432            MessageKey::CompressionLabel => "壓縮",
2433            MessageKey::EncryptionLabel => "加密",
2434            MessageKey::DurationLabel => "處理時間",
2435            MessageKey::EnabledLabel => "已啟用",
2436            MessageKey::SecondsUnit => "秒",
2437
2438            // Dashboard sections
2439            MessageKey::StatisticsTitle => "📈 統計資訊",
2440            MessageKey::DiskUsageTitle => "💾 磁碟使用量",
2441            MessageKey::AllNormalStatus => "⚡ 一切正常",
2442            MessageKey::WarningsTitle => "⚠️  警告·注意事項",
2443
2444            // Incremental backup messages
2445            MessageKey::PreviousBackupLabel => "上次備份",
2446            MessageKey::ChangedFilesLabel => "變更檔案數",
2447            MessageKey::NoBackupsFound => "ℹ️  未找到上次備份。執行完全備份。",
2448            MessageKey::FullBackupFallback => "⚠️  載入元數據失敗。回退到完全備份。",
2449            MessageKey::MetadataLoadFailed => "   詳情",
2450            MessageKey::DryRunMode => "📋 演習模式: 檢測到 {} 個檔案待備份",
2451
2452            // Dashboard statistics labels
2453            MessageKey::TotalTargetsLabel => "總目標數",
2454            MessageKey::HighPriorityTargetsLabel => "  高優先級",
2455            MessageKey::MediumPriorityTargetsLabel => "  中優先級",
2456            MessageKey::LowPriorityTargetsLabel => "  低優先級",
2457            MessageKey::TotalBackupsLabel => "總備份次數",
2458            MessageKey::SuccessCountLabel => "  成功",
2459            MessageKey::TotalFilesCountLabel => "總檔案數",
2460            MessageKey::TotalDataSizeLabel => "總資料大小",
2461            MessageKey::LastBackupLabel => "最後備份",
2462            MessageKey::EncryptedBackupsLabel => "加密備份",
2463            MessageKey::CompressedBackupsLabel => "壓縮備份",
2464            MessageKey::BackupDirectoryLabel => "備份目錄",
2465            MessageKey::UsedCapacityLabel => "已用容量",
2466            MessageKey::FileCountLabel => "檔案數",
2467            MessageKey::DiskTotalCapacityLabel => "磁碟總容量",
2468            MessageKey::DiskFreeCapacityLabel => "磁碟可用容量",
2469            MessageKey::DiskUsageRateLabel => "磁碟使用率",
2470            MessageKey::UsageStatusLabel => "使用狀態",
2471            MessageKey::RecentBackupsTitle => "🕒 最近備份(最新5次)",
2472
2473            // Schedule table headers
2474            MessageKey::ScheduleHeaderLabel => "計劃",
2475            MessageKey::ConfigurationLabel => "配置",
2476
2477            // Relative time messages
2478            MessageKey::DaysAgo => "{}天前",
2479            MessageKey::HoursAgo => "{}小時前",
2480            MessageKey::MinutesAgo => "{}分鐘前",
2481            MessageKey::JustNow => "剛剛",
2482            MessageKey::NotYetBackedUp => "尚未執行",
2483
2484            // Dashboard warning messages
2485            MessageKey::WarningTargetNotExists => "備份目標不存在: {}",
2486            MessageKey::WarningDaysSinceLastBackup => "距離上次備份已過去{}天",
2487            MessageKey::WarningNoBackupYet => "尚未執行過備份",
2488            MessageKey::WarningFailedBackups => "有{}個失敗的備份",
2489            MessageKey::WarningLowDiskSpace => "磁碟空間不足 ({:.1}%)",
2490            MessageKey::DashboardHintRunBackup => "💡 提示: 執行 'backup-suite run' 進行備份",
2491
2492            // Interactive prompts
2493            MessageKey::PromptPleaseSelect => "請選擇",
2494            MessageKey::PromptDeleteBackup => "確定要刪除此備份嗎?",
2495            MessageKey::PromptDeleteOldBackups => "🗑️  刪除舊備份",
2496            MessageKey::PromptDeleteTarget => "刪除目標: {} 個備份",
2497            MessageKey::PromptDeleteCount => "個",
2498            MessageKey::PromptConfirmDelete => "確定要執行刪除嗎?",
2499            MessageKey::PromptSelectPriority => "選擇優先級",
2500            MessageKey::PromptBackupConfirm => "確定要執行備份嗎?",
2501            MessageKey::PromptSelectTarget => "選擇要刪除的備份目標",
2502            MessageKey::PromptSelectFile => "選擇要新增的檔案/目錄: ",
2503
2504            // Smart Analyze categories
2505            MessageKey::SmartCategoryDirectory => "目錄",
2506            MessageKey::SmartCategoryRustProject => "Rust專案",
2507            MessageKey::SmartCategoryNodeJsProject => "Node.js專案",
2508            MessageKey::SmartCategoryPythonProject => "Python專案",
2509            MessageKey::SmartCategorySourceCodeProject => "原始碼專案",
2510            MessageKey::SmartCategoryGitManaged => "Git管理目錄",
2511            MessageKey::SmartCategoryLowPriority => "低優先級目錄",
2512
2513            // Smart Analyze reasons
2514            MessageKey::SmartReasonSampling => "(採樣: {}檔案, 高重要性: {}個, 分數: {})",
2515            MessageKey::SmartReasonScore => "(分數: {})",
2516            MessageKey::SmartReasonSecurityDir => "憑證/密鑰({}目錄,需要加密,分數: 95)",
2517            MessageKey::SmartReasonLowPriorityDir => "快取/日誌/封存等 (目錄: {}, 分數: 20)",
2518
2519            // Smart Exclude reasons
2520            MessageKey::ExcludeReasonNpmDeps => "npm/yarn依賴(可從package.json重新生成)",
2521            MessageKey::ExcludeReasonRustBuild => "Rust建置產物(可從Cargo.toml重新生成)",
2522            MessageKey::ExcludeReasonVendor => "依賴供應(可重新生成)",
2523            MessageKey::ExcludeReasonPythonCache => "Python快取(自動生成)",
2524            MessageKey::ExcludeReasonPytestCache => "pytest快取(自動生成)",
2525            MessageKey::ExcludeReasonBuildArtifacts => "建置產物目錄(可重新建置)",
2526            MessageKey::ExcludeReasonCacheDir => "快取目錄(暫存資料)",
2527            MessageKey::ExcludeReasonGitMetadata => "Git儲存庫元數據(可從遠端恢復)",
2528            MessageKey::ExcludeReasonSvnMetadata => "SVN儲存庫元數據(可從遠端恢復)",
2529            MessageKey::ExcludeReasonTempFile => "暫存檔案",
2530            MessageKey::ExcludeReasonBackupFile => "備份檔案(如果原檔案存在則不需要)",
2531            MessageKey::ExcludeReasonEditorTemp => "編輯器暫存檔案",
2532            MessageKey::ExcludeReasonLogFile => "日誌檔案(舊日誌通常不需要)",
2533            MessageKey::ExcludeReasonMacOsMetadata => "macOS元數據檔案(自動生成)",
2534            MessageKey::ExcludeReasonWindowsThumb => "Windows縮圖快取(自動生成)",
2535            MessageKey::ExcludeReasonWindowsDesktop => "Windows桌面設定檔案(自動生成)",
2536
2537            // Smart Detect labels
2538            MessageKey::SmartDetectConfidenceLabel => "信心度",
2539            MessageKey::SmartDetectDescriptionLabel => "描述",
2540            MessageKey::SmartDetectRecommendedActionLabel => "推薦操作",
2541            MessageKey::SmartDetectAnalyzing => "分析過去{}天的備份",
2542
2543            // Password strength messages
2544            MessageKey::PasswordStrengthLabel => "密碼強度:",
2545            MessageKey::PasswordStrengthWeak => "弱",
2546            MessageKey::PasswordStrengthMedium => "中等",
2547            MessageKey::PasswordStrengthStrong => "強",
2548            MessageKey::PasswordStrengthWeakMessage => {
2549                "此密碼可能容易受到攻擊。建議使用更長且包含多種字元的密碼。"
2550            }
2551            MessageKey::PasswordStrengthMediumMessage => {
2552                "此密碼提供中等安全性。新增特殊字元或增加長度可以改善。"
2553            }
2554            MessageKey::PasswordStrengthStrongMessage => "此密碼提供強大的安全性。",
2555            MessageKey::PasswordStrengthTip => "提示: 使用 --generate-password 生成強隨機密碼。",
2556
2557            // Editor and config
2558            MessageKey::EditorLaunchFailed => "啟動編輯器失敗: {}",
2559
2560            // Smart feature progress
2561            MessageKey::SubdirectoriesFound => "發現{}個子目錄",
2562            MessageKey::ProgressEvaluating => "處理進度 - 評估中: {:?}",
2563
2564            // Backup confirmation prompts
2565            MessageKey::ConfirmBackupTitle => "📦 備份執行確認",
2566            MessageKey::ConfirmBackupTargetFiles => "目標檔案數: {} 檔案",
2567            MessageKey::ConfirmBackupDestination => "備份目標: {}",
2568
2569            // Cleanup confirmation prompts
2570            MessageKey::ConfirmCleanupTitle => "🗑️  刪除舊備份",
2571            MessageKey::ConfirmCleanupTargetCount => "刪除目標: {} 個備份",
2572            MessageKey::ConfirmCleanupRetentionDays => "保留期限: {} 天",
2573
2574            // Cleanup progress messages
2575            MessageKey::CleanupDryRunScheduled => "🗑️  [演習模式] 計劃刪除: {:?}",
2576            MessageKey::CleanupCompleted => "🗑️  刪除完成: {:?}",
2577            MessageKey::CleanupFailed => "刪除失敗 {:?}: {}",
2578
2579            // Restore progress messages
2580            MessageKey::RestoreDryRunDetected => "📋 演習模式: 檢測到 {} 個檔案待還原",
2581            MessageKey::RestoreInProgress => "還原中...",
2582            MessageKey::RestoreProgressFile => "還原中: {:?}",
2583            MessageKey::RestoreIntegrityMetadataLoaded => "✓ 完整性元數據已載入({} 個備份)",
2584            MessageKey::RestoreCompleted => "✓ 還原完成",
2585            MessageKey::RestoreCompletedWithFailures => "⚠ 還原完成({}個失敗)",
2586
2587            // Restore error messages
2588            MessageKey::ErrorRelativePathFailed => "取得相對路徑失敗 {}: {}",
2589            MessageKey::ErrorPathTraversalDetected => "偵測到路徑遍歷 {}: {}",
2590            MessageKey::ErrorDirectoryCreateFailed => "建立目錄失敗 {}: {}",
2591            MessageKey::ErrorFileReadFailed => "讀取檔案失敗: {}",
2592            MessageKey::ErrorFileOpenFailedSymlink => "開啟檔案失敗(可能是符號連結攻擊): {}",
2593            MessageKey::ErrorEncryptedButNoPassword => "加密檔案但未指定密碼: {}",
2594            MessageKey::ErrorMasterKeyRestoreFailed => "恢復主金鑰失敗: {}",
2595            MessageKey::ErrorDecryptionFailed => "解密失敗 {}: {}",
2596            MessageKey::ErrorIntegrityVerificationFailed => {
2597                "⚠ 完整性驗證失敗(檔案可能被竄改): {}"
2598            }
2599            MessageKey::ErrorFileWriteFailed => "寫入檔案失敗 {}: {}",
2600            MessageKey::ErrorFileCountFailed => "{}個檔案發生錯誤",
2601
2602            // Backup progress and error messages
2603            MessageKey::BackupProgressProcessing => "處理中: {:?}",
2604            MessageKey::ErrorBackupDirectoryCreateFailed => "建立目錄失敗 {}: {}",
2605            MessageKey::ErrorBackupWriteFailed => "寫入失敗 {}: {}",
2606            MessageKey::ErrorBackupProcessFailed => "處理失敗 {}: {}",
2607            MessageKey::ErrorBackupCopyFailed => "複製失敗 {}: {}",
2608
2609            // Newly added translations for Traditional Chinese
2610            MessageKey::NoBackups => "無備份",
2611            MessageKey::RestoreStart => "開始還原",
2612            MessageKey::Restoring => "還原中...",
2613            MessageKey::RestoredSuccess => "成功還原備份到",
2614            MessageKey::RestoredFileCount => "還原檔案數:",
2615            MessageKey::BackupHistory => "備份歷史",
2616            MessageKey::ActualScheduleStatus => "實際排程狀態",
2617            MessageKey::Enabled => "已啟用",
2618            MessageKey::Disabled => "已停用",
2619            MessageKey::ScheduleSettings => "排程設定",
2620            MessageKey::ScheduleUpdated => "排程已更新並套用",
2621            MessageKey::ScheduleUpdatedEnableLater => {
2622                "排程設定已更新(使用 'schedule enable' 啟用)"
2623            }
2624            MessageKey::HighPriority => "高優先級",
2625            MessageKey::MediumPriority => "中優先級",
2626            MessageKey::LowPriority => "低優先級",
2627            MessageKey::CurrentDestination => "目前備份目標",
2628            MessageKey::DestinationChanged => "備份目標已變更",
2629            MessageKey::Before => "之前",
2630            MessageKey::After => "之後",
2631            MessageKey::KeepDaysOutOfRange => "keep_days 必須在 1-3650 之間(指定值:",
2632            MessageKey::KeepDaysChanged => "備份保留期限已變更",
2633            MessageKey::CurrentKeepDays => "目前備份保留期限",
2634            MessageKey::OpeningConfigFile => "開啟設定檔",
2635            MessageKey::EditorDidNotExitCleanly => "編輯器未正常結束",
2636            MessageKey::AutoBackupEnabled => "已啟用自動備份",
2637            MessageKey::AutoBackupDisabled => "已停用自動備份",
2638
2639            // Keep all existing Traditional Chinese translations
2640            _ => self.get_en(), // Fallback to English for non-implemented keys
2641        }
2642    }
2643}
2644
2645/// Get message by key and language
2646#[must_use]
2647pub fn get_message(key: MessageKey, lang: Language) -> &'static str {
2648    key.get(lang)
2649}
2650
2651#[cfg(test)]
2652mod tests {
2653    use super::*;
2654
2655    #[test]
2656    fn test_language_detection() {
2657        // Default should be English
2658        let _lang = Language::detect();
2659        // This test might fail if LANG is set to ja
2660        // assert_eq!(_lang, Language::English);
2661    }
2662
2663    #[test]
2664    fn test_language_parsing() {
2665        // English
2666        assert_eq!(Language::parse("en"), Some(Language::English));
2667        assert_eq!(Language::parse("english"), Some(Language::English));
2668
2669        // Japanese
2670        assert_eq!(Language::parse("ja"), Some(Language::Japanese));
2671        assert_eq!(Language::parse("japanese"), Some(Language::Japanese));
2672        assert_eq!(Language::parse("日本語"), Some(Language::Japanese));
2673
2674        // Simplified Chinese
2675        assert_eq!(Language::parse("zh-cn"), Some(Language::SimplifiedChinese));
2676        assert_eq!(Language::parse("zh_cn"), Some(Language::SimplifiedChinese));
2677        assert_eq!(
2678            Language::parse("zh-hans"),
2679            Some(Language::SimplifiedChinese)
2680        );
2681        assert_eq!(
2682            Language::parse("zh_hans"),
2683            Some(Language::SimplifiedChinese)
2684        );
2685        assert_eq!(
2686            Language::parse("simplified chinese"),
2687            Some(Language::SimplifiedChinese)
2688        );
2689        assert_eq!(
2690            Language::parse("简体中文"),
2691            Some(Language::SimplifiedChinese)
2692        );
2693
2694        // Traditional Chinese
2695        assert_eq!(Language::parse("zh-tw"), Some(Language::TraditionalChinese));
2696        assert_eq!(Language::parse("zh_tw"), Some(Language::TraditionalChinese));
2697        assert_eq!(Language::parse("zh-hk"), Some(Language::TraditionalChinese));
2698        assert_eq!(Language::parse("zh_hk"), Some(Language::TraditionalChinese));
2699        assert_eq!(
2700            Language::parse("zh-hant"),
2701            Some(Language::TraditionalChinese)
2702        );
2703        assert_eq!(
2704            Language::parse("zh_hant"),
2705            Some(Language::TraditionalChinese)
2706        );
2707        assert_eq!(
2708            Language::parse("traditional chinese"),
2709            Some(Language::TraditionalChinese)
2710        );
2711        assert_eq!(
2712            Language::parse("繁體中文"),
2713            Some(Language::TraditionalChinese)
2714        );
2715        assert_eq!(
2716            Language::parse("繁体中文"),
2717            Some(Language::TraditionalChinese)
2718        );
2719
2720        // Unknown
2721        assert_eq!(Language::parse("unknown"), None);
2722    }
2723
2724    #[test]
2725    fn test_language_parse_null_byte_rejection() {
2726        // Security: Null bytes should be rejected
2727        assert_eq!(Language::parse("en\0"), None);
2728        assert_eq!(Language::parse("\0ja"), None);
2729        assert_eq!(Language::parse("test\0malicious"), None);
2730    }
2731
2732    #[test]
2733    fn test_language_code() {
2734        assert_eq!(Language::English.code(), "en");
2735        assert_eq!(Language::Japanese.code(), "ja");
2736        assert_eq!(Language::SimplifiedChinese.code(), "zh-cn");
2737        assert_eq!(Language::TraditionalChinese.code(), "zh-tw");
2738    }
2739
2740    #[test]
2741    fn test_message_translation() {
2742        // Test English
2743        assert_eq!(
2744            get_message(MessageKey::AppVersion, Language::English),
2745            app_version()
2746        );
2747
2748        // Test Japanese
2749        assert_eq!(
2750            get_message(MessageKey::AppVersion, Language::Japanese),
2751            app_version()
2752        );
2753
2754        // Test Simplified Chinese
2755        assert_eq!(
2756            get_message(MessageKey::AppVersion, Language::SimplifiedChinese),
2757            app_version()
2758        );
2759
2760        // Test Traditional Chinese
2761        assert_eq!(
2762            get_message(MessageKey::AppVersion, Language::TraditionalChinese),
2763            app_version()
2764        );
2765
2766        // Test different messages
2767        assert!(get_message(MessageKey::AppTitle, Language::English).contains("Fast"));
2768        assert!(get_message(MessageKey::AppTitle, Language::Japanese).contains("高速"));
2769    }
2770
2771    #[test]
2772    fn test_ai_messages() {
2773        // Test AI message keys
2774        assert_eq!(
2775            get_message(MessageKey::SmartCommands, Language::English),
2776            "🤖 Smart Commands"
2777        );
2778        assert_eq!(
2779            get_message(MessageKey::SmartCommands, Language::Japanese),
2780            "🤖 Smartコマンド"
2781        );
2782    }
2783}