Qual a melhor maneira de se criar uma aplicação Web Internacionalizada?  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
bland
JavaEvangelist

Membro desde: 10/12/2004 09:36:35
Mensagens: 330
Offline

Pessoal,

Estive a conversar com um amigo e analisar qual a melhor aplicabilidade da internacionalização em uma aplicação Web. Chegamos a uma "conclusão", porém, pra mim, não ficou, ainda, a melhor solução. A solução que chegamos foi criar essa internacionalização via banco de dados. Calma, não se desesperem.

Existiriam arquivos .properties para cada língua a ser apresentada no site. Porém, pairou uma dúvida quanto aos labels dos campos. Portanto, pensamos em colocar isso em banco de dados para que a partir da seleção da língua o sistema pudesse identificar quais os labels iria apresentar.

Por exemplo, se o usuário (cliente) selecionasse a língua inglesa, o sistema iria identificar qual o identificador da língua selecionada e iria buscar sempre esse identificador para ser mostrado o label correto para a língua selecionada. Vale ressaltar que isso impactaria no cadastro dos label para as línguas dispostas no sistema. Por exemplo, o campo endereço teria que ser cadastrado como Endereço, Address e assim suscetivamente.

Enfim, como mencionei, não gostei muito dessa solução e queria saber como vocês fariam para manter essa internacionalização o mais flexível possível.

Desde já eu agradeço a todos.

Forte abraço.

http://www.twitter.com/almeidafabiano

Fabiano Almeida.
[MSN]
WilliamSilva
Moderador

Membro desde: 02/03/2005 11:08:44
Mensagens: 1747
Localização: Santos -SP.
Offline

Estive a conversar com um amigo e analisar qual a melhor aplicabilidade da internacionalização em uma aplicação Web. Chegamos a uma "conclusão", porém, pra mim, não ficou, ainda, a melhor solução. A solução que chegamos foi criar essa internacionalização via banco de dados. Calma, não se desesperem.
Existe um carinha chamado i18n e ele é padronizado tente dar uma pesquisar sobre.
http://java.sun.com/docs/books/tutorial/i18n/
http://www.w3.org/International/
http://blog.caelum.com.br/2007/08/13/i18n-internacionalizacao-com-jstl/
http://www.w3.org/International/getting-started/language
Bem já ví empresas guardar de tudo que é informação num repositório chamado "Banco de dados" menos o que interessa que são os dados mais isso é outra história.
sds.

This message was edited 1 time. Last update was at 27/04/2008 12:21:13


= William Silva =
iSHARE - Document Management System
[Email] [WWW] [MSN]
Marcio_Nogueira
JWizard
[Avatar]

Membro desde: 21/05/2007 20:14:54
Mensagens: 2781
Localização: xxxxxxxxxxxxxxxxxxxxxxxxxx
Offline

Utilize JSF (Java Server Faces) para implementar este recurso. É muito mais eficiente e simples de implementar do que em outros frameworks (Struts).
Um abraço.

MBA em Desenvolvimento de Sistemas em Ambiente Web
Bacharel em Desenho Industrial / Programação Visual
Marcio Nogueira C. Pinto
[WWW] [Yahoo!] aim icon [MSN] [ICQ]
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

Marcio_Nogueira wrote:Utilize JSF (Java Server Faces) para implementar este recurso. É muito mais eficiente e simples de implementar do que em outros frameworks (Struts).
Um abraço.


E você poderia explicar qual a diferença entre fazer isso em JSF e no Struts?

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
WilliamSilva
Moderador

Membro desde: 02/03/2005 11:08:44
Mensagens: 1747
Localização: Santos -SP.
Offline

Marcio_Nogueira wrote:Utilize JSF (Java Server Faces) para implementar este recurso. É muito mais eficiente e simples de implementar do que em outros frameworks (Struts).
Um abraço.
Marcio, mostre a eficiência e simplicidade do "Java Server Faces" em relação ao Struts, Struts2, Mentaway, Wicket, JSTL etc.... estou curioso.

= William Silva =
iSHARE - Document Management System
[Email] [WWW] [MSN]
Hayan
Debugger
[Avatar]

Membro desde: 20/01/2007 19:06:03
Mensagens: 73
Localização: Balnéario Camboriú
Offline

ola WilliamSilva

a maneira é simples, use ApplicationResources.properties ex (ApplicationResources_pt_BR.properties para portugues, ApplicationResources_es_US.properties para inglês), assim sua applicação esta internacionalizada automaticamente, e se tu quer que o cliente pode trocar a idioma use ex :
[Email]
WilliamSilva
Moderador

Membro desde: 02/03/2005 11:08:44
Mensagens: 1747
Localização: Santos -SP.
Offline

