Como instalar / mudar local no Debian?

58

Eu escrevi um aplicativo da web para o qual a interface do usuário está em holandês. Eu uso as rotinas de data e hora do sistema para formatar strings de data no aplicativo. No entanto, as strings de data que os formatos do sistema estão em inglês, mas eu as quero em holandês, portanto, preciso definir a localidade do sistema. Como faço isso no Debian? Tentei definir LC_ALL=nl_NL , mas parece não ter efeito:

$ date
Sat Aug 15 14:31:31 UTC 2009
$ LC_ALL=nl_NL date
Sat Aug 15 14:31:36 UTC 2009

Eu lembro que a configuração LC_ALL no meu sistema de desktop Ubuntu funciona bem. Preciso instalar pacotes extras para fazer isso funcionar ou estou fazendo tudo errado?

    
por Hongli Lai 15.08.2009 / 16:42

6 respostas

60

Edite /etc/default/locale e defina o conteúdo para:

LANG="nl_NL.UTF-8"

Você pode verificar quais localidades você gerou usando:

# locale -a

Você pode gerar mais editando /etc/locale.gen e removendo o comentário das linhas das localidades que deseja ativar. Então você pode gerá-los executando:

# locale-gen

Você pode encontrar uma lista de localidades suportadas em /usr/share/i18n/SUPPORTED

Há mais informações disponíveis no wiki do Debian .

    
por 15.08.2009 / 17:56
63

Você pode precisar instalar o pacote locales . Isso lhe perguntará quais localidades gerar. Se já estiver instalado, dpkg-reconfigure locales permitirá gerar mais localidades.

    
por 15.08.2009 / 17:47
6

Nenhuma dessas respostas funcionou para mim, em um contêiner LXC instalado com:

lxc-create -n sse-master -t download -n sse-master -- \
    -d debian -r jessie --arch i386

Sempre recebi a seguinte saída de locale-gen , ou seja, não gerando nenhuma localidade (nenhuma listada):

$ sudo locale-gen
Generating locales (this might take a while)...
Generation complete.

A execução de dpkg-reconfigure locales e a seleção de algumas localidades não atualizaram /etc/locale.gen como eu esperava.

No entanto, quando modifiquei esse arquivo manualmente e descomentei as localidades desejadas, o locale-gen começou a funcionar corretamente:

$ sudo locale-gen
Generating locales (this might take a while)...
  en_GB.UTF-8... done
  en_US.UTF-8... done
Generation complete.

Também consegui gerar locales manualmente assim:

sudo localedef -i en_US -f UTF-8 en_US.UTF-8
sudo localedef -i en_GB -f UTF-8 en_GB.UTF-8

Mas essa não era uma solução permanente: descobri que executar locale-gen sem a opção --keep-existing excluirá todos os códigos de idioma gerados manualmente, isto é, todos os códigos de idioma não listados (e descomentados) em /etc/locale.gen .

    
por 24.05.2015 / 16:54
6

As respostas aqui estão incompletas como na maioria dos outros lugares. Depois de reunir informações de alguns lugares, o que funcionou para mim foi (1) certificar-se de que a localidade que eu queria estava disponível (gerá-la se não fosse) e (2) definir variáveis de ambiente relacionadas a localidade para a localidade desejada. p>

No meu caso, eu precisava de en_US.UTF-8 programaticamente (ou seja, não interativamente) instalado em um contêiner docker. O ff realizou o que eu preciso, mas deve funcionar muito bem em um shell interativo.

apt-get update

# Install locales package
apt-get install -y locales

# Uncomment en_US.UTF-8 for inclusion in generation
sed -i 's/^# *\(en_US.UTF-8\)//' /etc/locale.gen

# Generate locale
locale-gen

# Export env vars
echo "export LC_ALL=en_US.UTF-8" >> ~/.bashrc
echo "export LANG=en_US.UTF-8" >> ~/.bashrc
echo "export LANGUAGE=en_US.UTF-8" >> ~/.bashrc

No mesmo shell, você precisará fazer source ~/.bashrc para o env vars entrar em vigor imediatamente. Você pode verificar se a localidade foi configurada corretamente invocando locale .

LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

Havia muitas entradas de Perguntas e Respostas relacionadas a esse assunto, mas apenas algumas foram realmente úteis. Crédito onde o crédito é devido:

por 29.01.2018 / 04:58
3

Para um aplicativo da Web, pode ser melhor usar setlocale () dentro do programa, em vez de exigir que a localidade padrão do sistema seja definida adequadamente fora. Menos pontas soltas assim.

    
por 08.02.2012 / 00:00
1

Mas primeiro você precisa ter o pacote de idiomas instalado. No meu VPS baseado na Alemanha, não havia nenhum pacote de idioma inglês pré-instalado. Então, primeiro você verifica se você o instalou:

aptitude install language-pack-en
    
por 20.04.2015 / 19:14