La localisation est une fonctionnalité non documentée de Bash.
Un script shell localisé affiche son texte dans le langage défini par la locale système. Un utilisateur Linux à Berlin, Allemagne, aura une sortie en allemand alors que son cousin à Berlin, Maryland, aura une sortie en anglais avec le même script.
Pour créer un script localisé, utilisez le modèle suivant pour écrire tous les messages pour l'utilisateur (messages d'erreur, invite, etc.).
#!/bin/bash # localized.sh E_CDERROR=65 error() { printf "$@" >&2 exit $E_CDERROR } cd $var || error $"Can't cd to %s." "$var" read -p $"Enter the value: " var # ... |
bash$ bash -D localized.sh "Can't cd to %s." "Enter the value: " |
bash$ bash --dump-po-strings localized.sh #: a:6 msgid "Can't cd to %s." msgstr "" #: a:7 msgid "Enter the value: " msgstr "" |
Maintenant, construisez un fichier langage.po pour chaque langage dans lequel le script sera traduit, en spécifiant le msgstr. Par exemple:
fr.po:
#: a:6 msgid "Can't cd to %s." msgstr "Impossible de se positionner dans le répertoire %s." #: a:7 msgid "Enter the value: " msgstr "Entrez la valeur : " |
Ensuite, lancez msgfmt.
msgfmt -o localized.sh.mo fr.po
Placez le fichier résultant localized.sh.mo dans le répertoire /usr/local/share/locale/fr/LC_MESSAGES, et ajoutez les lignes suivantes au début du script:
TEXTDOMAINDIR=/usr/local/share/locale TEXTDOMAIN=localized.sh |
Si un utilisateur d'un système français lance le script, il obtiendra des messages en français.
![]() | Avec les anciennes versions de Bash ou d'autres shells, gettext avec l'option -s est obligatoire. Dans ce cas, le script devient:
|
Les variables TEXTDOMAIN et TEXTDOMAINDIR doivent être exportées dans l'environnement.
---
Cette annexe a été écrite par Stephane Chazelas.