diff --git a/src/uu/rmdir/locales/en-US.ftl b/src/uu/rmdir/locales/en-US.ftl index e2c1ca0ec..3c12e3b42 100644 --- a/src/uu/rmdir/locales/en-US.ftl +++ b/src/uu/rmdir/locales/en-US.ftl @@ -1,2 +1,14 @@ rmdir-about = Remove the DIRECTORY(ies), if they are empty. rmdir-usage = rmdir [OPTION]... DIRECTORY... + +# Help messages +rmdir-help-ignore-fail-non-empty = ignore each failure that is solely because a directory is non-empty +rmdir-help-parents = remove DIRECTORY and its ancestors; e.g., 'rmdir -p a/b/c' is similar to rmdir a/b/c a/b a +rmdir-help-verbose = output a diagnostic for every directory processed + +# Error messages +rmdir-error-symbolic-link-not-followed = failed to remove { $path }: Symbolic link not followed +rmdir-error-failed-to-remove = failed to remove { $path }: { $err } + +# Verbose output +rmdir-verbose-removing-directory = { $util_name }: removing directory, { $path } diff --git a/src/uu/rmdir/locales/fr-FR.ftl b/src/uu/rmdir/locales/fr-FR.ftl new file mode 100644 index 000000000..89bbb290f --- /dev/null +++ b/src/uu/rmdir/locales/fr-FR.ftl @@ -0,0 +1,14 @@ +rmdir-about = Supprimer les RÉPERTOIRE(S), s'ils sont vides. +rmdir-usage = rmdir [OPTION]... RÉPERTOIRE... + +# Messages d'aide +rmdir-help-ignore-fail-non-empty = ignorer chaque échec qui est uniquement dû au fait qu'un répertoire n'est pas vide +rmdir-help-parents = supprimer RÉPERTOIRE et ses ancêtres ; p. ex., 'rmdir -p a/b/c' est similaire à rmdir a/b/c a/b a +rmdir-help-verbose = afficher un diagnostic pour chaque répertoire traité + +# Messages d'erreur +rmdir-error-symbolic-link-not-followed = échec de la suppression de { $path } : Lien symbolique non suivi +rmdir-error-failed-to-remove = échec de la suppression de { $path } : { $err } + +# Sortie détaillée +rmdir-verbose-removing-directory = { $util_name } : suppression du répertoire, { $path } diff --git a/src/uu/rmdir/src/rmdir.rs b/src/uu/rmdir/src/rmdir.rs index 228b085ec..d0a099838 100644 --- a/src/uu/rmdir/src/rmdir.rs +++ b/src/uu/rmdir/src/rmdir.rs @@ -7,6 +7,7 @@ use clap::builder::ValueParser; use clap::{Arg, ArgAction, Command}; +use std::collections::HashMap; use std::ffi::OsString; use std::fs::{read_dir, remove_dir}; use std::io; @@ -14,9 +15,9 @@ use std::path::Path; use uucore::display::Quotable; use uucore::error::{UResult, set_exit_code, strip_errno}; +use uucore::locale::{get_message, get_message_with_args}; use uucore::{format_usage, show_error, util_name}; -use uucore::locale::get_message; static OPT_IGNORE_FAIL_NON_EMPTY: &str = "ignore-fail-on-non-empty"; static OPT_PARENTS: &str = "parents"; static OPT_VERBOSE: &str = "verbose"; @@ -72,15 +73,27 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let no_slash: &Path = OsStr::from_bytes(&bytes[..bytes.len() - 1]).as_ref(); if no_slash.is_symlink() && points_to_directory(no_slash).unwrap_or(true) { show_error!( - "failed to remove {}: Symbolic link not followed", - path.quote() + "{}", + get_message_with_args( + "rmdir-error-symbolic-link-not-followed", + HashMap::from([("path".to_string(), path.quote().to_string())]) + ) ); continue; } } } - show_error!("failed to remove {}: {}", path.quote(), strip_errno(&error)); + show_error!( + "{}", + get_message_with_args( + "rmdir-error-failed-to-remove", + HashMap::from([ + ("path".to_string(), path.quote().to_string()), + ("err".to_string(), strip_errno(&error).to_string()) + ]) + ) + ); } } @@ -108,7 +121,16 @@ fn remove(mut path: &Path, opts: Opts) -> Result<(), Error<'_>> { fn remove_single(path: &Path, opts: Opts) -> Result<(), Error<'_>> { if opts.verbose { - println!("{}: removing directory, {}", util_name(), path.quote()); + println!( + "{}", + get_message_with_args( + "rmdir-verbose-removing-directory", + HashMap::from([ + ("util_name".to_string(), util_name().to_string()), + ("path".to_string(), path.quote().to_string()) + ]) + ) + ); } remove_dir(path).map_err(|error| Error { error, path }) } @@ -170,24 +192,21 @@ pub fn uu_app() -> Command { .arg( Arg::new(OPT_IGNORE_FAIL_NON_EMPTY) .long(OPT_IGNORE_FAIL_NON_EMPTY) - .help("ignore each failure that is solely because a directory is non-empty") + .help(get_message("rmdir-help-ignore-fail-non-empty")) .action(ArgAction::SetTrue), ) .arg( Arg::new(OPT_PARENTS) .short('p') .long(OPT_PARENTS) - .help( - "remove DIRECTORY and its ancestors; e.g., - 'rmdir -p a/b/c' is similar to rmdir a/b/c a/b a", - ) + .help(get_message("rmdir-help-parents")) .action(ArgAction::SetTrue), ) .arg( Arg::new(OPT_VERBOSE) .short('v') .long(OPT_VERBOSE) - .help("output a diagnostic for every directory processed") + .help(get_message("rmdir-help-verbose")) .action(ArgAction::SetTrue), ) .arg(