Como alterar a linguagem em um software de linha de comando no debian

2

Estou usando o 'exif' em um servidor (Debian GNU / Linux 6.0.6 (squeeze)) e, ao contrário do meu computador de desenvolvimento (Mac OS X através do MacPort), ele é executado em francês:

exif -h
Utilisation: exif [OPTION...] fichier
  -v, --version                      Display software version
  -i, --ids                          Montre les ID plutôt que les noms des marqueurs
  -t, --tag=marqueur                 Sélection du marqueur
      --ifd=IFD                      Sélection de l'IFD
  -l, --list-tags                    Liste tous les marqueurs EXIF
  -|, --show-mnote                   Show contents of tag MakerNote
      --remove                       Supprime le marqueur ou l'ifd
  -s, --show-description             Montre la description du marqueur
  -e, --extract-thumbnail            Extrait la vignette
  -r, --remove-thumbnail             Supprime la vignette
  -n, --insert-thumbnail=FICHIER     Insère le FICHIER comme vignette
      --no-fixup                     Do not fix existing tags in files
  -o, --output=FICHIER               Write data to FILE
      --set-value=STRING             Value of tag
  -c, --create-exif                  Create EXIF data if not existing
  -m, --machine-readable             Output in a machine-readable (tab delimited) format
  -w, --width=WIDTH                  Width of output
  -x, --xml-output                   Output in a XML format
  -d, --debug                        Show debugging messages

Eu verifico o meu / etc / default / locale e foi

LANG=fr_FR
LANGUAGE=fr_FR:fr

que eu mudei em

LANG=en_EN
LANGUAGE=en_EN:en

sem quaisquer consequências. Alguma dica de como forçar esse machin a executar este software em inglês? Porque eu preciso ter rótulos de dados exif em inglês:)

Obrigado!

    
por Amo__ 25.03.2013 / 00:19

1 resposta

4

O arquivo /etc/default/locale define padrões uhm ... "globais". Isso significa que esses padrões são lidos por qualquer shell de "nível superior" quando ele é inicializado e, em seguida, são herdados por processos executados.

Para encurtar a história, isso significa que esses padrões são aplicados a:

  • Todos os daemons (programas em segundo plano) à medida que são iniciados usando scripts de shell localizados em /etc/init.d .
  • Shells interativos que você executa em sua sessão de login.

Portanto, apenas alterar esse arquivo requer uma reinicialização.

Mas, como o conteúdo desse arquivo é apenas um script de shell que define um monte de variáveis de ambiente , para efetuar um programa em particular você só precisa fazer com que o programa veja diferentes conteúdos dessas variáveis.

A maneira mais simples de conseguir isso é apenas colocar sua tarefa antes do programa ser executado, ou seja, no prompt do seu shell, você pode fazer:

$ LANG=en exif -h

e veja exif falando com você em inglês (o caractere $ aqui denota um prompt de shell - não o digite).

A segunda maneira é fazer com que todos os programas no shell atual vejam o novo conteúdo das variáveis; isso é feito "exportando" eles, como @clarkw mostrou: uma variável exportada e seu conteúdo é herdado pelo ambiente de todos os processos executados a partir do shell, portanto, o seguinte também funciona:

$ export LANG=en
$ exif -h

ou

$ LANG=en
$ export LANG
$ exif -h

Essas variáveis de ambiente são descritas no locale(1) página do manual .

E a última dica: não mude o conteúdo de /etc/default/locale manualmente - use o modo Debian para gerenciá-lo: execute

# dpkg-reconfigure locales

que primeiro perguntará a você quais localidades compilar e instalar (você pode pular este passo) e então qual escolher como padrão.

Atualização: aqui uma página no wiki do Debian dedicada a localidades que praticamente explica tudo o que é necessário incluindo as variáveis de ambiente.

    
por 25.03.2013 / 09:02