Корисна відповідь Лекенштейна чудово працює, якщо ви хочете перейти на англійську мову США на вимогу, як вимагає ОП, але якщо ви хочете перейти на іншу мову на вимогу , потрібно більше роботи.
Перш ніж почати, ви повинні встановити таблиці повідомлень з sudo apt-get install language-pack-<lang-tag>, де <lang-tag>є простим підтегом мови RTF 5646 , наприклад esдля іспанської.
Довідкова інформація
ГНУ GetText заснованих утиліти дають пріоритет до нестандартної LANGUAGEзмінної середовищі [1]
над POSIX певної локалі змінну середу LC_ALL, LC_MESSAGESі LANG(в зазначеному порядку).
З огляду на , що LANGUAGEза замовчуванням встановлюються в системах Ubuntu [2] , а саме до підрядку з LANGзначення , яке відображає або простий тег мови (наприклад, esдля іспанської мови) або мови область тегів (наприклад, de_DEдля варіанта Німеччині німецького), ви повинні скасувати або змінити LANGUAGE, щоб повідомлення іншої мови набули чинності. [3]
Варіант 1: Встановити LANGUAGE
Приклад : перехід на іспанські ( es) повідомлення ad-hoc:
$ LANGUAGE=es ls NoSuchFile
ls: no se puede acceder a NoSuchFile: No existe el archivo o el directorio
Примітка.es Достатній простий тег мови, такий як , але ви можете додати ідентифікатор регіону (наприклад, es_ARдля Аргентини) і навіть суфікс шаблону (наприклад, es_AR.UTF-8).
Однак локалізовані повідомлення можуть існувати лише на мовному рівні, а резервна копія полягає у використанні повідомлень, які відповідають мовній частині ( esу цьому випадку).
Варіант 2: Зніміть LANGUAGEі встановітьLC_ALL
Це альтернативне рішення undefines LANGUAGE , а потім використовує POSIX змінну мовного середовища , LC_ALLщоб встановити неявно LC_MESSAGES[4] :
$ LANGUAGE= LC_ALL=es_ES.UTF-8 ls NoSuchFile
ls: no se puede acceder a NoSuchFile: No existe el archivo o el directorio
Це рішення має перевагу в налаштуванні всіх аспектів локалізації на вказану локаль (наприклад, LC_TIMEформати дати / часу), а також (неявно) LC_MESSAGESтакож інформує програми, що не належать до GNU, бажаною мовою.
Зверніть увагу, наскільки LC_ALLпотрібне точне повне ім’я мови, включаючи суфікс шаблону, щоб бути ефективним ( es_ES.UTF-8) (на відміну від цього LANGUAGE, для якого достатньо простого тегу мови (як es)). Те саме стосується налаштування LC_MESSSAGESі LANG. Вказівка недійсного / невстановленого імені локальної локалізації спричиняє запас локалі POSIX, а отже, англійську мову США.
Виноски
[1] Причини , по яким відповідь Lekensteyn працює навіть без зняття з охорони / перевизначення LANGUAGEє виняток : якщо (ефективне) LC_MESSAGESзначення (зазвичай встановлюється побічно через LANGабо LC_ALL) або Cчи (його синонім) POSIX, що значення дотримується, незалежно від вартості LANGUAGE, якщо хто-небудь. І навпаки, якщо (ефективним) LC_MESSAGESзначенням є будь-яка інша, конкретна локаль, LANGUAGEмає перевагу.
[2] Це стосується належних Ubuntu , але не обов'язково інших ароматів ; Lekensteyn стверджує , що Kubuntu це НЕ встановлено LANGUAGE.
Можна стверджувати, що LANGUAGEповинно НЕ бути встановлено за замовчуванням, якщо врахувати , що в її відсутність, LC_MESSAGESзначення випливає з LANGзначення (яке визначає поточний стандарт), дотримується.
[3] Ви також можете використовувати цей підхід для переходу до [американської] англійської мови, призначивши LANGUAGE=Cабо LANGUAGE=POSIX(як альтернативу, LANG=C/ LANG=POSIX), хоча мені незрозуміло, чи це активно розпізнається чи просто резервний механізм, враховуючи, що ці значення не відповідають не починати з мовного тегу; можливо, кращий вибір був би en_US.
[4] Там в край випадок , коли цей підхід не працює: Спроба викликати виконуваний файл з шляху - будь то відносне або абсолютне - не переходить на зазначену мову, в той час як саме ім'я файлу робить:
LANGUAGE= LC_ALL=es_ES.UTF-8 /path/to/no_such_utilityробить НЕ роботу (виводить повідомлення у поточному локалі), тоді як
LANGUAGE= LC_ALL=es_ES.UTF-8 no_such_utilityтак (видає іспанське повідомлення про помилку).
Якщо хтось знає, чому і чи є для цього вагомі причини, повідомте нам.
LANGчиLANG_ALLне працюєLANGUAGE. Див. Чому перевизначення змінної середовища LANG не змінює мову для мене?