Переключіть вихідну мову команди з рідної мови на англійську


84

Як я можу переключити мову виводу команд з моєї рідної мови на англійську, щоб я міг розмістити запитання "Задати Ubuntu" з виведенням англійської команди (повідомлення про помилку)?


5
Це дещо вводить в оману. Насправді людям це робити не потрібно . (Якщо ви думаєте, що ми повинні вимагати, щоб ОП так себе обтяжували, будь ласка, опублікуйте мета, перш ніж доручити комусь це зробити.) Вони можуть змінитися LANGтак, і це може допомогти, але ми не вимагаємо, щоб скопійовані повідомлення про помилки були англійською мовою. Ми вимагаємо, щоб автор написав англійською мовою (хоча ми зазвичай перекладаємо це замість закриття питань). Тож питання, написане англійською мовою з іспанським термінальним текстом, добре, тоді як питання, написане на іспанській мові з англійською мовою терміналу, - ні.
Елія Каган

4
@EliahKagan так, ти маєш рацію, але все одно я думаю, що це корисно.
BuZZ-dEE

2
Я погоджуюся, людям корисно це зробити, і добре, що ви опублікували це запитання! Однак важливо, щоб люди знали, що ми цього не вимагаємо від них (але вони вимагають, щоб самі запитання та відповіді були написані англійською мовою).
Елія Каган

8
@EliahKagan Навпаки, дуже важливо розміщувати фактичні повідомлення про помилки, і вкрай бажано розміщувати їх англійською мовою, оскільки саме це може визнати та перевірити основна аудиторія цього сайту. (І ніколи, ніколи не публікуйте повторно перекладене повідомлення про помилку. Завжди копіюйте та вставляйте, оскільки точне формулювання, пунктуація та навіть пробіли можуть бути вагомими.)
Жил

Відповіді:


74

export LC_ALL=Cдостатньо. Весь наступний вихід команди буде англійською мовою.

Додаткова інформація: Що робить "LC_ALL = C"?

Якщо ви хочете повернутися до рідної мови, зніміть LC_ALLзмінну:

unset LC_ALL

13

функція bash для терміналу

Ось моя функція bash для переключення між DE та EN локалями.

Ви можете поширити цей код на бажаних мовах. Щоб скористатися цим, покладіть його у свій ~/.bashrc(або ~/.bash_profile) -

Зателефонуйте, _configure_locale ENщоб перейти на англійську мову.

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
}

Загалом , я пропоную , щоб змінити все 3 змінні оточення LC_ALL, LANG, LANGUAGEщоб уникнути неналежного деяких програм.

Адаптація до вашої мови

Розширити код до рідної мови досить просто. Ви можете знайти потрібні значення за допомогою наступної команди

env |egrep -e 'LC_ALL|LANG'

Сценарій потребує змін для іншої мови, ніж німецька (DE)? Я шукаю рішення, незалежне від рідної мови.
BuZZ-dEE

@ BuZZ-dEE: Ви можете (і, мабуть, повинні) легко адаптувати це, викинувши caseі вказавши вхід, щоб відповідати <lang>_<country>формату. Тоді ви можете просто пропустити це, припускаючи UTF-8. Якщо ви дійсно зацікавлені в охайному рішенні, вам, мабуть, слід перевірити вхід користувача, locale -aщоб переконатися, що запитувана мова фактично встановлена.
бітмаска

@ buzz-dee: див. оновлену відповідь
Х.-Дірк Шмітт

7

Відкрийте термінал Ctrl+ Alt+ Tі введіть:

LANG=en_US.UTF-8 bash

або :

LC_ALL=C bash

Тепер термінальний вихід здійснюється англійською мовою. Ви можете це перевірити locale.

Можна зробити команду робити це з постійноюalias . Відкрийте .bashrcфайл у вибраному редакторі та вставте туди наступний код:

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

або :

alias basheng='LC_ALL=C bash'

Перезавантажте оболонку Bash. Тепер у вас є команда basheng. Введіть його в Bash, щоб отримати англійську оболонку Bash. Щоб залишити англійський тип оболонки exit.

Джерело:


Установка LANGє НЕ досить , щоб випадково всі вихідний.
бітмаска

@bitmask це: LANG=en_US.UTF-8 && LC_ALL=en_US.UTF-8 && LANGUAGE=en_US.UTF-8 bashкраще?
BuZZ-dEE

2
Власне, так і має бути LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8 $SHELL.
бітмаска

