144 votes

Comment changer la langue de l'interface de ligne de commande de Git?

Je voudrais changer la langue de git (en anglais) dans mon installation Linux sans changer la langue pour les autres programmes et je n'ai pas pu trouver les paramètres. Comment faire ?

2 votes

Vous cherchez à changer de langue. Je reposterais cette question sur superuser, je pense.

218voto

Bengt Points 2327

Ajoutez ces lignes à votre ~/.bashrc, ~/.bash_profile ou ~/.zprofile pour forcer git à afficher tous les messages en anglais :

# Définir la langue Git en anglais
#alias git='LANG=en_US git'
alias git='LANG=en_GB git'

L'alias doit remplacer LC_ALL sur certains systèmes, lorsque la variable d'environnement LC_ALL est définie, ce qui a priorité sur LANG. Consultez la Spécification UNIX - Variables d'environnement pour plus d'explications.

# Définir la langue Git en anglais
#alias git='LC_ALL=en_US git'
alias git='LC_ALL=en_GB git'

Si vous avez ajouté ces lignes à ~/.bashrc, l'alias sera défini lorsqu'un nouveau shell interactif est démarré. Si vous l'avez ajouté à ~/.bash_profile, l'alias sera appliqué lors de la connexion.

0 votes

Il y avait une faute de frappe dans le nom du fichier (.bash.rc au lieu de .bashrc). Vous devez également fermer et ouvrir à nouveau le shell pour que le .bashrc soit exécuté. J'ai ajouté une note à ce sujet également.

0 votes

J'ai essayé dans mon .bashrc même en redémarrant. Les alias fonctionnent. Ce n'est juste pas la langue qui change.

0 votes

Pour vérifier que le .bashrc s'exécute correctement, vous pouvez ajouter un test comme echo "Ceci est .bashrc" à la fin du fichier. Vous pouvez également le faire exécuter à la demande sans avoir à redémarrer le terminal ou tout le système en tapant . .bashrc. Enfin, je vous suggérerais d'essayer de définir la variable d'environnement LC_ALL au lieu de LANG, car la première a la priorité.

26voto

rubo77 Points 1502

Si vous voulez simplement avoir une commande en anglais, vous pouvez simplement écrire LC_ALL=C avant la commande, par exemple :

LC_ALL=C git status

résultera en

# On branch master
nothing to commit, working directory clean

La locale utilisée en C est l'anglais et toujours disponible sans installer de packs de langues supplémentaires (voir https://askubuntu.com/a/142814/34298)

Pour le changer pour toute la session bash actuelle, entrez simplement

LANG=C

Pour le changer par exemple en allemand, entrez

LANG=de_DE.UTF-8

0 votes

Merci pour la suggestion LC_ALL=C, car j'ai des problèmes avec le paramètre régional, LC_ALL="en_US" ne fonctionnait plus récemment.

20voto

Donald Duck Points 137

Ajouter cette ligne a résolu le problème pour moi : Mise à jour : il semble que plus de composants nécessitent également une locale maintenant.

$ more ~/.bash_profile

export LANG=en_US (obsolète)

export LANG="en_US.UTF-8" (Mis à jour)

3 votes

La question est comment changer la langue pour git seulement - je l'ai mise à jour pour être plus claire.

0 votes

En train de manquer l'encodage, ça a complètement perturbé mon environnement.

9voto

VonC Points 414372

Note: depuis Git 2.3.1+ (T1/T2 2015), Git ajoutera l'en-tête Accept-Language si possible.
Voir commit f18604b par Yi EungJun (eungjun-yi)

Ajoutez un en-tête Accept-Language qui indique les langues préférées de l'utilisateur définies par $LANGUAGE, $LC_ALL, $LC_MESSAGES et $LANG.

Cela donne aux serveurs Git la possibilité d'afficher les messages d'erreur distants dans la langue préférée de l'utilisateur.


Vous avez locale pour git gui ou autres GUIs, mais pas pour la ligne de commande, considérant que c'était l'une des questions de GitSurvey 2010

localization of command-line messages (i18n)    258     3.6%    

Bien sûr, depuis 2010, comme le décrit po/README:

Avant que les chaînes puissent être traduites, elles doivent d'abord être marquées pour la traduction.

Git utilise une interface d'internationalisation qui enveloppe la bibliothèque gettext du système, donc la plupart des conseils de votre documentation sur gettext (sur les systèmes GNU info gettext dans un terminal) s'appliquent.

En place depuis git 1.7.9+ (janvier 2012) :

Git utilise gettext pour traduire ses messages d'interface les plus courants dans la langue de l'utilisateur si des traductions sont disponibles et que la locale est correctement configurée.
Les distributeurs peuvent ajouter de nouveaux fichiers PO dans po/ pour ajouter de nouvelles traductions.

