Для налаштування локалів я спершу запускаю скрипт sed, який створить нову копію файлу '/etc/locale.gen' на основі вмісту файлу '/ usr / share / i18n / SUPPORTED'. Кожен рядок із вхідного файлу буде скопійовано, але він перетвориться на коментар, якщо це не запис локалі UTF-8 для мови, яку я хочу зробити доступною у своїй системі (наприклад, англійська, голландська, французька, та німецька):
sed --regexp-extended --expression='
1 {
i\
# This file lists locales that you wish to have built. You can find a list\
# of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add\
# user defined locales to /usr/local/share/i18n/SUPPORTED. If you change\
# this file, you need to rerun locale-gen.\
\
}
/^(en|nl|fr|de)(_[[:upper:]]+)?(\.UTF-8)?(@[^[:space:]]+)?[[:space:]]+UTF-8$/! s/^/# /
' /usr/share/i18n/SUPPORTED > /etc/locale.gen
Далі я встановлюю локальну середовище за замовчуванням у базі даних debconf, наприклад, на англійську англійську :
debconf-set-selections <<< 'locales locales/default_environment_locale select en_GB.UTF-8'
Згодом я видаляю існуючий файл '/ etc / default / locale' (просто для того, щоб переконатися, що його старий вміст не заважатиме моїм новим налаштуванням), і запускаю команду dpkg-configіfure, щоб генерувати всі локалі, вибрані скриптом sed , а також створити новий файл / / etc / default / locale з лише записом, щоб встановити змінну 'LANG' на вибрану мовою середовища за замовчуванням:
rm --force --verbose /etc/default/locale
dpkg-reconfigure --frontend=noninteractive locales
Тоді, залежно від моїх вимог, я, можливо, захочу виконати кілька команд оновлення для локалізації , щоб змінити, наприклад, змінні, що впливають на форматування значень, і встановити їх на іншу локаль (наприклад, ірландська англійська мова ):
update-locale LC_NUMERIC='en_IE.UTF-8'
update-locale LC_TIME='en_IE.UTF-8'
update-locale LC_MONETARY='en_IE.UTF-8'
update-locale LC_PAPER='en_IE.UTF-8'
update-locale LC_NAME='en_IE.UTF-8'
update-locale LC_ADDRESS='en_IE.UTF-8'
update-locale LC_TELEPHONE='en_IE.UTF-8'
update-locale LC_MEASUREMENT='en_IE.UTF-8'
update-locale LC_IDENTIFICATION='en_IE.UTF-8'
(Я міг би вказати всі ці параметри в одному виклику команди update-locale , але, мабуть, порядок, коли записи записуються у файл '/ etc / default / locale', є непередбачуваним, якщо я це роблю. I віддайте перевагу, щоб вони завжди були в одному порядку, саме тому я генерую їх по черзі.)
І нарешті, я, можливо, захочу виконати команду update-locale в останній раз, щоб встановити змінну LANGUAGE (тобто список мов, на які я хочу відобразити текстові повідомлення, що перекладаються):
update-locale LANGUAGE='en_GB:en_US:en'
File "/usr/share/apt-listchanges/ALChacks.py", line 32, in <module> sys.stderr.write(_("Can't set locale; make sure $LC_* and $LANG are correct!\n"))
...