Skip to content

Commit f041879

Browse files
authored
Merge pull request #8183 from sylvestre/l10n-mknod
l10n: port mknod for translation + add french
2 parents 164da1d + 2aeca36 commit f041879

File tree

3 files changed

+74
-15
lines changed

3 files changed

+74
-15
lines changed

src/uu/mknod/locales/en-US.ftl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,20 @@ mknod-after-help = Mandatory arguments to long options are mandatory for short o
1515
NOTE: your shell may have its own version of mknod, which usually supersedes
1616
the version described here. Please refer to your shell's documentation
1717
for details about the options it supports.
18+
19+
# Help messages
20+
mknod-help-mode = set file permission bits to MODE, not a=rw - umask
21+
mknod-help-name = name of the new file
22+
mknod-help-type = type of the new file (b, c, u or p)
23+
mknod-help-major = major file type
24+
mknod-help-minor = minor file type
25+
mknod-help-selinux = set SELinux security context of each created directory to the default type
26+
mknod-help-context = like -Z, or if CTX is specified then set the SELinux or SMACK security context to CTX
27+
28+
# Error messages
29+
mknod-error-fifo-no-major-minor = Fifos do not have major and minor device numbers.
30+
mknod-error-special-require-major-minor = Special files require major and minor device numbers.
31+
mknod-error-invalid-mode = invalid mode ({ $error })
32+
mknod-error-mode-permission-bits-only = mode must specify only file permission bits
33+
mknod-error-missing-device-type = missing device type
34+
mknod-error-invalid-device-type = invalid device type { $type }

src/uu/mknod/locales/fr-FR.ftl

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
mknod-about = Créer le fichier spécial NOM du TYPE donné.
2+
mknod-usage = mknod [OPTION]... NOM TYPE [MAJEUR MINEUR]
3+
mknod-after-help = Les arguments obligatoires pour les options longues le sont aussi pour les options courtes.
4+
-m, --mode=MODE définir les bits de permission de fichier à MODE, pas a=rw - umask
5+
6+
MAJEUR et MINEUR doivent tous deux être spécifiés quand TYPE est b, c, ou u, et ils
7+
doivent être omis quand TYPE est p. Si MAJEUR ou MINEUR commence par 0x ou 0X,
8+
il est interprété comme hexadécimal ; sinon, s'il commence par 0, comme octal ;
9+
sinon, comme décimal. TYPE peut être :
10+
11+
- b créer un fichier spécial bloc (mis en mémoire tampon)
12+
- c, u créer un fichier spécial caractère (non mis en mémoire tampon)
13+
- p créer un FIFO
14+
15+
NOTE : votre shell peut avoir sa propre version de mknod, qui remplace généralement
16+
la version décrite ici. Veuillez vous référer à la documentation de votre shell
17+
pour les détails sur les options qu'il supporte.
18+
19+
# Messages d'aide
20+
mknod-help-mode = définir les bits de permission de fichier à MODE, pas a=rw - umask
21+
mknod-help-name = nom du nouveau fichier
22+
mknod-help-type = type du nouveau fichier (b, c, u ou p)
23+
mknod-help-major = type de fichier majeur
24+
mknod-help-minor = type de fichier mineur
25+
mknod-help-selinux = définir le contexte de sécurité SELinux de chaque répertoire créé au type par défaut
26+
mknod-help-context = comme -Z, ou si CTX est spécifié, définir le contexte de sécurité SELinux ou SMACK à CTX
27+
28+
# Messages d'erreur
29+
mknod-error-fifo-no-major-minor = Les fifos n'ont pas de numéros de périphérique majeur et mineur.
30+
mknod-error-special-require-major-minor = Les fichiers spéciaux nécessitent des numéros de périphérique majeur et mineur.
31+
mknod-error-invalid-mode = mode invalide ({ $error })
32+
mknod-error-mode-permission-bits-only = le mode ne doit spécifier que les bits de permission de fichier
33+
mknod-error-missing-device-type = type de périphérique manquant
34+
mknod-error-invalid-device-type = type de périphérique invalide { $type }

src/uu/mknod/src/mknod.rs

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
use clap::{Arg, ArgAction, Command, value_parser};
99
use libc::{S_IFBLK, S_IFCHR, S_IFIFO, S_IRGRP, S_IROTH, S_IRUSR, S_IWGRP, S_IWOTH, S_IWUSR};
1010
use libc::{dev_t, mode_t};
11+
use std::collections::HashMap;
1112
use std::ffi::CString;
1213

