eselect-locale
Set system-wide locale settings
TLDR
List available locales
Set the $LANG environment variable in /etc/profile.env by name or index from the list command
Display the value of $LANG in /etc/profile.env
SYNOPSIS
eselect locale action [arguments]
PARAMETERS
list [locale_prefix]
List all available locales, or variants/sub-locales matching locale_prefix (e.g., 'en_US').
set index1 [index2 [index3 ...]]
Set system locale(s) using indices from 'list': index1=LANG, index2=LC_COLLATE, index3=LC_MESSAGES, etc.
help
Display usage information.
DESCRIPTION
eselect locale is a Gentoo-specific module of the eselect framework for managing system locales. It lists locales compiled into glibc (based on /etc/locale.gen) and sets the active system locale by updating /etc/env.d/02locale.
To use: First, uncomment desired locales in /etc/locale.gen, run emerge --ask --newuse @locale (or recompile glibc). Then eselect locale list shows numbered options like 1 en_US (en_US.utf8). Use eselect locale set 1 to activate.
It supports hierarchical listing: eselect locale list en_US shows variants (UTF-8, ISO-8859-1). Multiple indices set LANG (first), LC_COLLATE (second), LC_MESSAGES (third), etc.
Changes require env-update and sourcing /etc/profile or relogin for environment variables to update. Ideal for multilingual setups or switching encodings without recompiling.
CAVEATS
Gentoo-only; requires eselect package and glibc recompiled with locales. Always run env-update && source /etc/profile after 'set'. Indices change if locales updated.
EXAMPLE USAGE
eselect locale list
1) en_US (en_US.utf8)
2) en_US (en_US)
eselect locale set 1
env-update && source /etc/profile
echo $LANG # en_US.utf8
ADDING LOCALES
Edit /etc/locale.gen, add lines like 'en_US.UTF-8 UTF-8'. Run emerge --ask --newuse @locale, then eselect locale list refreshes.
HISTORY
Introduced ~2005 as part of eslect (Gentoo's 2004 selector tool) to streamline OpenRC-based locale config vs. manual env.d edits.


