locale-gen не работает

Как мне нужен мой язык, который fa_IR.UTF-8 на моем Ubuntu ServerЯ пытаюсь установить его через (sudo) locale-gen "fa_IR.UTF-8" но я не получаю вывод:

user@s1:~# sudo locale-gen "fa_IR.UTF-8"
user@s1:~#

И ЭТО НЕ ДОБАВЛЯЕТ НИКАКОГО МЕСТА в мои страны!

Когда я пытаюсь установить новые локали на моем Ubuntu Desktop Я не получаю эту ошибку, и она работает хорошо! следующее:

user@s1:~# sudo locale-gen "fa_IR.UTF-8"
Generating locales...
  fa_IR.UTF-8... done
Generation complete.
user@s1:~# 

Пожалуйста, помогите мне, в чем проблема и что мне делать?

2 ответа

Решение

Наконец я смог найти решение, выполнив некоторые действия вручную:

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

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

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

     (sudo) dpkg-reconfigure locales
    

Это произошло потому, что названия многих UTF-8 локалей в /usr/share/i18n/SUPPORTED не включайте часть кодового набора ".UTF-8", и fa_IR является одним из них.

$ grep -E '[a-z]+_[A-Z]+ UTF-8' /usr/share/i18n/SUPPORTED | grep fa
fa_IR UTF-8

В Ubuntu 16.04 скрипт locale-gen был изменен, поэтому пользователю не нужно знать точное наименование в SUPPORTED. Следовательно, в 16.04 это будет работать:

sudo locale-gen fa_IR.UTF-8

Для предыдущих версий Ubuntu самый простой способ создать одну из этих локалей - использовать точное имя в соответствии с SUPPORTED, например:

sudo locale-gen fa_IR

Итак, AbdolHosein, ваш вопрос помог нам улучшить Ubuntu. Спасибо за это.:)

Насколько я понимаю согласно справочным страницам, local-gen не принимает никаких параметров, поэтому, например, sudo locale-gen "de_DE.UTF-8" ничего не делает.

Из man locale-gen:

locale-gen - это программа, которая читает файл /etc/locale.gen и вызывает localedef для выбранных профилей локализации. Запустите locale-gen после того, как вы изменили файл /etc/locale.gen.

Решением было просто изменить /etc/locale.gen соответствующим образом, используя:

echo "de_DE.UTF-8 UTF-8" | sudo tee -a /etc/locale.gen
sudo locale-gen de_DE.UTF-8

Обновление: Согласно комментарию Гуннара Хьялмарссона, аргументы возможны в Ubuntu, но не отражены на странице руководства. Этот ответ все еще может быть актуален для людей, которые настраивают другие системы со своей машины ubuntu и задаются вопросом, почему они не ведут себя так, как ожидалось (как это случилось со мной).

Другие вопросы по тегам