Qual é o caso de uso válido para a internacionalização de logs? Especialmente, existem usos que fazem sentido para um aplicativo da web.
Estou trabalhando na conversão da API de log usada por um aplicativo Web de log4j
para slf4j
e notei que a interface usada para abstrair a log4j
implementação oferece suporte à internacionalização; Notei também que tanto log4j
e slf4j
internacionalização apoio, o que significa que deve ser útil para alguém.
Agora, a internacionalização pode ser útil ao programar um aplicativo de desktop, no qual os logs podem ser visualizados pelo usuário final, mas essa fachada de log é usada apenas no servidor para vários aplicativos da Web, por desenvolvedores que precisam usar o inglês em geral .
Respostas:
As respostas fornecidas aqui são muito vinculadas ao ponto de vista do desenvolvedor. No entanto, o software é feito para ser usado (e lido) por humanos (usuários), cuja maioria deles não tem idéia sobre depuração, padrões de log, padrões, etc.
Digamos que temos um produto que registra sua atividade em diferentes níveis. É necessário que o produto tenha um painel ou painel de controle em que os usuários possam monitorar a atividade. Consequentemente, é necessário que os rastreamentos de log sejam legíveis pelos usuários, em vez de desenvolvedores ou técnicos .
Além disso, os usuários podem ser de diferentes locais. O que significa que os registros de formatos de data, símbolos numéricos, monetários, etc. devem ir de acordo com a localização do usuário.
Em tal situação, por que os logs não devem ser localizados?
Embora seja verdade que os logs devem ser legíveis por máquina, nada nos impede de implementar um processo de log paralelo um pouco mais fácil de usar.
Concordo que o inglês seja o idioma padrão dos logs. Mas todos esses tipos de "padrões" são De Facto Standard . Então, neste ponto, temos que ser flexíveis.
Dito isto, se você encontrar um bom motivo para usar o recurso de localização slog4j, vá em frente. Foi feito por uma boa razão.
Um desses motivos pode ser o fato de os aplicativos de hoje serem executados em um contexto mundial, e nem todo mundo fala / lê / escreve seu idioma (ou inglês). Talvez nem o serviço de assistência do seu produto funcione.
fonte
Quando os desenvolvedores falam sobre "logs", costumam se referir a arquivos de texto sem formatação que contêm informações que não fazem sentido fora do contexto do código específico que os registrou e não têm outra finalidade, além de solucionar esse código quando algo der errado.
Quando os desenvolvedores falam sobre "internacionalização", geralmente significam "quando o usuário fala o idioma X, usa a string traduzida para o idioma X em vez da string padrão".
Dadas essas definições específicas, os logs internacionalizados são quase sempre uma má ideia , porque:
Normalmente, o conjunto de idiomas em que todos os seus desenvolvedores podem falar fluentemente é muito menor do que o conjunto de idiomas em que qualquer usuário pode ser nativo. Portanto, se você internacionalizar logs, é mais provável que seus desenvolvedores não ser capaz de entendê-los.
Geralmente, a maioria dos usuários não é mantenedora ativa do software que está usando. Portanto, seus clientes que não falam inglês não conseguiriam entender os logs, mesmo se fossem internacionalizados, porque a maioria das mensagens será sobre trechos de código específicos e vários detalhes de implementação que eles simplesmente não entendem e não devem já sabe sobre.
A internacionalização de uma mensagem anula completamente a capacidade de fazer pesquisas de texto para essa mensagem, sejam desenvolvedores pesquisando seu código ou usuários pesquisando soluções na Internet.
A internacionalização introduz a possibilidade de erros de tradução ou ambiguidades sutis, que são completamente inaceitáveis no contexto da solução de problemas de software. É o mesmo problema que registrar registros de data e hora sem um fuso horário explícito; você constantemente perde tempo descobrindo o que realmente significa.
Obviamente, se relaxamos as definições e suposições com as quais eu comecei, existem alguns casos de uso válidos.
Em geral, "logs internacionalizados" são potencialmente úteis quando há um subconjunto de mensagens de log facilmente identificáveis que são significativas para o usuário médio e quando "internacionalização" significa um log separado no idioma do usuário ao lado do log de idioma padrão para os desenvolvedores.
Na prática, se algo que você poderia chamar de "log internacionalizado" for realmente útil, provavelmente será um recurso do aplicativo de qualquer maneira.
Alguns tipos de videogame fazem isso, principalmente aqueles que se comportam como jogos de tabuleiro:
Fonte: Blood Bowl, captura de tela tirada de https://www.youtube.com/watch?v=UyQB4kDMZzE
Se os "logs" forem considerados extremamente úteis ou um recurso crítico, é mais provável que eles acabem em um banco de dados adequado, em vez de meros arquivos de texto. O software de rastreamento de vendas é um exemplo típico disso:
Fonte: http://www.everlogic.com/i-want-to/see-screenshots/
Quer você chame ou não esses "logs", o texto que você vê nessas imagens é claramente algo que gostaríamos de internacionalizar se mantivéssemos esses problemas.
fonte