Dúvida Struts 1 - Internacionalização

3 respostas
victorcosta

Pessoal tô com umas dúvidas no Struts 1

A primeira é que criei o arquivo MessageResources.properties e MessageResources_pt_BR.properties. Até ai tudo bem, se o cara entrar com um browser em português ele utiliza o MessageResource_pt_BR. Minha dúvida é o seguinte
Eu gostaria que no site a pessoa pudesse escolher qual a lingua q gostaria de visualizar, se ele clicasse em inglês então mesmo que o browser dele fosse português o site iria ser mostrado em inglês. Como faço isso no Struts?

A segunda é que a pouco tempo atrás estava escrevendo um fórum só pra aprender struts mesmo. Nesse fórum o cara podia postar mesmo não estando logado. Então se ele postasse não logado iria aparecer “Visitante” na mensagem.
Pra fazer isso eu tinha q escrever na jsp

<c:if test="${post.poster == null}">
    <bean:message key="post.guest" />
</c:if>
<c:if test="${post.poster != null}">
    ${post.poster.name}
</c:if>

Pra não ter q ficar repetindo esse código e deixar a jsp feia fiz um método getAuthor no meu POJO post q fazia isso. Ele retornava uma string contendo o nome do usuário se não fosse null, ou uma string “<bean:message key=“post.guest” />” se fosse null

O problema é q não aparecia nada em <bean:message key=“post.guest” />, e se vc fosse olhasse o código da página pelo browser, estava ali
essa string impressa, me parece q o programa não interpretava essa string como uma tag do struts, simplesmente imprimia ela

Como resolver esse problema? E Se não der pra resolver oq eu deveria fazer? Ficar escrevendo esses if na jsp não me parece muito elegante

Minha última dúvida é dada uma string chave encontrar a mensagem correspondente no MessageResources.properties para essa chave, dentro de uma action no Struts

3 Respostas

lmprates

victorcosta,

A sua primeira dúvida é simples, basta criar o MessagesResources_en.properties.
Depois você pode criar um action que muda a localização e a língua conseguentemente.

Dentro do Execute da sua action coloque o seguinte código:

String lingua = request.getParameter("lingua");
Locale locale = new Locale(lingua);
System.out.println("Mudando o locale para " + locale);
setLocale(request, locale);
return map.findForward("ok");

e você pode chamar sua action assim:

<a >EN</a> |
<a >PT</a><br/>

Após o usuário clicar em no link, o struts automaticamente vai buscar o arquivo em inglês e mostrar as mensagens em inglês.

lmprates

quanto à sua segunda dúvida, você colocou a referência do taglib no topo da página?

victorcosta

Valew lmprates, tava me esquecendo de olhar os métodos herdados de Action… isso resolve também o segundo problema, basta agora executar o getResources na Action e por o o valor da chave ‘post.guest’ no meu pojo q vou mostrar na tela. Dá mais trabalho mas meu objetivo era mais limpar a JSP mesmo

Ah e sim, eu tava incluindo as taglibs, o problema acho q era pq ele pegava o valor <bean:message key=“post.guest” /> através de uma EL, vai ver o struts só roda as tags q tão na jsp e não as pegas de um EL

Criado 27 de junho de 2007
Ultima resposta 27 de jun. de 2007
Respostas 3
Participantes 2