Plusieurs variables d'environnement sont disponibles pour modifier les paramètres de langue. Vous pouvez afficher vos paramètres régionaux actuels en exécutant la localecommande. Pour modifier tous les paramètres régionaux en anglais, utilisez LANG=C. Ces Cparamètres régionaux sont toujours disponibles sans installer de modules linguistiques supplémentaires. (Pour passer temporairement à des paramètres régionaux non anglais, consultez le message de @ mklement0 .)
Exemples:
Exécuter une commande avec les paramètres de langue par défaut et imprimer les paramètres régionaux actuels:
$ /nonexistent
bash: /nonexistent: Bestand of map bestaat niet
$ locale
LANG=nl_NL.UTF-8
LANGUAGE=
LC_CTYPE="nl_NL.UTF-8"
LC_NUMERIC="nl_NL.UTF-8"
LC_TIME="nl_NL.UTF-8"
LC_COLLATE="nl_NL.UTF-8"
LC_MONETARY="nl_NL.UTF-8"
LC_MESSAGES="nl_NL.UTF-8"
LC_PAPER="nl_NL.UTF-8"
LC_NAME="nl_NL.UTF-8"
LC_ADDRESS="nl_NL.UTF-8"
LC_TELEPHONE="nl_NL.UTF-8"
LC_MEASUREMENT="nl_NL.UTF-8"
LC_IDENTIFICATION="nl_NL.UTF-8"
LC_ALL=
Remplacez temporairement la langue d'un programme et montrez qu'elle est vraiment temporaire:
$ LANG=C ls /nonexistent
ls: cannot access /nonexistent: No such file or directory
$ ls /nonexistent
ls: kan geen toegang krijgen tot /nonexistent: Bestand of map bestaat niet
Modifiez les paramètres régionaux pour toutes les commandes exécutées dans le shell actuel et incluez à nouveau les preuves:
$ LANG=C
$ ls /nonexistent
ls: cannot access /nonexistent: No such file or directory
$ locale
LANG=C
LANGUAGE=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=
@gertvdijk: Merci pour cela; la raison pour laquelle cette réponse fonctionne même sans paramètre LANGUAGEest une exception : GNU gettext donne la priorité à la LANGUAGEvaleur sauf si la LC_MESSAGESvaleur ( effective) (généralement définie indirectement via LANGou LC_ALL) est soit Cou (son synonyme) POSIX. Notez également que LANGUAGEse trouve être unset dans cette réponse, alors qu'elle est définie par défaut, et si elle est définie, vous devez remplacer ce pour passer à un des paramètres régionaux spécifiques de langue (par opposition à « C » / « POSIX »), qui est ce que vous avez trouvé.
mklement0
Votre réponse fonctionne très bien lors du passage aux paramètres régionaux "C" (avec les messages en anglais américain, comme requis), mais ne fonctionnera pas pour les autres paramètres régionaux, sauf si elle LANGUAGEest explicitement non définie ou remplacée. Étant donné le titre générique de la question, il est probable que les gens trouveront cette réponse en cherchant à passer à une langue non anglaise également, veuillez donc envisager d'ajouter ces informations à votre réponse.
mklement0
@ mklement0 Étant donné le contexte de la question (affichage de messages d'erreur en anglais), je pense que le message actuel est suffisant. Vous pouvez ajouter une autre réponse pour expliquer les détails LANGUAGEsi vous voulez :)
Lekensteyn
J'ai ajouté ma propre réponse , comme vous l'avez suggéré. Si vous êtes d'accord avec mon évaluation selon laquelle de futurs lecteurs pourraient venir ici pour passer à n'importe quelle langue (comme plusieurs personnes l'ont déjà activement indiqué), veuillez ajouter un lien vers ma réponse à votre question. En dehors de cela, je suggère de changer la valeur de LANGUAGEdans votre exemple de sortie en nl, qui est la valeur par défaut réelle lorsque votre environnement local est nl_NL.UTF-8.
mklement0
9
La réponse utile de Lekensteyn fonctionne très bien si vous souhaitez passer à l'anglais américain sur demande, comme l'OP l'a demandé, mais si vous souhaitez passer à une autre langue à la demande , plus de travail est nécessaire.
Avant de commencer, vous devez installer des tableaux de messages avec sudo apt-get install language-pack-<lang-tag>, où se <lang-tag>trouve une simple sous - étiquette de langue RTF 5646 , comme espour l'espagnol.
Informations de fond
GNU gettext utilitaires à base donnent la priorité à la nonstandard LANGUAGEvariable d'environnement [1]
sur les variables d'environnement définies locale POSIX LC_ALL, LC_MESSAGESet LANG(dans cet ordre).
Étant donné qu'elle LANGUAGEest définie par défaut sur les systèmes Ubuntu [2] , à savoir une sous - chaîne de la LANGvaleur qui reflète soit une simple balise de langue (par exemple, espour l'espagnol) ou une balise de région linguistique (par exemple, de_DEpour la variante allemande de l'allemand), vous devez annuler ou remplacer LANGUAGEpour que les messages d'une autre langue prennent effet. [3]
Option 1: définir LANGUAGE
Exemple : passer aux esmessages espagnols ( ) ad-hoc:
$ LANGUAGE=es ls NoSuchFile
ls: no se puede acceder a NoSuchFile: No existe el archivo o el directorio
Remarque : Une simple balise de langue telle que essuffisante suffit, mais vous pouvez ajouter un identifiant de région (par exemple, es_ARpour l'Argentine), et même un suffixe de jeu de caractères (par exemple, es_AR.UTF-8).
Cependant, les messages localisés peuvent exister uniquement au niveau de la langue , et la solution de repli consiste à utiliser des messages qui correspondent à la partie de la langue ( es, dans ce cas).
Option 2: Désactiver LANGUAGEet définirLC_ALL
Cette solution alternative indéfinit d'LANGUAGE abord, puis utilise la variable d'environnement locale POSIX LC_ALLpour définir implicitement LC_MESSAGES[4] :
$ LANGUAGE= LC_ALL=es_ES.UTF-8 ls NoSuchFile
ls: no se puede acceder a NoSuchFile: No existe el archivo o el directorio
Cette solution a l'avantage de définir tous les aspects de la localisation sur les paramètres régionaux spécifiés (comme LC_TIMEpour les formats de date / heure) et, par implicitement, le paramètre LC_MESSAGESinforme également les programmes non- GNU de la langue souhaitée.
Notez comment LC_ALLnécessite que le nom exact et complet des paramètres régionaux, y compris le suffixe du jeu de caractères, soit efficace ( es_ES.UTF-8) (contrairement à LANGUAGE, pour lequel une simple balise de langue suffit (comme es)). Il en va de même pour le réglage LC_MESSSAGESet LANG. La spécification d'un nom de paramètres régionaux non valide / non installé entraîne le remplacement des paramètres régionaux POSIX et donc de l'anglais américain.
Notes de bas de page
[1] Les raisons pour lesquelles la réponse de Lekensteyn fonctionne même sans annulation / remplacement LANGUAGEsont une exception : si la LC_MESSAGESvaleur (effective) (généralement définie indirectement via LANGou LC_ALL) est soit Cou (son synonyme) POSIX, cette valeur est respectée, quelle que soit la valeur de LANGUAGE, si seulement. Inversement, si la LC_MESSAGESvaleur (effective) est un autre paramètre régional spécifique , LANGUAGEest prioritaire.
[2] Cela s'applique à Ubuntu proprement dit , mais pas nécessairement aux autres versions ; Lekensteyn déclare que Kubuntu ne se couche pasLANGUAGE .
Sans doute, neLANGUAGE devrait pas être défini par défaut, étant donné qu'en son absence, la LC_MESSAGESvaleur impliquée par la LANGvaleur (qui détermine les paramètres régionaux actuels) est respectée.
[3] Vous pouvez également utiliser cette approche pour passer à [US] English en attribuant soit LANGUAGE=Cou LANGUAGE=POSIX(comme alternative à, LANG=C/ LANG=POSIX), bien que je ne sache pas si cela est activement reconnu ou simplement un mécanisme de secours , étant donné que ces valeurs ne ne commencez pas avec une balise de langue ; peut-être que le meilleur choix serait en_US.
[4] Il y a un cas limite où cette approche ne fonctionne pas: essayer d'invoquer un exécutable avec un chemin - qu'il soit relatif ou absolu - ne passe PAS dans la langue spécifiée, tandis qu'un simple nom de fichier ne LANGUAGE= LC_ALL=es_ES.UTF-8 /path/to/no_such_utilityfonctionne pas : ne fonctionne pas (génère un message dans les paramètres régionaux actuels), alors que le LANGUAGE= LC_ALL=es_ES.UTF-8 no_such_utilityfait (génère un message d'erreur espagnol).
Si quelqu'un sait pourquoi et s'il y a une bonne raison à cela, faites-le nous savoir.
LANG
ouLANG_ALL
ne fonctionne pas pour moi, l'LANGUAGE
est encore . Voir Pourquoi le remplacement de la variable d'environnement LANG ne change-t-il pas la langue pour moi?LANGUAGE
est une exception : GNU gettext donne la priorité à laLANGUAGE
valeur sauf si laLC_MESSAGES
valeur ( effective) (généralement définie indirectement viaLANG
ouLC_ALL
) est soitC
ou (son synonyme)POSIX
. Notez également queLANGUAGE
se trouve être unset dans cette réponse, alors qu'elle est définie par défaut, et si elle est définie, vous devez remplacer ce pour passer à un des paramètres régionaux spécifiques de langue (par opposition à « C » / « POSIX »), qui est ce que vous avez trouvé.LANGUAGE
est explicitement non définie ou remplacée. Étant donné le titre générique de la question, il est probable que les gens trouveront cette réponse en cherchant à passer à une langue non anglaise également, veuillez donc envisager d'ajouter ces informations à votre réponse.LANGUAGE
si vous voulez :)LANGUAGE
dans votre exemple de sortie ennl
, qui est la valeur par défaut réelle lorsque votre environnement local estnl_NL.UTF-8
.La réponse utile de Lekensteyn fonctionne très bien si vous souhaitez passer à l'anglais américain sur demande, comme l'OP l'a demandé, mais si vous souhaitez passer à une autre langue à la demande , plus de travail est nécessaire.
Avant de commencer, vous devez installer des tableaux de messages avec
sudo apt-get install language-pack-<lang-tag>
, où se<lang-tag>
trouve une simple sous - étiquette de langue RTF 5646 , commees
pour l'espagnol.Informations de fond
GNU gettext utilitaires à base donnent la priorité à la nonstandard
LANGUAGE
variable d'environnement [1] sur les variables d'environnement définies locale POSIXLC_ALL
,LC_MESSAGES
etLANG
(dans cet ordre).Étant donné qu'elle
LANGUAGE
est définie par défaut sur les systèmes Ubuntu [2] , à savoir une sous - chaîne de laLANG
valeur qui reflète soit une simple balise de langue (par exemple,es
pour l'espagnol) ou une balise de région linguistique (par exemple,de_DE
pour la variante allemande de l'allemand), vous devez annuler ou remplacerLANGUAGE
pour que les messages d'une autre langue prennent effet. [3]Option 1: définir
LANGUAGE
Exemple : passer aux
es
messages espagnols ( ) ad-hoc:Remarque : Une simple balise de langue telle que
es
suffisante suffit, mais vous pouvez ajouter un identifiant de région (par exemple,es_AR
pour l'Argentine), et même un suffixe de jeu de caractères (par exemple,es_AR.UTF-8
).Cependant, les messages localisés peuvent exister uniquement au niveau de la langue , et la solution de repli consiste à utiliser des messages qui correspondent à la partie de la langue (
es
, dans ce cas).Option 2: Désactiver
LANGUAGE
et définirLC_ALL
Cette solution alternative indéfinit d'
LANGUAGE
abord, puis utilise la variable d'environnement locale POSIXLC_ALL
pour définir implicitementLC_MESSAGES
[4] :Cette solution a l'avantage de définir tous les aspects de la localisation sur les paramètres régionaux spécifiés (comme
LC_TIME
pour les formats de date / heure) et, par implicitement, le paramètreLC_MESSAGES
informe également les programmes non- GNU de la langue souhaitée.Notez comment
LC_ALL
nécessite que le nom exact et complet des paramètres régionaux, y compris le suffixe du jeu de caractères, soit efficace (es_ES.UTF-8
) (contrairement àLANGUAGE
, pour lequel une simple balise de langue suffit (commees
)). Il en va de même pour le réglageLC_MESSSAGES
etLANG
. La spécification d'un nom de paramètres régionaux non valide / non installé entraîne le remplacement des paramètres régionaux POSIX et donc de l'anglais américain.Notes de bas de page
[1] Les raisons pour lesquelles la réponse de Lekensteyn fonctionne même sans annulation / remplacement
LANGUAGE
sont une exception : si laLC_MESSAGES
valeur (effective) (généralement définie indirectement viaLANG
ouLC_ALL
) est soitC
ou (son synonyme)POSIX
, cette valeur est respectée, quelle que soit la valeur deLANGUAGE
, si seulement. Inversement, si laLC_MESSAGES
valeur (effective) est un autre paramètre régional spécifique ,LANGUAGE
est prioritaire.[2] Cela s'applique à Ubuntu proprement dit , mais pas nécessairement aux autres versions ; Lekensteyn déclare que Kubuntu ne se couche pas
LANGUAGE
.Sans doute, ne
LANGUAGE
devrait pas être défini par défaut, étant donné qu'en son absence, laLC_MESSAGES
valeur impliquée par laLANG
valeur (qui détermine les paramètres régionaux actuels) est respectée.[3] Vous pouvez également utiliser cette approche pour passer à [US] English en attribuant soit
LANGUAGE=C
ouLANGUAGE=POSIX
(comme alternative à,LANG=C
/LANG=POSIX
), bien que je ne sache pas si cela est activement reconnu ou simplement un mécanisme de secours , étant donné que ces valeurs ne ne commencez pas avec une balise de langue ; peut-être que le meilleur choix seraiten_US
.[4] Il y a un cas limite où cette approche ne fonctionne pas: essayer d'invoquer un exécutable avec un chemin - qu'il soit relatif ou absolu - ne passe PAS dans la langue spécifiée, tandis qu'un simple nom de fichier ne
LANGUAGE= LC_ALL=es_ES.UTF-8 /path/to/no_such_utility
fonctionne pas : ne fonctionne pas (génère un message dans les paramètres régionaux actuels), alors que leLANGUAGE= LC_ALL=es_ES.UTF-8 no_such_utility
fait (génère un message d'erreur espagnol).Si quelqu'un sait pourquoi et s'il y a une bonne raison à cela, faites-le nous savoir.
la source