Для мене працює лише LC_ALL = C баш .
ліквідувати

5

Це налаштовано за допомогою локальних налаштувань, які можна встановити за допомогою змінної середовища. Є чотири шари змінних; перший, який встановлений, має перевагу:

  • LANGUAGE- не використовуйте його, це рідко корисно і може спричинити помилки. На жаль, деякі версії Ubuntu встановили його, тому вам може знадобитися скасувати його.
  • LC_ALL- замінює налаштування, що стосуються категорії, призначені головним чином для програм, які хочуть запускатися в локалі за замовчуванням. Не призначений для використання в якості глобальних налаштувань.
  • Категорія-залежні змінні , що починаються з LC_: LC_CTYPE, LC_MESSAGES, LC_TIME, ....
  • LANG - встановлює локальну мову за замовчуванням для всіх категорій, призначених для використання в глобальних налаштуваннях користувачів.

Викликається "звичайний" локал із усіма повідомленнями неперекладеними, форматів часу та чисел за замовчуванням, ASCII як набір символів тощо C. Цей локал присутній у кожній системі.

Таким чином, щоб запустити програму з повідомленнями англійською мовою, запустіть

unset LANGUAGE; LC_MESSAGES=C myprogram --option

або

unset LANGUAGE
export LC_MESSAGES=C
myprogram --option
myotherprogram

Щоб запустити програму з вимкненою локалізацією, запустіть

env -u LANGUAGE LC_ALL=C myprogram --option

але майте на увазі, що це перемикає кодування символів на ASCII (тому немає Unicode, latin-1 тощо).

Дивіться, на що я можу встановити свою локальну мову та які наслідки цього робити? для більш детального огляду місцеположень.


Не використовуйте МОВУ ?? Я не знаю, на якій ОС ви перебуваєте, але на Ubuntu LANGUAGE використовується за замовчуванням весь час через інсталятор та різні графічні інтерфейси. Які помилки це, btw? Я також читаю відповідь, до якого ви посилаєтесь , і навіть якщо вона містить корисну загальну інформацію, рекомендація просто не є гарною порадою на робочому столі Ubuntu.
Gunnar Hjalmarsson

@GunnarHjalmarsson Основна проблема LANGUAGEполягає в тому, що він має перевагу над тим LC_ALL, що викликає помилки, оскільки програми налаштовані LC_ALLотримувати передбачуваний вихід, а потім заплутуються, оскільки вони не отримують очікуваного результату.
Жиль

Ну, графічні інтерфейси Ubuntu встановлюють і LANG, і LANGUAGE послідовно (а LC_MESSAGES успадковується від LANG), що повинно запобігти подібному змішуванню. Причиною встановлення LANGUAGE є те, що підтримка мови має інтерфейс для встановлення списку пріоритетів.
Gunnar Hjalmarsson

@GunnarHjalmarsson Я знаю. LANGUAGEТим не менш, налаштування - це погана ідея, оскільки користь дуже мала, тоді як помилок може бути дратівливим і важко знайти. Ти маєш рацію, хотілося б зазначити невдачі LANGUAGE.
Жиль

Відповіді тут не є належним місцем для обговорення питань дизайну. Такі дискусії краще проводити, наприклад, на ubuntu-devel-дискусії . Щоб бути корисним для користувачів, я дійсно думаю, що відповідь повинна базуватися на поточному дизайні, чи ви вважаєте це оптимальним чи ні. І зауважте, що "деякі версії" - це всі підтримувані версії робочого столу та похідних Ubuntu, можливо, за винятком Kubuntu.
Gunnar Hjalmarsson


1

у вашому ~/.bashrc

unset LC_ALL
export LC_MESSAGES=C

тоді

source ~/.bashrc

Перевір це

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

Чому слід зняти спочатку?

LC_ALL Переорієнтовує окремі налаштування LC_ *: якщо встановлено LC_ALL, жодне з наведених нижче ефектів не впливає.

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


Я не знаю, чому ця відповідь була оскаржена. Так, це може використовувати ще одне пояснення, але на відміну від прийнятої відповіді, воно показує, як зробити його постійним і більш конкретним.
Ксерус

0
  1. Натисніть на значок шестірні зліва (параметри системи на панелі Unity)
  2. Клацніть на підтримку мови
  3. Виберіть регіональні формати
  4. Встановіть "Показати номери, дати та суму валюти ..." на англійську мову.
  5. Вийдіть із сеансу та увійдіть знову (Обов’язково!)

Зроблено.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.