Как добавить локаль на сервер Ubuntu?

178

В настоящее время у меня есть эти локали:

locale -a

C
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZW.utf8
POSIX

Как я могу установить ru_RUлокаль на свой сервер?

Серебряный свет
источник

Ответы:

254
  1. Проверьте, какие локали поддерживаются:

    locale -a
    
  2. Добавьте локали, которые вы хотите (например ru):

    sudo locale-gen ru_RU
    sudo locale-gen ru_RU.UTF-8
    
  3. Запустите эту команду обновления:

    sudo update-locale 
    
PocketSam
источник
26
... тогда бегиsudo update-locale
Джастин Форс
3
Что вы делаете, если это не поддерживается?
Кимбл
4
Не могли бы вы подробнее рассказать, почему и то, ru_RUи другое ru_RU.UTF-8нужно? Я не знаю много о локалях.
Сопалахо де Арриерес
15
Если вы работаете с php5-fpm, вам нужноsudo service php5-fpm restart
Сталинко
3
Это было именно то, что мне было нужно, но мне пришлось перезапустить Apache, чтобы он заработал ... спасибо!
Джабари
53

Я бы пошел другим путем, который IMO лучше подходит для стиля Ubuntu. Используйте предоставленные пакеты . Есть пакеты для каждой локали, и они делают всю работу за вас ... нет необходимости редактировать файлы / var, которые, как я всегда полагал, не предназначались для редактирования вручную.

sudo apt-get install language-pack-XX

где XX обозначает код языка. При установке языка будут также установлены все варианты для конкретной страны (например, при установке пакета language-будет установлен it_CH.utf8 и it_IT.utf8, при установке для NL будут установлены nl_AW, nl_AW.utf8, nl_BE.utf8 и nl_NL.utf8. ).

Palantir
источник
Я думаю, что это лучший и самый «убунту» способ сделать это
Люк Мадханга
4
Но генерация локалей обеспечивает такие вещи, как локализованный формат даты, десятичный разделитель, наборы символов и т. Д. Языковые пакеты также предоставляют переводы, что не обязательно является намерением.
Оскар Берггрен
1
Согласна с Оскаром. Еще сильнее, если учесть, что эта установка предназначена для сервера - большинство интерфейсов все равно будут на английском языке.
igorsantos07
2
Я боялся, что это также изменит текущую локаль, но нет. Все в порядке. Похоже, лучший подход ИМО. Мне не особенно нужны «переводы или другие вещи», но если я по какой-то причине специально использую локаль, я ожидаю, что она будет полной.
Balmipour
43
  1. проверьте, какие локали поддерживаются:

    less /usr/share/i18n/SUPPORTED
    
  2. Добавить локаль в список сгенерированных

    echo ru_RU.UTF8 >> /var/lib/locales/supported.d/local
    
  3. Восстановить список (он вызовет locale-gen ...)

     sudo dpkg-reconfigure locales
    
user123231
источник
4
Мне пришлось добавить второй столбец: echo ru_RU.UTF-8 UTF-8 >> /var/lib/locales/supported.d/local(UTF-8 встречается дважды) в Ubuntu 15.04. В противном случае это работает.
Jfs
16

Я нашел locale-gen твоим другом. как в (например, добавление иврита utf8):

root@world:~# locale-gen he_IL.UTF-8

Вы можете даже перефразировать это так:

root@world:~# dpkg-reconfigure locales

и проверьте, что вы сделали хорошо:

root@world:~# locale -a

Мне показалось, что это решение проще, чем добавлять что-то в текстовые файлы, хотя оно и делает.

boazr
источник
6
echo ru_RU.UTF8 >> /var/lib/locales/supported.d/local

В пункте 3 я получаю следующее сообщение: «Ошибка: неверная запись« ru_RU.UTF8 »»

Эта работа для меня:

echo ru_RU.UTF-8 UTF-8 >> /var/lib/locales/supported.d/local
user123
источник
Это сработало для меня. В моем случае у меня была эта ошибка ввода для локалей en_GB. Я обновил свой /var/lib/locales/supported.d/mintlocaleфайл, чтобы он содержал строки en_GB UTF-8и en_GB.UTF-8 UTF-8(лишний UTF-8 отсутствовал).
Самир Агиар
4

Используйте языковые пакеты Ubuntu. Все поддерживаемые языки доступны в репозиториях по умолчанию:

apt-cache search language-pack

Полный пример переключения локали в версии Ubuntu (сервер):

jani@example:~$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"

Все доступные (т.е. уже установленные) локали могут быть перечислены с:

locale -a

Моя текущая локаль en_IE:

