Vraag Schakel de commandotaaltaal van moedertaal naar engels


Hoe kan ik de uitvoertaal van de opdracht wijzigen van mijn moedertaal naar Engels, zodat ik mijn Ask Ubuntu-vraag kan posten met een Engelse opdrachtuitgang (foutmeldingen)?


73
2018-03-05 13:36


oorsprong


Dit is enigszins misleidend. Het is niet echt nodig voor mensen om dit te doen. (Als u denkt dat OP's op deze manier moeten worden belast, publiceer dan een meta voordat u iemand opdracht geeft om dit te doen.) Ze kunnen veranderen LANG zoals dit, en het kan helpen, maar we hebben dit niet nodig gekopieerde foutmeldingen in het Engels zijn. Hebben we nodig wat de auteur heeft geschreven in het Engels zijn (hoewel we het meestal vertalen in plaats van vragen te sluiten). Dus een vraag in het Engels met Spaanse terminale tekst is prima, terwijl een vraag in het Spaans met Engelse terminale tekst dat niet is. - Eliah Kagan
@EliahKagan ja, je hebt gelijk, maar ik vind het hoe dan ook nuttig. - BuZZ-dEE
Ik ben het ermee eens, het is nuttig voor mensen om dit te kunnen doen, en goed dat je deze vraag hebt gepost! Het is echter belangrijk dat mensen weten dat we dat niet doen vereisen om dit te doen (maar do vereisen dat vragen en antwoorden zelf in het Engels worden geschreven). - Eliah Kagan
@EliahKagan Integendeel, het is heel belangrijk om te posten werkelijk foutmeldingen, en sterk de voorkeur om ze in het Engels te plaatsen, want dat is wat de belangrijkste doelgroep van deze site kan herkennen en testen. (En nooit, post nooit een opnieuw vertaalde foutmelding. Altijd kopiëren-plakken, omdat de exacte bewoording, interpunctie, zelfs spatiëring significant kan zijn.) - Gilles


antwoorden:


export LC_ALL=C is genoeg. Alle volgende commando-uitvoer zal in het Engels zijn.

Meer informatie: Wat doet "LC_ALL = C"?

Als u de oorspronkelijke taal wilt herstellen, schakelt u de instelling uit LC_ALL variabele:

unset LC_ALL

61
2018-03-06 13:54



Geweldig, het werkt. Kunt u een link of uitleg geven waarom het werkt? - Andrei
@Andrei Link naar een vraag toegevoegd bij Unix & Linux. Er is een zeer goede verklaring in de top gestemd antwoord. - Eric Carvalho
Hoe keer je terug naar de moedertaal? - Ads20000
@ Ads20000 antwoord geüpdatet. - Eric Carvalho


bash-functie voor terminal

Hier is mijn bash-functie om te schakelen tussen DE- en EN-locales.

U kunt deze code uitbreiden met uw voorkeurstalen. Om dit te gebruiken, plaatst u het in uw ~/.bashrc (of ~/.bash_profile) -

Noem het maar met _configure_locale EN om over te schakelen op Engels.

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
}

Over het algemeen stel ik voor om alle 3 omgevingsvariabelen te wijzigen LC_ALL, LANG, LANGUAGE om wangedrag van sommige programma's te voorkomen.

Aanpassen aan uw taal

De code uitbreiden naar uw moedertaal is vrij eenvoudig. U kunt de benodigde waarden vinden door de volgende opdracht in te roepen

env |egrep -e 'LC_ALL|LANG'

12
2018-03-05 13:45



Het script moet worden gewijzigd voor een andere taal dan Duits (DE)? Ik zoek naar een oplossing die onafhankelijk is van de moedertaal. - BuZZ-dEE
@ BuZZ-dEE: Je kunt dit (en waarschijnlijk moet) dit gemakkelijk aanpassen door het case en specificeren van de invoer om te conformeren aan de <lang>_<country> formaat. Dan kun je het gewoon doorgeven, uitgaande van UTF-8. Als je echt geïnteresseerd bent in een opgeruimde oplossing, moet je waarschijnlijk de invoer van de gebruiker controleren locale -a om ervoor te zorgen dat de gevraagde locale daadwerkelijk is geïnstalleerd. - bitmask
@ buzz-dee: zie bijgewerkte antwoord - H.-Dirk Schmitt


Open een terminal Ctrl+alt+T en typ:

LANG=en_US.UTF-8 bash

of:

LC_ALL=C bash

De uitgang van de terminal is nu in de Engelse taal. Je kunt het controleren met locale.

Het is mogelijk om een ​​opdracht te geven om dat met een te doen blijvend alias. Open de .bashrc bestand met uw voorkeurseditor en plaats de volgende code daarin:

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

of:

alias basheng='LC_ALL=C bash'

Start de Bash-shell opnieuw. Nu heb je het bevel basheng. Typ het in de Bash om een ​​Engelse Bash-shell te krijgen. Om het Engelse shell-type te verlaten exit.

Bron:


7
2018-03-05 13:36



omgeving LANG is niet voldoende om alle output te kicken. - bitmask
@bitmask is dit: LANG=en_US.UTF-8 && LC_ALL=en_US.UTF-8 && LANGUAGE=en_US.UTF-8 bash beter? - BuZZ-dEE
Eigenlijk zou dat moeten zijn LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8 $SHELL. - bitmask
Enkel en alleen LC_ALL = C bash werk voor mij. - liquide


