locale-gen doesn't work
As I need my locale which is fa_IR.UTF-8 on my Ubuntu Server, I'm trying to install it through (sudo) locale-gen "fa_IR.UTF-8" but I don't get any output:
user@s1:~# sudo locale-gen "fa_IR.UTF-8"
user@s1:~#AND IT DOESN'T ADD ANY LOCALE to my locales!
When I'm trying to install new locales on my Ubuntu Desktop I don't get this error and It works well! as follows:
user@s1:~# sudo locale-gen "fa_IR.UTF-8"
Generating locales... fa_IR.UTF-8... done
Generation complete.
user@s1:~# Please help me what's the problem and what shall I do?
63 Answers
This happened because the names of quite a few UTF-8 locales in /usr/share/i18n/SUPPORTED don't include the codeset part ".UTF-8", and fa_IR is one of those.
$ grep -E '[a-z]+_[A-Z]+ UTF-8' /usr/share/i18n/SUPPORTED | grep fa
fa_IR UTF-8In Ubuntu 16.04 the locale-gen script has been changed, so the user doesn't need to be aware of the exact naming in SUPPORTED. Hence in 16.04 this will work:
sudo locale-gen fa_IR.UTF-8For previous Ubuntu versions, the simplest way to create one of these locales is to use the exact name according to SUPPORTED, for example:
sudo locale-gen fa_IRSo, AbdolHosein, your question helped us improve Ubuntu. Thank you for that. :)
At last I could find the solution by doing some things manually:
check which locales are supported :
less /usr/share/i18n/SUPPORTEDAdd locale to list of generated
(sudo) echo fa_IR.UTF-8 UTF-8 >> /var/lib/locales/supported.d/localRegenerate list (it will invoke locale-gen...)
(sudo) dpkg-reconfigure locales
As I understand it according to the man-pages, local-gen does not take any parameter, so e.g. sudo locale-gen "de_DE.UTF-8" does not do anything.
From man locale-gen:
locale-gen is a program that reads the file /etc/locale.gen and invokes localedef for the chosen localisation profiles. Run locale-gen after you have modified the /etc/locale.gen file.
The solution was simply to modify /etc/locale.gen accordingly using:
echo "de_DE.UTF-8 UTF-8" | sudo tee -a /etc/locale.gen
sudo locale-gen de_DE.UTF-8Update: According to Gunnar Hjalmarsson´s comment arguments are possible in Ubuntu, but not reflected in the man page. This answer still might be relevant for people who configure other systems from their ubuntu machine and wonder, why they don't behave as expected (as happened to me).
2