jani@example:~$ locale
LANG=en_IE.UTF-8
LANGUAGE=
LC_CTYPE="en_IE.UTF-8"
LC_NUMERIC="en_IE.UTF-8"
LC_TIME="en_IE.UTF-8"
LC_COLLATE="en_IE.UTF-8"
LC_MONETARY="en_IE.UTF-8"
LC_MESSAGES=POSIX
LC_PAPER="en_IE.UTF-8"
LC_NAME="en_IE.UTF-8"
LC_ADDRESS="en_IE.UTF-8"
LC_TELEPHONE="en_IE.UTF-8"
LC_MEASUREMENT="en_IE.UTF-8"
LC_IDENTIFICATION="en_IE.UTF-8"
LC_ALL=
jani@example:~$ date
Sat Nov  1 15:36:51 UTC 2014
jani@example:~$

Поскольку у меня не было локали ru, я должен установить языковой пакет ru:

jani@example:~$ sudo apt-get -y install language-pack-ru
[..]
Generating locales...
  ru_RU.UTF-8... done
  ru_UA.UTF-8... done
Generation complete.
jani@example:~$ 

Теперь доступны ру локали. Системный языковой стандарт по умолчанию устанавливается путем редактирования /etc/default/locale:

jani@example:~$ sudo vi /etc/default/locale
# Created by cloud-init v. 0.7.5 on Mon, 27 Oct 2014 18:46:13 +0000
LANG="ru_RU.UTF-8"
LC_MESSAGES=POSIX
jani@example:~$

Заново войдите в систему и проверьте ваш новый язык:

jani@example:~$ locale
LANG=ru_RU.UTF-8
LANGUAGE=
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES=POSIX
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
jani@example:~$ date
Сб. нояб.  1 15:43:45 UTC 2014
jani@example:~$ 
user272735
источник
2

Измените /etc/locale.gen, раскомментируйте или добавьте локали, которые вы хотите сгенерировать. Тогда беги sudo locale-gen.

Вы можете проверить, добавлены ли локали locale -a, что покажет все локали.

hunse
источник
о, мой locale-gen создал множество локалей, игнорируя файл locale.gen. Поэтому используйте этот совет с осторожностью.
17
0
  1. Проверьте, какие локали уже поддерживаются в вашем дистрибутиве. Откройте catфайл /usr/share/i18n/SUPPORTEDили скопируйте нужный языковой стандарт для добавления.
  2. на терминал войти sudo locale-gen locale_name.

    Например sudo locale-gen de_DE.iso885915@euro

  3. войти sudo update-locale

  4. Проверьте, установлена ​​ли локаль с locale -a

BugShotGG
источник
0

Не могу прокомментировать, поэтому я должен добавить это в качестве ответа.

Мне нужно было добавить «специальный» тип локали sr_RS.utf8@latin в Ubuntu.

Команда:

sudo locale-gen sr_RS.utf8@latin

не добавляет @latin в доступные локали. Чтобы добиться успеха, команда должна выглядеть так:

sudo locale-gen sr_RS@latin.utf8

Команда:

sudo locale -a

сейчас показывает:

sr_RS
sr_RS@latin
sr_RS.utf8
sr_RS.utf8@latin

Обратите внимание на синтаксическую разницу между результатом locale -aи тем, как он добавляется locale-genкомандами.

Миланская Опарница
источник
-2

Я сделал то же самое, применив всю систему локали без перезагрузки или выхода из системы.

Сначала скачайте языковой пакет:

sudo apt-get install language-pack-ru-base

Затем проверьте, какие версии поддерживаются:

less /usr/share/i18n/SUPPORTED | grep ru_RU

Теперь примените результат (почти всегда используйте версию UTF-8 практически для любого языка!):

echo 'ru_RU.UTF-8 UTF-8' | sudo tee /var/lib/locales/supported.d/local
sudo dpkg-reconfigure locales

Наконец, обновите файл по умолчанию, создайте его, и тогда все готово:

echo 'LANG=ru_RU.UTF-8' | sudo tee /etc/default/locale

применить изменения к системе:

. /etc/default/locale
LANGUAGE=ru_RU.UTF-8

и проверьте свои результаты:

locale
mchid
источник
Примечание. Если вы работаете с обычным Ubuntu, а не с сервером Ubuntu, изменения не будут перенесены за пределы консоли (если вы решите открыть новую вкладку или закроете терминал) до следующего входа в систему. Однако, используя сервер Ubuntu, вы, как правило, должны войти, чтобы открыть новую консоль, так что это не должно иметь значения.
Mchid
Этот вопрос является тегом с сервером . А кто и почему проголосовал за это, объясните, пожалуйста.
Никос Александрис