"além de mudar de local" - Resposta curta: Não.
Resposta longa:
Se os desenvolvedores de um aplicativo decidirem imprimir todas as mensagens de erro em inglês, independentemente da localidade, com certeza poderão fazê-lo facilmente. Tudo o que eles precisam fazer é não enviar essas strings através das funções de tradução do gettext.
Se os desenvolvedores do aplicativo decidirem introduzir outra variável de ambiente (ou outros meios) de especificação de uma localidade diferente para mensagens de erro, eles também poderão implementá-la com relativa facilidade. As funções newlocale()
e *_l()
provavelmente serão úteis. Eu nunca vi um aplicativo desse tipo, e não vejo razão para os desenvolvedores se incomodarem com isso.
Um aplicativo normalmente apenas inicializa a localidade de acordo com as variáveis de ambiente e, quando quiser, traduz uma string de acordo com a localidade usada.
Assumindo um aplicativo normalizado e internacionalizado que traduza suas mensagens de erro (acredito que é com isso que você se importa), não há como enganar o uso de uma localidade para strings que irão para a saída padrão e outra localidade para as cadeias que aparecerão no erro padrão. Isso não pode ser "hackeado" por truques como uma biblioteca LD_PRELOAD ou algo assim. O motivo é muito simples: na hora de construir uma string traduzida, ainda não se sabe onde essa string irá aparecer (stdout, stderr, um arquivo de log, interface gráfica, enviada através de wire etc ..., talvez até mais desses ao mesmo tempo). No entanto, para ser capaz de processar, a string já deve ser criada em sua forma traduzida.
Para pesquisar a solução, se você preferir usar o aplicativo em um idioma diferente do inglês, eis a minha recomendação:
Tente localizar uma subseqüência grande da mensagem de erro que provavelmente virá de uma string fixa, ou seja, não tem números ou palavras substituídos. Faça um grep para esta string em / usr / share / locale / (yourlocale) / LC_MESSAGES para localizar de qual arquivo vem. Se não houver correspondência, repita com uma subcadeia que contenha apenas caracteres ASCII de 7 bits (inglês), pois os arquivos * .mo / * .gmo podem estar em qualquer codificação (embora, no software moderno, eles geralmente estejam em UTF-8). Depois de encontrar o arquivo de onde vem a mensagem de erro, execute msgunfmt
nesse arquivo para encontrar a string original em inglês.
Atualização: Acabei de perceber que você mencionou em um comentário que está vendo problemas com o AUR e o makepkg.
Como outros já responderam, é fácil executar um programa específico com o idioma inglês. Para a construção de pacotes, isso é altamente recomendado.
Então, eu provavelmente entendi mal sua pergunta. Minha resposta acima responde à pergunta: "É possível ter um aplicativo em execução na minha localidade não inglesa preferida, mas [esse mesmo processo] imprime as mensagens de erro em inglês?"