Dit wordt geconfigureerd via locale instellingen, die kunnen worden ingesteld via omgevingsvariabele. Er zijn vier lagen variabelen; de eerste die is ingesteld heeft voorrang:

  • LANGUAGE - gebruik het niet, het is zelden nuttig en kan bugs veroorzaken. Helaas hebben sommige versies van Ubuntu deze ingesteld, dus u moet deze mogelijk uitschakelen.
  • LC_ALL - overschrijft categorie-specifieke instellingen, voornamelijk bedoeld om te worden gebruikt door programma's die in de standaard locale willen worden uitgevoerd. Niet bedoeld om te worden gebruikt als algemene instellingen.
  • Categorie-specifieke variabelen die beginnen met LC_: LC_CTYPE, LC_MESSAGES, LC_TIME, ...
  • LANG - stelt de standaard locale in voor alle categorieën, bedoeld om te worden gebruikt in globale gebruikersinstellingen.

De "gewone" locale, met alle niet-vertaalde berichten, standaard tijd- en getalnotaties, ASCII als de tekenset, enz. Wordt genoemd C. Deze locale is aanwezig op elk systeem.

Dus, om een ​​programma met berichten in het Engels uit te voeren, voer het uit

unset LANGUAGE; LC_MESSAGES=C myprogram --option

of

unset LANGUAGE
export LC_MESSAGES=C
myprogram --option
myotherprogram

Als u een programma wilt uitvoeren waarbij alle lokalisatie is uitgeschakeld, voert u uit

env -u LANGUAGE LC_ALL=C myprogram --option

maar pas op dat dit de karaktercodering naar ASCII schakelt (dus geen Unicode, latin-1, etc.).

Zien Waar moet ik mijn locale op instellen en wat zijn de implicaties hiervan? voor een meer gedetailleerd overzicht van landinstellingen.


5
2017-11-02 15:16



Gebruik geen TAAL ?? Ik weet niet op welk besturingssysteem u zit, maar op Ubuntu LANGUAGE wordt standaard altijd gebruikt via het installatieprogramma en verschillende GUI's. Welke bugs zijn dat, trouwens? Ik lees ook het antwoord waarnaar je hebt gelinkt, en zelfs als het nuttige algemene informatie bevat, is de aanbeveling gewoon niet goed advies op een Ubuntu-desktop. - Gunnar Hjalmarsson
@GunnarHjalmarsson Het grootste probleem met LANGUAGE is dat het voorrang heeft boven LC_ALL, wat fouten veroorzaakt omdat programma's zijn ingesteld LC_ALL om voorspelbare uitvoer te krijgen en dan in de war raken omdat ze niet de verwachte uitvoer krijgen. - Gilles
Welnu, de Ubuntu GUI's stellen LANG en TAAL consequent in (en LC_MESSAGES erft van LANG), wat dit soort verwarring zou moeten voorkomen. De reden waarom LANGUAGE is ingesteld, is dat Language Support een interface heeft voor het instellen van een prioriteitenlijst. - Gunnar Hjalmarsson
@GunnarHjalmarsson Ik weet het. omgeving LANGUAGE is toch een slecht idee, omdat de voordelen erg klein zijn, terwijl de bugs vervelend en moeilijk te vinden zijn. Maar je hebt gelijk, ik moet zeggen dat het niet werkt LANGUAGE. - Gilles
Antwoorden hier is geen goede plaats om ontwerpkwesties te bespreken. Dergelijke discussies worden beter gehouden op b.v. ubuntu-devel-discuss. Om gebruikers behulpzaam te zijn, denk ik echt dat een antwoord gebaseerd moet zijn op het huidige ontwerp, of je denkt dat het optimaal is of niet. En houd er rekening mee dat "sommige versies" alle ondersteunde versies van Ubuntu-desktop en -derivaten zijn, mogelijk met uitzondering van Kubuntu. - Gunnar Hjalmarsson


De eenvoudigste manier is om de terminal te openen door op te drukken Alt + F2 en het uitvoeren van deze opdracht:

env LANGUAGE=en gnome-terminal

1
2017-10-31 23:53





in uw ~/.bashrc

unset LC_ALL
export LC_MESSAGES=C

dan

source ~/.bashrc

Controleer het

$ 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=

Waarom eerst uitschakelen?

LC_ALL Overschrijft individuele LC_ * -instellingen: als LC_ALL is ingesteld, geen van   de onderstaande hebben enig effect.

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


1
2017-08-29 13:27



Ik weet niet waarom dit antwoord sloom was. Ja, het zou wat meer uitleg kunnen gebruiken, maar in tegenstelling tot het geaccepteerde antwoord, laat het zien hoe je het permanent kunt maken en meer specifiek. - Xerus


  1. Klik op het tandwielpictogram aan de linkerkant (systeeminstellingen in Unity-paneel)
  2. Klik op Taalondersteuning
  3. Selecteer regionale indelingen
  4. Stel uw "Toon aantallen, datums en valutabedrag ..." in op Engels.
  5. Log uit en log opnieuw in (vereist!)

Gedaan.


0
2017-08-15 02:50