mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 03:27:44 +00:00
l10n: port cut for translation + add french
This commit is contained in:
parent
c9f76d41a7
commit
cf0813ac78
3 changed files with 206 additions and 52 deletions
|
@ -90,3 +90,25 @@ cut-after-help = Each call must specify a mode (what to use for columns),
|
|||
echo 'ab\\0cd' | cut -z -c 1
|
||||
|
||||
will result in 'a\\0c\\0'
|
||||
|
||||
# Help messages
|
||||
cut-help-bytes = filter byte columns from the input source
|
||||
cut-help-characters = alias for character mode
|
||||
cut-help-delimiter = specify the delimiter character that separates fields in the input source. Defaults to Tab.
|
||||
cut-help-whitespace-delimited = Use any number of whitespace (Space, Tab) to separate fields in the input source (FreeBSD extension).
|
||||
cut-help-fields = filter field columns from the input source
|
||||
cut-help-complement = invert the filter - instead of displaying only the filtered columns, display all but those columns
|
||||
cut-help-only-delimited = in field mode, only print lines which contain the delimiter
|
||||
cut-help-zero-terminated = instead of filtering columns based on line, filter columns based on \\0 (NULL character)
|
||||
cut-help-output-delimiter = in field mode, replace the delimiter in output lines with this option's argument
|
||||
|
||||
# Error messages
|
||||
cut-error-is-directory = Is a directory
|
||||
cut-error-write-error = write error
|
||||
cut-error-delimiter-and-whitespace-conflict = invalid input: Only one of --delimiter (-d) or -w option can be specified
|
||||
cut-error-delimiter-must-be-single-character = the delimiter must be a single character
|
||||
cut-error-multiple-mode-args = invalid usage: expects no more than one of --fields (-f), --chars (-c) or --bytes (-b)
|
||||
cut-error-missing-mode-arg = invalid usage: expects one of --fields (-f), --chars (-c) or --bytes (-b)
|
||||
cut-error-delimiter-only-with-fields = invalid input: The '--delimiter' ('-d') option only usable if printing a sequence of fields
|
||||
cut-error-whitespace-only-with-fields = invalid input: The '-w' option only usable if printing a sequence of fields
|
||||
cut-error-only-delimited-only-with-fields = invalid input: The '--only-delimited' ('-s') option only usable if printing a sequence of fields
|
||||
|
|
114
src/uu/cut/locales/fr-FR.ftl
Normal file
114
src/uu/cut/locales/fr-FR.ftl
Normal file
|
@ -0,0 +1,114 @@
|
|||
cut-about = Affiche les colonnes d'octets ou de champs spécifiées de chaque ligne de stdin ou des fichiers d'entrée
|
||||
cut-usage = cut OPTION... [FICHIER]...
|
||||
cut-after-help = Chaque appel doit spécifier un mode (quoi utiliser pour les colonnes),
|
||||
une séquence (quelles colonnes afficher), et fournir une source de données
|
||||
|
||||
### Spécifier un mode
|
||||
|
||||
Utilisez --bytes (-b) ou --characters (-c) pour spécifier le mode octet
|
||||
|
||||
Utilisez --fields (-f) pour spécifier le mode champ, où chaque ligne est divisée en
|
||||
champs identifiés par un caractère délimiteur. Par exemple pour un CSV typique
|
||||
vous pourriez utiliser ceci en combinaison avec la définition de la virgule comme délimiteur
|
||||
|
||||
### Spécifier une séquence
|
||||
|
||||
Une séquence est un groupe de 1 ou plusieurs nombres ou plages inclusives séparés
|
||||
par des virgules.
|
||||
|
||||
cut -f 2,5-7 quelque_fichier.txt
|
||||
|
||||
affichera les 2ème, 5ème, 6ème, et 7ème champs pour chaque ligne source
|
||||
|
||||
Les plages peuvent s'étendre jusqu'à la fin de la ligne en excluant le second nombre
|
||||
|
||||
cut -f 3- quelque_fichier.txt
|
||||
|
||||
affichera le 3ème champ et tous les champs suivants pour chaque ligne source
|
||||
|
||||
Le premier nombre d'une plage peut être exclu, et ceci est effectivement
|
||||
identique à utiliser 1 comme premier nombre : cela fait commencer la plage à la
|
||||
première colonne. Les plages peuvent aussi afficher une seule colonne
|
||||
|
||||
cut -f 1,3-5 quelque_fichier.txt
|
||||
|
||||
affichera les 1er, 3ème, 4ème, et 5ème champs pour chaque ligne source
|
||||
|
||||
L'option --complement, quand utilisée, inverse l'effet de la séquence
|
||||
|
||||
cut --complement -f 4-6 quelque_fichier.txt
|
||||
|
||||
affichera tous les champs sauf les 4ème, 5ème, et 6ème
|
||||
|
||||
### Spécifier une source de données
|
||||
|
||||
Si aucun argument de fichier source n'est spécifié, stdin est utilisé comme source
|
||||
de lignes à afficher
|
||||
|
||||
Si des arguments de fichier source sont spécifiés, stdin est ignoré et tous les fichiers sont
|
||||
lus consécutivement si un fichier source n'est pas lu avec succès, un avertissement
|
||||
sera affiché sur stderr, et le code de statut final sera 1, mais cut
|
||||
continuera à lire les fichiers sources suivants
|
||||
|
||||
Pour afficher les colonnes depuis STDIN et un argument de fichier, utilisez - (tiret) comme
|
||||
argument de fichier source pour représenter stdin.
|
||||
|
||||
### Options du Mode Champ
|
||||
|
||||
Les champs dans chaque ligne sont identifiés par un délimiteur (séparateur)
|
||||
|
||||
#### Définir le délimiteur
|
||||
|
||||
Définissez le délimiteur qui sépare les champs dans le fichier en utilisant l'option
|
||||
--delimiter (-d). Définir le délimiteur est optionnel.
|
||||
Si non défini, un délimiteur par défaut de Tab sera utilisé.
|
||||
|
||||
Si l'option -w est fournie, les champs seront séparés par tout nombre
|
||||
de caractères d'espacement (Espace et Tab). Le délimiteur de sortie sera
|
||||
un Tab sauf si explicitement spécifié. Seulement une des options -d ou -w peut être spécifiée.
|
||||
Ceci est une extension adoptée de FreeBSD.
|
||||
|
||||
#### Filtrage optionnel basé sur le délimiteur
|
||||
|
||||
Si le drapeau --only-delimited (-s) est fourni, seules les lignes qui
|
||||
contiennent le délimiteur seront affichées
|
||||
|
||||
#### Remplacer le délimiteur
|
||||
|
||||
Si l'option --output-delimiter est fournie, l'argument utilisé pour
|
||||
elle remplacera le caractère délimiteur dans chaque ligne affichée. Ceci est
|
||||
utile pour transformer les données tabulaires - par ex. pour convertir un CSV en
|
||||
TSV (fichier séparé par tabulations)
|
||||
|
||||
### Fins de ligne
|
||||
|
||||
Quand l'option --zero-terminated (-z) est utilisée, cut voit \\0 (null) comme le
|
||||
caractère de 'fin de ligne' (à la fois pour lire les lignes et
|
||||
séparer les lignes affichées) au lieu de \\n (nouvelle ligne). Ceci est utile pour
|
||||
les données tabulaires où certaines cellules peuvent contenir des nouvelles lignes
|
||||
|
||||
echo 'ab\\0cd' | cut -z -c 1
|
||||
|
||||
donnera comme résultat 'a\\0c\\0'
|
||||
|
||||
# Messages d'aide
|
||||
cut-help-bytes = filtrer les colonnes d'octets depuis la source d'entrée
|
||||
cut-help-characters = alias pour le mode caractère
|
||||
cut-help-delimiter = spécifier le caractère délimiteur qui sépare les champs dans la source d'entrée. Par défaut Tab.
|
||||
cut-help-whitespace-delimited = Utiliser tout nombre d'espaces (Espace, Tab) pour séparer les champs dans la source d'entrée (extension FreeBSD).
|
||||
cut-help-fields = filtrer les colonnes de champs depuis la source d'entrée
|
||||
cut-help-complement = inverser le filtre - au lieu d'afficher seulement les colonnes filtrées, afficher toutes sauf ces colonnes
|
||||
cut-help-only-delimited = en mode champ, afficher seulement les lignes qui contiennent le délimiteur
|
||||
cut-help-zero-terminated = au lieu de filtrer les colonnes basées sur la ligne, filtrer les colonnes basées sur \\0 (caractère NULL)
|
||||
cut-help-output-delimiter = en mode champ, remplacer le délimiteur dans les lignes de sortie avec l'argument de cette option
|
||||
|
||||
# Messages d'erreur
|
||||
cut-error-is-directory = Est un répertoire
|
||||
cut-error-write-error = erreur d'écriture
|
||||
cut-error-delimiter-and-whitespace-conflict = entrée invalide : Seulement une des options --delimiter (-d) ou -w peut être spécifiée
|
||||
cut-error-delimiter-must-be-single-character = le délimiteur doit être un caractère unique
|
||||
cut-error-multiple-mode-args = usage invalide : attend au plus une des options --fields (-f), --chars (-c) ou --bytes (-b)
|
||||
cut-error-missing-mode-arg = usage invalide : attend une des options --fields (-f), --chars (-c) ou --bytes (-b)
|
||||
cut-error-delimiter-only-with-fields = entrée invalide : L'option '--delimiter' ('-d') n'est utilisable que si on affiche une séquence de champs
|
||||
cut-error-whitespace-only-with-fields = entrée invalide : L'option '-w' n'est utilisable que si on affiche une séquence de champs
|
||||
cut-error-only-delimited-only-with-fields = entrée invalide : L'option '--only-delimited' ('-s') n'est utilisable que si on affiche une séquence de champs
|
|
@ -372,7 +372,11 @@ fn cut_files(mut filenames: Vec<String>, mode: &Mode) {
|
|||
let path = Path::new(&filename[..]);
|
||||
|
||||
if path.is_dir() {
|
||||
show_error!("{}: Is a directory", filename.maybe_quote());
|
||||
show_error!(
|
||||
"{}: {}",
|
||||
filename.maybe_quote(),
|
||||
get_message("cut-error-is-directory")
|
||||
);
|
||||
set_exit_code(1);
|
||||
continue;
|
||||
}
|
||||
|
@ -392,7 +396,10 @@ fn cut_files(mut filenames: Vec<String>, mode: &Mode) {
|
|||
}
|
||||
}
|
||||
|
||||
show_if_err!(out.flush().map_err_context(|| "write error".into()));
|
||||
show_if_err!(
|
||||
out.flush()
|
||||
.map_err_context(|| get_message("cut-error-write-error"))
|
||||
);
|
||||
}
|
||||
|
||||
// Get delimiter and output delimiter from `-d`/`--delimiter` and `--output-delimiter` options respectively
|
||||
|
@ -404,7 +411,7 @@ fn get_delimiters(matches: &ArgMatches) -> UResult<(Delimiter, Option<&[u8]>)> {
|
|||
Some(_) if whitespace_delimited => {
|
||||
return Err(USimpleError::new(
|
||||
1,
|
||||
"invalid input: Only one of --delimiter (-d) or -w option can be specified",
|
||||
get_message("cut-error-delimiter-and-whitespace-conflict"),
|
||||
));
|
||||
}
|
||||
Some(os_string) => {
|
||||
|
@ -420,7 +427,7 @@ fn get_delimiters(matches: &ArgMatches) -> UResult<(Delimiter, Option<&[u8]>)> {
|
|||
{
|
||||
return Err(USimpleError::new(
|
||||
1,
|
||||
"the delimiter must be a single character",
|
||||
get_message("cut-error-delimiter-must-be-single-character"),
|
||||
));
|
||||
} else {
|
||||
Delimiter::from(os_string)
|
||||
|
@ -502,39 +509,50 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
matches.get_one::<String>(options::CHARACTERS),
|
||||
matches.get_one::<String>(options::FIELDS),
|
||||
) {
|
||||
(1, Some(byte_ranges), None, None) => list_to_ranges(byte_ranges, complement).map(|ranges| {
|
||||
Mode::Bytes(
|
||||
ranges,
|
||||
Options {
|
||||
out_delimiter,
|
||||
line_ending,
|
||||
field_opts: None,
|
||||
},
|
||||
)
|
||||
}),
|
||||
(1, None, Some(char_ranges), None) => list_to_ranges(char_ranges, complement).map(|ranges| {
|
||||
Mode::Characters(
|
||||
ranges,
|
||||
Options {
|
||||
out_delimiter,
|
||||
line_ending,
|
||||
field_opts: None,
|
||||
},
|
||||
)
|
||||
}),
|
||||
(1, None, None, Some(field_ranges)) => list_to_ranges(field_ranges, complement).map(|ranges| {
|
||||
Mode::Fields(
|
||||
ranges,
|
||||
Options {
|
||||
out_delimiter,
|
||||
line_ending,
|
||||
field_opts: Some(FieldOptions { delimiter, only_delimited })},
|
||||
)
|
||||
}),
|
||||
(2.., _, _, _) => Err(
|
||||
"invalid usage: expects no more than one of --fields (-f), --chars (-c) or --bytes (-b)".into()
|
||||
),
|
||||
_ => Err("invalid usage: expects one of --fields (-f), --chars (-c) or --bytes (-b)".into()),
|
||||
(1, Some(byte_ranges), None, None) => {
|
||||
list_to_ranges(byte_ranges, complement).map(|ranges| {
|
||||
Mode::Bytes(
|
||||
ranges,
|
||||
Options {
|
||||
out_delimiter,
|
||||
line_ending,
|
||||
field_opts: None,
|
||||
},
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
(1, None, Some(char_ranges), None) => {
|
||||
list_to_ranges(char_ranges, complement).map(|ranges| {
|
||||
Mode::Characters(
|
||||
ranges,
|
||||
Options {
|
||||
out_delimiter,
|
||||
line_ending,
|
||||
field_opts: None,
|
||||
},
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
(1, None, None, Some(field_ranges)) => {
|
||||
list_to_ranges(field_ranges, complement).map(|ranges| {
|
||||
Mode::Fields(
|
||||
ranges,
|
||||
Options {
|
||||
out_delimiter,
|
||||
line_ending,
|
||||
field_opts: Some(FieldOptions {
|
||||
delimiter,
|
||||
only_delimited,
|
||||
}),
|
||||
},
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
(2.., _, _, _) => Err(get_message("cut-error-multiple-mode-args")),
|
||||
_ => Err(get_message("cut-error-missing-mode-arg")),
|
||||
};
|
||||
|
||||
let mode_parse = match mode_parse {
|
||||
|
@ -543,17 +561,17 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
Mode::Bytes(_, _) | Mode::Characters(_, _)
|
||||
if matches.contains_id(options::DELIMITER) =>
|
||||
{
|
||||
Err("invalid input: The '--delimiter' ('-d') option only usable if printing a sequence of fields".into())
|
||||
Err(get_message("cut-error-delimiter-only-with-fields"))
|
||||
}
|
||||
Mode::Bytes(_, _) | Mode::Characters(_, _)
|
||||
if matches.get_flag(options::WHITESPACE_DELIMITED) =>
|
||||
{
|
||||
Err("invalid input: The '-w' option only usable if printing a sequence of fields".into())
|
||||
Err(get_message("cut-error-whitespace-only-with-fields"))
|
||||
}
|
||||
Mode::Bytes(_, _) | Mode::Characters(_, _)
|
||||
if matches.get_flag(options::ONLY_DELIMITED) =>
|
||||
{
|
||||
Err("invalid input: The '--only-delimited' ('-s') option only usable if printing a sequence of fields".into())
|
||||
Err(get_message("cut-error-only-delimited-only-with-fields"))
|
||||
}
|
||||
_ => Ok(mode),
|
||||
},
|
||||
|
@ -593,7 +611,7 @@ pub fn uu_app() -> Command {
|
|||
Arg::new(options::BYTES)
|
||||
.short('b')
|
||||
.long(options::BYTES)
|
||||
.help("filter byte columns from the input source")
|
||||
.help(get_message("cut-help-bytes"))
|
||||
.allow_hyphen_values(true)
|
||||
.value_name("LIST")
|
||||
.action(ArgAction::Append),
|
||||
|
@ -602,7 +620,7 @@ pub fn uu_app() -> Command {
|
|||
Arg::new(options::CHARACTERS)
|
||||
.short('c')
|
||||
.long(options::CHARACTERS)
|
||||
.help("alias for character mode")
|
||||
.help(get_message("cut-help-characters"))
|
||||
.allow_hyphen_values(true)
|
||||
.value_name("LIST")
|
||||
.action(ArgAction::Append),
|
||||
|
@ -612,13 +630,13 @@ pub fn uu_app() -> Command {
|
|||
.short('d')
|
||||
.long(options::DELIMITER)
|
||||
.value_parser(ValueParser::os_string())
|
||||
.help("specify the delimiter character that separates fields in the input source. Defaults to Tab.")
|
||||
.help(get_message("cut-help-delimiter"))
|
||||
.value_name("DELIM"),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::WHITESPACE_DELIMITED)
|
||||
.short('w')
|
||||
.help("Use any number of whitespace (Space, Tab) to separate fields in the input source (FreeBSD extension).")
|
||||
.help(get_message("cut-help-whitespace-delimited"))
|
||||
.value_name("WHITESPACE")
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
|
@ -626,7 +644,7 @@ pub fn uu_app() -> Command {
|
|||
Arg::new(options::FIELDS)
|
||||
.short('f')
|
||||
.long(options::FIELDS)
|
||||
.help("filter field columns from the input source")
|
||||
.help(get_message("cut-help-fields"))
|
||||
.allow_hyphen_values(true)
|
||||
.value_name("LIST")
|
||||
.action(ArgAction::Append),
|
||||
|
@ -634,34 +652,34 @@ pub fn uu_app() -> Command {
|
|||
.arg(
|
||||
Arg::new(options::COMPLEMENT)
|
||||
.long(options::COMPLEMENT)
|
||||
.help("invert the filter - instead of displaying only the filtered columns, display all but those columns")
|
||||
.help(get_message("cut-help-complement"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::ONLY_DELIMITED)
|
||||
.short('s')
|
||||
.long(options::ONLY_DELIMITED)
|
||||
.help("in field mode, only print lines which contain the delimiter")
|
||||
.help(get_message("cut-help-only-delimited"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::ZERO_TERMINATED)
|
||||
.short('z')
|
||||
.long(options::ZERO_TERMINATED)
|
||||
.help("instead of filtering columns based on line, filter columns based on \\0 (NULL character)")
|
||||
.help(get_message("cut-help-zero-terminated"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::OUTPUT_DELIMITER)
|
||||
.long(options::OUTPUT_DELIMITER)
|
||||
.value_parser(ValueParser::os_string())
|
||||
.help("in field mode, replace the delimiter in output lines with this option's argument")
|
||||
.help(get_message("cut-help-output-delimiter"))
|
||||
.value_name("NEW_DELIM"),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::FILE)
|
||||
.hide(true)
|
||||
.action(ArgAction::Append)
|
||||
.value_hint(clap::ValueHint::FilePath)
|
||||
.hide(true)
|
||||
.action(ArgAction::Append)
|
||||
.value_hint(clap::ValueHint::FilePath),
|
||||
)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue