Traduzir aplicativo

10 respostas
souarte

olá. como faço para traduzir um aplicativo para o português? eu comecei mudando as coisas no códifgo mesmo, mas acho que essa forma tá errada. qual a melhor forma de fazer isso? usando arquivos tipo “.lng”? e como posso usar esses arquivos com o programa?
obrigado.

10 Respostas

marciofermino

tb pode ser

marciofermino

ou intercionalizar

souarte

como faz pra internacionalizar?
li um artigo em que o cara “internacionalizava” um aplicativo feito em C. para isso ele marcava qualquer mensagem do programa que poderia ser traduzida com algo tipo um glag.
mas como fazer isso em java? imagino que seja algo parecido. que eu tenha que usar uma anotation, sei lah.

gomesrod

Olá!

A linguagem Java está “recheada” de recursos para internacionalização. Tem arquivo de mensagens, formatação de números e datas automaticamente de acordo com o local, etc etc.

Pesquise no google sobre:

java internacionalização
ou
java internationalization (vem um capítulo do JAVA TUTORIAL que é excelente)

Marky.Vasconcelos

Não sei se é o mais viavel mas voce pode criar um arquivo .properties e gravar todas as mensagens lá.
Tipo:

tela6.titulo=Titulo da Janela
tela6.campo1=Descricao

E na hora de construir no lugar que voce passa a String literalmente pegue desse arquivo a mensagem.

Mas voce que fara esse “mapeamento” de arquivo para tela então o que voce buscar para colocar no campo tem que estar no arquivo.

Um exemplo:

MensagensProps p = new MensagensProps(arquivoComOMapeamento);
janela.setTitle(p.getMensagem("tela6.titulo"));
campoDescricao.setText(p.getMensagem("tela6.campo1");

Assim para mudar a lingua voce apenas precisaria de outro arquivo properties como esse:

tela6.titulo=Window Title
tela6.campo1=Description
souarte

tou tentando ler sobre internacionalização no the java tutorisl.
obrigado pelas respostas pessoal, qualquer dúvida eu posso contar com vocês.
:slight_smile:

souarte

olá. infelizmente nao tou conseguindo nada. coloquei as seguintes linhas no código:

Locale locale = new Locale("pt", "BR"); ResourceBundle messages = ResourceBundle.getBundle("Language", locale);

e criei os arquivos “Language_pt_BR.properties” e “Language.properties” no diretorio raiz do programa.

mas deu a seguinte excessao:

Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name Language, locale pt_BR at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1521) at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1260) at java.util.ResourceBundle.getBundle(ResourceBundle.java:787) ...

o que devo fazer? o pior é que fiz isso em em uma classe sem ser do programa, só pra testar. e deu certo. mas no programa nao dá certo. o que vocês acham que pode ser?

gomesrod

Que eu saiba a única exigência é que o arquivo esteja em algum lugar do Classpath, dê uma conferida nisso.

Veja se não está no diretório de algum pacote ou se não está apenas no diretório “src” (precisa estar no local onde são gerados os .class).

souarte

olá gomesrod. agora deu certo. mas vi no eclipse um recurso chamado “externalizar estrings”.
ele é confiável? pois seria muito mais fácil eu usá-lo.
obrigado.

souarte

bom acho que a melhor pergunta é o seguinte: se eu externalizar todas as strings com o eclipse, com certeza muitas delas eu nao vou precisar traduzir.
tem algum problema em externalizar todas as strings? o programa terá problema de performance? porque é muito código e eu prefiro fazer tudo automático.
obrigado.

Criado 21 de outubro de 2008
Ultima resposta 24 de out. de 2008
Respostas 10
Participantes 4