Так как мне нужна моя локаль 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:~#
Пожалуйста, помогите мне, в чем проблема и что мне делать?
Это произошло, потому что названия довольно многих локалей 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 сценарий генерала локали был изменен , таким образом, пользователь не должен знать, что точное называет в ПОДДЕРЖИВАЕМОМ. Следовательно в 16,04 это будет работать:
sudo locale-gen fa_IR.UTF-8
Для предыдущих версий Ubuntu, самый простой способ создать одну из этих локалей состоит в том, чтобы использовать точное имя согласно ПОДДЕРЖИВАЕМОМУ, например:
sudo locale-gen fa_IR
Так, AbdolHosein, Ваш вопрос помог нам улучшить Ubuntu. Спасибо за это. :)
Наконец я мог найти решение путем выполнения некоторых вещей вручную:
проверка, какие локали поддерживаются:
less /usr/share/i18n/SUPPORTED
Добавляют, что локаль к списку сгенерированных
(sudo) echo fa_IR.UTF-8 UTF-8 >> /var/lib/locales/supported.d/local
Повторно создает список (это вызовет генерала локали.)
(sudo) dpkg-reconfigure locales
Насколько я понял из справочных страниц, 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 и задаются вопросом, почему они ведут себя не так, как ожидалось (как это случилось со мной).