Skip to content

Commit 4e5586c

Browse files
committed
l10n: port nl for translation + add french
1 parent 0a1a36d commit 4e5586c

File tree

3 files changed

+99
-19
lines changed

3 files changed

+99
-19
lines changed

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

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,27 @@ nl-after-help = STYLE is one of:
1313
- ln left justified, no leading zeros
1414
- rn right justified, no leading zeros
1515
- rz right justified, leading zeros
16+
17+
# Help messages
18+
nl-help-help = Print help information.
19+
nl-help-body-numbering = use STYLE for numbering body lines
20+
nl-help-section-delimiter = use CC for separating logical pages
21+
nl-help-footer-numbering = use STYLE for numbering footer lines
22+
nl-help-header-numbering = use STYLE for numbering header lines
23+
nl-help-line-increment = line number increment at each line
24+
nl-help-join-blank-lines = group of NUMBER empty lines counted as one
25+
nl-help-number-format = insert line numbers according to FORMAT
26+
nl-help-no-renumber = do not reset line numbers at logical pages
27+
nl-help-number-separator = add STRING after (possible) line number
28+
nl-help-starting-line-number = first line number on each logical page
29+
nl-help-number-width = use NUMBER columns for line numbers
30+
31+
# Error messages
32+
nl-error-invalid-arguments = Invalid arguments supplied.
33+
nl-error-could-not-read-line = could not read line
34+
nl-error-line-number-overflow = line number overflow
35+
nl-error-invalid-line-width = Invalid line number field width: '{ $value }': Numerical result out of range
36+
nl-error-invalid-blank-lines = Invalid line number of blank lines: '{ $value }': Numerical result out of range
37+
nl-error-invalid-regex = invalid regular expression
38+
nl-error-invalid-numbering-style = invalid numbering style: '{ $style }'
39+
nl-error-is-directory = { $path }: Is a directory

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

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
nl-about = Numéroter les lignes des fichiers
2+
nl-usage = nl [OPTION]... [FICHIER]...
3+
nl-after-help = STYLE est l'un des suivants :
4+
5+
- a numéroter toutes les lignes
6+
- t numéroter seulement les lignes non vides
7+
- n ne numéroter aucune ligne
8+
- pBRE numéroter seulement les lignes qui contiennent une correspondance pour
9+
l'expression régulière de base, BRE
10+
11+
FORMAT est l'un des suivants :
12+
13+
- ln justifié à gauche, sans zéros en tête
14+
- rn justifié à droite, sans zéros en tête
15+
- rz justifié à droite, avec zéros en tête
16+
17+
# Messages d'aide
18+
nl-help-help = Afficher les informations d'aide.
19+
nl-help-body-numbering = utiliser STYLE pour numéroter les lignes du corps
20+
nl-help-section-delimiter = utiliser CC pour séparer les pages logiques
21+
nl-help-footer-numbering = utiliser STYLE pour numéroter les lignes de pied de page
22+
nl-help-header-numbering = utiliser STYLE pour numéroter les lignes d'en-tête
23+
nl-help-line-increment = incrément du numéro de ligne à chaque ligne
24+
nl-help-join-blank-lines = groupe de NUMBER lignes vides comptées comme une seule
25+
nl-help-number-format = insérer les numéros de ligne selon FORMAT
26+
nl-help-no-renumber = ne pas remettre à zéro les numéros de ligne aux pages logiques
27+
nl-help-number-separator = ajouter STRING après le numéro de ligne (éventuel)
28+
nl-help-starting-line-number = premier numéro de ligne sur chaque page logique
29+
nl-help-number-width = utiliser NUMBER colonnes pour les numéros de ligne
30+
31+
# Messages d'erreur
32+
nl-error-invalid-arguments = Arguments fournis invalides.
33+
nl-error-could-not-read-line = impossible de lire la ligne
34+
nl-error-line-number-overflow = débordement du numéro de ligne
35+
nl-error-invalid-line-width = Largeur de champ de numéro de ligne invalide : '{ $value }' : Résultat numérique hors limites
36+
nl-error-invalid-blank-lines = Nombre de lignes vides invalide : '{ $value }' : Résultat numérique hors limites
37+
nl-error-invalid-regex = expression régulière invalide
38+
nl-error-invalid-numbering-style = style de numérotation invalide : '{ $style }'
39+
nl-error-is-directory = { $path } : Est un répertoire

