Problema ResourceBundle

7 respostas
P

Boa tarde!!!

Estou usando o esquema de arquivos de properties com ResourceBundle para fazer tradução de literais… A principio está funcionando, mas esbarrei num problema estranho.

Meus arquivos de properties são os seguintes:
a_pt_BR.properties
a_pt_PT.properties
a_es_ES.properties
a_de_DE.properties
a_fr_FR.properties

O código que faz a leitura é o seguinte:

Locale locale = this.getLocale(fglocale); ResourceBundle i18n = ResourceBundle.getBundle("i18n", locale);

Estou obtendo êxito com a leitura de todos os properties, exceto o a_fr_FR, que contem as literias em francês. Ao invés de trazer as literias que estão no arquivo, o sistema está trazendo as literais do arquivo a_pt_BR.

Fiz uns testes e descobri que quando eu faço a busca do locale na linha 1, pra todos os casos, eh montando o locale corretamente. Mas no caso do francês, o locale monta correto, mas quando dps de executar o getBundle, verifico que o LOCALE DENTRO DO RESOURSEBUNDLE é equivalente ao português brasileiro (pt_BR).

Alguém pode me dar uma luz quanto a isso?
Será que o ResourceBundle não reconhece o fr_FR e substitui por um locale padrão (no caso pt_BR) ?

Muito obrigada,
Patricia

7 Respostas

W

Não sei como vc esta construindo o Locale, tente usar o construtor Locale locale_fr = new Locale(“fr”,“FR”);
e diga se deu certo.

W

Outra coisa não sei te explicar o pq mas suponho q vc esta usando
Locale locale = this.getLocale(fglocale);
onde fglocale é apenas a linguagem “fr”, no seu caso, se vc renomear
seu arquivo de a_fr_FR.properties para a_fr.properties deve funcionar.

P

Oi wladelin!

Meu contrutor é exatamente como você colocou: Locale locale_fr = new Locale("fr","FR");

Tentei também usar Locale locale_fr = new Locale("fr"); com o properties i18n_fr.properties, mas não funcionou…

Estou muito confusa com isso, porque não faz o menos sentido pra mim…

O meu getLocale tá fazendo certinho. Eu debuguei, e nessa linha o locale é fr_FR… Só que depois que o ResourceBundle é criado, eu verificou o locale dele e é pt_BR. Isso não acontece com as outras linguas, por exemplo com o Alemão, quando o getLocale é de_DE, e o locale do ResourceBundle, depois de criada a instancia, também é de_DE.

Por isso eu desconfio que o ResourceBundle esteja fazendo algum tipo de validação e substituindo o fr_FR por pt_BR, só não entendo porque…

Alguma idéia?

Obrigadão wladelin!

W

Será que sua VM não da suportte ao Francês ? é uma VM JIT ?

P

Essa aqui é a versão do Java que eu uso…

java version “1.6.0_03”
Java™ SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot™ Client VM (build 1.6.0_03-b05, mixed mode)

É uma versão recente, e a documentação tem indicações às strings fr e FR… encontrei exemplos que usam esse esquema também… Será?!?

Sabe se tem um jeito de ter certeza que o problema é mesmo o suporte?

W

Desinstale essa versão e instale uma versão alpha do java 1.5 pra garantir que o problema é na VM.
E posta se deu certo.

P

Sabe se o comando é válido na identificação dos locales permitidos?

Locale.getAvailableLocales();

Eu não posso fazer a alteração da versão do java nessa máquina aqui… vou ter q fazer isso outra hora, em outra máquina. :confused:

Criado 25 de abril de 2008
Ultima resposta 30 de abr. de 2008
Respostas 7
Participantes 2