Не могу сгенерировать en_US.UTF-8 Locale

8

Я пытался установить свой язык en_US.UTF-8без какого-либо успеха. Основываясь на других ответах в Интернете, я должен сначала создать язык с

sudo locale-gen en_US.UTF-8

А затем применить его с

sudo dpkg-reconfigure locales

Однако бег locale-genделает что-то странное:

user@Host /home/user $ sudo locale-gen en_US.UTF-8
Generating locales (this might take a while)...
  en_US.ISO-8859-1... done
Generation complete.

Как видите, на самом деле он никогда не генерирует UTF-8, а вместо этого продолжает возвращаться к ISO-8859-1. Я никогда не смогу установить LC_ALLна en_US.UTF-8, вероятно, потому что он не может генерировать.

Я делаю что-то неправильно? Я использую Debian 8.1.

Эрик С
источник

Ответы:

28

Вы пытались применить рецепт для Ubuntu под Debian. Это обычно работает, но в данном конкретном случае это не так.

Ubuntu является производной от Debian и не сильно отличается от установщика и графического интерфейса. Команда locale-genявляется одной из тех немногих других вещей, которые она меняет. Я не знаю почему.

В Debian locale-genкоманда не принимает аргументов и создает заново скомпилированные определения локали в соответствии с настроенным списком локалей. Чтобы изменить выбор локалей, которые вы хотите использовать, отредактируйте файл и /etc/locale.genвыполните locale-genкоманду. В качестве альтернативы, запустите dpkg-reconfigure localesот имени пользователя root, выберите дополнительные локали, которые вы хотите (и отмените выбор тех, которые вам не нужны), и нажмите OK.

В Ubuntu, если вы запускаете locale-genкоманду без аргументов, она восстанавливает скомпилированные определения локали в соответствии с настроенным списком локалей. Но если вы передадите некоторые аргументы, они будут добавлены в список и генерируются немедленно. Список языков хранится в /var/lib/locales/supported.d/local. Запуск dpkg-reconfigure localesпросто восстанавливает скомпилированные локали, не давая вам возможности изменить выбор.

В итоге, чтобы добавить en_US.UTF-8в список доступных языков:

  • Debian, интерактивный: dpkg-reconfigure locales
  • Debian, автоматизированный: sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen && locale-gen
  • Ubuntu, автоматизированный: locale-gen en_US.UTF-8
Жиль "ТАК - перестань быть злым"
источник
Так как бы вы добавили пакеты dpkg-reconfigure? Я получил интерактивный интерфейс, но при выборе элемента с помощью ввода он не был установлен.
Эрик С
@ErikDolor Я не понимаю твой вопрос. Если вы не изменили настройки debconf, dpkg-reconfigure localesпоявится диалоговое окно текстового режима с флажком для каждой локали, которая может быть сгенерирована. Вы прокрутите вниз en_US.UTF-8, проверьте его и нажмите кнопку OK.
Жиль "ТАК - перестань быть злым"
Я попытался проверить это с помощью кнопки ввода, но это, по-видимому, действовало как нажатие кнопки ОК.
Эрик С
2
@ErikDolor Ох. Нажмите пробел, чтобы установить флажок.
Жиль "ТАК - перестань быть злым"
Также работает для распби Джесси
Neo_Returns
5

После того, как я на самом деле прочитал файл man для locale-gen вместо слепого доверия к Интернету, я обнаружил, что на locale-genсамом деле нужны языковые настройки для генерации /etc/locale.gen. Раскомментировав en_US.UTF-8там, мне удалось его сгенерировать.

Эрик С
источник
sed -i '/^#.* es_ES / s / ^ # //' /etc/locale.gen Если вы используете докер, это может быть полезно
Borjante
ЕДИНСТВЕННЫЙ ответ, который работал для меня после того, как рыщет в Интернете в течение нескольких дней !! Спасибо вам большое!
I.Am.A.Guy