Как я могу переключить язык вывода команд с моего родного языка на английский, чтобы я мог опубликовать свой вопрос Ask Ubuntu с выводом команды на английском языке (сообщения об ошибках)?
Как я могу переключить язык вывода команд с моего родного языка на английский, чтобы я мог опубликовать свой вопрос Ask Ubuntu с выводом команды на английском языке (сообщения об ошибках)?
Ответы:
export LC_ALL=C
достаточно. Все последующие команды выводятся на английском языке.
Больше информации: что делает "LC_ALL = C"?
Если вы хотите вернуться к родному языку, удалите LC_ALL
переменную:
unset LC_ALL
Вот моя функция 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'
case
и указывая входные данные для соответствия <lang>_<country>
формату. Тогда вы можете просто пропустить это, предполагая UTF-8. Если вы действительно заинтересованы в аккуратном решении, вам, вероятно, следует проверить введенные пользователем данные, locale -a
чтобы убедиться, что запрошенный языковой стандарт действительно установлен.
Откройте терминал 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
является не достаточно , чтобы случайно все выходной.
LANG=en_US.UTF-8 && LC_ALL=en_US.UTF-8 && LANGUAGE=en_US.UTF-8 bash
лучше?
LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8 $SHELL
.
Это настраивается с помощью настроек локали , которые могут быть установлены с помощью переменной среды. Есть четыре слоя переменных; первый из них имеет приоритет:
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 и т. д.).
Посмотрите, что я должен установить мой язык и каковы последствия этого? для более подробного обзора локалей.
LANGUAGE
том, что он имеет приоритет над LC_ALL
, что приводит к ошибкам, потому что программы устанавливают LC_ALL
получение предсказуемого вывода, а затем сбиваются с толку, потому что они не получают ожидаемый результат.
LANGUAGE
тем не менее, является плохой идеей, потому что преимущества очень малы, тогда как ошибки могут быть раздражающими и их трудно найти. Вы правы, хотя, я должен упомянуть unsetting LANGUAGE
.
Самый простой способ - открыть терминал, нажав Alt + F2 и выполнив эту команду:
env LANGUAGE=en gnome-terminal
в вашей ~/.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, ни один из приведенных ниже вариантов не имеет никакого эффекта.
LANG
таким образом, и это может помочь, но мы не требуем, чтобы скопированные сообщения об ошибках были на английском языке. Мы требуем, чтобы написанное автором было на английском языке (хотя мы обычно переводим это вместо заключительных вопросов). Так что вопрос, написанный на английском языке с терминальным текстом на испанском языке, подойдет, а вопрос на испанском языке с терминальным текстом на английском языке - нет.