Hayan wrote: a maneira é simples, use ApplicationResources.properties ex (ApplicationResources_pt_BR.properties para portugues, ApplicationResources_es_US.properties para inglês), assim sua applicação esta internacionalizada automaticamente, e se tu quer que o cliente pode trocar a idioma use ex
Acompanhando o raciocinio de "Qual a melhor maneira de se criar uma aplicação Web Internacionalizada?"
e, se vc. ler o post acima e acessar os links enviados verá algo melhor do que sua sugestão, só mais um detalhe a aplicação é web porquê devo usar o seu exemplo de

Se tenho isso como solução.:
http://www.javafree.org/javabb/viewtopic.jbb?t=1387
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSTL6.html
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/WebI18N.html#wp83291
http://static.raibledesigns.com/repository/presentations/ComparingJavaWebFrameworks-ApacheConUS2007.pdf
sds.

= William Silva =
iSHARE - Document Management System
[Email] [WWW] [MSN]
Hayan
Debugger
[Avatar]

Membro desde: 20/01/2007 19:06:03
Mensagens: 73
Localização: Balnéario Camboriú
Offline

WilliamSilva o código serve para uma aplicação web sim, por exemplo nos temos uma aplicação com Struts tu pode usar uma simples Action para mudar a idioma da sua applicação :

com a Action tu pode mudar a idioma da sua applicação manualmente no Menu das idiomas :

nesse caso tu tem uma applicação Internacionalizada automaticamente e tem mais opção para o cliente mudar a idioma se quiser.

um abraço
[Email]
saoj
JWizard
[Avatar]

Membro desde: 09/03/2004 23:34:46
Mensagens: 2667
Localização: Chicago, EUA
Offline


Esses frameworks (JSF e Struts) permitem recarregamento automático das properties quando algo é alterado ou faz-se necessário um restart do servidor nesses casos ???

Como vc força um locale para a sessão do usuário, isto é, o usuário gravado no banco é english e deve ser forçado para english logo após ele se logar ???

Querendo dar uma olhada em como o Mentawai implementa internacionalização, dê uma olhada nesse link: http://www.mentaframework.org/i18n.jsp?loc=pt

Sergio A Oliveira Jr. - saoj

ExperiMENTA:

Mentawai = http://www.mentaframework.org - Full-stack Java Web Framework com Configuracão Programática
MentaQueue = http://mentaqueue.soliveirajr.com - Queue de alta-performance.
MentaLog = http://mentalog.soliveirajr.com - Non-intrusive, fast, garbage-less, colored and straightforward logging
MentaBean = http://mentabean.soliveirajr.com - Tiny ORM with SQL Builder
MentaRegex = http://mentaregex.soliveirajr.com - Perl-style regex for Java.
MentaContainer = http://mentacontainer.soliveirajr.com - Straightforward IoC, DI e Auto-Wiring
Space4J = http://www.space4j.org - Banco-de-dados de Objetos em Memória
Options-Lib = https://github.com/saoj/options-lib - Ruby classes para ter acesso as opcoes do Yahoo Finance
Selleto = http://www.selleto.com.br
Flipinion = http://www.flipinion.com
Kawai = http://www.kawaiwiki.org


[Email] [WWW]
aleck
GUJ Ranger
[Avatar]

Membro desde: 27/03/2006 08:08:33
Mensagens: 843
Localização: Rio de Janeiro
Offline

saoj wrote:
Esses frameworks (JSF e Struts) permitem recarregamento automático das properties quando algo é alterado ou faz-se necessário um restart do servidor nesses casos ???

Como vc força um locale para a sessão do usuário, isto é, o usuário gravado no banco é english e deve ser forçado para english logo após ele se logar ???

Querendo dar uma olhada em como o Mentawai implementa internacionalização, dê uma olhada nesse link: http://www.mentaframework.org/i18n.jsp?loc=pt


Até onde sei o restart é necessário no struts, pois ele carrega em memoria um arquivo properties. Com jsf não cheguei a usar.

A implementação do mentawai segue os mesmos padrões do struts, porém sem usar xml, outro ponto pra vc

Desenvolvedor iOS/Android
http://blog.alexandresoli.com.br
@alexandresoli
[WWW] [MSN]
Hayan
Debugger
[Avatar]

Membro desde: 20/01/2007 19:06:03
Mensagens: 73
Localização: Balnéario Camboriú
Offline

Mentawai???, ele não tem a flexibilidade de Struts ou JSF, mesmo que ele ajuda muito na produtividade, e a internacionalização é moleza com Struts.
[Email]
Luiz Aguiar
Moderador
[Avatar]

Membro desde: 23/01/2005 00:05:55
Mensagens: 3840
Localização: São Paulo
Offline

Acho que a pergunta foi clara, sobre i18n, não sobre frameworks, vamos evitar flames por favor, se o amigo que postuo não especificou nada não somos nós que vamos escolher o framework pra ele, ok!?

-
Blog de Tecnologia
GitHub
@AguiarLuiz
Recicla SP na App Store!




[WWW] [MSN] [ICQ]
saoj
JWizard
[Avatar]

Membro desde: 09/03/2004 23:34:46
Mensagens: 2667
Localização: Chicago, EUA
Offline

