Mudar idioma em tempo real  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
qwerty
What is classpath?

Membro desde: 18/04/2007 05:55:54
Mensagens: 5
Offline

Existe algum padrão de projeto ou metodologia para poder, usando as facildiades de internacionalização do Java, mudar o idioma de uma aplicação em tempo real?

Por exemplo, eu quero colocar um item de menu onde o usuário poderia escolher os idiomas disponíveis e aí a aplicação seria toda traduzida na hora. É possível fazer isso? Alguém tem alguma dica?
caiozanchetti
JavaBaby
[Avatar]

Membro desde: 27/10/2004 00:17:24
Mensagens: 90
Offline

Ola, seu sistema é web ou desktop? Se for web, usando struts por exemplo, isso é tranquilamente possível.

Claudiomir Zanchetti (Caio)
SCJP 5.0
[MSN]
qwerty
What is classpath?

Membro desde: 18/04/2007 05:55:54
Mensagens: 5
Offline

É desktop mesmo, com Swing.
caiozanchetti
JavaBaby
[Avatar]

Membro desde: 27/10/2004 00:17:24
Mensagens: 90
Offline

Cara, da uma olhada no spring, pq houvi comentários que ele tem um mvc para apps desktop, swing. Ai vc obterá o que precisa.

Claudiomir Zanchetti (Caio)
SCJP 5.0
[MSN]
carneiro
JavaEvangelist
[Avatar]

Membro desde: 07/04/2005 11:37:42
Mensagens: 328
Offline

qwerty,

Não sei se tem alguma coisa que facilite isso para Swing. De qualquer forma, o procedimento é simples. Basta você manter os textos em arquivos de propriedades e alterar o arquivo de acordo com um click do usuário.

Davi Luan Carneiro
Desenvolvedor JEE
[Email] [MSN]
schmidt
JavaChild
[Avatar]

Membro desde: 21/04/2005 11:02:51
Mensagens: 149
Localização: Ctba/PR
Offline

carneiro wrote:qwerty,

Não sei se tem alguma coisa que facilite isso para Swing. De qualquer forma, o procedimento é simples. Basta você manter os textos em arquivos de propriedades e alterar o arquivo de acordo com um click do usuário.


Concordo, e mais, procure por i18n.

Flws!
Schmidt
[MSN]
marcelo_mococa
Virtual Machine Man
[Avatar]

Membro desde: 03/03/2005 10:03:32
Mensagens: 622
Localização: São Paulo
Offline

caiozanchetti wrote:Cara, da uma olhada no spring, pq houvi comentários que ele tem um mvc para apps desktop, swing. Ai vc obterá o que precisa.


o mvc dele é só para web.

Marcelo Madeira - TCS
SCJP 1.5
SCWCD 1.4
blog

qwerty
What is classpath?

Membro desde: 18/04/2007 05:55:54
Mensagens: 5
Offline

schmidt wrote:
carneiro wrote:qwerty,

Não sei se tem alguma coisa que facilite isso para Swing. De qualquer forma, o procedimento é simples. Basta você manter os textos em arquivos de propriedades e alterar o arquivo de acordo com um click do usuário.


Concordo, e mais, procure por i18n.

Flws!
Schmidt


Eu já andei dando uma olhada no i18n e conheço o esquema de armazenamento em arquivos de propriedades. Mas o problema é que quero fazer a tradução da aplicação em tempo real, ou seja, assim que o usuário selecionar a nova linguagem toda a aplicação (janelas já construídas...) serão traduzidas. Usando o esquema dos properties com ResourceBundles apenas as novas janelas e mensagens seriam alteradas, não?

Eu estou interssado em algo que me facilite o trabalho de recarregar/alterar os textos do componentes que já estão sendo exibidos na tela.

Vou dar uma procurada por Spring.
schmidt
JavaChild
[Avatar]

Membro desde: 21/04/2005 11:02:51
Mensagens: 149
Localização: Ctba/PR
Offline

qwerty,

Yep, é isso mesmo.
Não posso falar por apps swing. = /

Em projetos web, eu uso isso com JSF, fica muito feroz. De acordo com o idioma do navegador (hj já pre-configurado de acordo com o idioma do local onde se está fazendo o acesso), o site já faz um load no arquivo .properties específico daquele idioma. Dá até pra ficar brincando, trocar o idioma do Firefox e dar F5!


