Вопрос: Как установить / изменить локаль на Debian?


Я написал веб-приложение, для которого пользовательский интерфейс находится на голландском языке. Я использую подпрограммы даты и времени для форматирования строк даты в приложении. Тем не менее, строки даты, что форматы системы на английском языке, но я хочу их на голландском языке, поэтому мне нужно установить локаль системы. Как это сделать на Debian? Я попробовал настройку LC_ALL=nl_NL но это не имеет никакого эффекта:

$ date
Sat Aug 15 14:31:31 UTC 2009
$ LC_ALL=nl_NL date
Sat Aug 15 14:31:36 UTC 2009

Я помню, что настройка LC_ALL на моей настольной системе Ubuntu работает нормально. Нужно ли устанавливать дополнительные пакеты для выполнения этой работы, или я делаю это совершенно неправильно?


57
2017-08-15 14:42


Источник


есть ли способ сделать это автоматически на основе назначенного IP-адреса сервера? - Scoop
Настройка Debian Locale стандартным способом: sudo dpkg-reconfigure locales, - Paul Rougieux


Ответы:


редактировать /etc/default/locale и установите для этого содержимого:

LANG="nl_NL.UTF-8"

Вы можете проверить, какие локали вы в настоящее время сгенерировали, используя:

# locale -a

Вы можете создавать больше, редактируя /etc/locale.gen и раскомментируйте строки для локалей, которые вы хотите включить. Затем вы можете сгенерировать их, запустив:

# locale-gen

Вы можете найти список поддерживаемых локалей в /usr/share/i18n/SUPPORTED

На Вики-деятельность Debian,


59
2017-08-15 15:56



/ var / lib / belocs / list не существует. Вам нужно отредактировать файл /etc/locale.gen или вместо этого выполнить dpkg-reconfigure locales. - pgs
+1 этот ответ для описания locale-gen, но, как и в предыдущем комментарии, в моей системе нет такого файла, как / var / lib / belocs / list - telent
Мне понадобилось 5 часов, чтобы найти этот ответ, который оказался совершенным. Более того, он позволяет создавать псевдонимы: en_US UTF-8 и it_IT UFT-8 позволил мне по умолчанию иметь мои локали в UTF-8, что отлично, если у вас есть PHP-код, который зависит от локалей - Cec
Есть ли команда или пакет, которые могут редактировать и устанавливать содержимое / etc / default / locale? - Karl Morrison


Возможно, вам потребуется установить locales пакет. Это спросит вас, какие локали будут созданы. Если он уже установлен, то dpkg-reconfigure locales позволит вам создавать больше локалей.


62
2017-08-15 15:47



Это генерирует только локали, а не устанавливает системные значения по умолчанию. - David Pashley
НЕТ, последний вопрос о локализации dpkg-reconfigure - это выбрать локаль по умолчанию. - pgs
Я должен был запустить его с помощью sudo как в sudo dpkg-reconfigure locales, - Alex Yursha
Если это доступ к серверу через ssh вики-страница Debian на локалях рекомендует оставить отпуск, установленный по умолчанию для NONE, - Paul Rougieux
Это было именно то, что мне нужно: установить все локали всего за несколько нажатий клавиш. Спасибо огромное! - aexl


Ни один из этих ответов не работал для меня, на контейнере LXC, установленном с:

lxc-create -n sse-master -t download -n sse-master -- \
    -d debian -r jessie --arch i386

Я всегда получал следующий результат от locale-gen, т. е. не генерирует никаких локалей (их нет в списке):

$ sudo locale-gen
Generating locales (this might take a while)...
Generation complete.

Бег dpkg-reconfigure locales и выбор некоторых локалей не обновлялся /etc/locale.gen как я и ожидал.

Однако, когда я изменил этот файл вручную и раскомментировал локали, которые я хотел, locale-gen начал работать должным образом:

$ sudo locale-gen
Generating locales (this might take a while)...
  en_GB.UTF-8... done
  en_US.UTF-8... done
Generation complete.

Я также мог создавать локали вручную следующим образом:

sudo localedef -i en_US -f UTF-8 en_US.UTF-8
sudo localedef -i en_GB -f UTF-8 en_GB.UTF-8

Но это не было постоянным решением: я обнаружил, что работает locale-gen без --keep-existing опция удалит все такие локально созданные локали, т. е. каждая локаль, не указанная (и без комментирования) в /etc/locale.gen,


6
2018-05-24 14:54





Ответы здесь неполны, как и в большинстве других. После сбора информации из нескольких мест, что сработало для меня, было: (1) убедиться, что желаемый язык был доступен (сгенерируйте его, если это не так), затем (2) установите переменные среды, связанные с локалью, в желаемую локаль.

В моем случае мне нужно было en_US.UTF-8 программным способом (то есть неинтерактивно), установленным в контейнере докера. Ff выполнил то, что мне нужно, но он должен отлично работать в интерактивной оболочке.

apt-get update

# Install locales package
apt-get install -y locales

# Uncomment en_US.UTF-8 for inclusion in generation
sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen

# Generate locale
locale-gen

# Export env vars
echo "export LC_ALL=en_US.UTF-8" >> ~/.bashrc
echo "export LANG=en_US.UTF-8" >> ~/.bashrc
echo "export LANGUAGE=en_US.UTF-8" >> ~/.bashrc

На той же оболочке вам нужно будет сделать source ~/.bashrc для вступления в действие немедленно. Вы можете проверить правильность настройки локали, вызвав locale,

LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

Было много записей вопросов и ответов по этой теме, но лишь некоторые из них были действительно полезны. Кредит, в котором должен быть предоставлен кредит:


4
2018-01-29 03:58





Для веб-приложения может быть лучше использовать Setlocale() внутри вместо того, чтобы требовать, чтобы языковой стандарт по умолчанию системы был установлен соответствующим образом снаружи. Меньше свободных концов.


3
2018-02-07 23:00



Если система не имеет требуемого языкового стандарта, setlocale не будет работать. - The Godfather


Но сначала вам необходимо установить языковой пакет. На моем немецком VPS не было установленного языкового пакета на английском языке. Поэтому сначала вы проверяете, что вы его установили:

aptitude install language-pack-en

1
2018-04-20 17:14