Hayan wrote:Mentawai???, ele não tem a flexibilidade de Struts ou JSF, mesmo que ele ajuda muito na produtividade, e a internacionalização é moleza com Struts.


Sem recalques, por favor. Pelo menos tenta disfarçar esse sentimento primitivo. Se vc acha que o Struts ou o JSF fazem alguma coisa que o Mentawai não faça, peço que coloque no fórum do Mentawai. (http://forum.mentaframework.org)

Luiz Aguiar wrote:
Acho que a pergunta foi clara, sobre i18n, não sobre frameworks, vamos evitar flames por favor, se o amigo que postuo não especificou nada não somos nós que vamos escolher o framework pra ele, ok!?


Concordo plenamente. Que o amigo avalie o suporte dos diversos frameworks aqui apresentados e decida por si mesmo. Só recomendo sinceramente que não escolha um framework que exija restart a cada alteração do properties, pois estamos no século XXI.


Gerente de Marketing: "Por favor, muda aí a palavra Hello para Hi."

Gerente de Desenvolvimento: "Tudo bem! Isso é facinho! Deixa eu derrubar os servidores aqui..."







This message was edited 1 time. Last update was at 28/04/2008 13:16:35


Sergio A Oliveira Jr. - saoj

ExperiMENTA:

Mentawai = http://www.mentaframework.org - Full-stack Java Web Framework com Configuracão Programática
MentaQueue = http://mentaqueue.soliveirajr.com - Queue de alta-performance.
MentaLog = http://mentalog.soliveirajr.com - Non-intrusive, fast, garbage-less, colored and straightforward logging
MentaBean = http://mentabean.soliveirajr.com - Tiny ORM with SQL Builder
MentaRegex = http://mentaregex.soliveirajr.com - Perl-style regex for Java.
MentaContainer = http://mentacontainer.soliveirajr.com - Straightforward IoC, DI e Auto-Wiring
Space4J = http://www.space4j.org - Banco-de-dados de Objetos em Memória
Options-Lib = https://github.com/saoj/options-lib - Ruby classes para ter acesso as opcoes do Yahoo Finance
Selleto = http://www.selleto.com.br
Flipinion = http://www.flipinion.com
Kawai = http://www.kawaiwiki.org


[Email] [WWW]
bland
JavaEvangelist

Membro desde: 10/12/2004 09:36:35
Mensagens: 330
Offline

Pessoal,

Obrigado a todos que postaram. Mas ainda pairam algumas dúvidas na minha mente. De antemão, agradeço a Luiz por tentar pôr ordem na casa.
Eu estou pretendendo utilizar JSF 1.2 com Spring 2.5 e Hibernate 3.2 e queria uma solução parecida, para a minha realidade, com a do Youtube, ou seja, o cara entra no site, seleciona o país (idioma) e o site muda completamente todos os labels para o idioma selecionado. É isso que quero.

Pensando nas tecnologias que eu pretendo utilizar, estive a pensar em criar uma classe utilitária que fosse um singleton e estivesse presente no meu faces-config. Após a mudança do idioma, este singleton iria receber, em um determinado método, uma string para o novo arquivo .properties. Assim sendo, quando este fosse invocado (o singleton de ResourceBundle), ele já estaria apontando para o arquivo da língua selecionada e iria buscar as informações corretas para o idioma escolhido.

Eu estou "viajando" ou isso não é possível? Conto com a ajuda de vocês.

Obrigado.

http://www.twitter.com/almeidafabiano

Fabiano Almeida.
[MSN]
aleck
GUJ Ranger
[Avatar]

Membro desde: 27/03/2006 08:08:33
Mensagens: 843
Localização: Rio de Janeiro
Offline

bland wrote:Pessoal,

Obrigado a todos que postaram. Mas ainda pairam algumas dúvidas na minha mente. De antemão, agradeço a Luiz por tentar pôr ordem na casa.
Eu estou pretendendo utilizar JSF 1.2 com Spring 2.5 e Hibernate 3.2 e queria uma solução parecida, para a minha realidade, com a do Youtube, ou seja, o cara entra no site, seleciona o país (idioma) e o site muda completamente todos os labels para o idioma selecionado. É isso que quero.

Pensando nas tecnologias que eu pretendo utilizar, estive a pensar em criar uma classe utilitária que fosse um singleton e estivesse presente no meu faces-config. Após a mudança do idioma, este singleton iria receber, em um determinado método, uma string para o novo arquivo .properties. Assim sendo, quando este fosse invocado (o singleton de ResourceBundle), ele já estaria apontando para o arquivo da língua selecionada e iria buscar as informações corretas para o idioma escolhido.

Eu estou "viajando" ou isso não é possível? Conto com a ajuda de vocês.

Obrigado.


A necessidade do restart nao e para mudanca de idioma e sim para alteracoes em tempo real dos arquivos.

O que vc quer o struts, jsf ja fazem.

Desenvolvedor iOS/Android
http://blog.alexandresoli.com.br
@alexandresoli
[WWW] [MSN]
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team