Eu sei que você pode usar
export LANG=xx_XX.UTF8
para executar um programa em uma localidade específica, mas as configurações regionais no Linux/Ubuntu também apresentam a opção "Formatos".
Existe uma maneira de executar um aplicativo específico locale
e formats
(en_US e en_GB respectivamente) para fins de teste, sem afetar as configurações do sistema?
Pergunta de acompanhamento: como posso despejar todas as variáveis/configuração ENV sob as quais o processo específico está sendo executado?
Sim, você pode definir variáveis de ambiente na própria linha de comando antes do nome/comando do programa, como
LANG
por exemplogedit
:... e isso definirá essa variável de ambiente especificamente e apenas para aquele determinado programa, ou seja,
gedit
durante aquela determinada sessão/execução ... No entanto, o idioma escolhido deve ser suportado e instalado por esse determinado programa para que isso funcione.Outros formatos locais/regionais, no entanto, podem ser explicitamente definidos separadamente, cada um com sua própria variável de ambiente específica, como por exemplo
LC_MEASUREMENT
,LC_TIME
,LC_NUMERIC
,LC_MONETARY
... etc. e você pode definir quantos deles precisar da mesma maneira, como por exemplo:Supondo um processo em execução no momento ... É aí que
/proc/PID/environ
estáPID
o ID do processo em execução real.Tomando
gedit
como exemplo o programa, eles podem ser despejados ( no Bash ), por exemplo, assim:... essas, no entanto, são entradas delimitadas por NUL/zero e, para facilitar a leitura , você pode querer analisá-las em linhas separadas, por exemplo, canalizando a saída da
xargs
seguinte forma:Observe que, embora a maioria dos programas de linha de comando honrem todas as variáveis de ambiente de localidade de linha de comando explicitamente definidas e as variáveis de ambiente globais, caso contrário, este não é o caso com programas GUI ... Programas GUI simples e programas DE enviados (como aplicativos Gnome, por exemplo) irão mais provavelmente respeitarão essas variáveis de ambiente da mesma forma, mas programas mais complexos/independentes, como navegadores da Web, por exemplo, provavelmente terão seus próprios arquivos de configuração internos definidos em sua interface do usuário e ignorarão configurações de ambiente duplicadas externas e aceitarão outras que não sejam definidas internamente. ..
Por exemplo, o navegador FireFox aceita apenas a configuração do idioma da interface do usuário no menu de preferências da interface do usuário e o salva como uma entrada chamada
intl.locale.requested
que será semelhanteuser_pref("intl.locale.requested", "en-US,ar");
e salva em um arquivo chamadoprefs.js
dentro do diretório do perfil ativo, ou seja para a versão SNAP que estaria em,~/snap/firefox/common/.mozilla/firefox/0qag4e79.default/prefs.js
por exemplo ... E, portanto, as variáveis de ambienteLANG
ouLANGUAGE
locale são ignoradas, sejam definidas globalmente ou explicitamente na linha de comando ... No entanto, outras variáveis de ambiente relacionadas ao local, comoLC_MEASUREMENT
,LC_TIME
,LC_NUMERIC
eLC_MONETARY
ainda são respeitadas (em ambos os casos) como aparece até agora, então você pode defini-los explicitamente na linha de comando se desejar e esperar que ambos sejam refletidos em/proc/PID/environ
e também entrará em vigor quando aplicável.