Як додати локаль до сервера 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 
    

26
... тоді бігайтеsudo update-locale
Джастін Форс

3
Що робити, якщо це не підтримується?
Кімбл

4
Чи не могли б ви розширити чому так ru_RUі ru_RU.UTF-8потрібно? Я не знаю багато про локали.
Sopalajo de Arrierez

15
Якщо ви працюєте з php5-fpm вам знадобитьсяsudo service php5-fpm restart
Сталінко,

3
Це саме те, що мені було потрібно, але мені довелося перезапустити Apache, щоб він працював ... дякую!
Джабарі

53

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

sudo apt-get install language-pack-XX

де XX означає код мови. Якщо встановити мову, ви встановите всі варіанти для кожної країни (наприклад, встановіть language-pack - він встановить it_CH.utf8 та it_IT.utf8, інсталяція для NL встановить nl_AW, nl_AW.utf8, nl_BE.utf8 та nl_NL.utf8 ).


Я думаю, що це найкращий і найбільш «Ubuntu» спосіб зробити це
Люк Мадханга

4
Але генерація локалів надає такі речі, як локалізований формат дати, десятковий роздільник, набір символів тощо. Мовні пакети також надають переклади, що не обов'язково має намір.
Оскар Берггрен

1
Погодьтеся з Оскаром. Ще сильніше, якщо ви вважаєте, що ця установка призначена для сервера - більшість інтерфейсів все одно будуть англійською мовою.
igorsantos07

2
Я побоювався, що це також змінить поточну локальність, але ні. Все добре. Схоже, найкраще підходить imo. Мені особливо не потрібні "переклади чи інші речі", але якщо я певно використовую локаль з якихось причин, я вважаю, що він буде повним.
Бальміпур

43
  1. перевірте, які локалі підтримуються:

    less /usr/share/i18n/SUPPORTED
    
  2. Додайте локаль до списку створених

    echo ru_RU.UTF8 >> /var/lib/locales/supported.d/local
    
  3. Поновити список (він буде викликати локаль-gen ...)

     sudo dpkg-reconfigure locales
    

4
Мені довелося додати другий стовпчик: echo ru_RU.UTF-8 UTF-8 >> /var/lib/locales/supported.d/local(UTF-8 трапляється двічі) на Ubuntu 15.04. Інакше це працює.
jfs

16

Я знайшов місцевий рід як твого друга. як у (додавання івриту utf8 наприклад):

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

Ви навіть можете переробити це так:

root@world:~# dpkg-reconfigure locales

і перевірте, що ви зробили добре:

root@world:~# locale -a

Я вважав, що цей спосіб вирішення простіший, ніж додавання матеріалів до текстових файлів, хоча це і робиться.


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

Це працювало для мене. У моєму випадку у мене виникла помилкова помилка введення для мов 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:~$ 

Тепер доступні локалі ru. Локальна система системи за замовчуванням встановлюється шляхом редагування /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:~$ 

2

Змінення /etc/locale.gen, коментування або додавання створених локалів. Потім бігайте sudo locale-gen.

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


о, мій gengele gen створив тонни локалів, ігноруючи файл locale.gen. Тому використовуйте цю пораду з обережністю.
Дзенлі

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


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

Примітка: Якщо ви використовуєте звичайний Ubuntu, а не сервер Ubuntu, зміни не будуть переноситися за межі консолі (якщо ви вирішите відкрити нову вкладку або закрити термінал) до наступного наступного разу, коли ви ввійдете в систему. Однак, використовуючи сервер Ubuntu, як правило, потрібно ввійти, щоб відкрити нову консоль, так що це не має значення.
mchid

Це питання є тегом із сервером . А хто і чому спростував цю, поясніть, будь ласка.
Нікос Олександріс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.