1314
use uucore::display::Quotable;
1415
use uucore::error::{UResult, USimpleError, UUsageError, set_exit_code};
1516
use uucore::format_usage;
16-
17-
use uucore::locale::get_message;
17+
use uucore::locale::{get_message, get_message_with_args};
1818

1919
const MODE_RW_UGO: mode_t = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
2020

@@ -130,14 +130,14 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
130130
(FileType::Fifo, _, _) => {
131131
return Err(UUsageError::new(
132132
1,
133-
"Fifos do not have major and minor device numbers.",
133+
get_message("mknod-error-fifo-no-major-minor"),
134134
));
135135
}
136136
(_, Some(&major), Some(&minor)) => makedev(major, minor),
137137
_ => {
138138
return Err(UUsageError::new(
139139
1,
140-
"Special files require major and minor device numbers.",
140+
get_message("mknod-error-special-require-major-minor"),
141141
));
142142
}
143143
};
@@ -166,38 +166,38 @@ pub fn uu_app() -> Command {
166166
.short('m')
167167
.long("mode")
168168
.value_name("MODE")
169-
.help("set file permission bits to MODE, not a=rw - umask"),
169+
.help(get_message("mknod-help-mode")),
170170
)
171171
.arg(
172172
Arg::new("name")
173173
.value_name("NAME")
174-
.help("name of the new file")
174+
.help(get_message("mknod-help-name"))
175175
.required(true)
176176
.value_hint(clap::ValueHint::AnyPath),
177177
)
178178
.arg(
179179
Arg::new(options::TYPE)
180180
.value_name("TYPE")
181-
.help("type of the new file (b, c, u or p)")
181+
.help(get_message("mknod-help-type"))
182182
.required(true)
183183
.value_parser(parse_type),
184184
)
185185
.arg(
186186
Arg::new(options::MAJOR)
187187
.value_name(options::MAJOR)
188-
.help("major file type")
188+
.help(get_message("mknod-help-major"))
189189
.value_parser(value_parser!(u64)),
190190
)
191191
.arg(
192192
Arg::new(options::MINOR)
193193
.value_name(options::MINOR)
194-
.help("minor file type")
194+
.help(get_message("mknod-help-minor"))
195195
.value_parser(value_parser!(u64)),
196196
)
197197
.arg(
198198
Arg::new(options::SELINUX)
199199
.short('Z')
200-
.help("set SELinux security context of each created directory to the default type")
200+
.help(get_message("mknod-help-selinux"))
201201
.action(ArgAction::SetTrue),
202202
)
203203
.arg(
@@ -207,18 +207,23 @@ pub fn uu_app() -> Command {
207207
.value_parser(value_parser!(String))
208208
.num_args(0..=1)
209209
.require_equals(true)
210-
.help("like -Z, or if CTX is specified then set the SELinux or SMACK security context to CTX")
210+
.help(get_message("mknod-help-context")),
211211
)
212212
}
213213

214214
fn get_mode(str_mode: Option<&String>) -> Result<mode_t, String> {
215215
match str_mode {
216216
None => Ok(MODE_RW_UGO),
217217
Some(str_mode) => uucore::mode::parse_mode(str_mode)
218-
.map_err(|e| format!("invalid mode ({e})"))
218+
.map_err(|e| {
219+
get_message_with_args(
220+
"mknod-error-invalid-mode",
221+
HashMap::from([("error".to_string(), e.to_string())]),
222+
)
223+
})
219224
.and_then(|mode| {
220225
if mode > 0o777 {
221-
Err("mode must specify only file permission bits".to_string())
226+
Err(get_message("mknod-error-mode-permission-bits-only"))
222227
} else {
223228
Ok(mode)
224229
}
@@ -231,11 +236,14 @@ fn parse_type(tpe: &str) -> Result<FileType, String> {
231236
// 'mknod /dev/rst0 character 18 0'.
232237
tpe.chars()
233238
.next()
234-
.ok_or_else(|| "missing device type".to_string())
239+
.ok_or_else(|| get_message("mknod-error-missing-device-type"))
235240
.and_then(|first_char| match first_char {
236241
'b' => Ok(FileType::Block),
237242
'c' | 'u' => Ok(FileType::Character),
238243
'p' => Ok(FileType::Fifo),
239-
_ => Err(format!("invalid device type {}", tpe.quote())),
244+
_ => Err(get_message_with_args(
245+
"mknod-error-invalid-device-type",
246+
HashMap::from([("type".to_string(), tpe.quote().to_string())]),
247+
)),
240248
})
241249
}

0 commit comments

Comments
 (0)