Localization/Guide

Time zone
In order to keep the system time properly according to the present location, the timezone needs to be set. Instructions how to do this for OpenRC based systems and systemd based systems can be found in the system time article.

OpenRC
Look for your timezone in. Please avoid the timezones as their names do not indicate the expected zones. For instance, is in fact GMT+8.

Suppose you want to use Brussels' timezone, edit accordingly, like so:

Running emerge for will update your  file properly:

Verify the new timezone information:

systemd
If you're using systemd you should set the timezone with the  command. First check the available timezones:

Then set your chosen timezone:

Finally check the results by issuing the  command with no arguments:

OpenRC
In most Gentoo Linux installations, your hardware clock is set to UTC (or GMT, Greenwich Mean Time) and then your timezone is taken into account to determine the actual, local time. If, for some reason, you need your hardware clock not to be in UTC, you will need to edit (or if you use Gentoo BSD: ) and change the value of   from   to.

For more details like System clock see the System time article.

What are locales?
A locale is a set of information that most programs use for determining country and language specific settings. The locales and their data are part of the system library and can be found at on most systems. A locale name is generally named  where   is your two (or three) letter language code (as specified in ISO-639) and   is your two letter country code (as specified in ISO-3166). Variants are often appended to locale names, e.g.  or. Please explore Wikipedia to read more about locales and related articles.

Environment variables for locales
The variables controlling different aspects of locale settings are given in the table below. All of them take one name of a locale in  format given above.

Most typically users only set the LANG variable on the global basis.

Generating Specific Locales
You will probably only use one or maybe two locales on your system. You can specify locales you will need in.

The next step is to run. It will generate all the locales you have specified in the file and write them to the locale-archive.

You can verify that your selected locales are available by running.

The file can be displayed using the strings command.

OpenRC
When using OpenRC locale settings are stored in environment variables. These are typically set in the (for system-wide settings) and  (for user-specific settings) file. More details can be found in UTF-8. The system wide settings can be managed through. For instance, to set the  variable to the   value:

Of course, you can edit the file manually as well and diversify the locale variables.

It's also possible, and pretty common especially in a more traditional UNIX environment, to leave the global settings unchanged, i.e. in the " " locale. Users can still specify their preferred locale in their own shell RC file:

Another way of configuring system is to leave it in the default C locale, but enable UTF-8 character representation at the same time. This option is achieved using the following settings in :

Using the above snippet, users will be able to see localized file names properly, while not being forced to your preferred language.

Once you have set the right locale, be sure to update your environment variables to make your system aware of the change.

For a system-wide default locale:

For a user-specific locale:

After this, you will need to kill your X server by pressing +  +, log out, then log in as user.

Now, verify that the changes have taken effect:

systemd
If you use systemd you should set your locale with the  command. Check the list of available locales with:

Then set the locale you want:

Finally check if the result is good:

OpenRC
The keyboard layout used by the console is set in by the   variable. Valid values can be found in. has further subdivisions into layout (,, etc.). Some languages have multiple options, so you may wish to experiment to decide which one fits your needs best.

systemd
With systemd the keymap layout used for your console can be set using the  command. First check the available keymap layouts:

Then set the console keymap layout you want:

Finally check if the console keymap layout was set correctly:

Keyboard layout for the X server
The keyboard layout to be used by the X server is specified in by the   option.

If you have an international keyboard layout, you should set the option XkbModel to pc102 or pc105, as this will allow mapping of the additional keys specific to your keyboard.

Deadkeys allow you to press keys that will not show immediately but will be combined with another letter to produce a single character. Setting XkbVariant to nodeadkeys allows input these special characters into X terminals.

If you would like to switch between more than one keyboard layout (for example English and Russian), all you have to do is add a few lines to that specify the desired layouts and the shortcut command.

Here,  allows you to toggle between keyboard layouts by simply pressing. This will also toggle the Scroll Lock light on or off, thanks to the  option. This is a handy visual indicator of which keyboard layout you are using at the moment.

systemd
With systemd the keymap layout for the X11 server can be set using the  command. First check the available X11 keymap layouts:

Then set the X11 keymap layout you want:

Finally check if the X11 keymap layout was set correctly:

OpenRC
In order to get your console to display the Euro symbol, you will need to set  in  to a file found in  (without the   ). has the Euro symbol.

You should verify that consolefont is in the boot runlevel:

If no runlevel is displayed for , then add it to the proper level:

Most Applications
Getting the Euro symbol to work properly in X is a little bit tougher. The first thing you should do is change the  and   definitions in  to end in   instead of.

Some applications use their own font, and you will have to tell them separately to use a font with the Euro symbol. You can do this at a user-specific level in (you can copy this file to  for use by new users), or at a global level for any application with a resource file in  (like xterm). In these files you generally have to change an existing line, rather than adding a new one. To change our xterm font, for instance:

The Euro symbol in (X)Emacs
To use the Euro symbol in (X)Emacs, add the following to :

For XEmacs (not plain Emacs), you have to do a little more. In, add:

NLS
For message based localization to work in programs that support it and have the  (Native language support) USE flag, you will probably need to have the programs compiled with this flag set. Message strings are installed in files. Most of the programs using nls also need the gettext library to extract and use localized messages. Of course, Portage will automatically install it when needed.

After enabling the  USE flag you may need to re-emerge some packages:

LINGUAS
There is also an additional localization variable called, which affects the localization files that get installed in gettext-based programs, and decides which GUI language packs should be downloaded and installed for some specific software packages, such as Firefox, Thunderbird, kde-base/kde-l10n or app-office/libreoffice-l10n. The variable takes in space-separated list of language codes, and a suggested place to set it is :

With, most ebuilds would install only the packages' default language but none of the   files. They would also not download and install any of the further language packs. For instance, the currently stable app-office/libreoffice receives further language support through which supports download and installation of the language packs defined in. Since the origin language of libreoffice is, it does not have   flag in. So with, libreoffice still supports.

To see the status of GUI translation, hyphenation, spell checking and other localisations on your language, please refer to the LibreOffice translation web site.

For finer grained control it can be set per package in :

A list of installed programs making use of the  variable and their supported languages can be shown as follows:

A list of  values that can be used is provided as :

After setting the  USE flag it may be necessary to re-emerge some packages:

External resources

 * Locales and Internationalization (gnu.org)