Basculer la langue de sortie de la commande de la langue maternelle à l'anglais


84

Comment puis-je changer la langue de sortie de la commande de ma langue maternelle en anglais pour pouvoir poser ma question Ask Ubuntu avec une sortie de commande en anglais (messages d'erreur)?


5
C'est un peu trompeur. Ce n'est pas vraiment nécessaire pour les gens . (Si vous pensez que nous devrions obliger les OP à s'encombrer de cette façon, merci de poster sur meta avant de demander à qui que ce soit de le faire.) Ils peuvent changer de LANGcette façon, et cela pourrait aider, mais nous n'exigeons pas que les messages d'erreur copiés soient en anglais. Nous exigeons que ce que l'auteur a écrit soit en anglais (bien que nous le traduisions habituellement au lieu de poser des questions). Donc, une question écrite en anglais avec un texte de terminaison espagnol convient, alors qu'une question écrite en espagnol avec un texte de terminaison en anglais ne l’est pas.
Eliah Kagan

4
@EliahKagan Oui, vous avez raison, mais je pense que c'est utile.
BuZZ-dEE

2
Je suis d'accord, il est utile que les gens puissent faire cela, et bien que vous ayez posté cette question! Cependant, ce sont les gens importants savent que nous ne demandons eux de le faire (mais n'exigeons que les questions et les réponses elles - mêmes être rédigées en anglais).
Eliah Kagan

8
@EliahKagan Au contraire, il est très important de poster des messages d'erreur réels et il est fortement préférable de les poster en anglais car c'est ce que le public principal de ce site peut reconnaître et tester. (Et ne jamais, jamais, poster un message d'erreur retraduit. Toujours copier-coller, car la formulation exacte, la ponctuation, voire l'espacement peuvent être importants.)
Gilles

Réponses:


74

export LC_ALL=Cest assez. Toutes les commandes suivantes seront en anglais.

Plus d'informations: Que fait "LC_ALL = C"?

Si vous souhaitez revenir à la langue maternelle, désélectionnez la LC_ALLvariable:

unset LC_ALL

13

fonction bash pour terminal

Voici ma fonction bash pour basculer entre les paramètres régionaux DE et EN.

Vous pouvez étendre ce code avec vos langues préférées. Pour l'utiliser, mettez-le dans votre ~/.bashrc(ou ~/.bash_profile) -

Appelez-le avec _configure_locale ENpour basculer en anglais.

function _configure_locale() { # [profile]
    local profile=${1:-EN}
    case ${profile} in
      DE|DE_DE|de_DE)
          LC_ALL="de_DE.UTF-8"
          LANG="de_DE.UTF-8"
          LANGUAGE="de_DE:de:en_US:en"
          ;;
      EN|EN_US|en|en_US)
          LC_ALL="en_US.UTF-8"
          LANG="en_US.UTF-8"
          LANGUAGE="en_US:en"
          ;;
      *)
          echo "ALERT" "${FUNCNAME}: unknown profile '${profile}'"
          ;;
      esac
      LC_PAPER="de_DE.UTF-8"; # independent from locale
      LESSCHARSET="utf-8";    # independent from locale
      MM_CHARSET="utf-8"      # independent from locale
      echo "locale settings" "${LANG}";
      export LC_ALL LANG LANGUAGE LC_PAPER LESSCHARSET MM_CHARSET
}

En général , je suggère de changer les 3 variables d'environnement LC_ALL, LANG, LANGUAGEpour éviter les mauvais comportements de certains programmes.

S'adapter à votre langue

L'extension du code dans votre langue maternelle est assez simple. Vous pouvez trouver les valeurs nécessaires en appelant la commande suivante

env |egrep -e 'LC_ALL|LANG'

Le script doit être changé pour une autre langue que l'allemand (DE)? Je recherche une solution indépendante de la langue maternelle.
BuZZ-dEE

@ BuZZ-dEE: Vous pouvez (et devriez probablement) l'adapter facilement en supprimant le caseet en spécifiant l'entrée pour qu'elle soit conforme au <lang>_<country>format. Ensuite, vous pouvez simplement le passer, en supposant que UTF-8. Si vous êtes vraiment intéressé par une solution bien rangée, vous devriez probablement vérifier les entrées de l'utilisateur locale -apour vous assurer que les paramètres régionaux demandés sont réellement installés.
Masque de bit

@ buzz-dee: voir réponse mise à jour
H.-Dirk Schmitt

7

Ouvrez un terminal Ctrl+ Alt+ Tet tapez:

LANG=en_US.UTF-8 bash

ou :

LC_ALL=C bash

Maintenant, la sortie du terminal est en anglais. Vous pouvez vérifier avec locale.

Il est possible de faire une commande pour le faire avec un permanentalias . Ouvrez le .bashrcfichier avec votre éditeur préféré et insérez le code suivant:

alias basheng='LANG=en_US.UTF-8 bash'

ou :

alias basheng='LC_ALL=C bash'

Redémarrez le shell Bash. Maintenant vous avez la commande basheng. Tapez-le dans le Bash pour obtenir un shell Bash anglais. Pour quitter le type de shell anglais exit.

La source:


Le réglage LANGn'est pas suffisant pour tenter toutes les sorties.
masque de bit

@bitmask est-ce: LANG=en_US.UTF-8 && LC_ALL=en_US.UTF-8 && LANGUAGE=en_US.UTF-8 bashmeilleur?
BuZZ-dEE

2
En fait, cela devrait être LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8 $SHELL.
Masque de bit

Seul LC_ALL = C bash fonctionne pour moi.
Liquide