src/uu/nl/src/nl.rs

Lines changed: 36 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44
// file that was distributed with this source code.
55

66
use clap::{Arg, ArgAction, Command};
7+
use std::collections::HashMap;
78
use std::fs::File;
89
use std::io::{BufRead, BufReader, Read, stdin};
910
use std::path::Path;
1011
use uucore::error::{FromIo, UResult, USimpleError, set_exit_code};
11-
use uucore::locale::get_message;
12+
use uucore::locale::{get_message, get_message_with_args};
1213
use uucore::{format_usage, show_error};
1314

1415
mod helper;
@@ -89,9 +90,12 @@ impl TryFrom<&str> for NumberingStyle {
8990
"n" => Ok(Self::None),
9091
_ if s.starts_with('p') => match regex::Regex::new(&s[1..]) {
9192
Ok(re) => Ok(Self::Regex(Box::new(re))),
92-
Err(_) => Err(String::from("invalid regular expression")),
93+
Err(_) => Err(get_message("nl-error-invalid-regex")),
9394
},
94-
_ => Err(format!("invalid numbering style: '{s}'")),
95+
_ => Err(get_message_with_args(
96+
"nl-error-invalid-numbering-style",
97+
HashMap::from([("style".to_string(), s.to_string())]),
98+
)),
9599
}
96100
}
97101
}
@@ -185,7 +189,11 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
185189
if !parse_errors.is_empty() {
186190
return Err(USimpleError::new(
187191
1,
188-
format!("Invalid arguments supplied.\n{}", parse_errors.join("\n")),
192+
format!(
193+
"{}\n{}",
194+
get_message("nl-error-invalid-arguments"),
195+
parse_errors.join("\n")
196+
),
189197
));
190198
}
191199

@@ -204,7 +212,13 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
204212
let path = Path::new(file);
205213

