Take the 2-minute tour ×

I have generated en_US.utf8, et_EE.iso88591 and ru_RU.utf8 localisation files. Now if I try to change any of the locale variables to a ru_RU.utf8 or en_US.utf8, then this does not have any effect:

# locale -a
# LC_TIME=ru_RU.utf8
# locale | grep LC_TIME
# LC_TIME="ru_RU.utf8"
# locale | grep LC_TIME

However, if I change the LANG= variable, then all other variables but LANGUAGE= and LC_ALL= take the value of the LANG= variable. Is there a way to modify each locale variable separately? In addition, am I correct that locale variables aren't regular shell variables, but more like parameters to locale utility?

share|improve this question
Which distro is this? –  slm May 3 '13 at 23:47
add comment

3 Answers

Under the Fedora/CentOS/RHEL based distros I believe you can change the locale to one of the locale's displayed when you run the locale -a command in this system file:


For example on my Fedora 14 system:

$ more /etc/sysconfig/i18n 

Under GNOME you can run the help app:


Which brings up this GUI:

             ss of lang. gui

I think it's slightly different for the Debian/Ubuntu distros. I believe it's this file:


I believe they're environment variables but not entirely sure how applications make use of them if at all.


share|improve this answer
add comment

You can set any locale category independently. LANG applies only to the categories that are not explicitly set.

LANG and LC_xxx are ordinary environment variables. They are not settings for the locale utility: the locale program isn't involved in any locale processing, it's just a small utility to report current and available locale settings.

When you write LC_TIME=ru_RU.utf8, this doesn't set an environment variable, only a shell variable. Shell variables are internal to the shell, they are not seen by other programs. Environment variables, on the other hand, are inherited by the programs that the shell starts. You need to export the variable to the environment as well:

$ LC_TIME=ru_RU.utf8
$ locale | grep LC_TIME
$ export ru_RU.utf8
$ locale | grep LC_TIME

or directly

$ export LC_TIME=ru_RU.utf8
$ locale | grep LC_TIME
share|improve this answer
add comment

This may not be directly related to your question about adding new locales. However if you succeed to, please note there are many I18N samples available at http://vouters.dyndns.org/. Just query its search engine with "Internationalizing". You may give some coding samples a try to demonstrate you correctly added as many locales as are available to you.

Yours truly,

share|improve this answer
add comment

Your Answer


