Java I18N: Use um acessador de recursos de recursos por pacote ou um para todo o projeto?
-
20-09-2019 - |
Pergunta
Não sei nada sobre internacionalização.
Eu tenho um projeto com vários pacotes. Estou usando o assistente interno "externalize Strings" do Eclipse para extrair constantes de string em minhas classes para um arquivo de propriedades e substituir essas strings por chamadas para um acessador estático. Então, em vez de
System.out.println("Hello, world!");
Eu acabo com
System.out.println(Messages.getString("MyKey"));
e a Messages
classe de utilidade em todos os pacotes (que fornecem uma estática getString
Método para obter a string desejada de um ResourceBundle [neste caso a .properties
Arquivo]). É melhor ter um Messages
classe em cada pacote, ou ter um único Messages
classe para todo o projeto?
Solução
Sou a favor de um arquivo de localização global. Você terá chaves duplicadas ("OK", "Cancelar") que exigiriam duplicação ou ninho, e a interface com as pessoas de localização externa é mais fácil se os recursos forem consolidados.
Outras dicas
Eu guardaria um por pacote. Dessa forma, a manutenção/refatoração/teste de unidade é muito mais fácil.
Além disso, não há dependências globais em um único arquivo.