206214
if path.is_dir() {
207-
show_error!("{}: Is a directory", path.display());
215+
show_error!(
216+
"{}",
217+
get_message_with_args(
218+
"nl-error-is-directory",
219+
HashMap::from([("path".to_string(), path.display().to_string())])
220+
)
221+
);
208222
set_exit_code(1);
209223
} else {
210224
let reader = File::open(path).map_err_context(|| file.to_string())?;
@@ -228,7 +242,7 @@ pub fn uu_app() -> Command {
228242
.arg(
229243
Arg::new(options::HELP)
230244
.long(options::HELP)
231-
.help("Print help information.")
245+
.help(get_message("nl-help-help"))
232246
.action(ArgAction::Help),
233247
)
234248
.arg(
@@ -241,81 +255,81 @@ pub fn uu_app() -> Command {
241255
Arg::new(options::BODY_NUMBERING)
242256
.short('b')
243257
.long(options::BODY_NUMBERING)
244-
.help("use STYLE for numbering body lines")
258+
.help(get_message("nl-help-body-numbering"))
245259
.value_name("STYLE"),
246260
)
247261
.arg(
248262
Arg::new(options::SECTION_DELIMITER)
249263
.short('d')
250264
.long(options::SECTION_DELIMITER)
251-
.help("use CC for separating logical pages")
265+
.help(get_message("nl-help-section-delimiter"))
252266
.value_name("CC"),
253267
)
254268
.arg(
255269
Arg::new(options::FOOTER_NUMBERING)
256270
.short('f')
257271
.long(options::FOOTER_NUMBERING)
258-
.help("use STYLE for numbering footer lines")
272+
.help(get_message("nl-help-footer-numbering"))
259273
.value_name("STYLE"),
260274
)
261275
.arg(
262276
Arg::new(options::HEADER_NUMBERING)
263277
.short('h')
264278
.long(options::HEADER_NUMBERING)
265-
.help("use STYLE for numbering header lines")
279+
.help(get_message("nl-help-header-numbering"))
266280
.value_name("STYLE"),
267281
)
268282
.arg(
269283
Arg::new(options::LINE_INCREMENT)
270284
.short('i')
271285
.long(options::LINE_INCREMENT)
272-
.help("line number increment at each line")
286+
.help(get_message("nl-help-line-increment"))
273287
.value_name("NUMBER")
274288
.value_parser(clap::value_parser!(i64)),
275289
)
276290
.arg(
277291
Arg::new(options::JOIN_BLANK_LINES)
278292
.short('l')
279293
.long(options::JOIN_BLANK_LINES)
280-
.help("group of NUMBER empty lines counted as one")
294+
.help(get_message("nl-help-join-blank-lines"))
281295
.value_name("NUMBER")
282296
.value_parser(clap::value_parser!(u64)),
283297
)
284298
.arg(
285299
Arg::new(options::NUMBER_FORMAT)
286300
.short('n')
287301
.long(options::NUMBER_FORMAT)
288-
.help("insert line numbers according to FORMAT")
302+
.help(get_message("nl-help-number-format"))
289303
.value_name("FORMAT")
290304
.value_parser(["ln", "rn", "rz"]),
291305
)
292306
.arg(
293307
Arg::new(options::NO_RENUMBER)
294308
.short('p')
295309
.long(options::NO_RENUMBER)
296-
.help("do not reset line numbers at logical pages")
310+
.help(get_message("nl-help-no-renumber"))
297311
.action(ArgAction::SetFalse),
298312
)
299313
.arg(
300314
Arg::new(options::NUMBER_SEPARATOR)
301315
.short('s')
302316
.long(options::NUMBER_SEPARATOR)
303-
.help("add STRING after (possible) line number")
317+
.help(get_message("nl-help-number-separator"))
304318
.value_name("STRING"),
305319
)
306320
.arg(
307321
Arg::new(options::STARTING_LINE_NUMBER)
308322
.short('v')
309323
.long(options::STARTING_LINE_NUMBER)
310-
.help("first line number on each logical page")
324+
.help(get_message("nl-help-starting-line-number"))
311325
.value_name("NUMBER")
312326
.value_parser(clap::value_parser!(i64)),
313327
)
314328
.arg(
315329
Arg::new(options::NUMBER_WIDTH)
316330
.short('w')
317331
.long(options::NUMBER_WIDTH)
318-
.help("use NUMBER columns for line numbers")
332+
.help(get_message("nl-help-number-width"))
319333
.value_name("NUMBER")
320334
.value_parser(clap::value_parser!(usize)),
321335
)
@@ -326,7 +340,7 @@ fn nl<T: Read>(reader: &mut BufReader<T>, stats: &mut Stats, settings: &Settings
326340
let mut current_numbering_style = &settings.body_numbering;
327341

328342
for line in reader.lines() {
329-
let line = line.map_err_context(|| "could not read line".to_string())?;
343+
let line = line.map_err_context(|| get_message("nl-error-could-not-read-line"))?;
330344

331345
if line.is_empty() {
332346
stats.consecutive_empty_lines += 1;
@@ -366,7 +380,10 @@ fn nl<T: Read>(reader: &mut BufReader<T>, stats: &mut Stats, settings: &Settings
366380

367381
if is_line_numbered {
368382
let Some(line_number) = stats.line_number else {
369-
return Err(USimpleError::new(1, "line number overflow"));
383+
return Err(USimpleError::new(
384+
1,
385+
get_message("nl-error-line-number-overflow"),
386+
));
370387
};
371388
println!(
372389
"{}{}{line}",

0 commit comments

Comments
 (0)