Flws!
Schmidt
[MSN]
carneiro
JavaEvangelist
[Avatar]

Membro desde: 07/04/2005 11:37:42
Mensagens: 328
Offline

qwerty,

Bem, basta você setar novamente os valores... a classe JLabel, por exemplo, tem o setText(String text).

Ou redesenhar a tela, talvez funcione.

Davi Luan Carneiro
Desenvolvedor JEE
[Email] [MSN]
neohacker
Virtual Machine Man
[Avatar]

Membro desde: 30/10/2006 15:23:14
Mensagens: 576
Localização: Santo André
Offline

eu fiz ja isso numa aplicação pra facul...utilizei com arquivos properties e tive o ms problema, mas consegui contornalo, mas me diga vc esta trabalhando em cima do Eclipse?? mais uma pergunta vc utiliza métodos gets para criar os componentes??

http//www.tecnologiaims.blogspot.com

↑ Grab this Headline Animator

http://www.imstechnology.blogspot.com
[Email] [WWW]
qwerty
What is classpath?

Membro desde: 18/04/2007 05:55:54
Mensagens: 5
Offline

Estou trabalhando em cima do Eclipse sim. Como ainda não sei direito como organizar o projeto pra atender essa necessidade ainda não comecei a codificar, então não estou usando métodos gets para criar os componentes.
neohacker
Virtual Machine Man
[Avatar]

Membro desde: 30/10/2006 15:23:14
Mensagens: 576
Localização: Santo André
Offline

então não sei se vão considerar isso como POG mas...
eu uso dessa forma


este modo funciona mais ou menos assim
quando vc for adicionar este JLabel em algum lugar vc utiliza o método get, pois se vc estiver pela primeira vez chamando o label ele o criará,
se for no momento da troca de idioma ele simplesmente apenas executará o setText com o novo idioma.

bem basicamente seria isso, se isso te ajudar blz, se não continua postando que agente arruma outro jeito.

Obs: como citei não sei se isso é considerado POG, mas ta valendo

http//www.tecnologiaims.blogspot.com

↑ Grab this Headline Animator

http://www.imstechnology.blogspot.com
[Email] [WWW]
qwerty
What is classpath?

Membro desde: 18/04/2007 05:55:54
Mensagens: 5
Offline

Neohacker valeu, eu estava pensando em algo parecido com o que você postou.

Mas como são diversos componentes, (internal frames, com vários labels, buttons, etc...) a grande dificuldade seria como a partir de um um único ponto (um item de menu) sair disparanda/chamando novamente o getLabelText de cada um desses componentes.

Estou pensando então em dotar cada "componente principal" de inteligencia para reescrever os seus textos e de seus subcomponentes. Aí em uma especie de camada de gerencia do idioma eu iria armazenando esses componentes em um pool de componentes. Quando o usuario clicar no botao para trocar a linguagem os componentes do pool vao sendo recuperados um a um e solicitados a se reescreverem.

Acho que vou acabar fazendo assim.
neohacker
Virtual Machine Man
[Avatar]

Membro desde: 30/10/2006 15:23:14
Mensagens: 576
Localização: Santo André
Offline

então qwerty no meu caso acabou acontecendo um efeito cascata q deu td certo (tem alguns BUGs mas num eh problema ) assim
por exemplo o meu começa num JFrame com setTitle, depois ele começa a criar os menus então por exemplo getMnFile() então ele vai mudar de "File" para "Arquivo", depois ele vai chamar o getMniExit() logo ele mudará o setText para "Sair"... e assim por diante faiz certinho kra...

bem como minha explicação não foi muito boa...(eu msm percebi isso) vou tentar colocar alguns códigos aki de exemplos



espero q vc tenha entendido a lógica, pode ser q se vc precisar alterar isso fique complicado, mas se vc ja ir desenvolvendo assim vc vai ver q acaba ficando mtu fácil, bem eu achei né...
mas dai vc ver o q vai ficar melhor pra vc...

tamo ai se precisar

http//www.tecnologiaims.blogspot.com

↑ Grab this Headline Animator

http://www.imstechnology.blogspot.com
[Email] [WWW]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team