Olá a todos.
Estou desenvolvendo uma série de aplicações que utilizarão I18N, e surgiu me a seguinte dúvida:
Os arquivos de propriedades, onde estarão as traduções para diversas línguas, devem estar em uma pasta padrão utilizada pelo java ou existe uma forma para que eu possa indicar onde eles se encontram?
Mas e o porque desta pergunta?
É que além do java utilizar essas traduções, as aplicações desenvolvidas em C também terão que utilizá-las, e eu não gostaria de ter que duplicar tais arquivos. Tentei diversas tipos de valores no momento de passar o baseName para o objeto ResourceBundle, e de forma alguma consegui fazer com que este o encontra-se. Já tentei colocar os arquivos em todas as pastas de classe do pacote da aplicação, mas mesmo assim não consegui fazer com que estes fossem carregados.
Alguém possui alguma sugestão?
Grato pela atenção.
Ederson.
Os properties devem ficar em WEB-INF/classes
para que o ResourceBundle os ache.
Na verdade voce ficam em qualquer lugar… tudo depende de como vc ta dando o load… voce pode pegar o diretorio fisico base da tua aplicacao chamando o metodo getRealPath("") do objeto ServletContext, e entao adicionar a estrtuura que desejar… eu faco assim no jforum e funciona sem problemas. ( os arquivos ficam em WEB-INF/config )
Rafael
Olá a todos.
DanielDestro, sua solução funcionou mto bem aqui. Muito obrigado.
RafaelSteil, estarei fazendo um teste com essa sua solução. Volto aqui para dar um status.
Mto obrigado a todos.
Ederson.
Olá Rafael Steil.
Quando for utilizar a saída mencionada por vc, é necessário armazenar tal informação no ServletConfig, certo. Como vc realizou tal ação?
Coloquei no código da seguinte forma:
public void init(ServletConfig config) throws ServletException
{
// Registra configuração na superclasse
super.init(config);
ServletContext context = config.getServletContext();
System.out.println(context.getRealPath("WEB-INF\config"));
.
.
.
}
Neste exemplo acima, a aplicação não encontrou os arquivos.
Vc poderia mostrar-me através de um exemplo como realizou esta mudança?
Grato.
Ederson.
Isso… eu subo as configuracoes no init() tmb, com a diferenca que guardo os dados necessarios ( como diretorio raiz ) em uma variavel estatica de uma classe de configuracao. Assim posso pegar os dados de qualquer canto.
Rafael