5

Ceci est configuré via les paramètres régionaux , qui peuvent être définis via une variable d'environnement. Il y a quatre couches de variables; le premier qui est défini est prioritaire:

  • LANGUAGE- ne l'utilisez pas, c'est rarement utile et peut causer des bugs. Malheureusement, certaines versions d’Ubuntu le configurent, vous devrez donc peut-être le désactiver.
  • LC_ALL- remplace les paramètres spécifiques à la catégorie, destinés principalement aux programmes qui souhaitent s'exécuter dans les paramètres régionaux par défaut. Non destiné à être utilisé comme paramètres globaux.
  • Les variables catégorielles commençant par LC_: LC_CTYPE, LC_MESSAGES, LC_TIME, ....
  • LANG - définit les paramètres régionaux par défaut pour toutes les catégories, destinés à être utilisés dans les paramètres utilisateur globaux.

Les paramètres régionaux «ordinaires», avec tous les messages non traduits, les formats d’heure et de nombre par défaut, le jeu de caractères ASCII, etc. sont appelés C. Cette locale est présente sur tous les systèmes.

Ainsi, pour exécuter un programme avec des messages en anglais, exécutez

unset LANGUAGE; LC_MESSAGES=C myprogram --option

ou

unset LANGUAGE
export LC_MESSAGES=C
myprogram --option
myotherprogram

Pour exécuter un programme avec toute la localisation désactivée, exécutez

env -u LANGUAGE LC_ALL=C myprogram --option

mais attention, cela change le codage de caractères en ASCII (donc pas d'Unicode, latin-1, etc.).

Voir A quoi dois-je définir mes paramètres régionaux et quelles en sont les conséquences? pour un aperçu plus détaillé des lieux.


Ne pas utiliser la langue ?? Je ne sais pas sur quel système d'exploitation vous êtes, mais sous Ubuntu, LANGUAGE est utilisé par défaut tout le temps via le programme d'installation et diverses interfaces graphiques. Quels sont ces insectes, d'ailleurs? J'ai aussi lu la réponse à laquelle vous êtes lié , et même si elle contient des informations générales utiles, la recommandation n'est tout simplement pas un bon conseil sur un ordinateur de bureau Ubuntu.
Gunnar Hjalmarsson

@GunnarHjalmarsson Le principal problème LANGUAGEest qu'il passe avant LC_ALL, ce qui cause des bogues, car les programmes sont configurés LC_ALLpour obtenir une sortie prévisible, puis confus, car ils n'obtiennent pas la sortie attendue.
Gilles

Eh bien, les interfaces graphiques Ubuntu définissent à la fois LANG et LANGUAGE de manière cohérente (et LC_MESSAGES hérite de LANG), ce qui devrait éviter ce genre de confusion. La raison pour laquelle LANGUAGE est définie est que Language Support a une interface pour définir une liste de priorités.
Gunnar Hjalmarsson

@ GunnarHjalmarsson je sais. La mise en place LANGUAGEest néanmoins une mauvaise idée, car les avantages sont très minces alors que les bugs peuvent être ennuyeux et difficiles à trouver. Vous avez raison cependant, je devrais mentionner la non-prise LANGUAGE.
Gilles

Les réponses ici ne sont pas un endroit approprié pour débattre des problèmes de conception. Il est préférable d’organiser de telles discussions, par exemple, à Ubuntu-devel-discussion . Pour aider les utilisateurs, je pense vraiment qu'une réponse doit être basée sur la conception actuelle, que vous pensiez qu'elle est optimale ou non. Et notez que "certaines versions" sont toutes les versions prises en charge du bureau Ubuntu et de ses dérivés, éventuellement à l’exception de Kubuntu.
Gunnar Hjalmarsson

1

Le moyen le plus simple consiste à ouvrir le terminal en appuyant sur Alt + F2 et en exécutant la commande suivante:

env LANGUAGE=en gnome-terminal

1

dans votre ~/.bashrc

unset LC_ALL
export LC_MESSAGES=C

ensuite

source ~/.bashrc

Vérifie ça

$ locale
LANG=pl_PL.utf8
LANGUAGE=
LC_CTYPE="pl_PL.utf8"
LC_NUMERIC="pl_PL.utf8"
LC_TIME="pl_PL.utf8"
LC_COLLATE="pl_PL.utf8"
LC_MONETARY="pl_PL.utf8"
LC_MESSAGES=C
LC_PAPER="pl_PL.utf8"
LC_NAME="pl_PL.utf8"
LC_ADDRESS="pl_PL.utf8"
LC_TELEPHONE="pl_PL.utf8"
LC_MEASUREMENT="pl_PL.utf8"
LC_IDENTIFICATION="pl_PL.utf8"
LC_ALL=

Pourquoi désarmer d'abord?

LC_ALL Remplace les paramètres individuels de LC_ *: si LC_ALL est défini, aucun des éléments ci-dessous n'a d'effet.

https://help.ubuntu.com/community/Locale


Je ne sais pas pourquoi cette réponse a été rejetée. Oui, elle pourrait utiliser des explications supplémentaires, mais contrairement à la réponse acceptée, elle montre comment la rendre permanente et plus précise.
Xerus

0
  1. Cliquez sur l'icône d'engrenage à gauche (paramètres système sur le panneau Unity).
  2. Cliquez sur Support linguistique
  3. Sélectionnez les formats régionaux
  4. Définissez "Afficher chiffres, dates et montant en devise ..." sur Anglais.
  5. Déconnectez-vous de la session et reconnectez-vous (Obligatoire!)

Terminé.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.