Donc, si votre mise à jour a perturbé la traduction, vérifiez ce que gettext utilise :
Voir, par exemple, "Variables d'environnement de localisation"

Une locale est composée de plusieurs catégories de locale, voir Aspects. Lorsqu'un programme cherche des valeurs dépendant de la locale, il le fait selon les variables d'environnement suivantes, par ordre de priorité :

LANGUAGE
LC_ALL
LC_xxx, selon la catégorie de locale sélectionnée : LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES, ...
LANG 

Les variables dont la valeur est définie mais vide sont ignorées dans cette recherche.

LANG est la variable d'environnement normale pour spécifier une locale. En tant qu'utilisateur, vous définissez normalement cette variable (à moins que certaines des autres variables n'aient déjà été définies par le système, dans /etc/profile ou des fichiers d'initialisation similaires).

LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES, et ainsi de suite, sont les variables d'environnement destinées à remplacer LANG et n'affectant qu'une seule catégorie de locale.
Par exemple, supposons que vous êtes un utilisateur suédois en Espagne, et que vous voulez que vos programmes gèrent les nombres et les dates selon les conventions espagnoles, et que seuls les messages soient en suédois. Alors vous pourriez créer une locale nommée ‘sv_ES’ ou ‘sv_ES.UTF-8’ en utilisant le programme localedef. Mais il est plus simple, et obtient le même effet, de définir la variable LANG sur es_ES.UTF-8 et la variable LC_MESSAGES sur sv_SE.UTF-8 ; ces deux locales sont déjà préinstallées avec le système d'exploitation.

LC_ALL est une variable d'environnement qui remplace toutes ces variables. Elle est généralement utilisée dans les scripts qui exécutent des programmes particuliers. Par exemple, les scripts de configuration générés par GNU autoconf utilisent LC_ALL pour s'assurer que les tests de configuration n'opèrent pas de manière dépendante de la locale.

Certains systèmes définissent malheureusement LC_ALL dans /etc/profile ou dans des fichiers d'initialisation similaires. En tant qu'utilisateur, vous devez donc désactiver cette variable si vous souhaitez définir LANG et éventuellement certaines des autres variables LC_xxx.


Auparavant, les clients de transport HTTP avaient appris à indiquer au serveur de quel local ils sont en envoyant l'en-tête HTTP Accept-Language, mais cela était fait uniquement pour certaines requêtes et pas pour d'autres.
Cela est corrigé avec Git 2.38 (T3 2022) :

Voir commit b0c4adc (11 juillet 2022) par Li Linchao (Cactusinhand).
(Fusionné par Junio C Hamano -- gitster -- dans commit 4b8cdff, 19 juillet 2022)

remote-curl : envoyer l'en-tête Accept-Language au serveur

Aidé par : Junio C Hamano
Approuvé par : Li Linchao

La capacité de l'extrémité du serveur Git à accepter l'en-tête Accept-Language a été introduite dans f18604b ("http : ajouter un en-tête Accept-Language si possible", 2015-01-28, Git v2.4.0-rc0 -- fusion), mais cela n'est utilisé que par la phase très précoce du transfert, qui est la requête HTTP GET pour découvrir les références.
Pour d'autres phases, comme la requête POST dans le smart HTTP, le serveur ne sait pas dans quelle langue le client parle.

Enseigner au client Git la langue préférée des utilisateurs finaux et envoyer l'en-tête accept-language du côté serveur.
Une fois que le serveur reçoit cet en-tête, il a la capacité de parler à l'utilisateur final dans la langue qu'il comprend.
Cela serait très utile pour de nombreux locuteurs non anglophones.

1 votes

Donc d'où vient la traduction? La raison pour laquelle j'ai demandé est que j'avais git en anglais avant et après une mise à jour, il est passé dans ma langue, mais je n'aime pas ça.

0 votes

@user905686 désolé, mon erreur. Git prend en charge le paramètre régional, avec gettext. Donc vérifiez vos variables d'environnement. Je détaille celui à vérifier dans ma réponse éditée.

0 votes

Et si je veux simplement changer la langue pour git mais pas pour d'autres programmes ? C'est-à-dire que les traductions peuvent causer des problèmes, donc j'aimerais que git toujours (peu importe le programme qui l'appelle) soit en LANG=C et que tout le reste soit dans ma langue maternelle. Des idées ?

9voto

iapetus Points 149

Exécutez LC_MESSAGES=C git, pas LC_ALL=C ou LANG=C et inutile de supprimer ou renommer des fichiers.

Cette commande change les messages Git en anglais.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X