Переключить язык вывода команд с родного языка на английский

84

Как я могу переключить язык вывода команд с моего родного языка на английский, чтобы я мог опубликовать свой вопрос Ask Ubuntu с выводом команды на английском языке (сообщения об ошибках)?

Базз-DEE
источник
5
Это несколько вводит в заблуждение. На самом деле людям не обязательно делать это . (Если вы считаете, что мы должны требовать, чтобы OP обременяли себя таким образом, пожалуйста, опубликуйте в meta, прежде чем просить кого-либо сделать это.) Они могут измениться 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.

Источник:

Базз-DEE
источник
Установка 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 bash .
жидкость
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 используется по умолчанию все время через установщик и различные графические интерфейсы. Какие ошибки это, кстати? Я также прочитал ответ, на который вы ссылались , и даже если он содержит полезную общую информацию, эта рекомендация просто не является хорошим советом для рабочего стола Ubuntu.
Гуннар Хьялмарссон
@GunnarHjalmarsson Основная проблема в LANGUAGEтом, что он имеет приоритет над LC_ALL, что приводит к ошибкам, потому что программы устанавливают LC_ALLполучение предсказуемого вывода, а затем сбиваются с толку, потому что они не получают ожидаемый результат.
Жиль
Что ж, GUI Ubuntu последовательно устанавливает и LANG, и LANGUAGE (а LC_MESSAGES наследует от LANG), что должно предотвратить такую ​​путаницу. Причина, по которой установлен LANGUAGE, заключается в том, что Language Support имеет интерфейс для настройки списка приоритетов.
Гуннар Хьялмарссон
@GunnarHjalmarsson Я знаю. Настройка, LANGUAGEтем не менее, является плохой идеей, потому что преимущества очень малы, тогда как ошибки могут быть раздражающими и их трудно найти. Вы правы, хотя, я должен упомянуть unsetting LANGUAGE.
Жиль
Ответы здесь не являются подходящим местом для обсуждения вопросов дизайна. Такие обсуждения лучше проводить, например, на ubuntu-devel-Discussion . Чтобы быть полезным для пользователей, я действительно считаю, что ответ должен основываться на текущем дизайне, независимо от того, считаете ли вы его оптимальным или нет. И обратите внимание, что «некоторые версии» - это все поддерживаемые версии рабочего стола и производных Ubuntu, возможно, за исключением Kubuntu.
Гуннар Хьялмарссон
1

Самый простой способ - открыть терминал, нажав Alt + F2 и выполнив эту команду:

env LANGUAGE=en gnome-terminal
Гуннар Хьялмарссон
источник
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

rofrol
источник
Я не знаю, почему этот ответ получил отрицательный голос. Да, он может использовать еще несколько объяснений, но в отличие от принятого ответа, он показывает, как сделать его постоянным и более конкретным.
Xerus
0
  1. Нажмите на значок шестеренки слева (настройки системы на панели Unity)
  2. Нажмите на языковую поддержку
  3. Выберите региональные форматы
  4. Установите «Отображать числа, даты и сумму валюты ...» на английском языке.
  5. Выйдите из сеанса и войдите снова (обязательно!)

Готово.

Робин Хсу
источник