Para configurar as localidades, primeiro executo um script sed que criará uma nova cópia do arquivo '/etc/locale.gen', com base no conteúdo do arquivo '/ usr / share / i18n / SUPPORTED'. Todas as linhas do arquivo de entrada serão copiadas, mas serão transformadas em comentários, a menos que seja uma entrada de uma localidade UTF-8 para um idioma que eu desejo disponibilizar no meu sistema (por exemplo, inglês, holandês, francês, e alemão):
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
Em seguida, defino o código de idioma do ambiente padrão no banco de dados debconf, por exemplo, para inglês britânico :
debconf-set-selections <<< 'locales locales/default_environment_locale select en_GB.UTF-8'
Posteriormente, removo o arquivo '/ etc / default / locale' existente (apenas para garantir que seu conteúdo antigo não interfira nas minhas novas configurações) e execute o comando dpkg-reconfigure para gerar todos os códigos de idioma que o script sed selecionou e para criar um novo arquivo '/ etc / default / locale' com apenas uma entrada para definir a variável 'LANG' como o local do ambiente padrão selecionado:
rm --force --verbose /etc/default/locale
dpkg-reconfigure --frontend=noninteractive locales
Então, dependendo dos meus requisitos, talvez eu queira executar alguns comandos update-locale , para substituir, por exemplo, as variáveis que afetam a formatação dos valores e configurá-los para um local diferente (como o inglês irlandês ):
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'
(Eu poderia ter especificado todos esses parâmetros em uma única chamada do comando update-locale , mas, aparentemente, a ordem na qual as entradas são gravadas no arquivo '/ etc / default / locale' é imprevisível se eu fizer isso. prefiro que eles sempre estejam na mesma ordem, e é por isso que eu os gero um a um.)
E, finalmente, convém executar o comando update-locale uma última vez, para configurar a variável LANGUAGE (ou seja, a lista de idiomas nos quais desejo que as mensagens de texto traduzíveis sejam exibidas):
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"))
...