Як я можу переключити мову виводу команд з моєї рідної мови на англійську, щоб я міг розмістити запитання "Задати Ubuntu" з виведенням англійської команди (повідомлення про помилку)?
Як я можу переключити мову виводу команд з моєї рідної мови на англійську, щоб я міг розмістити запитання "Задати 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
Тим не менш, налаштування - це погана ідея, оскільки користь дуже мала, тоді як помилок може бути дратівливим і важко знайти. Ти маєш рацію, хотілося б зазначити невдачі 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
так, і це може допомогти, але ми не вимагаємо, щоб скопійовані повідомлення про помилки були англійською мовою. Ми вимагаємо, щоб автор написав англійською мовою (хоча ми зазвичай перекладаємо це замість закриття питань). Тож питання, написане англійською мовою з іспанським термінальним текстом, добре, тоді як питання, написане на іспанській мові з англійською мовою терміналу, - ні.