[RESOLVIDO]Internacionalização no struts-menu com Struts 2
11 respostas
Tiago_Farias
Olá pessoal, seguinte:
Fiz um menu utilizando struts-menu integrado com Struts 2, até aí funcionou tudo perfeito e beleza. Mas agora eu quero internacionalizar os nomes nos menus (title).
Bom, o menu aparece e todos os itens tb. Todos os titles aparecem se escritos diretamente no atributo title, tipo title="Relatórios". Mas eu preciso internacionalizar, daí preciso passar uma key pra o title como no caso do menu 'userMenu' acima. Já tentei usar o atributo bundle na tag mas aparece na tela a key mesmo. Alguém sabe como fazer pra o struts-menu reconhecer o title como uma key para o arquivo message.properties?
Cara, vc tá se referindo ao objeto Locale? O meu usuário não tem um Locale. Acho q não entendi essa parte. Dá pra explicar melhor? =D
Vlw!
magnojg
Tiago, no locale você deve colocar o atributo onde está sendo armazenado o idioma que o menu deverá ser exibido. No exemplo, utilizei o atributo “locale” do objeto “user”, que está na Stack Values. Consegui explicar?
Tiago_Farias
Você tá explicando muito bem (e obrigado por isso), apenas não vejo aonde isso se relaciona com o meu caso. O struts me força a ter um objeto Locale dentro do User?? Eu coloquei um atributo locale=“user.locale” no meu jsp mas deu NullPointer =/. Obviamente, porque o objeto user não tem locale. A questão é: precisa SEMPRE ter? Eu quero usar o mesmo properties de mensagens que o resto do sistema usa. Aí tipo… não bastaria eu acertar aonde o bundle está, para achar o properties e a partir daí fazer o mapeamento chave-valor das mensagens?
Vlw!
magnojg
É Tiago, só com o bundle deveria funcionar…
Você está usando a taglib menu com esta uri?
Bom, eu tava usando a taglib sem o “-el” no fim. Mas mesmo colocando “-el” no fim não funciona. Continua exibindo no título menuItem a chave da mensagem: “application.header.user”. Me diz uma coisa, o bundle deve ser o nome do arquivo de internacionalização sem o “.properties” no final? Ou tem algum segredo de qual nome por no atributo bundle da tag?
Grato!
magnojg
Tiago, tenta com o seguinte bundle:
bundle="org.apache.struts.action.MESSAGE"
ou
bundle="org.apache.struts.action.ActionMessage"
Que diz pra o menu usar os mesmos recursos que o struts.
Tiago_Farias
Tentei com ambos agora e não rolou. É estranho inclusive que essa classe org.apache.struts.action.ActionMessage não parece ser do struts 2 mas do 1. Não sei. Mas não funcionou e agora eu não tenho mais saída. Caramba, como pode ser tão difícil internacionalizar um menu???
Fiquei sem abordagens agora… Alguma sugestão?
magnojg
Cara, vou ver se consigo mais alguma coisa (que funcione ), e te passo.
Tiago_Farias
Pow… muito obrigado pela ajuda! Fico no aguardo (e tentando aqui)! =]
Onde *Messages é o nome do seu arquivo de internacionalização (que fica em WEB-INF/classes) sem o .properties no fim. Tipo, “router-messages” no meu caso.
Isso resolveu.