Question Basculer la langue de sortie de commande de la langue maternelle vers l'anglais


Comment puis-je basculer le langage de sortie de commande de ma langue maternelle vers l'anglais, afin de pouvoir poster ma question Ask Ubuntu avec une sortie de commande en anglais (messages d'erreur)?


73
2018-03-05 13:36


origine


Ceci est quelque peu trompeur. Il n'est pas vraiment nécessaire pour les gens de le faire. (Si vous pensez que nous devrions exiger que les OP s’imposent de cette façon, veuillez poster sur méta avant d’inviter quiconque à le faire.) Ils peuvent changer LANG comme cela, et cela pourrait aider, mais nous n'avons pas besoin messages d'erreur copiés être en anglais. Nous exigeons ce que l'auteur a écrit être en anglais (bien que nous le traduisions habituellement au lieu de fermer les questions). Donc, une question écrite en anglais avec le texte du terminal espagnol est correcte, alors qu'une question écrite en espagnol avec le texte du terminal anglais ne l'est pas. - Eliah Kagan
@EliahKagan oui, vous avez raison, mais de toute façon je pense que c'est utile. - BuZZ-dEE
Je suis d'accord, il est utile pour les gens de pouvoir le faire, et bon vous avez posté cette question! Cependant, il est important que les gens sachent que nous ne le faisons pas exiger eux de le faire (mais faire exiger que les questions et les réponses elles-mêmes soient écrites en anglais). - Eliah Kagan
@EliahKagan Au contraire, il est très important de poster réel messages d'erreur, et hautement préférable de les publier en anglais car c'est ce que le public principal de ce site peut reconnaître et tester. (Et jamais, ne publiez jamais un message d'erreur ré-traduit. Toujours copier-coller, car le libellé exact, la ponctuation, l'espacement régulier peuvent être significatifs.) - Gilles


Réponses:


export LC_ALL=C est assez. Toutes les sorties de commandes ultérieures seront en anglais.

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

Si vous voulez revenir à la langue maternelle, désélectionnez la LC_ALL variable:

unset LC_ALL

61
2018-03-06 13:54



Incroyable, ça marche. Pourriez-vous fournir un lien ou une explication à la raison pour laquelle cela fonctionne? - Andrei
@Andrei Ajout d'un lien vers une question chez Unix & Linux. Il y a une très bonne explication dans le top voté réponse. - Eric Carvalho
Comment puis-tu revenir à la langue maternelle? - Ads20000
@ Ads20000 réponse mise à jour. - Eric Carvalho


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 EN passer à l'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, LANGUAGE pour éviter les mauvais comportements de certains programmes.

S'adapter à votre langue

Extension du code à votre langue maternelle est assez simple Vous pouvez trouver les valeurs nécessaires en appelant la commande suivante

env |egrep -e 'LC_ALL|LANG'

12
2018-03-05 13:45



Le script a besoin de changer 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 probablement devriez) facilement adapter ceci en jetant le case et en spécifiant l'entrée pour se conformer à la <lang>_<country> format. Ensuite, vous pouvez simplement passer à travers, en supposant UTF-8. Si vous êtes vraiment intéressé par une solution ordonnée, vous devriez probablement vérifier les entrées de l'utilisateur par rapport à locale -a pour vous assurer que les paramètres régionaux demandés sont réellement installés. - bitmask
@ buzz-dee: voir la réponse mise à jour - H.-Dirk Schmitt


Ouvrir un terminal Ctrl+Alt+T et tapez:

LANG=en_US.UTF-8 bash

ou:

LC_ALL=C bash

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

Il est possible de faire une commande pour le faire avec un permanent alias. Ouvrez le .bashrc fichier avec votre éditeur préféré et y mettre 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. Quitter le type de shell anglais exit.

La source:


7
2018-03-05 13:36



Réglage LANG est ne pas suffisant pour risquer toute sortie. - bitmask
@bitmask est la suivante: LANG=en_US.UTF-8 && LC_ALL=en_US.UTF-8 && LANGUAGE=en_US.UTF-8 bash meilleur? - BuZZ-dEE
En fait, cela devrait être LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8 $SHELL. - bitmask
Seulement LC_ALL = C bash travaille pour moi. - liquide


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

  • LANGUAGE - ne l'utilisez pas, c'est rarement utile et peut causer des bogues. Malheureusement, certaines versions d'Ubuntu le configurent, vous devrez donc le supprimer.
  • LC_ALL - Remplace les paramètres spécifiques à une catégorie, destinés principalement à être utilisés par les programmes qui souhaitent s'exécuter dans l'environnement local par défaut. Non destiné à être utilisé comme paramètres globaux.
  • Variables spécifiques à une catégorie 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.

La locale “simple”, avec tous les messages non traduits, les formats de temps et de nombre par défaut, ASCII comme le jeu de caractères, etc. est appelé 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 des caractères en ASCII (donc pas d'Unicode, de latin-1, etc.).

Voir Que dois-je définir mes paramètres régionaux et quelles sont les implications de le faire? pour un aperçu plus détaillé des paramètres régionaux.


5
2017-11-02 15:16



Ne pas utiliser LANGUAGE ?? Je ne sais pas sur quel OS vous êtes, mais sur Ubuntu, LANGUAGE est utilisé par défaut tout le temps via l'installateur et diverses interfaces graphiques. Quels sont ces bugs, btw? J'ai aussi lu la réponse à laquelle vous avez 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 bureau Ubuntu. - Gunnar Hjalmarsson
@GunnarHjalmarsson Le problème principal avec LANGUAGE est-ce qu'il a préséance sur LC_ALL, qui provoque des bogues car les programmes sont configurés LC_ALL pour obtenir des résultats prévisibles et se confondre car ils n'obtiennent pas le résultat attendu. - Gilles
Eh bien, les interfaces graphiques d'Ubuntu définissent 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éfini est que Language Support a une interface pour définir une liste de priorités. - Gunnar Hjalmarsson
@GunnarHjalmarsson je sais. Réglage LANGUAGE est une mauvaise idée néanmoins, car les avantages sont minces alors que les bogues peuvent être ennuyeux et difficiles à trouver. Vous avez raison cependant, je devrais mentionner le désarmement LANGUAGE. - Gilles
Les réponses ici ne sont pas un endroit approprié pour débattre des problèmes de conception. Ces discussions sont mieux tenues, par ex. ubuntu-devel-discuss. Pour être utile aux utilisateurs, je pense vraiment qu’une réponse doit être basée sur la conception actuelle, que vous pensiez qu’elle soit optimale ou non. Et s'il vous plaît noter que "certaines versions" sont toutes les versions prises en charge de bureau Ubuntu et dérivés, éventuellement à l'exception de Kubuntu. - Gunnar Hjalmarsson


Le moyen le plus simple est d'ouvrir le terminal en appuyant sur Alt + F2 et en exécutant cette commande:

env LANGUAGE=en gnome-terminal

1
2017-10-31 23:53





dans ton ~/.bashrc

unset LC_ALL
export LC_MESSAGES=C

puis

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ésélectionner en premier?

LC_ALL Remplace les paramètres LC_ * individuels: si LC_ALL est défini, aucun des   le ci-dessous ont un effet.

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


1
2017-08-29 13:27



Je ne sais pas pourquoi cette réponse a été abaissée. Oui, il pourrait utiliser plus d'explications, mais contrairement à la réponse acceptée, il montre comment le rendre permanent et plus spécifique. - Xerus


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

Terminé.


0
2017-08-15 02:50