Skip to content

Conversation

@lordeji
Copy link

@lordeji lordeji commented Dec 29, 2025

TL;DR

Completing my PR (#9898) which would fully localize split help text.
If this PR is accepted I will be updating each packages which would close #9118.


Implementation :

It's manual work. Just replaced every call to .value_name("<str>") by .value_name(translate!("<id>")) and updated the .ftl files accordingly. There is a risk that it slows down the program significantly because I had to add the "string" feature for clap and I don't know how much dynamic objects are costly for clap.
If this is really costly, then these updates should wait the implementation of lazy loading of locales (#9103), or never be done if no solution, because performance is more important than some translations.


Testing :

My previous PR was compiled and tested with the value names changed. All tests passed so I conclude that it would be the same here.


Results :

Using the AUR version (0.5.0) :

$ LANG=fr_FR.UTF-8 uu-split -h
Créer des fichiers de sortie contenant des sections consécutives ou entrelacées de l'entrée

Usage: split [OPTION]... [ENTRÉE [PRÉFIXE]]

Arguments:
  [input]   [default: -]
  [prefix]  [default: x]

Options:
  -b, --bytes <SIZE>                mettre TAILLE octets par fichier de sortie
  -C, --line-bytes <SIZE>           mettre au maximum TAILLE octets de lignes par fichier de sortie
  -l, --lines <NUMBER>              mettre NOMBRE lignes/enregistrements par fichier de sortie [default: 1000]
  -n, --number <CHUNKS>             générer CHUNKS fichiers de sortie ; voir l'explication ci-dessous
      --additional-suffix <SUFFIX>  SUFFIXE supplémentaire à ajouter aux noms de fichiers de sortie [default: ]
      --filter <COMMAND>            écrire vers la COMMANDE shell ; le nom de fichier est $FILE (Actuellement non implémenté pour Windows)
  -e, --elide-empty-files           ne pas générer de fichiers de sortie vides avec '-n'
  -d                                utiliser des suffixes numériques commençant à 0, pas alphabétiques
      --numeric-suffixes[=<FROM>]   identique à -d, mais permet de définir la valeur de départ
  -x                                utiliser des suffixes hexadécimaux commençant à 0, pas alphabétiques
      --hex-suffixes[=<FROM>]       identique à -x, mais permet de définir la valeur de départ
  -a, --suffix-length <N>           générer des suffixes de longueur N (par défaut 2)
      --verbose                     afficher un diagnostic juste avant l'ouverture de chaque fichier de sortie
  -t, --separator <SEP>             utiliser SEP au lieu de nouvelle ligne comme séparateur d'enregistrement ; '\\0' (zéro) spécifie le caractère
                                    NUL
  -h, --help                        Print help
  -V, --version                     Print version

Sortir des morceaux de taille fixe d'ENTRÉE vers PREFIXEaa, PREFIXEab, ...; la taille par défaut est 1000, et le PRÉFIXE par défaut est 'x'. Sans
ENTRÉE, ou quand ENTRÉE est -, lire l'entrée standard.

L'argument TAILLE est un entier et une unité optionnelle (exemple: 10K est 10*1024).
Les unités sont K,M,G,T,P,E,Z,Y,R,Q (puissances de 1024) ou KB,MB,... (puissances de 1000).
Les préfixes binaires peuvent être utilisés aussi: KiB=K, MiB=M, et ainsi de suite.

CHUNKS peut être:

- N diviser en N fichiers basé sur la taille de l'entrée
- K/N sortir le Kème de N vers stdout
- l/N diviser en N fichiers sans diviser les lignes/enregistrements
- l/K/N sortir le Kème de N vers stdout sans diviser les lignes/enregistrements
- r/N comme 'l' mais utiliser la distribution round robin
- r/K/N pareillement mais ne sortir que le Kème de N vers stdout

Using my compiled version :

$ LANG=fr_FR.UTF-8 ./target/debug/split -h
Créer des fichiers de sortie contenant des sections consécutives ou entrelacées de l'entrée

Utilisation: split [OPTION]... [ENTRÉE [PRÉFIXE]]

Arguments:
  [ENTREE]   [default: -]
  [PREFIXE]  [default: x]

Options:
  -b, --bytes <TAILLE>               mettre TAILLE octets par fichier de sortie
  -C, --line-bytes <TAILLE>          mettre au maximum TAILLE octets de lignes par fichier de sortie
  -l, --lines <NOMBRE>               mettre NOMBRE lignes/enregistrements par fichier de sortie [default: 1000]
  -n, --number <BLOCS>               générer CHUNKS fichiers de sortie ; voir l'explication ci-dessous
      --additional-suffix <SUFFIXE>  SUFFIXE supplémentaire à ajouter aux noms de fichiers de sortie [default: ]
      --filter <COMMANDE>            écrire vers la COMMANDE shell ; le nom de fichier est $FILE (Actuellement non implémenté pour Windows)
  -e, --elide-empty-files            ne pas générer de fichiers de sortie vides avec '-n'
  -d                                 utiliser des suffixes numériques commençant à 0, pas alphabétiques
      --numeric-suffixes[=<DEPART>]  identique à -d, mais permet de définir la valeur de départ
  -x                                 utiliser des suffixes hexadécimaux commençant à 0, pas alphabétiques
      --hex-suffixes[=<DEPART>]      identique à -x, mais permet de définir la valeur de départ
  -a, --suffix-length <N>            générer des suffixes de longueur N (par défaut 2)
      --verbose                      afficher un diagnostic juste avant l'ouverture de chaque fichier de sortie
  -t, --separator <SEP>              utiliser SEP au lieu de nouvelle ligne comme séparateur d'enregistrement ; '\\0' (zéro) spécifie le
                                     caractère NUL
  -h, --help                         Print help
  -V, --version                      Print version

Sortir des morceaux de taille fixe d'ENTRÉE vers PREFIXEaa, PREFIXEab, ...; la taille par défaut est 1000, et le PRÉFIXE par défaut est 'x'. Sans
ENTRÉE, ou quand ENTRÉE est -, lire l'entrée standard.

L'argument TAILLE est un entier et une unité optionnelle (exemple: 10K est 10*1024).
Les unités sont K,M,G,T,P,E,Z,Y,R,Q (puissances de 1024) ou KB,MB,... (puissances de 1000).
Les préfixes binaires peuvent être utilisés aussi: KiB=K, MiB=M, et ainsi de suite.

CHUNKS peut être:

- N diviser en N fichiers basé sur la taille de l'entrée
- K/N sortir le Kème de N vers stdout
- l/N diviser en N fichiers sans diviser les lignes/enregistrements
- l/K/N sortir le Kème de N vers stdout sans diviser les lignes/enregistrements
- r/N comme 'l' mais utiliser la distribution round robin
- r/K/N pareillement mais ne sortir que le Kème de N vers stdout

@codspeed-hq
Copy link

codspeed-hq bot commented Dec 29, 2025

CodSpeed Performance Report

Merging #9906 will degrade performance by 8.42%

Comparing lordeji:split-localized-value-names (c16a6f8) with main (f43602d)

Summary

❌ 6 regressions
✅ 121 untouched
⏩ 6 skipped1

⚠️ Please fix the performance issues or acknowledge them on CodSpeed.

Benchmarks breakdown

Benchmark BASE HEAD Efficiency
cksum_blake3 209 µs 228.2 µs -8.42%
sort_ascii_c_locale 21.5 ms 22.6 ms -4.56%
cp_large_file[16] 359.9 µs 375.5 µs -4.15%
mv_single_file 135.3 ms 145.3 ms -6.91%
unexpand_many_lines[100000] 269.6 ms 279.8 ms -3.63%
unexpand_large_file[10] 565.2 ms 586.5 ms -3.63%

Footnotes

  1. 6 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

We need to add the "string" feature for the `IntoResettable<>`
trait to support dynamic values like `String`.
@sylvestre sylvestre force-pushed the split-localized-value-names branch from b95b9e3 to c16a6f8 Compare December 30, 2025 16:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

l10n: command arguments value name is not localized

1 participant